2015-09-06 66 views
1

我目前正在从Stripe中查找以下guide,并遇到了这段代码。Stripe's Rail的Checkout指南代码澄清

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

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

我想我明白上半部分在说什么,但究竟是Stripe.api_key = Rails.configuration.stripe[:secret_key]在做什么?做了一个快速CTRL + F之后,Stripe.api_key不会在任何地方使用。

完成指南后,我注意到该行和应用程序在检出时仍然正常工作。

有人可以解释为什么该行被列入第一位,它甚至需要吗?

+0

'可发布的API'键仅用于识别您的Stripe账号,它们不是秘密。换句话说,他们可以安全地发布在Stripe.js JavaScript代码等地方或Android或iPhone应用程序中。可发布的密钥只能创建令牌。 '秘密API'键绝不应该发布,并且必须保密在您自己的服务器上。这些密钥可以不受限制地对Stripe执行任何API请求。参考:https://stripe.com/docs/tutorials/dashboard – Athar

回答

2

在调用Stripe的API时,您需要提供您的密钥,以便Stripe能识别您。

因此Stripe.api_keyStripe Ruby gem在内部用于代表您进行API调用。

这是令人惊讶的是你的应用程序时,你对此有何评论这条线的工作,因为如果你不指定键,所有的API调用将失败,但以下情况除外:

Stripe::AuthenticationError:没有API密钥提供。使用“Stripe.api_key =”设置您的API密钥。您可以从Stripe Web界面生成API密钥。详情请参阅https://stripe.com/api,如果您有任何疑问,请发送邮件至[email protected]

请注意,Checkout将在成功将卡片详细信息转换为令牌时显示绿色复选标记。这并不意味着收费已经创建完毕!这可能是为什么你认为注释掉Stripe.api_key没有任何作用,但是如果你在仪表板中检查了logs,你应该看到创建请求后没有收到创建请求(因为没有你的API密钥,Stripe没有告诉你是谁提出了请求!)。