了
解
红
点
最
新
动
态
和
行
业
资
讯
在微信小程序项目中,需要接入微信支付,用户在小程序中点击【付款】,唤起微信支付的弹窗,输入密码进行支付,虽然支付流程很简单,但真正接入的时候难免会遇到一些问题。
客户端:微信小程序
服务器:CentOS 7
、PHP 7.0
、Nginx
、MySQL 5.6
后台框架:ThinkPHP 5
https
,可以到阿里云申请一年免费的SSL
证书,按照Nginx
的配置完成。https://pay.weixin.qq.com
。SDK
。地址。将lib
目录下的文件拷贝到项目的extend
下的wxpay
目录中。extend/wxpay/WxPay.Config.php
,将其中的参数和上面下载的证书路径配置好。微信支付参考文档:开发文档
微信小程序文档:开发文档
这一步很简单,就是常规的根据用户购买信息创建订单,将数据保存到数据库。
1 | /** |
在小程序中发起微信支付请求很简单,需要注意的是,在调用wx.requestPayment({})
前需要获取签名数据,如以下的代码所示:
1 | app.requestData('Wxpay/sign', { id: id, openid: openid }, 'GET', function (res) { |
在上一步的请求之前,需要获取签名参数,需要注意的是获取签名参数是需要当前微信用户的openid
的(id
是订单的id
),先忽略openid
如何获取,看签名方法:
1 | <?php |
以上就是完整的获取支付签名参数的代码,需要注意的notify_url
,这个微信支付成功的回调地址,保证浏览器可以正常访问即可。
1 | /** |
这里主要就是在回调方法中将订单的状态变换一下。
回到上面提到的签名方法,在那个方法中需要提供用户的openid
,获取的流程在小程序的开发文档中有,其次服务器端的实现在下载的sdk
的sample
中也能够找到,如以下所示:
小程序端:
1 | //调用登录接口 |
服务器端:
1 | /** |
以上步骤之后微信支付就已经完成了,如果用户付款了后悔,找到平台客户,然后客服在商户平台进行退款,这时候微信会有退款结果通知,在商户平台的【交易中心】->【退款配置】中设置通知url
。
然后在服务器端完成通知方法:
1 | /** |
在通知中主要是对订单的状态变换了一下,其次解析返回的加密数据,可进一步存储退款信息。