【发布时间】:2020-10-31 21:35:55
【问题描述】:
我在市场中集成了智能按钮结账功能,任何人都可以从任何人那里出售/购买商品。
我还成功安装了一个 webhook 监听器,如果退款已发出,它会收到通知。
但在收到的退款事件正文中,我无法找到已退款的付款/交易的信息。
通过阅读事件
file_get_contents('php://input');
我会得到这样的 JSON 编码的事件细节:
{
"id":"WH-3WS24689NP236083V-89P84301TC0576916",
"event_version":"1.0",
"create_time":"2020-07-10T15:36:33.720Z",
"resource_type":"refund",
"resource_version":"2.0",
"event_type":"PAYMENT.CAPTURE.REFUNDED",
"summary":"A EUR 7.89 EUR capture payment was refunded",
"resource":{
"seller_payable_breakdown":{
"total_refunded_amount":{
"value":"7.89",
"currency_code":"EUR"},
"paypal_fee":{
"value":"0.15",
"currency_code":"EUR"
},
"gross_amount":{
"value":"7.89",
"currency_code":"EUR"},
"net_amount": {
"value":"7.74",
"currency_code":"EUR"
}
},
"amount":{
"value":"7.89",
"currency_code":"EUR"
},
"update_time":"2020-07-10T08:36:00-07:00",
"create_time":"2020-07-10T08:36:00-07:00",
"links":[
{"method":"GET","rel":"self","href":"https://api.sandbox.paypal.com/v2/payments/refunds/3TF6899507696873K"},
{"method":"GET","rel":"up","href":"https://api.sandbox.paypal.com/v2/payments/captures/5U107751JJ334642K"}
],
"id":"3TF6899507696873K",
"status":"COMPLETED"
},
"links":[{
"href":"https://api.sandbox.paypal.com/v1/notifications/webhooks-events/WH-3WS24689NP236083V-89P84301TC0576916",
"rel":"self",
"method":"GET"},{
"href":"https://api.sandbox.paypal.com/v1/notifications/webhooks-events/WH-3WS24689NP236083V-89P84301TC0576916/resend",
"rel":"resend",
"method":"POST"}
]
}
所以我得到了数据。但在数据中,我找不到任何信息,如“交易 id”、“订单 id”或类似信息,如果它与前一个订单的捕获 id(来自捕获订单)匹配,我可以用来在数据库中查找。
我需要做什么才能获得所需的信息?还是我在错误的地方/错误的领域寻找?
如果我需要先验证请求并发出另一个请求以获取更多数据,我将非常感谢 PHP 中的完整示例(或示例链接),因为我无法理解 Paypal 文档网络挂钩。
编辑:似乎在其中一个链接中(在上述事件中),捕获 ID(与 transaction id txn 相同)原始付款被“隐藏”在提供端点的链接之一中。在这种情况下:5U107751JJ334642K
我只能对 Paypal 让事情变得难以实现的方式摇摇头。退款消息中如何没有包含原始交易 ID 的专用字段?
【问题讨论】:
-
至少在接收 webhook 的脚本上显示你的代码。
-
@GetSet:我添加了这个,虽然我不认为这是重点:我没有阅读事件的麻烦。我只是不知道如何处理这些信息/我找不到所需的信息。
-
看看这个链接developer.paypal.com/docs/api/webhooks/v1/#definition-webhook .... 在那里,“找到”页面
The ID of the webhook event notification to resend...... 不能肯定地说,但它看起来像你的webhook 应该重新发送您收到的 json 中的“id”字段(在顶部)以获取退款的完整详细信息。 -
不,该ID是退款的交易ID,而不是原始付款的交易。看起来,订单捕获的 ID 隐藏在事件提供的 api-endpoint 链接之一中。我不知道为什么这么重要的信息没有专门的字段。
-
@dsgdfg 我不知道这应该是什么意思,抱歉。你能详细说明一下吗?