微信小程序接入微信支付方法

 二维码

000117

适合没有微信支付接入经验的开发者。

1. 申请微信支付

小程序认证以后,可以在小程序后台,微信支付菜单栏,申请微信支付。

填写企业信息和对公账户,微信支付会打一笔随机金额到对公账户,输入金额完成验证后,在线签署协议,这样整个微信支付的申请流程完成了。

微信支付申请完,会发送微信支付商户号,商户平台用户名密码等信息到注册者邮箱。

2. 准备工作

2.1 配置小程序密钥

在小程序后台设置页,点击生成,管理员验证二维码后,会随机生成 AppSecret。请妥善保管好 Appsecret,不要明文存储于服务器,AppSecret 用于和微信服务器交互。比如获取用户的 openid接口就需要用到。

2.2 设置密钥和下载证书

用申请微信支付获得的用户名和密码,登录商户平台 (pay.weixin.qq.com),在账户中心,API 安全中下载证书和设置密钥。

密钥是 32 位,设置以后需要妥善保管,因为无法查看密钥,所有微信支付相关的接口都会使用这个密钥加密。

2.3 配置 Https 服务器

小程序的前端是使用微信提供的框架开发,但是后台依然是开发者自己的服务器。小程序发起的是 https 请求,意味着小程序开发者必须配置 https 服务器。

配置 https 服务器之前,先要获取证书,证书可以向相关机构购买,腾讯云目前可以向用户提供免费的证书。

证书安装指引在这里查看:

https://www.qcloud.com/doc/pr...

3. 微信支付流程

微信支付有多种支付方式,包括刷卡支付,公众号支付,扫码支付,APP 支付,在这里微信支付的所有接口:https://pay.weixin.qq.com/wik...

小程序是在微信里调起支付的,其实是公众号支付。关于公众号支付的详细文档可在这里查看:https://pay.weixin.qq.com/wik...

所有公众号支付相关的链接都可以在此链接找到,开发者首先需要大概了解这些接口。

小程序公众号支付的主要流程如下(本图只考虑了正常流程,异常流程参考公众号支付文档):

3.1 关于 openid

上述流程中请求 openid,用的是小程序最新 api 中的接口,开发者可以查看小程序的登录接口。

开发者从第三方服务器获得的 openid,在统一下单的接口里面需要使用到。

3.2 关于小程序调起微信支付

上述流程中的小程序调起微信支付,用的是小程序微信支付接口 wx.requestPayment,该接口的详细描述可以查看小程序的微信支付 API。

这个接口中的 package 和 timeStamp 参数是从开发者的第三方服务器返回的,package 是第三方服务器从统一下单接口回复中获得。

接口中其他的参数,appId,noceStr,signType 以及 paySign 则由小程序这边存储或者计算而得。

其中 paySign 是签名,签名算法文档在这里:

https://pay.weixin.qq.com/wik...

整个公众号支付的主要流程基本都是在第三方服务器上实现,开发者需要熟读公众号支付文档,了解消息交互流程以及每个接口。

这里并没有描述正常微信支付必不可少的一些功能:异常处理,查询订单,发起退款,下载对账单等等。

微信小程序支付流程;

文字展示

1、小程序内调用登录接口,获取到用户的openid,api参见公共api【小程序登录API】

2、商户server调用支付统一下单,api参见公共api【统一下单API】

3、商户server调用再次签名,api参见公共api【再次签名】

4、商户server接收支付通知,api参见公共api【支付结果通知API】

5、商户server查询支付结果,api参见公共api【查询订单API】

小程序调起支付API的形成的参数:

paySign =MD5(appId=wxd678efh567hg6787&nonceStr=5K8264ILTKCH16CQ2502SI8ZNMTM67VS&package=prepay_id=wx2017033010242291fcfe0db70013231072&signType=MD5&timeStamp=1490840662&key=qazwsxedcrfvtgbyhnujmikolp111111)= 22D9B4E54AB1950F51E0649E8810ACD6

代码形式展示

wx.requestPayment(

{

‘timeStamp’: ‘’,

‘nonceStr’: ‘’,

‘package’: ‘’,

‘signType’: ‘MD5’,

‘paySign’: ‘’,

‘success’:function(res){},

‘fail’:function(res){},

‘complete’:function(res){}

})

个人思考:

1,首先聊一聊开发模式[自己也是第一次看,进行总结,接下来即将用到项目中去。

1.1普通模式

场景是适用于自己开发或者外包开发,申请自己的appId,mch_id

1.2商户服务模式

该模式包含普通服务商模式与银行类服务商模式。

2, 业务说明

申请注册小程序,开通支付流程,即可,一下几点注意:

appid必须为最后拉起收银台的小程序appid;

mch_id为和appid成对绑定的支付商户号,收款资金会进入该商户号;

trade_type请填写JSAPI;

openid为appid对应的用户标识,即使用wx.login接口获得的openid

3,业务流程

请参考以上图片显示展示与文字说明

4, 开发步骤

5, 小程序调用支付API

6, sub_appId的使用说明

sub_appid可为公众号,APP或小程序的appid,服务商在服务商商户平台可手动为每个特约商户绑定与渠道商主体或特约商户主体一致的公众号,APP或小程序的appid;针对小程序,还支持绑定服务商主体的小程序appid。目前最多配置5个. 手工配置路径:”服务商商户平台-服务商功能-子商户管理-开发配置-特约商户APPID配置”。