define('PAY_ENV', 'sandbox');
define('PAY_MCH_ID', PAY_ENV === 'sandbox' ? '1900000xxx' : '1600000xxx');
在测试站走了一遍支付流程,手机真的弹出扣款 0.01 元,付款成功回调也到了生产订单表,财务当天对账多出一笔。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。
原因不复杂,测试站配置里填的是生产商户号和正式密钥,回调地址又是公网可访问的,整条链路和线上没有区别。测试环境没有接沙箱,也没有限制下单金额。
围绕「测试环境支付」排查时,命令行跑一遍比在面板里点十次有用,面板会替你做掉不少隐式操作。改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。
处理上按这个顺序:测试站换成沙箱商户号和沙箱密钥,两套配置分开存;回调地址指向测试域名,并在入口校验来源环境;测试商品金额设成 0 或固定 0.01 并用沙箱账号;生产商户后台关掉测试站 IP 的下单权限。
改完只确认一件事:测试站下单只走沙箱收银台,手机银行没有扣款记录,生产订单表数量不变。
