当前位置: 首页 > news >正文

tp6 v3微信退款

   /*** @Notes:退款* @param $out_trade_no 支付时候订单号(order表 original_bn)两个参数选一个这个要选对* @param $out_refund_no 退款订单号* @param $total 订单金额* @param $refund 退款金额* @Time: 2023-08-10*/public function refundMoney($out_trade_no , $out_refund_no , $total , $refund){$config = config('wechat.wechat');$time=time();$refundData=['out_refund_no'=>$out_refund_no,	//退款订单号自己生成就好'reason'=>'商品退款','notify_url'=>$config['pay']['refundNotifyUrl'],//退款回调地址'out_trade_no' => $out_trade_no,'amount'=>['refund'=> $refund, //退款标价金额,单位为分,可以做部分退款'total'=> $total, //订单总金额,单位为分'currency'=>'CNY']];$url='https://api.mch.weixin.qq.com/v3/refund/domestic/refunds';$urlarr = parse_url($url); //拆解为:[scheme=>https,host=>api.mch.weixin.qq.com,path=>/v3/pay/transactions/native]$mchid =$config['pay']['merchantId'];//商户ID$xlid = $config['pay']['serialNumber'];//证书序列号$refundData=json_encode($refundData);$nonce = $this->randomString();$key = $this->getSign($refundData,$urlarr['path'],$nonce,$time);$token = sprintf('mchid="%s",serial_no="%s",nonce_str="%s",timestamp="%d",signature="%s"',$mchid,$xlid,$nonce,$time,$key);$header  = array('Accept: application/json','Content-Type: application/json','User-Agent:*/*','Authorization: WECHATPAY2-SHA256-RSA2048 '.$token);$res=$this->curl_post_https($url,$refundData,$header);$res_array=json_decode($res,true);return $res_array;}
   // 生成随机字符串private function randomString($len = 32){$string = '';$char = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';for ($i = 0; $i < $len; $i++) {$string .= $char[mt_rand(0, strlen($char) - 1)];}return $string;}//微信支付签名function getSign($data=array(),$url,$randstr,$time){$str = "POST"."\n".$url."\n".$time."\n".$randstr."\n".$data."\n";$key = file_get_contents(getcwd() .'/cert/apiclient_key.pem');//在商户平台下载的秘钥,读取到变量 最好是放到public下边 $str = $this->getSha256WithRSA($str,$key);return $str;}//加密public function getSha256WithRSA($content, $privateKey){$binary_signature = "";$algo = "SHA256";openssl_sign($content, $binary_signature, $privateKey, $algo);$sign = base64_encode($binary_signature);return $sign;}//退款用function curl_post_https($url,$data,$header){ // 模拟提交数据函数$curl = curl_init(); // 启动一个CURL会话curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); // 从证书中检查SSL加密算法是否存在,如果出错则修改为0,默认为1curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referercurl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回curl_setopt($curl, CURLOPT_HTTPHEADER, $header);$tmpInfo = curl_exec($curl); // 执行操作if (curl_errno($curl)) {echo 'Errno'.curl_error($curl);//捕抓异常}curl_close($curl); // 关闭CURL会话return $tmpInfo; // 返回数据,json格式}

调用

    $res = WxPay::instance()->refundMoney($order['original_bn'] , $order['order_bn'] , $sum , $order['total_money']);$msg = '';if (!empty($res['code'])) {$msg = $res['message'];}if (!empty($res['status'])) {if ($res['status'] == 'SUCCESS'){$msg = '退款成功';} else if ($res['status'] == 'CLOSED') {$msg = '退款关闭';} else if ($res['status'] == 'PROCESSING') {$msg = '退款处理中';} else if ($res['status'] == 'ABNORMAL') {$msg = '退款异常';}}return $msg;

相关文章:

tp6 v3微信退款

/*** Notes:退款* param $out_trade_no 支付时候订单号&#xff08;order表 original_bn&#xff09;两个参数选一个这个要选对* param $out_refund_no 退款订单号* param $total 订单金额* param $refund 退款金额* Time: 2023-08-10*/public function refundMoney($out_trade…...

使用 AndroidX 增强 WebView 的能力

在App开发过程中&#xff0c;为了在多个平台上保持一致的用户体验和提高开发效率&#xff0c;许多应用程序选择使用 H5 技术。在 Android 平台上&#xff0c;通常使用 WebView 组件来承载 H5 内容以供展示。 一.WebView 存在的问题 自 Android Lollipop 起&#xff0c;WebVie…...

Maven基础之仓库、命令、插件机制

文章目录 Maven 仓库中央仓库和本地仓库中央仓库本地仓库 Maven 命令generate 命令compile 命令clean 命令test 命令package 命令install 命令 Maven 插件机制官方插件&#xff1a;Compile 插件Tomcat 7 插件 Maven 仓库 中央仓库和本地仓库 [✎] 简单一点说 中央仓库是一个网…...

【ArcGIS】经纬度数据转化成平面坐标数据

将点位置导入Gis中&#xff0c;如下&#xff08;经纬度表征位置&#xff09;&#xff1a; 如何利用Gis将其转化为平面坐标呢&#xff1f; Step1 坐标变换 坐标变换&#xff0c;打开ArcToolbox&#xff0c;找到“数据管理工具”->“投影和变换”->“要素”->“投影”…...

使用自己的数据利用pytorch搭建全连接神经网络进行回归预测

使用自己的数据利用pytorch搭建全连接神经网络进行回归预测 1、导入库2、数据准备3、数据拆分4、数据标准化5、数据转换6、模型搭建7、模型训练8、模型预测9、完整代码 1、导入库 引入必要的库&#xff0c;包括PyTorch、Pandas等。 import numpy as np import pandas as pd f…...

103.216.154.X服务器出现漏洞了有什么办法?

服务器出现漏洞是一种严重的安全风险&#xff0c;需要及时采取措施来应对。以下是一些常见的应对措施&#xff1a; 及时更新补丁&#xff1a;确保服务器上的操作系统、应用程序和软件都是最新版本&#xff0c;并及时应用相关的安全补丁&#xff0c;以修复已知的漏洞。 强化访问…...

数据结构:堆的实现(C实现)

个人主页 &#xff1a; 个人主页 个人专栏 &#xff1a; 《数据结构》 《C语言》 文章目录 一、堆二、实现思路1. 结构的定义2. 堆的构建 (HeapInit)3. 堆的销毁 (HeapDestroy)4. 堆的插入 (HeapPush)5. 堆的删除 (HeapPop)6. 取堆顶的数据 (HeapTop)7. 堆的数据个数 (HeapSize…...

数据分析两件套ClickHouse+Metabase(一)

ClickHouse篇 安装ClickHouse ClickHouse有中文文档, 安装简单 -> 文档 官方提供了四种包的安装方式, deb/rpm/tgz/docker, 自行选择适合自己操作系统的安装方式 这里我们选deb的方式, 其他方式看文档 sudo apt-get install -y apt-transport-https ca-certificates dirm…...

urllib爬虫模块

urllib爬取数据 import urllib.request as request# 定义url url "https://www.baidu.com" #模拟浏览器发起请求获取响应对象 response request.urlopen(url)""" read方法返回的是字节形式的二进制数据 二进制--》字符串 解码 decode( 编码的格式…...

TCP消息传输可靠性保证

TCP链接与断开 -- 三次握手&四次挥手 三次握手 TCP 提供面向有连接的通信传输。面向有连接是指在数据通信开始之前先做好两端之间的准备工作。 所谓三次握手是指建立一个 TCP 连接时需要客户端和服务器端总共发送三个包以确认连接的建立。在socket编程中&#xff0c;这一…...

Visual Studio 与QT ui文件

对.ui文件鼠标右键&#xff0c;然后单击 Open with…在弹出的窗口中&#xff0c;选中左侧的 Qt Designer&#xff0c;然后单击右侧的 Add 按钮&#xff0c;随后会弹出一个窗口&#xff0c;在 Program: 输入框中输入 Qt Designer 的路径&#xff0c;最后单击 OK找到 Qt Designer…...

竞赛项目 深度学习验证码识别 - 机器视觉 python opencv

文章目录 0 前言1 项目简介2 验证码识别步骤2.1 灰度处理&二值化2.2 去除边框2.3 图像降噪2.4 字符切割2.5 识别 3 基于tensorflow的验证码识别3.1 数据集3.2 基于tf的神经网络训练代码 4 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x…...

ORA-00845: MEMORY_TARGET not supported on this system

处理故障时&#xff0c;发现startup实例失败&#xff0c;报错ORA-00845: MEMORY_TARGET not supported on this system SYSorcl1> startup; ORA-00845: MEMORY_TARGET not supported on this system 查看alert日志&#xff0c;报错如下 Starting ORACLE instance (normal…...

wps设置一键标题字体和大小

参考 wps设置一键标题字体和大小&#xff1a;https://www.kafan.cn/A/7v5le1op3g.html 统一一键设置...

TIA博途WINCC_如何在IO域中保证输入数值只能为正数?

TIA博途WINCC_如何在IO域中保证输入数值只能为正数? 在某些情况下,输入的数值受到限制,本例就以输入的数值必须为正整数为例进行说明。 如下图所示,在PLC的全局DB块中添加一个测试变量,数据类型为Int(该数据类型的范围为-32768~+32767), 如下图所示,将该测试变量拖拽到…...

《Linux从练气到飞升》No.13 Linux进程状态

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的…...

安卓快速开发

1.环境搭建 Android Studio下载网页&#xff1a;https://developer.android.google.cn/studio/index.html 第一次新建工程需要等待很长时间&#xff0c;新建一个Empty Views Activity 项目&#xff0c;右上角选择要运行的机器&#xff0c;运行就安装上去了(打开USB调试)。 2…...

SpringCloud微服务之间如何进行用户信息传递(涉及:Gateway、OpenFeign组件)

目录 1、想达到的效果2、用户信息在微服务之间传递的两种途径3、用RuoYi-Cloud为例进行演示说明&#xff08;1&#xff09;网关将用户信息写在请求头中&#xff08;2&#xff09;业务微服务之间通过OpenFeign进行调用&#xff0c;并且将用户信息写在OpenFeign准备的请求头中&am…...

RabbitMQ之TTL+死信队列实现延迟队列

RabbitMQ是一个流行的消息队列系统&#xff0c;它提供了许多有用的功能&#xff0c;其中之一是TTL&#xff08;Time To Live&#xff09;和死信队列。这些功能可以用来实现延迟队列&#xff0c;让我们来看看如何使用它们。 首先&#xff0c;什么是TTL&#xff1f;TTL是消息的存…...

GrapeCity Documents for PDF (GcPdf) 6.2 Crack

GrapeCity PDF 文档 (GcPdf) 改进了对由 GcPdf 以外的软件生成的现有 PDF 文档的处理 在新的 v6.2 版本中&#xff0c;GcPdf 增强了 PDF 文档的加载和保存&#xff0c;并提供以下优势&#xff1a; GcPdf 现在可以加载和保存可能不严格符合 PDF 规范的 PDF 文档。GcPdf 现在将…...

LLM测试工程师必看,Claude E2E测试架构设计,从用例生成、黄金样本构建到回归基线告警闭环

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;LLM测试工程师必看&#xff0c;Claude E2E测试架构设计&#xff0c;从用例生成、黄金样本构建到回归基线告警闭环 核心架构概览 Claude端到端测试架构采用三层解耦设计&#xff1a;输入层&#xff08;动态用…...

DRG存档编辑器终极指南:如何快速解锁《深岩银河》的全部游戏体验

DRG存档编辑器终极指南&#xff1a;如何快速解锁《深岩银河》的全部游戏体验 【免费下载链接】DRG-Save-Editor Rock and stone! 项目地址: https://gitcode.com/gh_mirrors/dr/DRG-Save-Editor 还在为《深岩银河》中无尽的资源收集和等级提升感到疲惫吗&#xff1f;DRG…...

FModel完整部署指南:UE5资源提取与逆向解析实战

1. 为什么FModel不是“另一个UE资源查看器”&#xff0c;而是虚幻项目逆向分析的起点FModel虚幻引擎资源提取工具完整部署指南——这标题里藏着三个被多数人忽略的关键信号&#xff1a;“FModel”不是泛指&#xff0c;“虚幻引擎”特指UE4/UE5原生资产体系&#xff0c;“完整部…...

Unity中文语言包安装失败?手动部署全流程详解

1. 为什么Unity编辑器中文语言包总在安装时“卡住”或报错&#xff1f; Unity编辑器自带多语言支持&#xff0c;但中文语言包的安装过程却常年被开发者吐槽——点开Preferences → Localization → Install Language Pack&#xff0c;选中Chinese (Simplified)&#xff0c;点击…...

Linux命令:perf

perf 命令 基本介绍 perf&#xff08;Performance Counters for Linux&#xff09;是 Linux 系统中用于性能分析的强大工具套件。它基于内核性能计数器&#xff08;PMC&#xff09;&#xff0c;可以分析 CPU 使用率、内存访问、缓存命中率、分支预测等硬件级性能指标&#xff0…...

别再用BLEU和ROUGE了!2024最前沿的DeepSeek评估范式:基于认知对齐度(CA-Score)的三维量化体系

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;别再用BLEU和ROUGE了&#xff01;2024最前沿的DeepSeek评估范式&#xff1a;基于认知对齐度&#xff08;CA-Score&#xff09;的三维量化体系 传统自动评估指标如BLEU、ROUGE长期受限于n-gram表面匹配&…...

c++乱码问题

大家下载vs2026或者更新时&#xff0c;可能会出现乱码问题点击工具&#xff0c;进入选项&#xff0c;在环境列表里找到文档&#xff0c;下滑到底部&#xff0c;勾选使用特定编码保存文件然后退出就可以了。如果还是存在问题&#xff0c;将自己的代码保存&#xff0c;重新新建一…...

D3KeyHelper终极指南:5分钟掌握暗黑3技能自动化

D3KeyHelper终极指南&#xff1a;5分钟掌握暗黑3技能自动化 【免费下载链接】D3keyHelper D3KeyHelper是一个有图形界面&#xff0c;可自定义配置的暗黑3鼠标宏工具。 项目地址: https://gitcode.com/gh_mirrors/d3/D3keyHelper D3KeyHelper是一款专为《暗黑破坏神3》玩…...

ComfyUI-Manager终极指南:如何快速安装和管理ComfyUI自定义节点

ComfyUI-Manager终极指南&#xff1a;如何快速安装和管理ComfyUI自定义节点 【免费下载链接】ComfyUI-Manager ComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and enable vari…...

如何3步实现视频字幕精准提取:video-subtitle-extractor终极指南

如何3步实现视频字幕精准提取&#xff1a;video-subtitle-extractor终极指南 【免费下载链接】video-subtitle-extractor 视频硬字幕提取&#xff0c;生成srt文件。无需申请第三方API&#xff0c;本地实现文本识别。基于深度学习的视频字幕提取框架&#xff0c;包含字幕区域检测…...