微信支付的接入流程比支付宝要烦锁,坑多,配置和调试起来都很麻烦。
昨天在配置三方商城的微信支付时,需要用到appsecret,但appsecret是微信公众平台的东西,在微信公众号相关开发时才会用到,跟商户平台的apikey完全是两个概念,所以一定要做好区分,避免混淆。
经过我的一翻折腾,各种百度和我司的开发代码,可以这么理解:
- appid是在公众平台注册公众号,小程序或开放平台注册应用时产生的
- 一个微信公众号或小程序,都有自己的appid
- 一个appid对应一个appsecret
- appsecret在微信公众平台只能重置,不能查看(真坑)
- apikey是商户平台的概念
- 一个mchid对应一个唯一的apikey
- apikey可以查看,可以重置,重置时可以自定义
- 一个mchid可以绑定多个appid,可以在商户平台进行绑定,即授权此appid可以用此mchid发起支付,如果未绑定,会报错ERROR:appid和mch_id不匹配,关于mchid绑定appid,参考官方文档:https://kf.qq.com/faq/180910QZzmaE180910vQJfIB.html
- 支付时要用到appid,mchid和apikey(对,不需要appsecret)
至此,可以明确:appsecret与支付没有半毛钱关系
顺便说一下appsecret更坑的是:appsecret重置后立即生效,原来用到appsecret的地方就会失效
- 所以生产环境需要先替换appsecret再重置
- 然而你必须要先重置后才能拿到新的appsecret,然后去替换
死循环了是不是?无解了是不是?不知道微信的产品经理或技术经理是不是脑残了?要么就是我知道的太少,反正我搜了一天的互联网也没找到一个能说明白,包括微信的官方社区,有很多人提问,也没见到一个靠谱的回答。
以下内空来自微信商户平台开发指引:
https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pages/ico-guide/chapter1_1.shtml
在接入微信支付过程中,会出现APPID、MCH_ID、公众平台、开放平台、商户平台等概念,下面仅从微信支付的角度来做简单分析:
● 公众平台(mp.weixin.qq.com):注册、配置服务号、订阅号、小程序的入口,注册成功后系统就会下发一个与之一一对应的APPID(其中订阅号的APPID不支持申请和使用微信支付)。
● 商户平台( pay.weixin.qq.com):微信支付业务管理中心,商户可以在商户平台进行所有支付业务相关操作,例如退款、下载对账单、查询订单、提现、账号绑定、API证书下载、API**设置、查看证书***等操作。
● 开放平台(open.weixin.qq.com):注册、配置APP移动应用、网站应用的入口,注册成功后系统就会下发一个与之一一对应的APPID。
● APPID:在公众平台或开放平台申请注册之后由平台下发,在支付接口中通常作为配置参数,必须上传。
● MCH_ID:在公众平台、开放平台申请微信支付成功后由微信支付下发,或者直接在商户平台注册也可获得MCH_ID,在支付接口中通常作为配置参数,必须上传。
注意: 支付接口要求APPID与MCH_ID必须有绑定关系,在商户平台注册获得的MCH_ID需要在【商户平台—>产品中心—>APPID授权管理】菜单下与APPID进行绑定后方可使用。
更多相关内容可以查看:https://kf.qq.com/product/wechatpaymentmerchant.html