PayPal IPN 消息未发送发票,即使它肯定包含在按钮代码中
Posted
技术标签:
【中文标题】PayPal IPN 消息未发送发票,即使它肯定包含在按钮代码中【英文标题】:PayPal IPN message not sending invoice, even though it was definitely included in button code 【发布时间】:2021-11-21 11:27:54 【问题描述】:我的网站上有一个贝宝结帐按钮以及资金图标。这是它的部分代码:
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
时,大多数时候,发票和 @987654325 都不是@ 字段正在通过(当 IPN 消息开始失败时,我添加了自定义字段)。
我们用于按钮的api是https://www.paypalobjects.com/api/checkout.js
是我遗漏了什么,还是只是 api 已被弃用,这是另一个需要切换的标志?
编辑:
在其他浏览器上对此进行测试后,adblock 似乎阻止了部分 checkout.js 依赖项的加载:
火狐:Cross-Origin Request Blocked
歌剧:Failed to load resource: net::ERR_BLOCKED_BY_ADBLOCKER
边缘:POST https://www.paypal.com/xoplatform/logger/api/logger net::ERR_BLOCKED_BY_CLIENT
没有来自 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¬ify_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=
【问题讨论】:
您确定那些web_accept
付款来自上述代码吗?最可能的解释是它们来自标准 html 按钮或链接
我们使用 paypal api 来创建 ipn 消息的唯一地方就是这里,我不认为他们可以来自其他任何地方
如果在 PayPal 账户中配置了 IPN 监听 URL,则该账户收到的任何付款都会触发 IPN 消息。
发布您收到的示例 web_accept IPN(保留任何 ID,但编辑掉个人身份数据)
【参考方案1】:
在给出的示例 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¬ify_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 帐户的单独集成。
【讨论】:
哦,有趣。我们确实有支付流集成,但我被引导相信支付流不使用任何 IPN 消息。我们使用 paybridge.php 文件处理这些支付流付款,不需要 ipn 消息。非常感谢! Payflow 本身不发送 IPN 消息,但 PayPal 帐户收到的任何付款都会向该帐户中配置的 IPN 侦听器发送 IPN 消息(除非交易通过指定不同的 notify_url 覆盖此消息)跨度>以上是关于PayPal IPN 消息未发送发票,即使它肯定包含在按钮代码中的主要内容,如果未能解决你的问题,请参考以下文章