基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作

yizhihongxing

基于thinphp5框架实现微信小程序支付 退款 订单查询 退款查询操作

准备工作

  1. 在微信公共平台申请开通支付功能,并获取到商户号、支付成功回调地址、支付密钥等信息。

  2. 创建thinkphp5项目,并在项目根目录下创建extend/wxpay/目录,将微信支付官方提供的WxPay.Api.phpWxPay.Config.phpWxPay.Data.phpWxPay.Exception.php等文件加入到该目录中。

微信小程序支付

用户向服务器请求支付

  1. 小程序调用wx.requestPayment方法发起支付请求,请求参数中包括商品价格、商品名称、商户号、appid等信息。
wx.requestPayment({
  timeStamp: '1490840662',
  nonceStr: '5K8264ILTKCH16CQ2502SI8ZNMTM67VS',
  package: 'prepay_id=wx2017033010242291fcfe0db70013231072',
  signType: 'MD5',
  paySign: 'C380BEC2BFD727A4B6845133519F3AD6',
  success: function (res) {
    // 进行支付成功后的操作
  },
  fail: function (res) {
    // 进行支付失败后的操作
  }
})
  1. 服务器接收到支付请求后,需要进行商户号和支付密钥的验证,使用微信支付官方提供的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'];

设置支付成功回调地址

设置支付成功回调地址的步骤如下。

  1. 将回调地址加入到微信支付商户平台的相应设置页中

  2. 在服务器中定义支付成功回调的处理方法,微信支付官方提供的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;
        }
    }
}

微信小程序退款

用户向服务器请求退款

  1. 小程序请求退款,请求参数中包括商品订单号、退款订单号、退款金额等信息。
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);
    }
})
  1. 服务器接收到退款请求后,同样需要进行商户号和支付密钥的验证,使用微信支付官方提供的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);

微信小程序订单查询

用户向服务器请求订单查询

  1. 小程序向服务器发送订单查询请求,请求参数中包括商品订单号、商户号等信息。
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);
    }
})
  1. 服务器接收到订单查询请求后,同样需要进行商户号和支付密钥的验证,使用微信支付官方提供的WxPay.Api.php文件对请求参数进行签名验证。
use \wxpay\WxPayOrderQuery;
use \wxpay\WxPayApi;

// 获取请求参数
$input = new WxPayOrderQuery();
$input->SetOut_trade_no('123456');

// 查询订单
$result = WxPayApi::orderQuery($input);

微信小程序退款查询

用户向服务器请求退款查询

  1. 小程序向服务器发送退款查询请求,请求参数中包括商品订单号、商户号等信息。
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);
    }
})
  1. 服务器接收到退款查询请求后,同样需要进行商户号和支付密钥的验证,使用微信支付官方提供的WxPay.Api.php文件对请求参数进行签名验证。
use \wxpay\WxPayRefundQuery;
use \wxpay\WxPayApi;

// 获取请求参数
$input = new WxPayRefundQuery();
$input->SetOut_trade_no('123456');

// 查询退款
$result = WxPayApi::refundQuery($input);

这里只是简单介绍了基于thinkphp5框架实现微信小程序支付、退款、订单查询、退款查询操作的流程和一些示例,具体实现还需要根据自己的需要做进一步的抽象和开发。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • php 全文搜索和替换的实现代码

    实现php全文搜索和替换需要用到正则表达式(regex)。下面是用PHP实现全文搜索和替换的攻略,以及两个示例说明。 步骤一:打开文件并读取内容 首先,要用PHP的文件操作函数打开文件并读取文件内容,保存到一个变量中。这里,我们使用的是file_get_contents函数来读取文件: $content = file_get_contents(‘file.t…

    PHP 2023年5月23日
    00
  • php中将数组转成字符串并保存到数据库中的函数代码

    下面是详细讲解「PHP中将数组转成字符串并保存到数据库中的函数代码」的攻略: 一、将数组转成字符串 我们可以使用内置的serialize()函数将一个数组序列化成字符串,例如: <?php $arr = array(‘a’ => ‘apple’, ‘b’ => ‘banana’, ‘c’ => ‘cherry’); $str = se…

    PHP 2023年5月26日
    00
  • PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析

    当需要对PHP中的数组进行排序时,可以使用PHP提供的一系列排序函数。这里我们讲解PHP中的排序函数sort、asort、rsort、krsort、ksort的区别。 sort sort函数可以按照数组的键值进行升序排序,也可以进行降序排序。sort函数无法保留数组原有的键值,并且会重排索引值。 语法: sort($array, $sort_flags); …

    PHP 2023年5月26日
    00
  • laravel 输出最后执行sql 附:whereIn的使用方法

    首先,我们需要在 Laravel 应用程序的设置文件 config/app.php 中将 debug 选项设置为 true,以开启调试模式。然后在代码中使用 DB::enableQueryLog() 方法启用查询日志,将执行的 SQL 语句记录下来。接着使用 DB::getQueryLog() 方法获取执行的 SQL 查询日志。 下面是具体步骤和代码示例: …

    PHP 2023年5月26日
    00
  • PHP基于递归实现的约瑟夫环算法示例

    下面是“PHP基于递归实现的约瑟夫环算法示例”的完整攻略。 约瑟夫环算法简介 约瑟夫环是一个数学问题,具体问题为:有n个人围成一圈,从第一个人开始报数,报到第m个人出列,然后从出列的下一个人开始重新报数,报到第m个人又出列,以此类推,直到所有人都出列为止,由此产生一个出队编号的序列。 约瑟夫环算法实现 思路 我们可以使用递归来实现约瑟夫环算法。具体思路如下:…

    PHP 2023年5月26日
    00
  • PHP程序员编程注意事项

    PHP程序员编程注意事项 作为一名PHP程序员,编写高质量、高可维护性、高可扩展性的代码是非常重要的。以下是一些编程注意事项: 1. 代码风格 良好的代码风格可提高代码的可读性和可维护性。建议遵循 PSR 规范,尤其是 PSR-1 和 PSR-2 标准。可以使用 PHP_CodeSniffer 工具来检测代码风格是否符合 PSR 规范。 以下是示例代码: &…

    PHP 2023年5月23日
    00
  • php目录拷贝实现方法

    下面让我详细讲解一下“php目录拷贝实现方法”完整攻略。 1. 使用copy()函数 PHP提供了copy()函数,可以用于将一个文件从源路径拷贝到目标路径,也可以进行目录的拷贝。以下是使用copy()函数实现目录拷贝的示例代码: $source = ‘/path/to/source/directory’; $destination = ‘/path/to/…

    PHP 2023年5月26日
    00
  • php实现多城市切换特效

    下面是如何使用PHP实现多城市切换特效的攻略: 1. 准备工作 首先,需要准备以下工作: PHP环境 多个城市的数据 具有地理定位功能的API 2. 数据结构和设计 设计一个数据结构,其中包括城市名称、经纬度和城市图片。 $city_list = array( array(‘name’=>’北京’,’lat’=>’39.90469′,’lng’=…

    PHP 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部