一、报错信息
接口名称:requestMerchantTransfer
对应业务:微信支付商家转账 -> 「JSAPI调起用户确认收款」
错误信息:商户号错误,请返回商家重新发起收款
错误截图:

二、问题原因
根本原因:调用requestMerchantTransfer接口所传递“mcId”的参数名、参数值校验未通过
安全机制:为了商户资金安全,使用商家转账时会校验发起转账请求头「Authorization」中的「mchid」参数值与调起用户确认收款时的「mchId」参数值是否一致。
三、快速排查
- 检查调用“requestMerchantTransfer”接口参数中参数名“mchId”的大小写与文档是否一致,“mchId”中的”i”为大写
- 检查调用发起转账接口时请求头「Authorization」中的「mchid」参数值与调起用户确认接口requestMerchantTransfer所传mchId参数值是否一致
- 检查调用“requestMerchantTransfer”接口参数中参数名“mchId”是否有多出空格,
- 检查调用“requestMerchantTransfer”接口参数中参数“mchId”参数值是否有多出空格、mchId是否为一个正确的mchId,参数值类型是否为“string”,mchId一般为1开头10位数纯数字
四、解决方案
确保调起用户确认收款时参数名“mchId”中的”i”为大写,参数值与发起转账接口时请求头「Authorization」中的「mchid」一致,格式类型为”string”
wx.requestMerchantTransfer({
"mchId": '你的商户号,一般为1开头10位纯数字',
// “mchId”中的"i"为大写,格式类型为"string",1开头10位纯数字
"appId": '你的appid,wx开头18为字母与数字组合,需要与发起转账所传appid一致',
"package": '调用商家转账返回参数“package_info”的值,不要进行任何修改',
success (res) { },
fail (res) { }
})