我正在尝试为 paypal 设置一个简单的付款选项,但在返回和通知 URLS 时遇到了一些麻烦/混淆。我是 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>
如您所见,表单发布到 paypal,然后根据结果返回,如果失败/取消,它将转到 paypal-notcompleted.php。
如果成功,它将转到 paypal-completed.php。这是我无法理解的地方,我还没有设置 IPN,我只想获取一些变量 paypal 发回给我,运行一个简单的插入查询并在确认消息中显示一些细节给客户。
我可以将 notify_url 和 return_url 作为同一个页面吗?
为什么 paypal 没有将完整的预期(如此处所示: Notify url of Paypal )发回页面?
我知道这与 XML 等有关,但我只是想我可以 $_GET 贝宝发回的变量。有没有人这样做过,他们能告诉我哪里出错了吗?
原文由 Bohdi 发布,翻译遵循 CC BY-SA 4.0 许可协议
要将详细信息返回到您的返回 URL,您需要使用 PDT 。它与 IPN 非常相似,只是它旨在与您的返回 URL 一起使用,而 IPN 旨在与您服务器上的第 3 方 IPN 侦听器脚本一起使用。
PDT 可以在返回 URL 页面上简单地向用户显示交易,但不建议使用 PDT 进行任何后付款处理(即数据库更新、发送电子邮件收据等),因为不能保证即使在您的 PayPal 帐户中启用了自动返回,用户也会返回此页面。
无论用户是否在完成付款后返回您的网站,每次交易发生时都会触发 IPN 。
通知 URL 仅用于 IPN,它会覆盖您在 PayPal 配置文件中针对 IPN 的任何设置。需要在您的 PayPal 帐户配置文件中配置 PDT,以便将数据返回到您的返回 URL。
您将要使用不同的 URL 进行返回和通知,否则相同的代码将运行两次:一次是在用户返回您的站点时,另一次是从 PayPal IPN POST。