PayPal IPN 间歇性地不通过表单提交将 cart/info 发送到 PayPal

PayPal IPN intermittently not POSTing cart/info to PayPal from form submit

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

问题出在客户单击 PayPal 按钮选项以通过 PayPal 付款时。这是使用 IPN 表单 post 将购物车和交易信息 post 发送到 PayPal。一个新的 window 打开,他们会看到 PayPal 的页面.. 就好像他们刚刚输入了 URL。暂无订单等信息

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

这与来自 PayPal 的交易的 post 返回信息无关,而是 post 向 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" alt="Make payments with PayPal - it's fast, free and secure!" />

    <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

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

v2/checkout/orderspurchase_unit请求对象为documented here