短篇小说:我在Heroku上安装了一个以生产模式运行的开发服务器。
我对此应用中安装的paypal-sdk-rest
gem不太熟悉(实际上我是RoR的新手)。
在这里阅读文档https://github.com/paypal/PayPal-Ruby-SDK我发现有一个配置yml文件(config/paypal.yml
),其中包含用于开发和生产环境的Sandbox和Live的client_id和client_secret。并在config/initializers/paypal.rb
中引用它。
当我在localhost上工作时,我可以在Sandbox上创建付款,当我在我的AWS服务器上时,我可以在Live上创建付款。但是在Heroku上,我需要它来创建Sandbox而不是Live。所以我在paypal.yml
中对paypal.rb
的引用进行了评论,并在paypal.rb中说明了这一点:
#this was added
PayPal::SDK.configure({
:mode => "sandbox",
:client_id => "my-sandbox-id",
:client_secret => "my-sandbox-secret"
})
在向Heroku发送文件之前我在localhost上进行测试,我希望在删除配置文件之前看到沙箱付款页面,因为它正在工作。我反而收到此消息错误:
{"名称" = GT;" BUSINESS_VALIDATION_ERROR&#34 ;, "详细信息" => [{"字段" =>" validation_error","问题" =>"不正确的模板 Id。"}],"消息" =>"验证错误。", " information_link" = GT;" https://developer.paypal.com/webapps/developer/docs/api/#BUSINESS_VALIDATION_ERROR&#34 ;, " debug_id" =>"这里的一些ID"}
其他信息:在删除配置文件之前,我只是将开发信息复制到生产中。我正在测试Heroku并得到同样的错误。
任何想法的人?
答案 0 :(得分:0)
我会通过环境变量添加密钥。这样每个环境都会引用正确的密钥,您不必将它们检查到源代码管理中。如果你想走这条路,https://github.com/laserlemon/figaro是一个很好的宝石。或者,您可以设置config / paypal.yml文件以引用不同的环境。这看起来更像是:
development:
:mode: "sandbox"
:client_id: "my-sandbox-id"
production:
:mode: "not-sandbox-er-whatever"
:client_id: "my-not-sandbox-id"