信用卡支付的成功率只有 62%,失败原因一栏写着 AVS mismatch。抽查十笔,收货地址都在国内,账单地址填的是美国转运仓。日志里能对上时间点,这种反而好排。

收银台默认把收货地址复制成账单地址,用户改了收货地址后账单地址没跟着更新。渠道的地址校验按账单地址比对,对不上就拒。这一点先确认清楚,后面就不用反复试。

if ($billSameAsShip) {
    $bill = $ship;
} else {
    $bill = ['zip' => $zip, 'country' => $country];
}

「账单地址不一致」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。

处理上按这个顺序:账单地址单独一个表单,默认勾选同收货地址,用户取消勾选后必须填写;提交前校验邮编格式与国家匹配,别让五位邮编配美国;被拒的单在订单备注里记下渠道返回码,方便客服判断是否让用户换卡。

结果对不对很好判断,关掉同收货地址后单独填账单地址,支付成功率回到九成以上,AVS 报错不再出现。

作者 9823189