最近写了一个微信小程序的后端,微信支付(Java版)。在这里分享一下开发过程吧。 首先我们要先去了解微信小程序支付开发的过程。
最近写了一个微信小程序的后端,微信支付(Java版)。在这里分享一下开发过程吧。
首先我们要先去了解微信小程序支付开发的过程。 这里说一下流程。 微信小程序端获取到code,由微信小程序前端传code到后端,后端接收到code去调用微信官方接口换取openid。 生成商户订单,即通过xml格式包含文档中必填的参数去调用统一下单接口(附下图),返回prepay_id.
当然微信小程序需要二次签名,同样通过必填参数封装,返回给微信小程序端。(其中有很多坑,下文慢慢讲解) 正文开始
2.后台接收到code后,通过拼接字符串请求地址,返回openid
3.其次是调用统一下单接口,(这一步也是很多人采坑的地方)官方详细文档 我这里是通过封装一个实体类,对类进行赋值取值。 (当然,嫌麻烦的可以直接全部写在配置类中)
这一步是 对实体类设置需要的值。(酌情修改参数,不必填的可以注释掉,上面写了必填参数!) 注意:微信官方要求md5加密必须符合字母表顺序,这一步在写实体类的时候要注意(属性名要按字母表写)。set和get方法不影响。
设置好参数,这一步是对字符串进行拼接。目的是md5加密!(酌情删减)
这里进行统一下单。返回的是prepay_id这个值。 如果这里报了签名错误等问题。[解决方案]1、仔细检查10个必填参数是否按顺序拼接。2、检查一下appid,mch_id等(或者更改一下key[微信端会抽风])
输出结果: 我们得到prepay_id之后,将组合数据再次进行签名。
做到这里,已经几近成功了。还差最后一步,回调函数(当支付成功时,在数据库中修改"已支付"成功字段。) 注意:1、回调地址必须是公网上的地址。(项目部署到服务器上才可进行访问)。 2、回调地址中不能添加任何参数。
附上工具类。
在这里做个小总结吧。 |
2021-01-18
2021-01-18
2021-01-18
2021-01-18
2021-01-18
2021-01-18
2021-01-18
2021-01-18
2021-01-18