2017-01-16 13 views
0

更新: 公開可能なキーを直接インラインで設定します:Stripe.setPublishableKey("pk_live_*****");ENV['stripe_publishable_key']で正しく構成されていないという問題があります。Stripe :: AuthenticationError APIキーが提供されていません。 "Stripe.api_key = <API-KEY>"を使用してAPIキーを設定してください

オリジナルのポスト:

私はストライプのkoudokuの宝石を使用しています。すべてがローカルで正常に動作しますが、私はHerokuのにプッシュするとき、私はエラーを取得しています:それは開発中のパブリッシュキーを設定します

Stripe::AuthenticationError (No API key provided. Set your API key using "Stripe.api_key = <API-KEY>".

にもかかわらず。また、heroku configを実行すると、そこにキーが表示されます。

ここで何が起こっているかなぜキーを設定していないのですか?

application.yml

development: 
    stripe_api_key: 'sk_test_***' 
    stripe_publishable_key: 'pk_test_***' 

production: 
    stripe_api_key: 'sk_live_***' 
    stripe_publishable_key: 'pk_live_***' 

設定/初期化子/ koudoku.rb

Koudoku.setup do |config| 
    config.subscriptions_owned_by = :user 
    config.stripe_publishable_key = ENV['stripe_publishable_key'] 
    config.stripe_secret_key = ENV['stripe_api_key'] 

    Stripe.api_version = '2015-01-11' #Making sure the API version used is compatible. 
    # config.prorate = false # Default is true, set to false to disable prorating subscriptions 
    # config.free_trial_length = 30 

    # Specify layout you want to use for the subscription pages, default is application 
    config.layout = 'application' 

    # you can subscribe to additional webhooks here 
    # we use stripe_event under the hood and you can subscribe using the 
    # stripe_event syntax on the config object: 
    # config.subscribe 'charge.failed', Koudoku::ChargeFailed 

end 

_card.html.erb

<div class="padding_page"> 
    <div class="wrapper_form_dark wrapper_form_sign_on"> 

<%# content_for :koudoku do %> 

<%# end %> 

<%= form_for @subscription, url: url, html: {id: 'payment-form', class: 'form-horizontal'} do |f| %> 

    <fieldset> 
<div class="form_section"> 
    <legend class="page_title">Update Payment Info</legend> 



     <label class="label_standard">Card Number</label> 
     <div class="controls"> 
     <input type="text" size="20" autocomplete="off" class="card-number input_standard"/> 
     </div> 
    </div> 


    <div class="form_section"> 
     <label class="label_standard">Expiration (MM/YYYY)</label> 
     <div class="controls"> 
     <input type="text" size="2" class="card-expiry-month input_mini"/> 
     <span>/</span> 
     <input type="text" size="4" class="card-expiry-year input_mini"/> 
     </div> 
    </div> 

    <div class="form_section"> 
     <label class="label_standard">CVC</label> 
     <div class="controls"> 
     <input type="text" size="4" autocomplete="off" class="card-cvc input_mini"/> 
     </div> 
    </div> 

    <div class="alert alert-error payment-errors red"></div> 
    <%= f.hidden_field :plan_id %> 

    </fieldset> 

    <div class="form_section"> 
    <div class="actions"> 
     <% if Koudoku.free_trial? %> 
     <button type="submit" class="btn_primary submit-button">Save Billing Information</button> 
     <% else %> 
     <button type="submit" class="btn_primary_large submit-button">Update Card Information</button> 
     <% end %> 
     <%= link_to "Cancel", owner_subscriptions_path(@owner), class: 'btn red' %> 
    </div> 
    </div> 

<% end %> 
</div> 
</div> 
<script type="text/javascript"> 

    // All this code taken from Stripe's own examples at: 
    // https://stripe.com/docs/tutorials/forms . 

    function stripeResponseHandler(status, response) { 

     if (response.error) { 
      // show the errors on the form 
      $(".payment-errors").text(response.error.message).show(); 
      $(".submit-button").removeAttr("disabled"); 
     } else { 
      var form$ = $("#payment-form"); 
      // token contains id, last4, and card type 
      // insert the token into the form so it gets submitted to the server 
      form$.append("<input type='hidden' name='subscription[credit_card_token]' value='" + response['id'] + "'/>"); 
      form$.append("<input type='hidden' name='subscription[last_four]' value='" + response['last4'] + "'/>"); 
      form$.append("<input type='hidden' name='subscription[card_type]' value='" + response['card_type'] + "'/>"); 
      // and submit 
      form$.get(0).submit(); 
     } 
    } 

    $(document).ready(function() { 



    Stripe.setPublishableKey("<%= Koudoku.stripe_publishable_key %>"); 

    // By default, don't show errors. 
    $(".payment-errors").hide() 

    $("#payment-form").submit(function(event) { 

     // disable the submit button to prevent repeated clicks 
     $('.submit-button').attr("disabled", "disabled"); 

     Stripe.createToken({ 
      number: $('.card-number').val(), 
      cvc: $('.card-cvc').val(), 
      exp_month: $('.card-expiry-month').val(), 
      exp_year: $('.card-expiry-year').val() 
     }, stripeResponseHandler); 

     // prevent the form from submitting with the default action 
     return false; 
    }); 
    }); 

</script> 

UPDATE: 私はポストのログを参照してくださいストライプのログには200の応答があります。

{ 
    "card": { 
    "number": "************5458", 
    "cvc": "***", 
    "exp_month": "11", 
    "exp_year": "2019" 
    }, 
    "key": "pk_live_***", 
    "payment_user_agent": "stripe.js/81eca10", 
    "callback": "sjsonp1484600040115", 
    "_method": "POST", 
    "_accept_language": "en-US" 
} 

しかし、アプリはまだキーのない同じエラーをスローしています。うまくいけば、これは役に立ちますか?

+0

あなた自身の質問に対する回答が見つかったら、それを正式な回答として追加してください。自分の答えが最良の答えであれば、それにチェックマークを付けることができます。あなたはあなたの質問を編集して、その答えを一番上に取り除き、それを普通のものとして追加することができます。 –

答えて

1

アプリケーションで環境変数の変更を取得するために、端末でspring stopを実行する必要があることがよくあります。

関連する問題