gpt4 book ai didi

php - 这是使用 Paypal IPN 的有效方法吗?

转载 作者:太空宇宙 更新时间:2023-11-03 16:17:31 26 4
gpt4 key购买 nike

这是我要实现的伪代码:

    include("../../application/config/db_config.php");

if ($payment_status == 'Completed')
{
if customer/order details exist in table
{
change payment_status to completed, create PDF and Email to customer_email.
}
elseif customer/order details not exist in table
{
insert details into table, create PDF and Email to customer_email.
}
}
else if($payment_status == 'Denied' || $payment_status == 'Failed' || $payment_status == 'Voided')
{
Do Nothing.
}
else if($payment_status == 'In-Progress' || $payment_status == 'Pending' || $payment_status == 'Processed')
{
insert into table, customer details/order details.
}

这不包括验证。我只想知道我是否在正确的轨道上考虑这个问题。

我仍然需要在付款前检索客户输入作为变量,最好在用户付款前保存到数据库吗?或者是否可以通过 paypal 发送此变量并让它返回 ipn 中的变量?

谢谢大家

最佳答案

一般来说,在收到成功的付​​款 IPN 后触发履行是一种可靠的方法(只要履行不是即时/在线的,因此客户坐在他们的屏幕前等待 IPN 处理)。所以在高层次上,是的,你正在正确地处理这个问题。

也就是说,关于您所写内容的一些提示:

1) 在 IPN 时间有这么多分支似乎很不寻常。为什么您有时会在有订单信息的地方收到付款,而其他时候却没有?前一种情况是IPN是为了完成延迟付款吗?如果是这样,请参阅#2

2) 我建议始终在付款步骤之前将订单存储在某处,从而使适当的 IPN 响应始终是状态更新,而不是有时是写入,有时是状态更新。将未付款订单写入您的数据库几乎没有任何成本,并且有一些潜在的好处(例如,能够分析人们没有完成的内容/原因;甚至可能跟进未完成的订单)。它还可以简化您的生活,避免尝试通过您的支付处理器传递大量数据。只需通过订单#/发票#/随便什么,剩下的就交给你了。这会降低您的集成成本并为您提供更大的灵 active (例如,如果您添加/更改处理器)。

3) 我认为您处理 PayPal 付款状态的方式并不完全正确,但我认为这是您在实现时会了解的一个细节。

4) 您没有提及您打算使用付款还是授权,但延迟履行的行业最佳做法是授权、履行,然后捕获。特别是如果您的实现可能包括额外的用户交互(我不明白您最后的段落“我仍然需要...”),这可能有助于稍微清理一下流程。

关于php - 这是使用 Paypal IPN 的有效方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30090728/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com