Boh*_*hdi 17 php paypal paypal-ipn
我正在尝试为paypal设置一个简单的付款选项,但我对返回和通知URL有一些麻烦/困惑.我是一个相当新的PHP并且之前在asp中完成了这个,但我现在已经迷失了.
所以我的基本贝宝形式:
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" id="PayPalForm" name="PayPalForm" target="_top">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="email@hotmail.com">
<input type="hidden" name="amount" value="0.01">
<input type="hidden" name="item_name" value="Composite Door">
<input type="hidden" name="item_number" value="<?php echo $orderID ?>">
<input type="hidden" name="currency_code" value="GBP">
<input type="hidden" name="cancel_return" value="http://www.mydomain.co.uk/paypal-notcompleted.php">
<input type="hidden" name="return" value="http://www.mydomain.co.uk/paypal-completed.php">
<input type="hidden" name="notify_url" value="http://www.mydomain.co.uk/paypal-completed.php">
</form>
<script>
document.PayPalForm.submit();
</script>
Run Code Online (Sandbox Code Playgroud)
正如你可以看到表单发布到paypal,然后根据结果返回,如果失败/取消它转到paypal-notcompleted.php.
如果它成功,它将转到paypal-completed.php.这是我无法理解的地方,我还没有设置IPN,我想要做的就是把一些变量paypal帖子拿回给我,运行一个简单的插入查询并在确认消息中显示一些细节给客户.
我可以将notify_url和return_url作为同一页吗?
为什么paypal没有发布完整的预期(如此处所示:通知Paypal的URL)回到页面?
我知道有一些与XML等有关,但我只是想我能够$ _GET paypal发回的变量.有没有人这样做过,他们可以告诉我哪里出错了吗?
Dre*_*ell 19
要将详细信息返回到您的返回URL,您需要使用PDT.它与IPN非常相似,除非它旨在与您的返回URL一起使用,而IPN旨在与您服务器上的第三方IPN侦听器脚本一起使用.
PDT适用于在返回URL页面上简单地向用户显示交易,但不建议使用PDT进行任何后付款处理(即数据库更新,发送电子邮件收据等),因为无法保证即使在您的PayPal帐户中启用了自动退货,用户也会返回此页面.
无论用户是否在完成付款后将其返回到您的网站,都会在每次交易发生时触发IPN.
通知URL仅用于IPN,它将覆盖您在IPP的PayPal配置文件中的任何设置.需要在您的PayPal帐户配置文件中配置PDT,以便将数据返回到您的返回URL.
您将要使用不同的URL进行返回和通知,否则相同的代码将运行两次:一次是用户返回您的站点,另一次是来自PayPal IPN POST.
付款数据传输(PDT)
这些return和cancel_return网址是一次性付款数据传输(PDT)调用,主要是因为用户完成您网站上的交易.它只传递信息以合理地帮助您的网站完成该任务.不保证买家在退货前不会退出,因此您不能依赖于能够使用这些进行任何交易后处理.
即时付款通知(IPN)
notify_url由即时付款通知(IPN)流程使用,并在事务状态的每次更改时调用.它旨在成为事务生命周期中所有操作的完整记录,您可以依赖它来驱动后端进程,如会计,订单履行或取消.IPN流程采取措施确保流程的完整性.
他们的目的是不同的,因此所涉及的信息和安全是不同的.为了利弊.
IPN消息可能会严重延迟,因此请使用所有三个变量
请注意,虽然大多数IPN消息是在PayPal交易完成后的几秒钟内发送的,但我经历了长达数小时的延迟,因此它们是可靠的,但不一定是及时的.
我建议使用所有return,return_cancel并且notify_url,因为前两个将立即返回,以便您可以立即向用户提供反馈,并更新后端数据/启动履行流程,但如果用户之前退出PayPal,则使用后者作为备份被归还的人.指示您的买家返回您的网站以确保及时处理他们的订单.
只需要管理订单状态,这样如果PDT已经这样做,IPN就不会触发履行,这基本上就是为了确保重复的CompletedIPN消息在第一次之后不重新触发履行而必须做的事情.
Notify_url 继续用于同一事务的后续消息
同一事务的IPN消息继续转到同一notify_url地址.我查看了我们的IPN历史记录,并将RefundIPN消息发送到原始版本notify_url.
即使您根据https://developer.paypal.com/docs/classic/ipn/integration-guide/IPNSetup/更改了IPN首选项,这种情况仍在继续:
除非您已禁用首选项以接收IPN消息,否则IPN消息始终会发送到您的通知URL.即使您未在配置文件中启用接收IPN消息,或者您已通过关闭IPN消息重置首选项,PayPal仍会将IPN消息发送到您为特定付款指定的通知URL.由于您在配置文件中禁用了首选项而未发送的IPN邮件将在启用接收IPN时显示在IPN历史记录中.它们出现在历史记录中后,您可以选择是否重新发送它们.
我不确定相关交易(如争议或后续订阅付款)是否仍将使用原始交易notify_url.也许真正知道的人可以提供答案.
小智 6
你的notify-url和return url都不同.您的返回网址会在成功付款后通过一些退货信息指导您的客户.顺便说一句,通知网址是为了获取客户购买的完整交易详情,以及客户无法访问的详细信息,这是出于数据库或存储目的.
| 归档时间: |
|
| 查看次数: |
42172 次 |
| 最近记录: |