之前的微信小程序支付一直没有问题,本次升级改版之后测试环境后端日志显示appid和mch_id不匹配.
官方社区反馈原因无非就两种:
1.检查appid和mch_id是否存在拼写错误;
2.检查商户平台中商户号是否与appId存在绑定关系;
问题明显在于是第二种原因.排查之后发现商户平台可以关联多个appId,比如说一个商户号可以关联APP的微信appId,同时关联微信小程序的appId,由于小程序appId手动重置了,所以需要重新添加绑定关联关系;具体绑定方法参考文末官方介绍.
重新绑定之后,前后端测试环境可以正常进行支付;但是现在线上正式项目出现appid和openid不匹配问题:后端正式环境发布完成,前端小程序正式环境项目还没有审核的情况下,小程序线上在跑的正式环境下面发起支付日志记录:appid和openid不匹配.
小程序支付传递的openid为空,前端调用后端接口根据jsCode获取openId为空(实际获取逻辑参考文末官方链接),返回错误信息:invalid code, hints: [ req_id: LhjCUcQNe-Be3YNa ],具体的原因是小程序 线上正式项目中project.config.json 文件中的 appid 信息与修改之后的appId不一致(接手之后手动重置过appId).而后端服务器中的appId是最新的,所以导致的这个问题.当小程序正式审核通过之后此问题会解决.
商户号绑定appId,官方提供链接:
https://kf.qq.com/faq/1801116VJfua1801113QVNVz.html;
获取openId官方文档:
https://developers.weixin.qq.com/community/develop/article/doc/00082a04b94c00a9f3eb879ba5ac13;