PayPal IPN 消息不发送发票,即使它肯定包含在按钮代码中

PayPal IPN message not sending invoice, even though it was definitely included in button code

我的网站上有一个贝宝结账按钮和资金图标。这是它的部分代码:

                 style: {
                    label: 'checkout',
                    fundingicons: true, // optional
                    size: 'responsive', // small | medium | large | responsive
                    shape: 'rect',   // pill | rect
                    color: 'gold'   // gold | blue | silver | black
                },
                payment: function (data, actions) {
                    return actions.payment.create({
                        payment: {
                            transactions: [
                                {
                                    amount: {
                                        total: amount,
                                        currency: currency
                                    },
                                    invoice_number: '{$invoice}',
                                    custom: '{$invoice}'
                                }
                            ],
                            "redirect_urls": {
                                "return_url":  , // these are both filled correctly
                                "cancel_url": 
                            }
                        }
                    });

如您所见,发票字段已明确定义,但是,当收到 IPN 消息发回时,我的 ipn.php 文件由于缺少发送给它的发票编号而失败。

更奇怪的是,每当 txn_type 是 express_checkout 时,发票 就在 那里,但是当它是 web_accept 时,它大多数时候,发票和 custom 字段都没有通过(我在 IPN 消息开始失败时添加了自定义字段)。

我们用于按钮的 api 是 https://www.paypalobjects.com/api/checkout.js

我是否遗漏了什么,或者只是 api 已弃用,这是另一个需要切换的标志?

编辑:

在其他浏览器上测试后,adblock 似乎阻止了部分 checkout.js 依赖项的加载:

没有来自 chrome 的错误消息。

编辑 2:

web_accept

类型的示例 IPN
mc_gross=300.00&protection_eligibility=Ineligible&payer_id=SOMEREALID&
            payment_date=11:32:11 Sep 27, 2021 PDT&payment_status=Completed&charset=windows-1252&
            first_name=&mc_fee=9.00&notify_version=3.9&custom=&payer_status=unverified&
            business=our_business_email&quantity=1&
            verify_sign=sign_in_alpha_numeric&
            payer_email=random_alpha_numeric@dcc2.paypal.com&txn_id=1KM93595HU1361254&payment_type=instant&
            last_name=NotProvided&receiver_email=same_as_business_email&payment_fee=&
            shipping_discount=0.00&receiver_id=more_alpha_numeric&insurance_amount=0.00&
            txn_type=web_accept&item_name=&discount=0.00&mc_currency=CAD&item_number=&
            residence_country=OUR_COUNTRY_CODE&receipt_id=1111-1111-1111-1111&shipping_method=Default&
            transaction_subject=&payment_gross=

在给出的示例 IPN 中:

mc_gross=300.00&protection_eligibility=Ineligible&payer_id=SOMEREALID&
payment_date=11:32:11 Sep 27, 2021 PDT&payment_status=Completed&charset=windows-1252&
first_name=&mc_fee=9.00&notify_version=3.9&custom=&payer_status=unverified&
business=our_business_email&quantity=1&
verify_sign=sign_in_alpha_numeric&
payer_email=random_alpha_numeric@dcc2.paypal.com&txn_id=1KM93595HU1361254&payment_type=instant&
last_name=NotProvided&receiver_email=same_as_business_email&payment_fee=&
shipping_discount=0.00&receiver_id=more_alpha_numeric&insurance_amount=0.00&
txn_type=web_accept&item_name=&discount=0.00&mc_currency=CAD&item_number=&
residence_country=OUR_COUNTRY_CODE&receipt_id=1111-1111-1111-1111&shipping_method=Default&
transaction_subject=&payment_gross=

注:@dcc2.paypal.com

这来自直接信用卡集成,可能使用经典的 NVP DoDirectPayment API,或虚拟终端 [或使用 PayPal 作为处理器的 Payflow,碰巧]

因此,与问题中的按钮代码无关——而是与此 PayPal 帐户的单独集成。