通过IPN “cmd”取消PayPal付款


Canceling a Paypal payment through IPN 'cmd'

是否有

PayPal为"cmd"参数定义的值(用于通过发送cmd=_notify-valid以及收到的值来验证IPN响应)只是为了取消付款?像cmd=_notify-忽略

我需要这个的原因是,我正在维护一个配置文件(我正在使用 PHP),我可以将"Allow_Payments"值设置为"是""否"。因此,不时启用和禁用PayPal付款是一种混乱的解决方案。另一个问题是我的"立即购买"按钮放置在不同的站点上,但它们都使用相同的IPN侦听器。这就是为什么我正在寻找可以在IPN侦听器中使用的解决方案。这就是为什么我认为"cmd"参数在这种情况下会有所帮助。

提前谢谢你。

我相信

你对IPN有错误的想法。

PayPal IPN 只是一个侦听器或处理程序。付款成功,您的IPN将被触发。

我认为实施从您的 IPN 触发的取消命令是错误的,因为这会在收到付款后取消付款 - 对于刚刚付款的用户来说很烦人。

更好的选择是在PayPal付款页面之前使用无限别名处理页面。所有"立即购买"按钮都将定向到与您的 IPN 托管在同一域上的此文档(创建结帐样式流)。需要验证付款数据以防止欺诈(例如付款金额和business_email),然后检查您的"Allow_Payments"标志。如果允许付款并且我们有有效的付款数据,请继续PayPal付款。这样,您的用户将在付款之前被阻止,并且无需取消或退款。

为了让您的服务器(商店)告知PayPal已购买产品的数量和价格,您的服务器通常会向客户的浏览器发送回 HTTP 重定向。 这会导致客户的浏览器被重定向到进行付款PayPal。

此重定向中存在一个漏洞。如果购物者可以控制他们的浏览器,他们可以拦截此重定向并将产品的价格设置为 0$。

您真正必须准确检查这种情况是否未发生的唯一机会是在 IPN 阶段。如果您检测到价格/数量发生了意外情况,则必须在此时(付款后)取消交易。