使用PayPal API v2标记发票为已支付:recordBody构建问题及解决
PayPal 发票标记已支付(recordPayment)接口的文档问题及正确请求体
我通过PayPal管理多服务订阅支付的流程如下:
- 创建包含各服务订阅项的Checkout Order
- 在授权支付完成后的返回URL中捕获订单款项
- 监听Webhook,处理三类事件:
BILLING.PLAN.CREATED、CHECKOUT.ORDER.APPROVED、PAYMENT.CAPTURE.COMPLETED
在调用invoice->recordPayment接口标记发票为已支付时,遇到了请求体构建的问题:
- 按照官方文档使用
payment_id参数,多次尝试均返回RESOURCE_NOT_FOUND错误 - 尝试仅传入
payment_date和transaction_id,又因缺失method参数触发INVALID_REQUEST错误
最终发现官方invoicing/invoice/{id}/record-payment文档存在错误,正确的请求体写法如下:
$recordBody = [ "payment_date" => date("Y-m-d"), 'amount' => [ 'currency_code' => 'EUR', 'value' => number_format($total, 2, '.', '') ], 'method' => 'PAYPAL', 'transaction_id' => $event['resource']['id'], // 官方文档未记录此参数 // 'payment_id' => $event['resource']['id'], // 官方文档标注的无效参数 ];
内容的提问来源于stack exchange,提问作者Ephraim
相关产品推荐
相关产品推荐

