6

Publishable キーを JavaScript コードに配置する方法がわかりません。発行可能なキーの値を JavaScript に直接配置すると、正常に動作します。環境変数を使おうとするとうまくいきません。

config/initializers/stripe.rb

Rails.configuration.stripe = {
  :publishable_key => ENV['PUBLISHABLE_KEY'],
  :secret_key      => ENV['SECRET_KEY']
}

Stripe.api_key = Rails.configuration.stripe[:secret_key]

javascripts/charges.js.erb

Stripe.setPublishableKey(<%= Rails.configuration.stripe[:publishable_key] %>);

var stripeResponseHandler = function(status, response) {
  var $form = $('#payment-form');

  if (response.error) {

        $form.find('.payment-errors').text(response.error.message);
        $form.find('button').prop('disabled', false);
    } else {

        var token = response.id;

        $form.append($('<input type="hidden" name="stripeToken" />').val(token));

        $form.get(0).submit();
    }
};

jQuery(function($) {
    $('#payment-form').submit(function(e) {
      var $form = $(this);


      $form.find('button').prop('disabled', true);

      Stripe.createToken($form, stripeResponseHandler);

      return false;
    });
});
4

3 に答える 3

5

正確な解決策ではありませんが、Railscast の方法 ( http://railscasts.com/episodes/288-billing-with-stripe ) で環境変数を使用してメタ タグを設定し、Javascript を使用してメタ内の値を呼び出す方法が気に入っています。鬼ごっこ。必要なビットは約 4 分 10 秒から始まります

<%= tag :meta, :name => "stripe-key", :content => STRIPE_PUBLIC_KEY %>

次に、JS コードは次のとおりです。

Stripe.setPublishableKey($('meta[name="stripe-key"]').attr('content'))

私は環境変数を JS に直接挿入するのが好きではありません。

于 2013-11-11T15:50:58.823 に答える
0

Stripe の詳細を Javascript に保存するのは賢明ではないと思いますが、呼び出された gemgonを使用して変数を JS に読み込むことができます。

#app/controllers/your_controller.rb
gon.push({
  :user_id => 1,
  :user_role => "admin"
})

#app/assets/javascripts/your_javascript.js
gon.variable_name

これをレイアウト ファイルに追加する必要があります。

<head>
  <title>some title</title>
  <%= include_gon %>
  <!-- include your action js code -->
  ...

開発中でも ENV 変数をロードするには、基本的に任意の状態で ENV 変数をロードできるようにするgemを使用します。Figaro

#app/config/application.yml
YOUR_ENV_VAR: 'information'
于 2013-11-11T17:40:57.467 に答える
0

あなたが持っているものはうまくいくはずです。サーバーを起動するときに、適切なキーを入力していますか?

PUBLISHABLE_KEY=pk_####_################## SECRET_KEY=sk_####_################## レールs

于 2013-11-11T17:34:45.780 に答える