我跟随瑞安贝茨的Railscast'整合活跃的商家'在一些摆弄它工作之后或者至少我没有在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)
虽然我不确定它会帮助
由于
答案 0 :(得分:1)
根据Stripe docs:
除了实时和测试模式, 还有两种类型的密钥秘密和可发布的密钥。
可发布的 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
因此,您需要提供之前提供可发布密钥的密钥。使用ActiveMerchant的密钥Here's an example:
transaction = ActiveMerchant::Billing::StripeGateway.new(:login => STRIPE_SECRET_KEY)
(注意没有给出:password
。)