使用Cybersource SDK查询支付交易状态遇404错误求助
问题:CyberSource查询支付状态返回404 NOT_FOUND错误
使用cybersource-rest-client-java:0.0.55版本SDK,调用PaymentsApi.refreshPaymentStatus方法查询支付交易状态时,返回如下错误:
--- Invokers.ApiClient : {"submitTimeUtc":"2023-08-28T22:47:13Z","status":"404","errorInformation":{"reason":"NOT_FOUND ","message":"The requested resource does not exist."}}
--- Invokers.ApiClient : ApiException : 404 Not Found
传入的ID来自创建支付时PtsV2PaymentsPost201Response返回的Id,同时额外传入了code和ReconciliationId。直接调用官方「Check a Payment Status」API时也出现相同404错误。
需求:授权或捕获操作后,如何正确查询交易状态,判断交易是已支付还是已拒绝?
解决步骤
- 匹配正确的查询接口与资源ID:
- 查询原始支付交易状态时,仅需传入支付创建返回的
id,不要添加code/ReconciliationId等冗余参数,多余参数会干扰接口路由逻辑。 - 查询授权/捕获操作的状态时,需使用对应专属接口:授权状态调用
AuthorizationApi.getAuthorizationStatus,捕获状态调用CaptureApi.getCaptureStatus,传入的ID应为授权/捕获操作返回的对应ID,而非原始支付ID。
- 查询原始支付交易状态时,仅需传入支付创建返回的
- 确认环境一致性:确保查询请求的环境(沙箱/生产)与创建支付/授权/捕获时的环境完全一致,跨环境查询必然返回404。
- 改用交易搜索接口兜底:如果交易已过生命周期(如完成清算、撤销),单ID查询接口可能无法返回结果,此时使用
TransactionSearchApi.searchTransactions,通过reconciliationId、merchantReferenceNumber等条件检索完整交易记录。 - 升级SDK版本:cybersource-rest-client-java:0.0.55版本较陈旧,存在API规范兼容性问题,建议升级至官方最新稳定版,避免因SDK接口映射错误导致的404。
- 交易状态判断逻辑:
- 已支付:授权接口返回
status: AUTHORIZED且捕获接口返回status: CAPTURED; - 已拒绝:授权接口返回
status: DECLINED,或捕获操作返回status: DECLINED/FAILED。
- 已支付:授权接口返回
内容的提问来源于stack exchange,提问作者MafeWIPAY
相关产品推荐
相关产品推荐

