Stripe 401 Unauthorized - не предоставлен действительный ключ API
Я следовал за 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)
Хотя я не уверен, что это поможет
Спасибо
1 ответ
Согласно документам Stripe:
Помимо живого и тестового режима, есть также два типа ключей секретных и публикуемых ключей.
Публикуемые ключи API предназначены исключительно для идентификации вашей учетной записи в Stripe, они не являются секретными. Другими словами, их можно безопасно публиковать в таких местах, как ваш JavaScript-код Stripe.js, или в приложении для Android или iPhone. Публикуемые ключи имеют право только создавать токены.
Секретные ключи API никогда не должны публиковаться и должны храниться конфиденциально на ваших собственных серверах. Эти ключи могут выполнять любые запросы API к Stripe без ограничений.
Вам никогда не нужно будет использовать их оба одновременно, вы используете один или другой. Отправленная вами ошибка гласит:
Этот вызов API нельзя выполнить с помощью публикуемого ключа API. Пожалуйста, используйте секретный ключ API.
Вы можете отличить ключи от первых нескольких символов:
pk_test_... - publishable key for test mode
sk_test_... - secret key for test mode
Таким образом, вам нужно предоставить секретный ключ, где вы предоставили публикуемый ключ раньше. Вот пример использования секретного ключа с ActiveMerchant:
transaction = ActiveMerchant::Billing::StripeGateway.new(:login => STRIPE_SECRET_KEY)
(Обратите внимание, что нет :password
дано.)