有效的可发布密钥集,但没有有效的可发布密钥集

时间:2016-10-19 17:49:04

标签: ruby-on-rails stripe-payments

我正在尝试从条纹网站上制作条纹结帐样本

https://stripe.com/docs/checkout/rails

,但是当我尝试付费时,我收到了错误消息

  

您没有设置有效的可发布密钥。呼叫   带有可发布密钥的Stripe.setPublishableKey()。有关更多信息,   见https://stripe.com/docs/stripe.js

在我的 JavaScript 控制台中,错误消息

  

https://checkout.stripe.com/api/bootstrap?key=&locale=en-US失败了   加载资源:服务器响应状态为400(错误请求)

在我的控制台中,错误消息

  

在2016-10-19 17:29:24 +0000开始获取“/”for 10.240.1.15不能   从10.240.1.15渲染控制台!允许的网络:127.0.0.1,:: 1,   127.0.0.0/12/1275555.255.255 ChargesController处理#new as HTML渲染费用/ new.html.erb布局/应用程序(0.5ms)   在53ms完成200 OK(浏览次数:52.6ms | ActiveRecord:0.0ms)

当我查看我的html源代码时,条带键元标记没有任何内容?

条纹样本使用他们自己的秘密和可发布的密钥,但我使用了我的。

如果需要更多信息,请询问,以便我发帖。

application.html.erb

<!DOCTYPE html>
<html>
<head>
  <title>Workspace</title>
  <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>
  <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
  <%= javascript_include_tag  'https://js.stripe.com/v2/' %> 
  <%= csrf_meta_tags %>
  <%= tag :meta, :name=> 'stripe-key', :content => ENV["STRIPE_PUBLIC_KEY"] %>
</head>
<body>

<%= yield %>

</body>
</html>

charges.html.erb

  <head>
  </head>
  <body>
    <%= yield %>
  </body>
</html>

stripe.js

$(document).ready(function() {
    Stripe.setPublishableKey($('meta[name="stripe-key"]').attr('content'));        
});

stripe.rb

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

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

3 个答案:

答案 0 :(得分:2)

我实际上在new.html.erb中添加了可发布的密钥:

<script src="https://checkout.stripe.com/checkout.js" class="stripe-button"
      Stripe.setPublishableKey('PUBLISHABLE_KEY');
      data-key="<%= Rails.configuration.stripe[:publishable_key] %>"
      data-description="A month's subscription"
      data-amount="100"
      data-locale="auto">
</script>

答案 1 :(得分:1)

我遇到了同样的问题, 要解决此问题,只需将此代码放入您的stripe.rb文件中

config / initializers / stripe.rb

Rails.configuration.stripe = {
  publishable_key: Rails.application.secrets.stripe_publishable_key,
  secret_key: Rails.application.secrets.stripe_secret_key
}
Stripe.api_key = Rails.configuration.stripe[:secret_key]

当然是在将test_keys放入config/secrets.yml

之后

答案 2 :(得分:0)

stripe.rb中,您从:publishable_key设置ENV['PUBLISHABLE_KEY'],而application.html.erb使用ENV["STRIPE_PUBLIC_KEY"]设置application.html.erb。您应该更新Rails.configuration.stripe[:publishable_key]以改为使用 <%= tag :meta, :name=> 'stripe-key', :content => Rails.configuration.stripe[:publishable_key] %>

stripe.rb

那就是说,问题很可能是你没有设置environment variables。您可以尝试直接在Rails.configuration.stripe = { :publishable_key => 'pk_...', :secret_key => 'sk_...' } 设置密钥吗? E.g:

function split(str,sep)
if sep == nil then
    words = {}
    for word in str:gmatch("%w+") do table.insert(words, word) end
    return words
end
return {str:match((str:gsub("[^"..sep.."]*"..sep, "([^"..sep.."]*)"..sep)))} -- BUG!! doesnt return last value
end

提醒您,您可以在Stripe信息中心找到API密钥:https://dashboard.stripe.com/account/apikeys