SpringBoot实现微信小程序支付
本文给大家讲解微信小程序支付全流程,以及相关功能源代码,项目不开放,带来不便尽请谅解。小程序支付主要
包含如下几步骤,1.预下单-调用微信统一下单接口进行预下单。2.小程序拿到支付参数唤醒支付。3.支付成功后发起退
款申请。
本文使用okHttpUtil进行接口交互 使用goole的gson与阿里的fastJson进行解析JsonObect,使用封装的http工具类进行携
带证书进行接口交互、使用封装的工具类实现map转xml等。
下面是正文:
微信支付文档: https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_1
一.获取微信用户的openId:
用户登录小程序 通过授权得到微信code,然后将微信code、秘钥、密文传递后端,后端进行解密后 得到微信openId
(前端也可以进行解密,但建议放后端)下面是获取openId的代码(java)
得到openId后要进行业务保存,因为小程序很多接口都依赖openId,而且同一小程序下,每个微信号的openId是一样
的。
二:统一下单与小程序支付
通过业务系统的封装参数,得到支付的商品信息,价格,业务订单后,封装参数,进行加密得到sign签名,然后
调用统一下单接口进行下单,成功后返回小程序支付参数。
(需要注意的是 微信预下单请求参数要求是xml格式,全String类型)
接口请求成功后,微信返回也是xml格式的报文,需要将xml转为map或其他,本文使用map接收参数,预下单后,
微信会返回预付订单标识,标识用于进支付。
然后封装小程序支付 所需参数
将支付参数返回给小程序,小程序通过组件 requestPayment 唤醒支付
小程序支付代码如下:
wx.requestPayment({ timeStamp:param.result.timeStamp, nonceStr: param.result.nonceStr, package: param.result.package, signType:param.result.signType, paySign: param.result.paySign, success: function(res){ console.log(res); wx.showToast({ title: '支付成功', icon: 'success', duration: 2000 }); }, fail: function(res) { wx.showModal({ title:'支付失败', content:'<text>', showCancel: false }) } })
三: 退款
小程序支付成功后,可以通过支付订单号进行退款操作,需要注意的是,退款需要http携带商户证书进行支
付,这里图图已经封装好工具类只需要修改下证书的url就可以愉快使用了。
本文中所使用到的工具类,图图已经帮大家打包好了,在百度网盘。
百度网盘下载链接
链接:https://pan.baidu.com/s/1YbMrvO3qK1rdmyYyET2xzw 提取码:ljv6
本文先总结到此,后面继续更新技术一些文章。大家一起加油鸭!

浙公网安备 33010602011771号