【发布时间】: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