PayPal IPN 间歇性地不通过表单提交将购物车/信息发布到 PayPal

Posted

技术标签:

【中文标题】PayPal IPN 间歇性地不通过表单提交将购物车/信息发布到 PayPal【英文标题】:PayPal IPN intermittently not POSTing cart/info to PayPal from form submit 【发布时间】:2021-04-02 13:32:06 【问题描述】:

我遇到了一个奇怪的问题。这是非常断断续续的。它几乎与 iPhone 和 Safari 有关。而且,直到今天,我都无法复制它。每月可能发生几笔交易。

问题是当客户单击 PayPal 按钮选项通过 PayPal 付款时。这是使用 IPN 表单发布将购物车和交易信息发布到 PayPal。一个新窗口打开了,他们看到了 PayPal 的页面……就好像他们刚刚输入了 URL。没有订单等信息。

正如我所提到的,这是非常不一致和断断续续的。 99% 的用户会看到交易总额,他们可以结帐等。如果我收到有关此问题的电子邮件,我会要求他们尝试不同的浏览器、chrome 等。它通常可以工作。似乎它通常是 iPhone 和 Safari 浏览器。有时用旧手机。有时用新手机等。

这与从 PayPal 回发交易信息无关,而是将购物车信息发布到 PayPal。

这是包含此信息的 html/php 代码。

<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_blank">
    <?
    $count  = 1;
    $session->setValue('sInvoice', strtoupper(substr(md5(uniqid(rand(),1)),0,8)));
    for($val = 0; $val < sizeof($Cart); $val++)
        $productID = $Cart[$val]['ProductID'];
        $productTitle = $Cart[$val]['ProductLineDescription'];
        $productPrice = $Cart[$val]['UnitPrice'];
        $quantity = $Cart[$val]['Quantity'];
        $calcPrice = $Cart[$val]['LineItemPrice'];
        $shipping = number_format($session->getValue("ShippingTotal"), 2, '.', ',');
        ?>
        <input type="hidden" name="item_name_<?=$count?>" value="<?=specialchars($productTitle)?>" />
        <input type="hidden" name="amount_<?=$count?>" value='<?=number_format($productPrice, 2, '.', ',')?>' />
        <input type="hidden" name="quantity_<?=$count?>" value="<?=$quantity?>" />
        <input type='hidden' name='item_number_<?=$count?>' value='' />
        <?
        $count++;
    
    ?>
    <input type="hidden" name="shipping_1" value='<?=$shipping?>' />
    <input type="hidden" name="no_shipping" value="2" />
    <input type="image" id="PayPalButton" src="https://www.paypalobjects.com/webstatic/en_US/i/buttons/checkout-logo-large.png" name="submit" class="wp_cart_checkout_button"  />

    <input type="hidden" name="return" value="https://www.example.com/thankyou/" />
    <input type="hidden" name="notify_url" value="https://www.example.com/paypal/" />
    <input type="hidden" name="business" value="paypal@example.com" />
    <input type="hidden" name="currency_code" value="USD" />
    <input type="hidden" name="cmd" value="_cart" />
    <input type="hidden" name="upload" value="1" />
    <input type="hidden" name="rm" value="2" />
    <input type="hidden" name="charset" value="utf-8" />
    <input type="hidden" name="mrb" value="3FWGC6LFTMTUG" />
    <input type="hidden" name="custom" value="cid=<?=$xCartID?>" />
</form>

当用户遇到问题时,我已经在他们的购物车中记录了商品和属性,并尝试了我的结果,但始终无法重现问题。单击 PayPal 按钮的行为符合预期。

有什么想法吗? TIA

【问题讨论】:

【参考方案1】:

我可以告诉你我会做什么,即切换到不依赖过时的 HTML 表单帖子的当前集成方法。这是客户端专用的:https://developer.paypal.com/demo/checkout/#/pattern/client

v2/checkout/orders purchase_unit 请求对象是documented here

【讨论】:

是的!我喜欢这个升级选项。感谢您的信息,宁愿走这条路。我很感激。

以上是关于PayPal IPN 间歇性地不通过表单提交将购物车/信息发布到 PayPal的主要内容,如果未能解决你的问题,请参考以下文章

PayPal 的 IPN 不会因购物车上传而触发

将付款转移到待处理状

Paypal IPN 未调用问题

PayPal IPN 消息问题

Paypal IPN 处理来自购物车上传的篡改订单

Paypal IPN 处理来自购物车上传的篡改订单