当前位置:首页 > 技术教程 > 技术文章 > 正文内容

thinkPHP实现微信支付之退款,附demo示例

atao3年前 (2021-02-26)技术文章2987

此篇文章主要介绍了ThinkPHP6框架下整合微信支付之退款功能

手册里面有的东西不多介绍,请求参数、返回结果之类的请移步官方手册查看。本文主要是通过一个demo实例进行讲解微信支付退款接口。

手册地址:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_4


注意:

  1. 交易时间超过一年的订单无法提交退款

  2. 微信支付退款支持单笔交易分多次退款,多次退款需要提交原支付订单的商户订单号和设置不同的退款单号。申请退款总金额不能超过订单金额。 一笔退款失败后重新提交,请不要更换退款单号,请使用原商户退款单号

  3. 请求频率限制:150qps,即每秒钟正常的申请退款请求次数不超过150次,错误或无效请求频率限制:6qps,即每秒钟异常或错误的退款申请请求不超过6次

  4. 每个支付订单的部分退款次数不能超过50次

  5. 如果同一个用户有多笔退款,建议分不同批次进行退款,避免并发退款导致退款失败

  6. 申请退款接口的返回仅代表业务的受理情况,具体退款是否成功,需要通过退款查询接口获取结果。

  7. 双项证书这里要填物理路径,也就是绝对路径。

微信支付退款接口流程介绍:

  1. 将基本请求参数和随机字符串(见下文)写入到数组

  2. 生成签名(按照字典序排序)写入数组

  3. 将数组转为xml包

  4. 提交CURL请求(POST),必须携带双向证书。

  5. 微信返回数据

生成随机字符串方法和签名生成方法见下文微信支付类下载地址。

微信支付退款接口必填请求参数:

  1. appid 公众号ID

  2. mch_id 商户号

  3. nonce_str 随机字符串

  4. out_trade_no商户订单号、transaction_id微信支付订单号,二选一

  5. out_refund_no 商户退款单号

  6. refund_fee 退款金额(单位为分)

  7. total_fee 标价金额(单位为分)

  8. sign 签名

此方法一共涉及一个类文件,为WxPay(微信支付类),下载地址见下文。

// 退款
public function tuikuan(){
    $content['order_sn'] = 'wx2021022653651423'; //商户订单号
        $order['uid'] = '15564343543'; //商户退款单号
        $order['refundMoney'] = '0.01'; //退款金额 单位为元
        $order['amount'] = '9.9'; //订单金额 单位为元
    // 实例化支付类,并传入参数
    $wx = new WxPay("");
    //  微信的金额单位为分,所以要乘100!!!
    $content =$wx->tuiKuan("{$order['order_sn']}","{$order['uid']}","{$order['refundMoney']}"*100,"{$order['amount']}"*100);
    // 判断是否退款成功
    if($content['result_code']=="SUCCESS"){
            echo "退款成功" . $content['refund_fee']/100 . "元";
        }
}


image.png


文章:微信支付类下载二维码类下载

扫描二维码推送至手机访问。

版权声明:本文由武景涛的博客发布,如需转载请注明出处。

本文链接:http://www.yizhanhongtu.cn/post/61.html

分享给朋友:

相关文章

windows系统下Composer的安装和使用

windows系统下Composer的安装和使用

Composer 是 PHP 的一个依赖管理工具。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。Composer 不是一个包管理器。是的,它涉及 "packages"...

PHP开发api接口,如何做才算是安全的

PHP开发api接口,如何做才算是安全的

php的api接口在实际工作中,使用PHP写api接口是经常做的,PHP写好接口后,前台就可以通过链接获取接口提供的数据,而返回的数据一般分为两种情况,xml和json,在这个过程中,服务器并不知道,...

curl实用请求方法函数(个人用),含支付pem校验

curl实用请求方法函数(个人用),含支付pem校验

curl 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。它的功能非常强大,命令行参数多达几十种。如果熟练的话,完全可以取代 Postman 这...

php版微信公众平台之微信网页登陆授权示例详解

php版微信公众平台之微信网页登陆授权示例详解

之前在项目中遇到网页授权登录这个需求,就对此做些总结记录。OAuth2.0授权:OAuth是一个开放协议,允许用户让第三方应用以安全且标准的方式获取该用户在某一网站、移动或桌面应用上存储的个人信息,而...

Apache自带的ab压力测试工具用法详解

Apache自带的ab压力测试工具用法详解

ab的原理ab是apache bench命令的缩写。ab的原理:ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问。它的测试目标是基于URL的,因此,它既可以用来测试apach...

寶塔Linux7.5.1 永久授权专业版wget脚本[测试版禁止外传]

寶塔Linux7.5.1 永久授权专业版wget脚本[测试版禁止外传]

内部测试版本,不确保是否存在漏洞/后门等,禁止外传使用。支持正版!!本次版本更新內容:已修复无法在线更新问题(面板上点修复即可恢复最新版)已修复防火墙8.7.7问题已更新防火墙8.7.8修复已知BUG...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。