强制 Rails Paypal gem 使用 Sandbox 而不是 Live
Posted
技术标签:
【中文标题】强制 Rails Paypal gem 使用 Sandbox 而不是 Live【英文标题】:Force Rails Paypal gem to use Sandbox instead of Live 【发布时间】:2016-08-29 02:40:50 【问题描述】:一个小故事:我在 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
中引用它。
当我在本地主机上工作时,我可以在 Sandbox 上创建付款,当我在我的 AWS 服务器上时,我可以在 Live 上创建付款。但在 Heroku 上,我需要它在 Sandbox 而不是 Live 上创建付款。所以我在paypal.rb
中评论了对paypal.yml
的引用,并在paypal.rb 中说明了这一点:
#this was added
PayPal::SDK.configure(
:mode => "sandbox",
:client_id => "my-sandbox-id",
:client_secret => "my-sandbox-secret"
)
在将文件发送到 Heroku 之前,我正在 localhost 上进行测试,并且我希望看到沙盒支付页面,因为它在删除配置文件之前正在工作。我收到此消息错误:
"name"=>"BUSINESS_VALIDATION_ERROR", "details"=>["field"=>"validation_error", "issue"=>"不正确的模板 Id."], "message"=>"验证错误。", "信息链接"=>"https://developer.paypal.com/webapps/developer/docs/api/#BUSINESS_VALIDATION_ERROR", "debug_id"=>"这里有一些 id"
附加信息:在删除配置文件之前,我只是将开发信息复制到生产环境中。我在 Heroku 上进行测试并得到同样的错误。
各位有什么想法吗?
【问题讨论】:
【参考方案1】:我会通过环境变量添加密钥。这样,每个环境都会引用正确的密钥,而您不必将它们签入源代码管理。如果你想走那条路,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"
【讨论】:
是的。这就是我最初得到的。但我尝试在 Heroku 上让两者都在沙盒上工作。然后我得到那个错误 我猜测配置文件的用途不仅仅是被 paypal.rb 引用,但我可能是错的。无论如何,使用环境变量应该可以解决这个问题。您可以通过让 paypal.rb 引用您使用 heroku 手动导出的变量来测试它。以上是关于强制 Rails Paypal gem 使用 Sandbox 而不是 Live的主要内容,如果未能解决你的问题,请参考以下文章
paypal gem 多个帐户 ruby on rails
从 Paypal 获取 first_name(和其他信息)并使用 paypal-recurring gem 创建 Rails Devise 帐户
是否有任何 gem 可以将 paypal 按钮 api 集成到 rails 应用程序? [关闭]
金额无效 paypal_adaptive gem rails