微信小程序与微信服务号不同主体支付功能的实现
一、概述
商城小程序嵌套各分校微信服务号使用各种功能重点是支付功能,已经顺利打通发布上线使用。实现这一功能没有现成的案例可以参考,只能做各种尝试和去微信官方文档去查询解决方案。最后总结出普通模式是不支持不同主体支付方式,支持不同主体只有两种模式联合运营模式和服务商模式。
联合运营的模式:
相当于把主体不同的公众号和商户绑定在一起, 看起来就成了一个主体,就可以通过普通模式进行统一下单了,这里的 openid 也即当前在小程序支付用户的。
服务商模式:
相当于一个第三方代理 (有自己的商户号), 服务号把自己的商户号挂在服务商那 (作为子商户号), 小程序只需要和服务商进行支付 (前提是在服务商关联小程序)。 统一下单的时候涉及到的几个关键字段:
- appid: 服务商APPID;
- mch_id: 服务商商户号;
- sub_appid: 当前调起支付的小程序APPID;
- sub_mch_id: 子商户号(也即收款的服务号);
- sub_openid: 当前调起支付的用户的小程序的openid。
二、实现效果:
微信小程序与微信服务号不同主体支付功能图
微信小程序嵌套微信服务号不同主体支付功能的实现,采用了联合运营的模式,下面介绍一下联合运营模式实现小程序与服务号实现不同主体支付功能具体步骤:
三、开发前准备:
- 必须申请微信公众平台(企业用户开通);
- 必须开通小程序平台,并与微信公众平台进行绑定;
- 必须开通微信商户平台,并妥善保管号商户号和商户密钥;
- 网站升级https协议,因为调用微信支付成功后,微信服务器会对你传值的回调地址(notify_url字段,可以理解为具体的业务逻辑处理方法路径)进行回调。
四、支付流程:
- 统一下单接口,后台通过统一下单接口,向微信请求下单支付,微信后台接到参数后,会生成一个商户订单,并将预下单id(prepay_id 这个返回字段很重要)返回给后台;
- 后台接收微信返回值,进行二次签名,并将签名的参数返回给小程序前台;
- 小程序端接收到签名参数后,调用 wx.requestPayment 方法,传入参数,调起收银台;
- 用户支付后,微信服务器处理本次支付情况,并回调后台业务处理接口。
微信支付流程图
五、前端开发流程
服务号的支付方式要支持两种一是支持微信服务号本身的支付,二是支持小程序调用服务号支付服务号唤起小程序支付。
服务号本身支付不用讲了,现在主要说第二种,小程序使用web-view嵌入服务号的支付功能,包括订单列表、订单详情、支付确认、支付下单、支付结果展示等,仅实际支付时使用小程序代码进行开发也就是服务号唤起小程序支付。
服务号支持小程序和服务号支付关键代码:
服务号支持小程序和服务号支付关键代码
微信小程序调用服务号传入参数代码:
微信小程序调用服务号传入参数代码图
六、微信服务号和小程序商户平台相互做关联
登录商户平台-产品中心-账号关联(AppID绑定),进入授权申请页面;填写相关已认证APPID信息,在最下方阅读及签署《微信支付联合运营承诺函》和《微信支付商户号与APPID授权协议》,点击“确认”提交,发起授权申请;等待平台审核,一般审核周期为1-2个工作日;发起授权申请后,商户需自行前往对应平台确认授权申请;服务号:前往公众平台,点击“微信支付-商户号管理”,查看相关商户号信息,确认授权申请;小程序:前往公众平台,点击“微信支付-商户号管理”,查看相关商户号信息,确认授权申请,或在“公众平台安全助手”下发的模板消息中确认授权信息。
七、服务端Java小程序支付关键代码
服务端Java小程序支付关键代码图
八、总结
微信生态很庞大,微信、服务号、订阅号、企业号、小程序、商户平台等等,他们之间内部关联密切,微信支付已实现刷卡支付、扫码支付、JSAPI支付、小程序支付、APP支付、H5支付,并提供企业红包、代金券、立减优惠等营销新工具,满足用户及商户的不同支付场景需求,我们要想玩转整个微信生态要对每个系统功能和内部之间的关系要有充分的了解和掌握才可以的。