Opayo Pi API:更换重复支付认证卡后仍使用旧卡的问题排查
Opayo Pi API 更换银行卡后重复支付仍用旧卡的问题解决
问题根源
你碰到的情况是因为Opayo Pi API的Repeat交易默认会绑定到用户首次创建CoF(卡留存)时的原始交易凭证,直接传入新卡的transactionId没法自动替换用户名下的默认CoF记录——虽然官方文档没明确说明替换流程,但实际操作里需要主动标记新卡的认证交易为用户的新默认CoF凭证。
解决步骤
新卡认证时明确初始化CoF
在新卡的3DS认证交易中,必须在credentialType里指定cofUsage为Initial,同时补充paymentType字段(根据业务场景选Recurring或Unscheduled),确保Opayo把这笔新交易设为用户的新CoF记录:// 新卡3DS认证请求示例(建议用1便士预授权验证) $new_card_auth_data = array( "transactionType" => "Payment", "vendorTxCode" => $new_auth_order_num, "currency" => "GBP", "amount" => 100, // 1便士,验证后可取消预授权 "description" => "New card verification for recurring payments", "credentialType" => array( "cofUsage" => "Initial", "initiatedType" => "CIT", "paymentType" => "Recurring" ), // 卡片信息、3DS相关参数... );确认Repeat请求参数准确性
- 确保
referenceTransactionId确实是新卡认证返回的transactionId,排查代码逻辑是否存在旧值覆盖的情况 - 检查请求中是否携带了旧的
merchantSessionKey或其他关联旧卡的冗余参数,这类参数可能导致Opayo fallback到旧凭证
- 确保
后台验证CoF状态
登录Opayo商户后台,查看用户的CoF记录:- 确认新卡的交易已被标记为活跃状态
- 若旧卡记录仍存在,可手动将其失效(部分商户反馈此操作能彻底解决旧卡复用问题)
额外排查点
- 查看测试环境的交易日志,确认Repeat请求里的
referenceTransactionId参数值正确无误 - 确保新卡的3DS认证交易状态为
OK,只有成功的初始交易才能生成有效CoF凭证
内容的提问来源于stack exchange,提问作者awrd
相关产品推荐
相关产品推荐

