本文给你们讲解微信小程序支付全流程,以及相关功能源代码,项目不开放,带来不便尽请谅解。小程序支付主要
包含以下几步骤,1.预下单-调用微信统一下单接口进行预下单。2.小程序拿到支付参数唤醒支付。3.支付成功后发起退
款申请。
本文使用okHttpUtil进行接口交互 使用goole的gson与阿里的fastJson进行解析JsonObect,使用封装的http工具类进行携
带证书进行接口交互、使用封装的工具类实现map转xml等。
php
下面是正文:前端
微信支付文档: https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_1
一.获取微信用户的openId:
用户登陆小程序 经过受权获得微信code,而后将微信code、秘钥、密文传递后端,后端进行解密后 获得微信openId
(前端也能够进行解密,但建议放后端)下面是获取openId的代码(java)
java
获得openId后要进行业务保存,由于小程序不少接口都依赖openId,并且同一小程序下,每一个微信号的openId是同样
的。
小程序
二:统一下单与小程序支付
经过业务系统的封装参数,获得支付的商品信息,价格,业务订单后,封装参数,进行加密获得sign签名,而后
调用统一下单接口进行下单,成功后返回小程序支付参数。
(须要注意的是 微信预下单请求参数要求是xml格式,全String类型)后端
接口请求成功后,微信返回也是xml格式的报文,须要将xml转为map或其余,本文使用map接收参数,预下单后,
微信会返回预付订单标识,标识用于进支付。微信小程序
而后封装小程序支付 所需参数api
将支付参数返回给小程序,小程序经过组件 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就能够愉快使用了。
session
本文中所使用到的工具类,图图已经帮你们打包好了,在百度网盘。app
百度网盘下载连接
连接:https://pan.baidu.com/s/1YbMrvO3qK1rdmyYyET2xzw 提取码:ljv6
本文先总结到此,后面继续更新技术一些文章。你们一块儿加油鸭!