捕获重复的 PayPal IPN 付款

Posted

技术标签:

【中文标题】捕获重复的 PayPal IPN 付款【英文标题】:Catching duplicate PayPal IPN payments 【发布时间】:2012-10-12 06:38:50 【问题描述】:

我有一个通过 PayPal 的 IPN 服务设置的定期支付解决方案,基本上用户填写表格,支付款项,然后通过 IPN 我的系统收到一个 ping 以允许用户访问系统。

从技术上讲,一切正常,但有时在用户周期的最后一天,他们会忘记这是定期付款并再次填写表单。 PayPal 似乎并不介意这一点,并创建了第二个定期付款配置文件。

目前我进去,退款并取消这个新的付款资料,但显然这并不理想 - 有什么方法可以将 PayPal 配置为不接受来自当前有效资料的人的新资料?还是我需要在我的网站结束时捕捉到这一点并在允许付款之前进行某种形式的查找?

【问题讨论】:

我认为这必须发生在您的最后,因为我认为 Paypal 无法识别重复的定期付款。我认为它只是被交换的 ID 和金额(加上进一步想到的数据),但它所做的只是查看 ID,如果它正确,很可能会与他们的数据库进行交叉检查。我认为您必须了解是否有办法捕获重复付款。就像给他们一个付款号或参考号一样。一旦被复制,您就可以抓住它并将钱退回。 您是否将相同的 IPN 从 Paypal 发送到 Paypal 站点(用于验证)?如果这样做,您将不会收到两次针对同一笔交易的相同 IPN 呼叫。 【参考方案1】:

Paypal 无法识别交易是重复交易,它将交易视为新交易。你将不得不从你的系统中解决它。 在实施支付网关时,最好在发送到支付网关之前将账单保存为待处理状态或系统中的某些内容。 同样在用户填写的表单中,您可以实现一个字段来唯一标识用户,例如他的电子邮件地址,您还可以根据系统中的用户唯一字段保存到期日期或第二个重复日期。现在,当用户输入相同的唯一字段并想再次提交表单时,您可以验证同一用户正在再次付款,但其第二个计费日期尚未到期,因此提示并限制他再次付款。

希望对你有所帮助。

【讨论】:

以上是关于捕获重复的 PayPal IPN 付款的主要内容,如果未能解决你的问题,请参考以下文章

PayPal IPN HTML 代码,用于使用不同的首次付款进行定期付款

Paypal 中定期付款的 IPN 与普通发票付款有啥不同的参数吗?

PayPal 即时付款通知 (IPN) 的 C# 处理程序

Paypal 支付按钮和 IPN:如何唯一地链接用户?

Paypal Recurring Gem - 暂停付款

使用 Paypal ipn 和 pdt 进行付款