Omnipay PayPal Rest API:支付完成的最终状态是什么?
PayPal Rest API中"approved"与"completed"状态的区别及交易成功判定
核心结论
返回approved状态仅代表用户已完成支付授权,不代表交易最终成功(资金已到账),交易最终成功的标识是completed状态。
状态含义区分
- approved:用户已确认并授权支付请求,同意从其账户扣款,但此时PayPal尚未完成实际的资金划转。这种状态常见于**授权-捕获(Authorize & Capture)**模式,商户需要后续主动触发资金捕获操作才能完成交易。
- completed:交易已完全完成,资金已成功从买家账户转入卖家账户,这是交易成功的最终状态。
结合Omnipay的处理建议
你使用的completePurchase方法在不同集成模式下行为不同:
- 若采用即时支付模式(直接扣款),正常情况下
completePurchase成功后应返回completed状态。若仅返回approved,建议检查PayPal商户设置或请求参数是否配置为即时捕获模式。 - 若采用授权-捕获模式,
completePurchase仅完成授权步骤得到approved,此时需调用Omnipay的capture方法完成资金捕获:// 基于之前completePurchase的授权响应发起捕获请求 $captureResponse = $gateway->capture([ 'transactionReference' => $response->getTransactionReference(), 'amount' => $params['amount'] ])->send(); if ($captureResponse->isSuccessful()) { // 此时交易状态变为completed,资金已到账 } - 可通过
$response->isSuccessful()判断当前步骤(授权或即时支付)是否执行成功,但这不等同于交易最终完成,需结合具体状态值进一步判定。
内容的提问来源于stack exchange,提问作者webifo
相关产品推荐
相关产品推荐

