无法从PayPal ExpressCheckout接口返回结果中获取交易ID用于退款
你当前调用的getExpressCheckoutDetails接口返回结果中不包含退款所需的交易ID,原因是该接口仅用于获取买家的授权信息,此时支付流程还未最终完成,返回结果里的CHECKOUTSTATUS字段值为PaymentActionNotInitiated也验证了这一点。
获取交易ID的正确流程
- 拿到
getExpressCheckoutDetails返回的PAYERID和已有TOKEN后,需要先调用doExpressCheckoutPayment接口完成最终的支付确认 doExpressCheckoutPayment接口的成功返回结果中会包含PAYMENTINFO_0_TRANSACTIONID字段,该值就是可用于退款的交易ID
参考代码示例:
// 完成支付确认 $paymentParams = [ 'token' => $request->token, 'PayerID' => $response['PAYERID'], 'amount' => 24.99, 'currency' => 'USD' ]; $paymentResponse = $provider->doExpressCheckoutPayment($paymentParams); // 提取交易ID $transactionId = $paymentResponse['PAYMENTINFO_0_TRANSACTIONID']; // 执行退款 $refundResponse = $provider->refundTransaction($transactionId);
如果该笔交易已经完成支付但你没有留存交易ID,可以通过返回结果里的订单号INVNUM(当前值为61)在PayPal商户后台查询对应交易ID,也可以调用PayPal交易搜索接口按订单号检索获取。
内容的提问来源于stack exchange,提问作者Gurpal singh
相关产品推荐
相关产品推荐

