Force Rails Paypal gem使用Sandbox而不是Live

时间:2016-05-03 21:18:19

标签: ruby-on-rails ruby heroku paypal paypal-rest-sdk

短篇小说:我在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并得到同样的错误。

任何想法的人?

1 个答案:

答案 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"