微信小程序支付的主要逻辑集中在后端。 前端只需携带支付所需的数据去请求后端接口,然后根据返回的结果进行相应的成功或失败处理。
1. 付款方式
付款主要分为几个步骤:
1、前端携带支付所需的数据(商品ID、购买数量等)发起支付请求。
2、后端收到支付请求后,对支付数据进行处理,然后携带处理后的数据去请求微信服务器统一支付订单接口。
3、后端接收到之前向微信服务器请求的返回数据,再次处理后返回给前端,以便前端开始支付。
4. 前端执行支付动作。
5、前端支付完成后,微信服务器会向后端发送支付通知(即微信会告诉你客户已经支付)。 后端会根据该通知判断支付完成,支付完成后进行相应的操作。 ,如修改订单状态、添加交易日志等。
后端的主要功能是将支付所需的数据传输到微信服务器,然后根据微信服务器的响应判断支付是否完成。
具体实施过程步骤如下:
1、小程序调用wx.()获取临时登录凭证代码并发回开发者服务器。
2. 开发者服务器用该代码交换用户的较早标识和会话密钥。
通过小程序提交的代码与以下URL拼接,并使用curl进行get请求。
返回的数据是一个json对象,我们使用(JSON, true)将其解析为数组。 数据包括用户的 和 。 获取到之后,我们应该将其存储到数据库中,它代表了用户的身份。
3. 生成和缓存
我们根据一张用户表连接id和,对应的id就是用户的uid。 我们可以这样封装它
我们可以选择缓存方式、文件缓存等,并使用键值对(key-)进行存储。 记得设置过期时间。 这里的key是用来赋值的,可以这样生成:
这个算法基本上保证了较早性。 因为是我们得到的和所在的数组,所以我们需要将数组转成json来保存。 以后我们需要code或者uid等的时候,可以直接从缓存中取。
5.前端请求付款
前端支付请求只是携带支付所需的数据,如用户标识(小程序调用登录接口获取编码并传给商户服务器获取用户)、支付金额、支付订单ID、等等,这些都是业务逻辑相关的或者下一步是请求微信服务器支付统一点餐接口相关的数据,使用微信小程序的wx.()来请求后端支付接口。
6.后端请求微信服务器
后端收到前端发送的支付请求后,可以进行相关验证,比如判断用户是否存在问题、支付金额是否正确等。
验证没有问题可以向微信服务器申请支付后,后端需要使用微信指定的数据格式请求微信统一支付订单接口。
请求微信指定数据:
(1)小程序。
(2) 用户身份识别。 。
(3) 商户编号。
(4)商户订单号。
(5) 总额。 订单总额,很重要的一点是单位是分,所以要特别注意。
(6)微信服务器回调通知接口地址。 微信确认钱到账后,会向这个地址发送多条消息,告诉你客户已经付款。 您需要向微信回复一条消息,表明您已收到通知。 。 该地址不能有端口号,并且必须能够直接接受POST方法请求。
(7)交易类型,微信小程序支付统一该值。
(8)产品信息主体,类似于“腾讯游戏”的格式
(9)终端IP地址,终端地址IP,即请求支付的IP地址。
(10)随机字符串,需要后端随机生成一个字符串,保证数据安全。 微信要求不超过32位。
(11)签名。 使用以上所有参数来处理加密并生成相应的签名。 (具体处理方法可以看下面的代码,可以直接复用。)
将以上数据处理完毕后,将数据组织成XML格式,并使用POST方法发送至微信支付统一下单接口。
7.后端接受微信服务器返回的数据
微信服务器收到支付数据后,如果数据没有问题,就会返回相应的支付数据。 非常重要的一个是命名的数据字段。 需要将这些数据返回给前端,以便前端能够继续支付。
因此,后端收到微信服务器的返回数据后,需要进行相应的处理,最终返回如下数据给前端:
(1) 不用说;
(2) 当前时间戳;
(3) 随机字符串;
(4)就是上面提到的,但记住格式是“=(5)”。 否则会导致错误;
(6) 加密方式,一般应为MD5;
(7) 对上述数据进行相应的处理和加密。
至此,后端支付接口就完成了接收前端支付请求并返回前端支付所需数据的功能。
8、前端发起支付(wx.小程序发起支付请求);
前端收到返回数据后,使用wx.()请求发起支付。 该API需要的对象参数的值为上一步返回的数据。
如果一切正常,二维码会显示在微信开发者工具中。 如果在真机上测试,会直接弹出支付页面。 小程序会直接显示支付成功或失败页面,然后微信服务器开始访问我们之前设置的支付回调地址,推送支付结果,并根据结果更新订单状态。
9. 支付回调
前端完成支付后,微信服务器确认支付已完成。 将向靠前步设置的回调地址发送通知。 后端接收回调接口收到通知后可以判断支付是否完成并确定后续动作。
需要说明的是,收到微信服务器的回调通知后,根据通知的字段判断支付是否成功。 后端收到成功通知后,需要返回数据告知微信服务器已收到回调通知。 否则,微信服务器会不断向后台发送消息。 另外,微信通知是以XML格式发送的,所以在接受和处理时需要注意。
这就是微信支付的一般流程。

QQ客服