与 IPN 集成的 PayPal Express Checkout
Posted
技术标签:
【中文标题】与 IPN 集成的 PayPal Express Checkout【英文标题】:PayPal Express Checkout integrated with IPN 【发布时间】:2018-04-11 23:12:08 【问题描述】:我有一个关于 PayPal Express Checkout 和 IPN 的问题。 Internet 上的主题很少,但大多数都比较老旧,无法准确回答我的问题。
我正在使用服务器端 REST API。我们可以发现here PayPal Express Checkout 工作流程如下:
-
我使用 PayPal REST API 初始化付款并获得重定向 url 到结帐页面。
我将客户重定向到结帐页面,客户为订单付款,然后他被重定向回我的应用程序。
如果用户付款,我会获取信息,如果是,我需要执行付款。
问题是 - 如果客户为订单付款,但在重定向回我的应用程序时出现问题怎么办?假设我的应用程序停机或互联网连接出现问题。通常我无法执行付款。
这种情况如何处理?
我的第一个想法是也使用 PayPal IPN 并监听每次付款更改。另一方面,使用 IPN,我需要实施附加机制,以确保我只执行使用上述基本工作流程未正确执行的付款。它变得相当复杂。此外,IPN 的文档真的很“薄弱”,所以我宁愿不要碰这个 PayPal 服务。
应该如何正确完成?
【问题讨论】:
仅供参考,REST API 使用 Webhooks 而不是 IPN。 @AndrewAngell 好的,谢谢。你一般怎么看?我应该使用那些 Webhooks 吗? 好吧,我个人的看法是,如果您遇到连接问题、超时或其他任何会导致从 PayPal 返回失败的问题,那么您需要修复该问题,而不是尝试重新加载并在失败。 【参考方案1】:如果您在客户端使用 Express Checkout,您可以在付款出错或被取消时指定重定向网址:
payment: function(data, actions)
return actions.payment.create(
payment:
transactions: [
amount: total: "$0.01", currency: "USD"
],
redirect_urls:
"return_url": "/path...",
"cancel_url": "/path..."
);
,
在我支持的应用程序中,我们使用从 PayPal 返回的 data.payer.payer_info 来处理订单,这有助于在 PayPal 交易首先失败时防止交易发生。我们还记录 PayPal 交易 ID 用于识别和故障排除。
当然,如果您的应用程序出现故障或存在连接问题,这将无济于事。
【讨论】:
感谢回复,但正如您所注意到的,这对我的具体情况没有帮助:)以上是关于与 IPN 集成的 PayPal Express Checkout的主要内容,如果未能解决你的问题,请参考以下文章
如何为 PayPal Express Checkout 配置 IPN?