【问题标题】:Paypal return url not working with php and html formPaypal 返回网址不适用于 php 和 html 表单
【发布时间】:2017-08-13 12:18:31
【问题描述】:

我已设置付款(使用 php),因此当客户返回 success.php 文件时(在 Paypal 上使用 IPN 侦听器进行付款处理后),他们将被添加到带有新会员编号的数据库中,这也是在success.php 文件中生成。如果客户以访客身份付款,则该过程运行良好,他们将按原样返回到 success.php 页面。但是,如果客户登录到 paypal 而不是以访客身份付款,他们将被重定向到 Paypal 用户帐户页面,而不是返回到我网站上的 success.php 页面。这意味着已经付款,但他们的会员号没有创建或添加到数据库中。

有没有办法强制所有客户返回我的成功页面,或者是否应该将创建新成员的代码添加到 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的方式?

【问题讨论】:

    标签: php paypal paypal-ipn


    【解决方案1】:

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

    1) 如果知道,您的客户只需输入成功页面的 URL
    2)客户可以选择在支付宝之后不被重定向,并且可能根本不会返回您的网站(这是我所看到的最好的理由)。
    3) 有时贝宝重定向,但侦听器可能没有收到贝宝的已完成、待处理、.etc 响应(这就是他们在重定向前等待 10 秒的原因),因此您不希望用户去其他地方或过早验证。

    老实说,将所有代码放入您的侦听器中也非常简单,并且可以减少您的成功页面与贝宝之间的沟通不畅。至于测试,我只是用IPN模拟器测试了我的代码,没问题。

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

    我希望这会有所帮助。

    【讨论】:

    • 感谢 Interloper,我有一种感觉,最好将它全部放在监听器中,我已经开始这样做了。主要问题是该站点在 wordpress 上运行,当然 ipn 文件不会在 wordpress 框架内调用,因此添加用户元和使用 wp_mail 等功能并不容易。我相信我可以弄清楚。 Paypal 沙盒对于这个寻求的东西似乎是粗略的,并且技术支持不是很好。我已将您的答案标记为正确,以感谢您的回复;-)
    猜你喜欢
    • 2020-08-15
    • 2014-12-05
    • 2010-12-05
    • 1970-01-01
    • 2013-08-25
    • 2013-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多