如何使用 Paypal 的 Adaptive Payments API 和 Ruby 来避免身份验证和时间问题?

Posted

技术标签:

【中文标题】如何使用 Paypal 的 Adaptive Payments API 和 Ruby 来避免身份验证和时间问题?【英文标题】:How can I avoid auth and time issues using Paypal's Adaptive Payments API with Ruby? 【发布时间】:2011-02-12 15:34:16 【问题描述】:

我在尝试从 Ruby 访问 Paypal 的自适应支付 API 时遇到了多个问题。

我最初遇到的主要问题是 Paypal 要求其 HTTP 标头全部大写,但 Net::HTTP 不保留 HTTP 标头的大小写(它将它们存储为“小写”,然后将它们“大写”输出 - - 因此,如果您将标头设置为“X-PAYPAL-SECURITY-USERID”,它将存储为“x-paypal-security-userid”并输出为“X-Paypal-Security-Userid”)。

当我尝试将 API 与这些大小写错误的标头一起使用时,出现“500000 Internal Server”错误。

所以我猴子修补了 Net::HTTP 以保留标头的大小写。但是现在我遇到了超时异常:

Timeout::Error (execution expired):
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/timeout.rb:60:in `rbuf_fill'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/protocol.rb:132:in `rbuf_fill'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/protocol.rb:104:in `read_all'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:2220:in `read_body_0'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:2173:in `read_body'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:2198:in `body'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:2137:in `reading_body'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:1052:in `request'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:543:in `start'

那么,回到我最初的问题:是否有人使用 Ruby 成功访问了自适应支付 API?如果有,你的秘诀是什么?

【问题讨论】:

“不,我没有在 Ruby 中使用 Paypal 的 Adaptive Payments API。”将是您问题标题的有效答案。你不妨改写一下。 【参考方案1】:

我为 ruby​​ 创建了一个 paypal 自适应支付 gem。我在 nextsprocket.com 上成功使用它

这是一篇关于它的博客文章:http://tommy.chheng.com/index.php/2009/12/paypal-adaptive-ruby-gem-released/

试一试,看看它是否对你有帮助。

【讨论】:

【参考方案2】:

我建议您查看 PayPal 的 Ruby SDK。不过,Paypal 的示例 ruby​​ 代码充满了错误。我在下面列出了在他们的示例代码工作之前需要进行的更改。不确定他们是否已经修复了这些错误。如果还没有,请按照以下步骤操作。

Ruby SDK:https://www.x.com/community/ppx/sdks#ADAPI

您需要做出的改变:

1) 进入 xxx_controller.rb 文件并更改以下行:

@paykey = @response["payKey"]

到:

@paykey = @response["payKey"][0]

2) 去掉 form_tag 和 ( 之间的所有空格。在他们的代码中,他们将标签写为

这个应该

3) 确保所有表单都以

关闭

到目前为止,我发现 SDK 似乎是自适应支付的一个很好的起点

【讨论】:

+1 谢谢你把这个放在这里。我确信 Paypal 的开发服务只是为了吸引网络开发人员而设置的。【参考方案3】:

我推荐https://github.com/jpablobr/active_paypal_adaptive_payment - 我尝试使用paypal-adaptive gem 但没有成功,而APAP 效果很好。 (最终。)

【讨论】:

【参考方案4】:

官方 Ruby PayPal 自适应支付 SDK gem https://github.com/paypal/adaptivepayments-sdk-ruby

【讨论】:

以上是关于如何使用 Paypal 的 Adaptive Payments API 和 Ruby 来避免身份验证和时间问题?的主要内容,如果未能解决你的问题,请参考以下文章

如何获取 PayPal Adaptive Payments 授权表的移动浏览器视图

PayPal 自适应支付:transactionStatus 与 senderTransactionStatus

PayPal Adaptive Payments 支付操作完成后如何收到成功响应?

Paypal Adaptive Payments 以访客身份

使用 Paypal Adaptive Payments 设置标题图片

我如何返回 paypal-preapproval 的响应?