基于thinphp5框架实现微信小程序支付 退款 订单查询 退款查询操作
准备工作
-
在微信公共平台申请开通支付功能,并获取到商户号、支付成功回调地址、支付密钥等信息。
-
创建thinkphp5项目,并在项目根目录下创建
extend/wxpay/
目录,将微信支付官方提供的WxPay.Api.php
、WxPay.Config.php
、WxPay.Data.php
、WxPay.Exception.php
等文件加入到该目录中。
微信小程序支付
用户向服务器请求支付
- 小程序调用
wx.requestPayment
方法发起支付请求,请求参数中包括商品价格、商品名称、商户号、appid等信息。
wx.requestPayment({
timeStamp: '1490840662',
nonceStr: '5K8264ILTKCH16CQ2502SI8ZNMTM67VS',
package: 'prepay_id=wx2017033010242291fcfe0db70013231072',
signType: 'MD5',
paySign: 'C380BEC2BFD727A4B6845133519F3AD6',
success: function (res) {
// 进行支付成功后的操作
},
fail: function (res) {
// 进行支付失败后的操作
}
})
- 服务器接收到支付请求后,需要进行商户号和支付密钥的验证,使用微信支付官方提供的
WxPay.Api.php
文件对请求参数进行签名验证,如果验证通过,返回预支付交易会话标识prepay_id
。
use \wxpay\WxPayUnifiedOrder;
use \wxpay\WxPayApi;
// 获取请求参数
$input = new WxPayUnifiedOrder();
$input->SetBody('test');
$input->SetOut_trade_no('20181116082856694');
$input->SetTotal_fee(1);
$input->SetSpbill_create_ip('127.0.0.1');
$input->SetNotify_url('https://www.example.com/wxpay/notify');
$input->SetTrade_type('JSAPI');
$input->SetOpenid($openid);
// 获取预支付交易会话标识
$result = WxPayApi::unifiedOrder($input);
$prepay_id = $result['prepay_id'];
设置支付成功回调地址
设置支付成功回调地址的步骤如下。
-
将回调地址加入到微信支付商户平台的相应设置页中
-
在服务器中定义支付成功回调的处理方法,微信支付官方提供的
WxPay.Notify.php
文件中的NotifyProcess
方法可以用于处理支付成功回调的信息。需要在回调方法中进行订单状态的处理,回复微信支付成功信息。
use wxpay\WxPayNotify;
class Notify extends WxPayNotify {
public function NotifyProcess($data, &$msg) {
if ($data['return_code'] == 'SUCCESS' && $data['result_code'] == 'SUCCESS') {
// 处理订单状态
// 返回支付成功信息
return true;
} else {
return false;
}
}
}
微信小程序退款
用户向服务器请求退款
- 小程序请求退款,请求参数中包括商品订单号、退款订单号、退款金额等信息。
wx.request({
url: 'https://example.com/wxpay/refund',
data: {
out_trade_no: '123456',
out_refund_no: '654321',
total_fee: 10,
refund_fee: 10
},
method: 'POST',
header: {
'content-type': 'application/json'
},
success: function(res) {
console.log(res.data);
}
})
- 服务器接收到退款请求后,同样需要进行商户号和支付密钥的验证,使用微信支付官方提供的
WxPay.Api.php
文件对请求参数进行签名验证。
use \wxpay\WxPayRefund;
use \wxpay\WxPayApi;
// 获取请求参数
$input = new WxPayRefund();
$input->SetOut_trade_no('123456');
$input->SetOut_refund_no('654321');
$input->SetTotal_fee(10);
$input->SetRefund_fee(10);
// 申请退款
$result = WxPayApi::refund($input);
微信小程序订单查询
用户向服务器请求订单查询
- 小程序向服务器发送订单查询请求,请求参数中包括商品订单号、商户号等信息。
wx.request({
url: 'https://example.com/wxpay/orderquery',
data: {
out_trade_no: '123456'
},
method: 'POST',
header: {
'content-type': 'application/json'
},
success: function(res) {
console.log(res.data);
}
})
- 服务器接收到订单查询请求后,同样需要进行商户号和支付密钥的验证,使用微信支付官方提供的
WxPay.Api.php
文件对请求参数进行签名验证。
use \wxpay\WxPayOrderQuery;
use \wxpay\WxPayApi;
// 获取请求参数
$input = new WxPayOrderQuery();
$input->SetOut_trade_no('123456');
// 查询订单
$result = WxPayApi::orderQuery($input);
微信小程序退款查询
用户向服务器请求退款查询
- 小程序向服务器发送退款查询请求,请求参数中包括商品订单号、商户号等信息。
wx.request({
url: 'https://example.com/wxpay/refundquery',
data: {
out_trade_no: '123456'
},
method: 'POST',
header: {
'content-type': 'application/json'
},
success: function(res) {
console.log(res.data);
}
})
- 服务器接收到退款查询请求后,同样需要进行商户号和支付密钥的验证,使用微信支付官方提供的
WxPay.Api.php
文件对请求参数进行签名验证。
use \wxpay\WxPayRefundQuery;
use \wxpay\WxPayApi;
// 获取请求参数
$input = new WxPayRefundQuery();
$input->SetOut_trade_no('123456');
// 查询退款
$result = WxPayApi::refundQuery($input);
这里只是简单介绍了基于thinkphp5框架实现微信小程序支付、退款、订单查询、退款查询操作的流程和一些示例,具体实现还需要根据自己的需要做进一步的抽象和开发。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作 - Python技术站