微信支付几种方式的规律和关系整理

微信支付分为四种,分别为微信外浏览器(h5)支付,微信内浏览器(jsapi)支付,微信小程序支付,APP支付。完成不同方式支付步骤不一。

  1. H5(一步):统一下单api
  2. jsapi(两步):统一下单api,再次签名
  3. 微信小程序(三步):授权登陆是前提条件,因为这样才能获取到小程序支付必要的入参-openid。统一下单api,再次签名
  4. app(两步):统一下单api,再次签名

商户号:指的是微信支付分配的商户号(mch-id,mch-key这是一套),比如公司要开发微信支付功能。则要去微信公众平台申请一个商户号。通过后会有一套商户号(mchid,mchkey),另外有浏览器支付的appId。
一个商户号下支持四种支付方式。这四种支付方式分别对应各自的一个id , 叫appId。叫法上浏览器支付(H5和jsapi)为公众账号ID,微信小程序叫小程序ID,app的叫应用ID。其实都是为了区分是那种支付类型的。具体可以看下图简单易理解公司和四种支付的关系。
微信支付几种方式的规律和关系整理
四种支付方式的区别和联系

1.h5支付最为简单,服务端一次接口调用即可;
2.微信小程序是唯一需要openid这个入参的;
3.四种支付方式的商户号值一样。除非你切换商户号了。则不在一样。
4.四种统一下单接口一样:https://api.mch.weixin.qq.com/pay/unifiedorder,
状态查询接口一样:https://api.mch.weixin.qq.com/pay/orderquery,
退款接口一样:https://api.mch.weixin.qq.com/secapi/pay/refund。只是入参的appid是区分支付类型的。
5.一套流程的配置是相同的。比如支付,支付状态查询,退款这是一套流程。则这套流程中的appid,mchid,mchkey等是相同的。
6.虽然再次签名存在三中支付方式中,但是微信这里并没有统一不同方式的签名接口入参字段一致!这里注意下是个坑,意味着签名的方法我们至少要写两套。
7.h5支付和jsapi支付的配置信息完全一致,都属于浏览器支付。只不过jsapi多了一步骤:再次签名。

参考微信官网的四种支付方式文档:
1.H5
2.JSAPI
3.APP
4.微信小程序