使用PayPal快速结账收听买家的"receipt confirm"



我在PayPal社区支持上创建了一个问题,但它似乎不活跃,所以我在那里重新创建了。。。
我是一个在线服务商。我已经完成了沙盒PayPal Express Checkout的测试,并尝试在直播中集成。但是,直播中最大的区别是:在从结账界面批准后,钱仍然暂时搁置,买家必须通过点击"确认收据"进行最终确认。这种情况在沙盒环境下不会发生,钱会直接记入商家账户。我尝试集成IPN和Webhook来监听事件,但它们都无法捕捉到"确认接收"这一事件。请帮助我处理此事件,因为如果我听不进去,我的服务将无法自动执行。非常感谢您的帮助,任何意见或建议都会被告知。
上一期在这里

不幸的是,Paypal社区论坛的支持似乎并不活跃——有很多问题没有得到回答,我的问题从来没有得到任何答案。

挂起的付款在实时环境中很常见,尤其是如果你的账户没有完全验证,但不可能在沙箱中进行测试。因此,我对我的生活环境进行了大量的观察和试错测试。希望这个答案可以帮助其他人避免在他们的生活环境中进行测试。

对于订阅/计费计划或定期(一次性(付款,待定付款的管理方式不同。

有两种不同的webhook需要支持:

1.PAYMENT.CAPTURE.COMPLED用于定期付款,并且有一个status,您可以使用它来检查付款状态,可以是COMPLED、PENDING或FAILED(以及其他(。

请参阅:Webhook事件名称-支付v2

对于PAYMENT.CAPTURE.COMPLETE来说,未决和搁置似乎是一回事。

2.PAYMENT.SALE.*用于订阅,此处使用不同的webhook管理(或应该管理(挂起的付款。

请参阅:Webhook事件名称-销售

  • PAYMENT.SALE.COMPLETED销售完成
  • PAYMENT.SALE.DENIED销售的状态从挂起变为拒绝
  • PAYMENT.SALE.PENDING销售状态更改为挂起

付款可以直接转到COMPLETED,也可以从PENDING转到COMPLETE或从PENDINNG转到DENIED。

我相信,后者是指客户没有确认购买——可能他们想要退款,但又懒得办理。

然而,我刚刚注意到,Paypal为暂停的付款发送了两次PAYMENT.SALE.COMPLETED网络挂钩。一次没有指示付款被搁置,第二次指示资金被释放。

以下是我收到的两个示例(匿名(webhook请求:

第一次通知:付款完成,没有资金被搁置的迹象:

{
"id": "WH-99J09075X12340123-12X4860914197212Z",
"event_version": "1.0",
"create_time": "2021-08-27T02:05:34.170Z",
"resource_type": "sale",
"event_type": "PAYMENT.SALE.COMPLETED",
"summary": "Payment completed for $ 15.0 USD",
"resource": {
"id": "5X123412X12341234",
"state": "completed",
"amount": {
"total": "15.00",
"currency": "USD",
"details": {
"subtotal": "15.00"
}
},
"payment_mode": "INSTANT_TRANSFER",
"protection_eligibility": "ELIGIBLE",
"protection_eligibility_type": "ITEM_NOT_RECEIVED_ELIGIBLE,UNAUTHORIZED_PAYMENT_ELIGIBLE",
"transaction_fee": {
"value": "0.96",
"currency": "USD"
},
"invoice_number": "",
"custom": "REF-017089",
"billing_agreement_id": "I-5X8313XXYYZZ",
"receipt_id": "I-12342635535001234",
"create_time": "2021-08-27T02:04:51Z",
"update_time": "2021-08-27T02:05:11Z",
"links": [],
"soft_descriptor": "PAYPAL *MY COMPANY"
},
"links": [],
"paypal": {}
}

第二次通知:付款现已发布

{
"id": "WH-99J09075X12340123-12X4860914197211Z",
"event_version": "1.0",
"create_time": "2021-09-16T17:22:12.797Z",
"resource_type": "sale",
"event_type": "PAYMENT.SALE.COMPLETED",
"summary": "Payment completed for $ 15.0 USD",
"resource": {
"id": "5X123412X12341234",
"state": "completed",
"amount": {
"total": "15.00",
"currency": "USD",
"details": {
"subtotal": "15.00"
}
},
"payment_mode": "INSTANT_TRANSFER",
"protection_eligibility": "ELIGIBLE",
"protection_eligibility_type": "ITEM_NOT_RECEIVED_ELIGIBLE,UNAUTHORIZED_PAYMENT_ELIGIBLE",
"payment_hold_status": "RELEASED",
"transaction_fee": {
"value": "0.96",
"currency": "USD"
},
"invoice_number": "",
"custom": "REF-017089",
"billing_agreement_id": "I-5X8313XXYYZZ",
"receipt_id": "I-12342635535001234",
"create_time": "2021-08-27T02:04:51Z",
"update_time": "2021-09-16T17:22:12Z",
"links": [],
"soft_descriptor": "PAYPAL *MY COMPANY"
},
"links": [],
"paypal": {}
}

请参阅第二个通知有payment_hold_status,现在已释放,但第一个通知没有payment_hold_status

对于我的实施,为了避免多次计算付款,我将忽略此通知。如果有人有更好的解决方案,请给我留言。谢谢

注意:付款从挂起到完成可能需要长达3周的时间,通常需要用户确认他们收到了产品,因此您需要交付挂起的付款。Paypal应该将这笔钱托管,只要他们满意订单是合法的,你就应该拿到你的钱。请参阅:https://www.paypal.com/us/smarthelp/article/how-do-i-get-my-money-sooner-for-a-transaction-on-hold-faq3743

Webhook将发送两个事件"Payment sale completed",第一个是用户批准结账"payment_hold_status": "HELD",第二个是用户确认收货"payment_hold_status": "RELEASED"。谢谢@Preston PHX,我没有仔细注意到。

最新更新