微信支付服务商模式下小程序支付问题

前提说明: weixin4j工具虽然集成了服务商支付方式, 但是不要直接用,有问题!!!

在统一 下单接口和二次签名接口,weixin4j对于服务商模式下的接口都有问题, 不能直接用

一,服务商模式下的支付参数说明

1.mch_id(微信支付分配的商户号)和appId(微信分配的公众账号ID)是成对出现的.

先在公众平台获取appId(微信分配的公众账号ID)和appSecret(appSecret在支付时可以不用)

其次在服务商支付平台获取mch_id(微信支付分配的商户号)以及signKey(在服务商模式下统一下单签名和小程序支付二次签名都是用该signKey,而不是拉起支付的小程序对应的signKey)

2.sub_appid可以时子商户主体下的小程序appid, 也可以是服务商主体下的小程序(服务商主体下的小程序绑定的mch_id可以不是服务商账户对应的mch_id但一定要求是其主体下, 但是该小程序id一定要在代理商户下绑定)

微信支付服务商模式下小程序支付问题

3.sub_openid必填,openid不再填写

二, 两次签名


1.调取统一下单接口需要签名,此处签名失败, 微信服务器会给服务商后台返错误信息.

2.统一下单获取到prepayid, 然后需要再次签名, 此时用到的签名字段中appid是当前调起微信支付的小程序appid, 而不是服务商对应的appid  具体见:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_sl_api.php?chapter=7_7&index=3

二次签名用到的signkey还是服务商对应的, 而不是拉起微信支付小程序对应的signkey

3.第二次签名失败, 只会在前端拉起支付时报错, 后台不会报错, 而且只有ios端才会显示是签名错误, 而安卓小程序不会显示


三,appsecret

在统一下单接口, appsecret可以传null, 但是在通过jscode换取openid时, 该appsecret必须填写, 且与拉起支付的小程序的appid相对应的哪个appsecret