【问题标题】:Stripe 401 Unauthorized - No valid API key providedStripe 401 Unauthorized - 未提供有效的 API 密钥
【发布时间】:2014-06-23 00:34:35
【问题描述】:

我已经关注了 Ryan Bates 的 Railscast 'Integrating Active Merchant',经过一番摆弄之后,它正在工作,或者至少我在 Rails 中没有收到任何错误。当我登录我的 Stripe 帐户时,我看到以下内容:

type: "invalid_request_error"message: "This API call cannot be made with a publishable API key. Please use a secret API key.

这是一个401 Unauthorized - No valid API key provided. 错误。

我的开发环境中有以下内容。我已经仔细检查了这些键,看看它们是否混淆了。

ActiveMerchant::Billing::Base.mode = :test
::GATEWAY = ActiveMerchant::Billing::StripeGateway.new(

  :login => 'pk_test_yfredactedredactedfA',
  :password => 'sk_test_Rrredactedredacted2J')

Development.log 显示:

Processing by OrdersController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"ZWredactedredactedredactedredactedad4=", "order"=>{"first_name"=>"", "last_name"=>"", "email"=>"", "address_1"=>"", "address_2"=>"", "city"=>"", "postal_code"=>"", "country_code"=>"United Kingdom", "card_number"=>"", "security_code"=>"", "card_expires_on(3i)"=>"1", "card_expires_on(2i)"=>"5", "card_expires_on(1i)"=>"2014"}, "commit"=>"Confirm and pay"}
[1m[36mProduct Load (0.1ms)[0m  [1mSELECT "products".* FROM "products" WHERE "products"."id" = ? LIMIT 1[0m  [["id", 2]]
[1m[35m (0.1ms)[0m  begin transaction
[1m[36mSQL (0.4ms)[0m  [1mINSERT INTO "orders" ("created_at", "updated_at") VALUES (?, ?)[0m  [["created_at", Tue, 06 May 2014 11:05:16 UTC +00:00], ["updated_at", Tue, 06 May 2014 11:05:16 UTC +00:00]]
[1m[36m (6.1ms)[0m  [1mcommit transaction[0m
[1m[35m (0.2ms)[0m  SELECT SUM("products"."price") AS sum_id FROM "products" WHERE "products"."id" IN (2)

虽然我不确定它会有所帮助

谢谢

【问题讨论】:

  • 开发日志是怎么说的,能发一下吗?
  • 如果这些密钥是真实的,我建议您立即更改它们(永远不要再公开发布它们)。
  • 我认为它们都不太可能包含“redactedredacted”
  • 我的错,没有意识到:(

标签: ruby-on-rails stripe-payments activemerchant


【解决方案1】:

根据Stripe docs

除了现场和测试模式, 还有两种类型的密钥 secretpublishable 密钥。

可发布 API 密钥仅用于在 Stripe 中识别您的帐户,它们不是秘密。换句话说,它们可以安全地发布在您的 Stripe.js javascript 代码之类的地方,或者在 Android 或 iPhone 应用程序中。可发布密钥仅具有创建令牌的权力。

秘密 API 密钥永远不应公开,并且必须保密地保存在您自己的服务器上。这些键可以不受限制地对 Stripe 执行任何 API 请求。

您永远不需要同时使用它们,您可以使用其中一个。您发布的错误指出:

无法使用可发布的 API 密钥进行此 API 调用。请使用 API 密钥。

您可以从前几个字符中区分按键:

pk_test_... - publishable key for test mode
sk_test_... - secret key for test mode

因此,您需要在之前提供可发布密钥的位置提供密钥。 Here's an example 在 ActiveMerchant 中使用密钥:

transaction = ActiveMerchant::Billing::StripeGateway.new(:login => STRIPE_SECRET_KEY)

(注意没有:password。)

【讨论】:

    猜你喜欢
    • 2017-10-25
    • 2021-05-25
    • 2015-11-23
    • 2021-05-29
    • 1970-01-01
    • 2015-11-16
    • 1970-01-01
    • 2015-12-09
    • 2017-01-18
    相关资源
    最近更新 更多