В Stripe Checkout отсутствует обязательный параметр `key`. Куда ставить переменные?

Я получаю следующее предупреждение после попытки использовать Stripe Checkout:

В Stripe Checkout отсутствует обязательный параметр key. Пожалуйста, свяжитесь с владельцем сайта или [email protected].

В инициализаторах у меня есть:

 Stripe.rb

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

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

В моем файле .env у меня есть:

PUBLISHABLE_KEY= 'with my keys'
SECRET_KEY= 'with my keys'

Я скопировал и вставил контроллер и представления из учебника на веб-сайте Stripe, поэтому с ними все в порядке. Где я должен размещать ключевую информацию?


person Kohl    schedule 12.12.2014    source источник


Ответы (3)


Во-первых, убедитесь, что вы установили гем dotenv-rails.

Добавьте эту строку в свой Gemfile:

gem 'dotenv-rails', :groups => [:development, :test]

Затем обязательно bundle:

$ bundle install

что эквивалентно:

$ bundle

Также обратите внимание, что ваш синтаксис неверен:

PUBLISHABLE_KEY= 'with my keys'
SECRET_KEY= 'with my keys'

Попробуйте такой синтаксис:

PUBLISHABLE_KEY='with my keys'
SECRET_KEY='with my keys'

Или, точнее, вот это:

PUBLISHABLE_KEY=pk_test_alsdjflaksjdflaksjdflaksjdfl
SECRET_KEY=sk_test_alsdjflaksjdflaksjdflaksjdfl

Кавычки в порядке, но обратите внимание, что после = нет пробела.

person sealocal    schedule 12.12.2014
comment
я поставил «с моими ключами» вместо фактических жестко запрограммированных ключей. - person Kohl; 12.12.2014
comment
Но у вас есть пробел после знака =. - person sealocal; 12.12.2014
comment
мне нужны pk_test_ и sk_test_ перед ключами? - person Kohl; 12.12.2014
comment
Да. Это ваши полосатые ключи. - person sealocal; 12.12.2014
comment
Полосатые ключи содержат sk_test и pk_test внутри самого ключа. - person sealocal; 12.12.2014
comment
нвм они включены. Нужно ли указывать в моем файле .env, если Rails.env.test? - person Kohl; 12.12.2014
comment
Я думаю, достаточно указать test в вашем Gemfile. - person sealocal; 12.12.2014
comment
У меня нет ничего в моих файлах среды test.rb или production.rb для Stripe. Я создал файл .env и поместил туда ключи. Это нормально, верно. Я сделал это для других ключей. - person Kohl; 12.12.2014
comment
Хм, я не уверен в этом. Вы также можете попробовать другой ответ, который я опубликовал. - person sealocal; 12.12.2014
comment
подхватит ли dotenv мой уже созданный файл .env? Или мне нужно удалить его и создать заново? - person Kohl; 13.12.2014
comment
Я не вижу причин, по которым вы должны его удалить, если только я что-то не упустил. - person sealocal; 13.12.2014
comment
Благодаря Sealocal dotenv решил проблему. Если у вас не установлен этот гем (или Фигаро), файл .env ничего не делает. - person Kohl; 13.12.2014
comment
Итак, это была строка в Gemfile, которую вы пропустили? - person sealocal; 13.12.2014

Одна из возможностей состоит в том, что ваши Stripe.rb правки не были загружены.

  1. Выйдите из сервера с помощью ctrl + c

  2. $ spring stop
    => Пружина остановилась

  3. $ rails server

person sealocal    schedule 12.12.2014

Убедитесь, что значения ENV['SECRET_KEY'] и ENV['PUBLISHABLE_KEY'] для разных API, отличных от Stripe, еще не установлены. Если это так, вы можете изменить их на ENV['STRIPE_SECRET_KEY'] и ENV['STRIPE_PUBLISHABLE_KEY'], чтобы они были разделены.

person user1515295    schedule 12.12.2014