php - Paypal 返回 url 不适用于 php 和 html 表单

标签 php paypal paypal-ipn

我设置了付款(使用 php),以便当客户返回到 success.php 文件时(在使用 IPN 监听器在 Paypal 上完成付款流程之后),他们将被添加到带有新成员(member)编号的数据库中,这也是在 success.php 文件中生成。如果客户以访客身份付款,则该过程运行良好,他们将按应有的方式返回到 success.php 页面。但是,如果客户登录到 paypal 而不是以访客身份付款,他们将被重定向到 Paypal 用户帐户页面,而不是返回到我网站上的 success.php 页面。这意味着付款已被收取,但他们的成员(member)编号尚未创建或添加到数据库中。

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

这是我在结帐页面中用来设置返回 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>

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

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

paypal是否改变了请求返回url的方法?

Paypal payment screen shot

最佳答案

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

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

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

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

希望对您有所帮助。

关于php - Paypal 返回 url 不适用于 php 和 html 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42933785/

相关文章:

php - SQL查询没有返回值

php - 在 PHP 代码中集成 PayPal

php - 使用(不断更新)数据库中的纬度、经度通过谷歌地图显示实时位置

php - Laravel 4 访问环境变量

php - 如何在循环中创建循环...? PHP-MySQLi

paypal - Paypay网站支付标准API : pay without paypal account

paypal - 查看paypal支付是否成功

ruby-on-rails - 使用保存卡的 Paypal 并行支付

paypal - 如何在PayPal中获取转换后的钱的值(value)

paypal - 自定义支付IPN notify_url