【问题标题】:Braintree::ConfigurationError (Braintree::Configuration.merchant_id needs to be set)Braintree::ConfigurationError(需要设置 Braintree::Configuration.merchant_id)
【发布时间】:2015-05-18 19:19:12
【问题描述】:

只有在生产环境中运行我的应用程序(Heroku)时才会出现该错误。本地运行正常,我已经测试了一些事务并且它可以工作。我使用 Braintree 沙盒帐户

具体来说,我收到以下错误:

2015-05-18T19:07:53.077006+00:00 app[web.1]: Started GET "/transactions/new" for 160.9.0.125 at 2015-05-18 19:07:53 +0000
2015-05-18T19:07:53.093436+00:00 app[web.1]:   User Load (1.9ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = $1  ORDER BY "users"."id" ASC LIMIT 1  [["id", 1]]
2015-05-18T19:07:53.095900+00:00 app[web.1]: Braintree::ConfigurationError (Braintree::Configuration.merchant_id needs to be set):
2015-05-18T19:07:53.095898+00:00 app[web.1]: 
2015-05-18T19:07:53.095902+00:00 app[web.1]:   app/controllers/transactions_controller.rb:54:in `generate_new_client_token'
2015-05-18T19:07:53.095903+00:00 app[web.1]:   app/controllers/transactions_controller.rb:9:in `new'
2015-05-18T19:07:53.095905+00:00 app[web.1]: 
2015-05-18T19:07:53.095906+00:00 app[web.1]: 
2015-05-18T19:07:53.089739+00:00 app[web.1]: Processing by TransactionsController#new as HTML
2015-05-18T19:07:53.094330+00:00 app[web.1]: Completed 500 Internal Server Error in 4ms

所以我的问题是我是否可以在生产中使用 Braintree 沙盒帐户,或者我需要切换到 Braintree 中的生产帐户?是沙盒导致错误吗?

config/initializers/braintree.rb

 Braintree::Configuration.environment = :sandbox
  Braintree::Configuration.logger = Logger.new('log/braintree.log')
  Braintree::Configuration.merchant_id = ENV['BRAINTREE_MERCHANT_ID']
  Braintree::Configuration.public_key = ENV['BRAINTREE_PUBLIC_KEY']
  Braintree::Configuration.private_key = ENV['BRAINTREE_PRIVATE_KEY']

config/application.yml

# Braintree configuration keys
  BRAINTREE_MERCHANT_ID: 'XXXXXXXXXXXX'
  BRAINTREE_PUBLIC_KEY: 'XXXXXXXXXXXXXX'
  BRAINTREE_PRIVATE_KEY: 'XXXXXXXXXXXXXXXXXXX'

【问题讨论】:

  • 我在布伦特里工作。这看起来与您在其他问题中遇到的问题相似,您确定要在“产品”环境中配置 Braintree 吗?您绝对可以使用 Braintree 沙箱在您想要的任何环境中进行测试,但在生产环境中这样做通常不是一个好主意,因此您不会意外地向其发送真实的客户/信用卡数据。
  • 我有 config/initializers/braintree.rd 它从 config/application.yml 获取凭据
  • 我建议您使用完整的代码email our support team。您似乎没有在生产环境中设置配置。
  • 我需要比这 2 个文件(braintree.rb、application.yml)更多的文件才能在生产中运行吗?
  • 说“生产”时需要小心。您是指您的生产环境(Heroku)还是我们的(而不是我们的沙盒环境)。与沙盒相比,您不需要任何不同的生产代码,只需不同的凭据即可。所以商家ID、公钥和私钥的值应该不同,但其他都应该一样。

标签: ruby-on-rails heroku braintree


【解决方案1】:

错误在于我正在使用的 Figaro gem,它使用 ENV 和 application.yml 自动执行此操作。我在控制台中运行“rake figaro:heroku[intense-harbor-8486]”,一切正常。我不知道我需要这样做,因为当我推送我的应用程序时,所有 gem 都安装在 heroku 服务器中 –

【讨论】:

    猜你喜欢
    • 2018-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-25
    • 2018-05-12
    • 2020-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多