Ruby on rails - Stripe: «Вы не установили действительный ключ для публикации» - PullRequest
0 голосов
/ 08 мая 2018

У меня проблема, я пошагово следую этому уроку, чтобы включить полосу драгоценных камней в мое приложение rails: https://stripe.com/docs/checkout/rails

Но у меня возникает проблема при запуске платежа:

вы не указали действительный публикуемый ключ. Позвоните по номеру Stripe.setPublishableKey() с вашим публикуемым ключом.

В учебнике, которому я следую, этот метод не используется Stripe.setPublishableKey(), и, похоже, он тоже работает ...

Я использую .env файл для получения ключей API и использую тестовые ключи из учебника.

Есть идеи для решения?!

Большое спасибо :) Если вам нужна дополнительная информация, пожалуйста, скажите мне

Мой настоящий код является копией / вставкой из учебника, который я использую.

Редактировать 1

Я не понимаю, почему, но он работает, когда я запускаю проект на Heroku ... но я все еще не понимаю, почему он не работает на локальном

Ответы [ 3 ]

0 голосов
/ 08 мая 2018

Я использую файл .env для получения ключей API и использую тестовые ключи из учебника.

Rails не загружает переменные окружения из файла .env. Итак, в учебнике автор устанавливает обязательные переменные из консоли перед запуском сервера, но вы используете файл .env. Чтобы исправить это, используйте gem dotenv-rails : просто добавьте в свой Gemfile (необязательно добавлять те же строки, что и в описании gem)

0 голосов
/ 22 декабря 2018

Мне удалось преодолеть тот же тип ошибки в другом учебнике, изменив последнюю строку файла stripe.rb на:

Stripe.api_key = Rails.application.credentials.stripe[:secret_key]

с сохранением ключа в файле credentials.yml.enc в rails 5.2

0 голосов
/ 08 мая 2018

Из руководства, которое вы связали:

Приложение использует ваши публикуемые и секретные ключи API для взаимодействия с Stripe.Инициализатор является хорошим местом для установки этих значений, которые будут предоставлены при запуске приложения.

Добавьте в config / initializers / stripe.rb следующее:

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

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

Эти ключизначения извлекаются из переменных среды, чтобы не жестко их кодировать.Рекомендуется не записывать ключи API в ваш код, поскольку они могут легко оказаться в репозиториях управления исходным кодом и других не приватных местах назначения.

Вы добавили эти данные в config / initializer / stripe.rb?

Если это так, вам может потребоваться перезагрузить сервер, так как файлы в конфигурации / инициализаторах загружаются только при запуске сервера

...