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

基于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日

相关文章

  • uni-app路由配置文件pages.json平台化拆分

    uni-app 是一个跨平台开发框架,可以将一个代码库编译成多个平台的小程序、H5、APP等。而 pages.json 就是 uni-app 项目中用于配置页面的路由配置文件,它可以帮助我们对应用进行页面的管理,包括页面路径、页面标题、页面导航栏颜色等。 但是,在跨平台开发过程中,不同平台的页面需求是不一样的。比如,在微信小程序中,可以使用原生导航栏进行页面…

    PHP 2023年5月30日
    00
  • PHP对字符串的递增运算分析

    PHP对字符串的递增运算分析 在PHP中,我们可以对字符串执行递增操作。这是因为在PHP中,字符串实际上被视为一系列的字符,可以根据字符的ASCII值来比较大小。在这篇文章中,我们将详细讨论PHP中字符串递增运算的机制以及如何正确使用它。 什么是PHP的字符串递增运算? PHP中的字符串递增运算,指的是对字符串的最后一个字符进行加1操作。这个操作通常在字符串…

    PHP 2023年5月26日
    00
  • w3wp进程发生死锁ISAPI aspnet_isapi.dll报告它自身有问题,原因Deadlock detected

    对于这种问题,一般需要对服务器进行深入的调试和分析,下面是一个比较详细的解决方案: 问题背景 w3wp进程是托管IIS Web 应用程序的工作进程,当网站运行在 IIS 上时,一个应用程序池(Application Pool)就会启动一个 w3wp 进程处理网站的请求。如果w3wp进程出现死锁,服务器上的应用程序就会被挂起,用户无法访问其中的网站,这会严重影…

    PHP 2023年5月27日
    00
  • php生成txt文件实例代码介绍

    下面是“php生成txt文件实例代码介绍”的完整攻略: 介绍 在Web开发过程中,经常需要对用户的操作进行记录或者生成一些配置文件等。而PHP语言提供了很方便的方式,可以通过PHP生成txt文件。下面我们就来介绍如何通过PHP代码来生成txt文件。 实现步骤 步骤1:创建文件 首先,我们要创建一个txt文件,在PHP中使用 fopen() 函数来创建文件,代…

    PHP 2023年5月30日
    00
  • php简单实现多语言切换的方法

    那我就来详细讲解一下php简单实现多语言切换的方法吧。 一、需求描述 在开发网站时,我们需要考虑到用户来自不同的国家和地区,使用不同的语言。因此,为了能够更好地服务于全球用户,我们需要通过一种方法来简单实现多语言切换。 二、实现步骤 定义语言文件:在根目录下创建一个“language”文件夹,用于存放语言文件。在该文件夹下创建一个“zh-cn.php”文件,…

    PHP 2023年5月23日
    00
  • 详解PHP中foreach的用法和实例

    当我们需要遍历一个数组或对象中的元素时,foreach循环结构就非常有用了。为了帮助更多的开发人员掌握foreach的用法,本篇攻略详解了PHP中foreach的用法和实例。 1. foreach的基本语法 foreach语法的基本格式如下: foreach (array_expression as $value) { statement } 其中,arra…

    PHP 2023年5月23日
    00
  • 哪种动物喜欢把海藻缠绕在身上,枕浪而睡?蚂蚁庄园5月20日答案

    针对这个问题,我们可以通过以下几个步骤来进行分析和解答: 第一步 获得题目中的关键词,缩小范围 题目中给出了两个关键词:海藻和枕浪而睡。通过这两个关键词我们可以初步判断,这种喜好海藻并在海中睡觉的动物应该是一种海洋生物。 第二步 进行搜索和筛选 基于以上的分析,我们可以通过搜索相关的信息来缩小范围,如利用搜索引擎输入关键词“海洋生物 睡觉 海藻”等,寻找相关…

    PHP 2023年5月27日
    00
  • php中截取中文字符串的代码小结

    我们来详细讲解一下如何在 PHP 中截取中文字符串。 原理分析 中文字符编码一般使用 UTF-8 编码,而 UTF-8 中每个中文字符占 3 个字节,英文字符占 1 个字节。所以,要截取中文字符串,必须对每个字节进行判断。 具体实现时,需要先将字符串转换为 UTF-8 编码,然后用 substr 函数进行截取。但因为 substr 函数以字节为单位进行截取,…

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