Я пытаюсь сохранить свои ключи API для Stripe Elements .. Вы можете увидеть мой предыдущий пост здесь: Использование javascript для элементов полосы
Как видите, элементы Stripe не отображаются в JS из Stripe или в моем файле stripejs.js.
Я предполагаю, что это https://js.stripe.com/v3/, который каким-то образом не отображается из-за того, что мои ключи API не хранятся правильно. В настоящее время у меня есть ключи API, хранящиеся в моем файле .env, управляемом гемом dotenv.
Я пытаюсь сохранить свои ключи API с помощью credentials.yml.enc, но не уверен, правильно ли я это делаю.
Что я делаю:
Вызовите "EDITOR = atom rails credentials: edit" в CMD. Выскакивает Атом. Я храню ключи API следующим образом: PUBLISHABLE_KEY = pk_test_1111111111111111111 SECRET_KEY = sk_test_11111111111111111111
Сохраните файл. Выход.
Хотя не пойдет. Я не правильно храню? Делаете что-то не так?
В моем файле stripe.rb под инициализаторами есть:
Rails.configuration.stripe = {
:publishable_key => ENV['PUBLISHABLE_KEY'],
:secret_key => ENV['SECRET_KEY']
}
Stripe.api_key = Rails.configuration.stripe[:secret_key]
Редактировать:
У меня мой файл stripe.rb имеет такую структуру:
Rails.configuration.stripe = {
:publishable_key => Rails.application.credentials.stripe[:publishable_key],
:secret_key => Rails.application.credentials.stripe[:secret_key]
}
Stripe.api_key = Rails.configuration.stripe[:secret_key]
а затем сохранил мои файлы учетных данных следующим образом:
stripe:
publishable_key: 123456789
secret_key: 123456789
Затем я получаю сообщение об ошибке при запуске своего сервера:
undefined method \credentials' for Rails:Module (NoMethodError)`
Я что-то делаю не так?
Попытка: 2:
Пробовал делать в файле stripe.rb ...
Rails.configuration.stripe = {
Rails.application.credentials.stripe[:publishable_key],
Rails.application.credentials.stripe[:secret_key]
}
Stripe.api_key = Rails.configuration.stripe[:secret_key]
с и без в последний раз ... Я получаю сообщение об ошибке: "синтаксическая ошибка, непредвиденная '}', ожидается конец ввода"
ОБНОВИТЬ:
на случай, если кто-то столкнется с подобной проблемой ...
Для меня проблемы были вызваны загрузкой. Все, что вам нужно сделать, это использовать class = "form-control" в форме Stripe Elements для правильного отображения - если вы используете Bootstrap.
То, что вы читаете через учетные данные из Rails 5.1, сохраняется не в переменной ENV, а через помощник Rails.
С файлом вроде
aws:
access_key_id: 123
secret_access_key: 345
secret_key_base: 2fdea1259c6660852864f9726616df64c8cd
Вы получаете к ним доступ вот так.
Rails.application.credentials.aws[:access_key_id] # => "123"
Rails.application.credentials.aws[:secret_access_key] # => "345"
Rails.application.credentials.secret_key_base # => "2fdea..
Судя по тому, что вы написали, похоже, что вы делаете это в Rails 5.2.
Я смог исправить этот Rails 5.2 в своем приложении, изменив последнюю строку файла stripe.rb на:
Stripe.api_key = Rails.application.credentials.stripe[:secret_key]
Ключ хранится в файле credentials.yml.enc.
Я обновил свой вопрос. Я пробовал нечто подобное. но не работает. Я читал об этом в блоге Medium, но не понимаю, что делаю не так.