微信服务商支付脱坑指南

最近使用微信服务商支付踩的坑,大坑小坑.....

商户ID与APPID不匹配

sub_openid  and sub_appid not match

openid与商户appid不匹配

普通商户不允许传sub_mch_id

当前页面的url未注册

签名失败....

先看看未使用服务商支付时候的下单参数,也就是下图的普通商户版 的支付

这个普通商户的描述看上去没有问题只有一个appid与商户号mch_id, 服务商模式的话比普通商户模式多三个参数 sub_appid,sub_mch_id,sub_openid

子商户公众账号ID sub_appid String(32) wx8888888888888888 微信分配的子商户公众账号ID,如需在支付完成后获取sub_openid则此参数必传。
子商户号 sub_mch_id String(32) 1900000109 微信支付分配的子商户号

 

用户标识 openid String(128) oUpF8uMuAJO_M2pxb1Q9zNjWeS6o trade_type=JSAPI,此参数必传,用户在主商户appid下的唯一标识。openid和sub_openid可以选传其中之一,如果选择传sub_openid,则必须传sub_appid。下单前需要调用【网页授权获取用户信息】接口获取到用户的Openid。
用户子标识 sub_openid String(128) oUpF8uMuAJO_M2pxb1Q9zNjWeS6o trade_type=JSAPI,此参数必传,用户在子商户appid下的唯一标识。openid和sub_openid可以选传其中之一,如果

选择传sub_openid,则必须传sub_appid。下单前需要调用【网页授权获取用户信息】接口获取到用户的Openid。

 

服务商支付的文档中很容易搞混的地方如下图标注

到这里之后就明白 openid 跟 sub_openid 的关系了。openid  对应服务商用户的openid, sub_openid  对应商户用户的 openid

这两个参数只传其中一个即可

所以openid 服务商模式不需要传,因为我们一般用的是商户的appid获取的用户openid, 所以只需要传 sub_openid

填错 openid 跟 sub_openid 会提示 openid与商户appid不匹配

然后这里的支付密钥要填的是服务商的密钥,也就是说支付商户的密钥在服务商支付模式下是不需要的

否则报错:签名错误

最后需要注意看的一点是支付目录的设置,普通模式只需要在商户号的后台设置支付目录即可

服务商支付的话需要在服务商的后台设置支付目录,如图

否则有可能报错:当前页面的url未注册

其实微信服务商替支付商家申请了商户号之后,商户可以使用普通的商户支付,也就是说他其实可以用官方的【普通商户模式】进行支付

使用服务商支付是因为里面可能有支付费率的优惠,还可以参加一些广告的推广计划...总之就是有得赚就对了~

 

给TA支持
共{{data.count}}人
人已支持
php工作日志thinkphp随笔

萤火商城v2跨域最优解决方案

2021-7-3 18:14:27

php工作日志thinkphp

Loaded Configuration File none

2021-7-11 0:23:30

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索