Paypal return url 无法使用 php 和 html 表单

Paypal return url not working with php and html form

我设置了付款(使用 php),这样当客户 return 访问 success.php 文件时(在使用 IPN 侦听器在 Paypal 上完成付款流程后)他们是使用新的会员编号添加到数据库中,该编号也在 success.php 文件中生成。如果客户以访客身份付款,则该流程运行良好,他们会按原样 return 进入 success.php 页面。但是,如果客户登录到贝宝而不是作为访客付款,他们将被重定向到贝宝用户帐户页面,而不是返回到我网站上的 success.php 页面。这意味着付款已被收取,但他们的会员编号尚未创建或添加到数据库中。

有没有办法强制所有客户返回我的成功页面,或者是否应该将创建新成员的代码添加到 ipn 侦听器 (ipn.php) 文件中,这样即使他们不这样做也没关系返回成功页面?

这是我在结帐页面中用来设置 return url 的代码。

<form action="<?php echo $paypalURL; ?>" method="post">
           <!-- Identify your business so that you can collect the payments. -->
           <input type="hidden" name="business" value="<?php echo $paypalID; ?>">

           <!-- Specify a Buy Now button. -->
           <input type="hidden" name="cmd" value="_xclick">

           <!-- Specify details about the item that buyers will purchase. -->
           <input type="hidden" name="item_name" value="<?php echo $item_name; ?>">
           <input type="hidden" name="item_number" value="<?php echo $item_number; ?>">
           <input type="hidden" name="amount" value="<?php echo $price; ?>">
           <input type="hidden" name="currency_code" value="GBP">

           <!-- Specify URLs -->
           <input type='hidden' name='cancel_return' value='http://example.com/payment-cancelled'>
                 <input type='hidden' name='return' value='http://example.com/thanks-for-joining/'>

           <!-- Display the payment button. -->
           <input type="submit" name="submit" class="button" value="Pay Now">
       </form>

我应该补充一点,到目前为止我只在沙盒模式下测试过这个,所以如果有人知道这是否只是一个沙盒问题,请告诉我。

更新:进一步的测试表明 return url 也不再适用于访客结账。这只是在沙盒支付通过新的支付页面(附截图)后才开始发生。

paypal是否更改了请求方式 return url?

我尝试了几种将贝宝付款集成到我的网站的方法。根据我在 Whosebug、paypal 网站和整个网络上阅读的内容,最好将所有后端工作放入您的侦听器中。您可以在前端设置一些东西来为客户准备您的数据库,但是使用成功页面获取此信息的主要问题是:

1) 如果知道,您的客户可以直接进入您成功页面的 URL
2) 客户可以选择在 paypal 之后不被重定向,并且可能根本 return 不访问您的站点(这是我所看到的最好的理由)。
3) 有时 paypal 重定向,但监听器可能没有收到 completed、pending、.etc 的 paypal 响应(这就是为什么他们在重定向前等待 10 秒),因此您不希望用户去其他地方或过早地验证。

老实说,将所有代码放在您的侦听器中也非常简单,并且可以减少您的成功页面和 paypal 之间的错误传达。至于测试,我只是用IPN模拟器测试我的代码,没问题。

至于重定向 URL,paypal 中有一些冗余,如果您使用按钮,选项 3(我相信)将提供 return URL 覆盖其他。我不确定是否使用沙箱,但请确保您的代码中有 .sandbox.paypal 以确保它有效 (https://gist.github.com/xcommerce-gists/3440401#file-completelistener-php).

希望对您有所帮助。