verifyAndCompletePayment
此接口用于一次性密码(OTP)验证并推进支付流程。
入参
verifyMethod Object REQUIRED
用于传递支付验证类型的参数对象。
paymentId String REQUIRED
APO 为识别一次支付分配的专属 ID。
更多信息:
- 最大长度:64 字符
verifyRequestId String REQUIRED
由商户分配的用于标识支付验证请求的唯一 ID。APO 使用此字段进行幂等性控制。
更多信息:
- 最大长度:64 字符
出参
result Result REQUIRED
接口调用的结果。
paymentRequestId String
商户为标识支付请求所分配的专属 ID。
注意:当 resultCode 为
PAYMENT_IN_PROCESS时,此字段将返回。
更多信息:
- 最大长度:64 字符
verifyRequestId String
商户为验证支付请求所分配的专属 ID。
注意:当 resultCode 为
PAYMENT_IN_PROCESS时,此字段将返回。
更多信息:
- 最大长度:64 字符
paymentId String
APO 为识别一次支付分配的专属 ID。
注意:当 resultCode 为
PAYMENT_IN_PROCESS时,此字段将返回。
更多信息:
- 最大长度:64 字符
paymentAmount Amount
商户请求以订单币种收取的支付金额。
注意:当 resultCode 为
PAYMENT_IN_PROCESS时,此字段将返回。
paymentCreateTime Datetime
创建支付的日期和时间。
注意:当 resultCode 为
PAYMENT_IN_PROCESS时,此字段将返回。
更多信息:
- 值遵循 ISO 8601 标准格式。例如,“2019-11-27T12:01:01+08:00”。
acquirerInfo AcquirerInfo
处理该支付的收单机构信息。
请求
响应
结果/错误码
| 结果码 | 值 | 结果码信息 | 行动建议 |
|---|---|---|---|
| SUCCESS | S | 成功 | 支付成功,无需进一步操作。 |
| ACCESS_DENIED | F | 访问被拒绝。 | 请联络 APO 技术支持获取详细原因。 |
| AUTHENTICATION_REQUIRED | F | 需要进行 3D Secure 验证。 | 重新初始化支付并引导买家进行 3D Secure 验证。 |
| CURRENCY_NOT_SUPPORT | F | 币种不受支持。 | 请联系 APO 技术支持以获取详细原因。 |
| DO_NOT_HONOR | F | 支付被发卡行拒绝。 | 请尝试使用其他银行卡支付,或联系发卡行。 |
| EXPIRED_CODE | F | 验证码窗口过期。 | 买家需要重新发起支付。 |
| FRAUD_REJECT | F | 由于风险控制,交易无法进一步处理。如果买家已为交易付款,交易将被退款。 | 当满足以下条件之一时,请联系 APO 技术支持:
|
| IDENTITY_AGE_NOT_ENOUGH | F | 用户年龄未达到要求。 | 请确认您的身份信息并重试。 |
| IDENTITY_VERIFY_FAILED | F | 身份验证超时或无法获取结果。 | 请确认您的身份信息并重试。 |
| INVALID_ACCESS_TOKEN | F | 访问令牌已过期、被撤销或不存在。 | 检查 accessToken 是否正确。如果不正确,请传入正确值。如果正确,请联系 APO 技术支持获取详细原因。 |
| INVALID_AMOUNT | F | 发卡行因各种原因拒绝交易,例如指定金额无效或超过最大金额限制。 | 请联络 APO 技术支持获取详细原因。 |
| INVALID_CPF | F | 无效的 CPF。 | 请确认您的身份信息并重试。 |
| INVALID_CONTRACT | F | 合同中的参数值与当前交易不符。 | 检查合同中的参数值是否与当前交易匹配。如果匹配,请联系 APO 技术支持协助解决问题。 |
| INVALID_IDENTITY_STATUS | F | 身份状态异常。 | 请确认您的身份信息并重试。 |
| INVALID_MERCHANT_STATUS | F | 由于存在限制,商户状态异常。 | 请联络 APO 技术支持获取详细原因。 |
| INVALID_PAYMENT_CODE | F | APO 无法接受此支付代码。 | 选择其他支付方式。如果支付方式支持,请联系 APO 技术支持。 |
| INVALID_PAYMENT_METHOD_META_DATA | F | 支付方式元数据无效。 | 检查支付方式的元数据是否正确。如果正确,请联系 APO 技术支持。 |
| KEY_NOT_FOUND | F | 找不到 APO 或商户的私钥或公钥。 | 检查私钥或公钥是否存在。如果不存在,请在 APO Dashboard 上传私钥。 |
| MERCHANT_KYB_NOT_QUALIFIED | F | 由于商户的 KYB 状态,支付失败。商户要么未完成 KYB,要么 KYB 状态不适用于此交易。 | 请联络 APO 技术支持获取详细原因。 |
| MERCHANT_NOT_REGISTERED | F | 商户未注册。 | 请使用注册接口注册商户。如果无法调用注册接口,请联系 APO 技术支持。 |
| NO_INTERFACE_DEF | F | 接口未定义。 | 检查链接是否正确。请参考接口文档中的端点。 |
| NO_PAY_OPTIONS | F | 没有可用的支付选项。 | 请联系 APO 技术支持获取详细原因。 |
| ORDER_IS_CANCELED | F | 您发起的请求具有与之前已支付但被取消的交易相同的 paymentRequestId。 | 使用新的 paymentRequestId 重新发起支付。 |
| ORDER_IS_CLOSED | F | 因支付失败或支付超时导致您请求中的 paymentRequestId 关联订单关闭。 | 使用新的 paymentRequestId 发起支付。 |
| PARAM_ILLEGAL | F | 缺少必需的参数,或者存在非法参数。例如,非数字输入、无效的日期,或者参数的长度和类型错误。 | 检查并验证当前接口所需的请求字段(包括头部字段和正文字段)是否正确传递并有效。 |
| PAYMENT_AMOUNT_EXCEED_LIMIT | F | 支付金额超过了合同或支付方式允许的最大金额。 | 检查支付金额是否超过限制,或使用较低金额再试一次。请联系 APO 技术支持了解具体限制。 |
| PAYMENT_COUNT_EXCEED_LIMIT | F | 支付次数超过了支付方式规定的限制。 | 请联系 APO 技术支持了解具体限制。 |
| CARD_NOT_SUPPORTED | F | 用于交易的银行卡不被支持。 | 使用另一张卡进行交易支付。 |
| PAYMENT_NOT_QUALIFIED | F | 商户不具备支付资格,可能是因为未注册、未签订代扣协议或被禁止支付。 | 请联系 APO 技术支持以获取详细原因。 |
| PROCESS_FAIL | F | 发生了常见的业务失败。 | 获取 APO 技术支持前请勿重试。 |
| REPEAT_REQ_INCONSISTENT | F | 金额或币种与先前请求不同。 | 确保请求中的所有字段相同,或使用新的 paymentRequestId 重新发起支付。 |
| RISK_REJECT | F | 由于风险控制,交易无法进一步处理。如果用户已为交易付款,交易将被退款。 | 如果买家在两周内未收到退款,请联系 APO 技术支持。 |
| SETTLE_CONTRACT_NOT_MATCH | F | 找不到匹配的结算合同。 | 检查以下解决方案:
|
| SYSTEM_ERROR | F | 发生系统错误。 | 获取 APO 技术支持前请勿重试。 |
| USER_AMOUNT_EXCEED_LIMIT | F | 支付金额超过了买家的支付限额。 | 使用不超过账户可用余额的金额创建新支付,或联系 APO 技术支持。 |
| USER_BALANCE_NOT_ENOUGH | F | 由于对应支付方式的用户余额不足,支付无法完成。 | 请充值账户或选择其他支付方式。 |
| USER_KYC_NOT_QUALIFIED | F | 由于买家的 KYC 状态,支付失败。买家要么未完成 KYC,要么 KYC 状态不满足此交易要求(例如,支付金额或产品信息的限制)。 | 首先完成 KYC 验证。 |
| USER_NOT_EXIST | F | 买家在支付方式端不存在。 | 请联系 APO 技术支持获取详细原因。 |
| UNKNOWN_EXCEPTION | U | 由于未知原因,接口调用失败。 | 再次调用接口以解决问题。如果问题未解决,请联系 APO 技术支持。 |
| INVALID_CARD_NUMBER | F | 用于交易的银行卡号无效。 | 检查 paymentMethod.paymentMethodMetaData.cardno 的值是否正确:
|
| PAYMENT_IN_PROCESS | U | 支付正在处理中。 | 获取任意一个链接(appLinkUrl, normalUrl, schemeUrl)并打开收银页面。如果没有返回链接,使用新的 paymentRequestId 值再次调用 pay 接口。如果问题仍然存在,请联系 APO 技术支持。 |
| REQUEST_TRAFFIC_EXCEED_LIMIT | U | 请求流量超过限制。 | 再次调用接口以解决问题。如果问题未解决,请联系 APO 技术支持。 |
| ORDER_NOT_EXIST | F | 订单不存在。 | 检查 paymentId 是否正确。 |
| ORDER_STATUS_INVALID | F | 交易无法进一步处理,因为订单状态无效。 | 检查交易的订单状态,或联系 APO 技术支持获取详细原因。 |
| USER_PAYMENT_VERIFICATION_FAILED | F | 买家在 OTP 验证方式中未能通过支付验证。 | 请联系 APO 技术支持了解具体原因。 |
| USER_STATUS_ABNORMAL | F | 买家在支付方式端的状态异常。 | 请联系 APO 技术支持了解具体原因。 |
| VERIFY_TIMES_EXCEED_LIMIT | F | 当前验证码在支付验证中失败次数过多。 | 买家必须获取新的验证码。 |
| VERIFY_UNMATCHED | F | 验证码无效。 | 买家必须获取新的验证码。 |
| SELECTED_CARD_BRAND_NOT_AVAILABLE | F | 买家选择的支付银行卡品牌不可用。 | 买家选择的支付银行卡品牌不可用。 |
| PAYMENT_PROHIBITED | F | 因商品在该国禁止销售,无法处理支付。 |
您不允许对这笔交易提出异议。 |
| INVALID_EXPIRATION_DATE | F | paymentMethod.paymentMethodMetaData.expiryYear 或paymentMethod.paymentMethodMetaData.expiryDate的值无效。 | 检查 paymentMethod.paymentMethodMetaData.expiryYear 或 paymentMethod.paymentMethodMetaData.expiryDate 的值是否正确:
|