微信api退款及退款查询

相比支付宝的接口,微信的接口与实现都很简单其实,官方文档都有很详细的讲解。

官方文档地址:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_4


步骤:

1.下载 安全证书!!【关键】

2.按官方文档组织参数,生成URL

3.CURL等同步访问URL,获取XML返回值

4.自己系统的回调验证,完成自己系统退款的后续操作



一.证书的配置与下载

路径下载:微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->证书下载 。证书文件有四个,全部下载即可。






二.配置参数

array('appid'=>'your_appid',//应用ID,固定'mch_id'=>'your_mch_id',//商户号,固定'nonce_str'=>'123456',//随机字符串'op_user_id'=>'646131',//操作员'out_refund_no'=>'201608142308',//商户内部唯一退款单号'out_trade_no'=>'860524080535541654',//商户订单号,pay_sn码 1.1二选一,微信生成的订单号,在支付通知中有返回// 'transaction_id'=>'1',//微信订单号 1.2二选一,商户侧传给微信的订单号'refund_fee'=>'3',//退款金额'total_fee'=>'3',//总金额'sign'=>$ref//签名);



三.注意事项

常见问题:

1. 本接口是需要证书的,下载放上见上边

2. 微信的接口里,所有对金额的描述,都是以分为单位的

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

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

5.在用下边demo做测试的时候,请先真实支付一次,获取相应的ID与参数,然后直接运行调试即可,仅供参考

6.注意下签名规则




7.CURL 返回值为58
    答: 证书路径问题, 证书路径应该为物理全路径 getcwd().'/apiclient_cert.pem'这种写法 或者自己函数获取

8.CURL 返回值为77
    答:证书问题,重新下载证书,按照配置对应放在生产路径,同上一条,用全的物理路径


<err_code><![CDATA[TRADE_STATE_ERROR]]></err_code>

<err_code_des><![CDATA[订单状态错误]]></err_code_des>

原因:out_trade_no错误【out_trade_no为自己系统生产的支付码】


<err_code><![CDATA[ORDERNOTEXIST]]></err_code>

<err_code_des><![CDATA[订单不存在]]></err_code_des>

原因:out_trade_no不存在,也是就说没有这笔支付号


demo源码

<?php
/*
请确保您的libcurl版本是否支持双向认证,版本高于7.20.1
*/

function Home_index(){$ref= strtoupper(md5("appid=your_appid&mch_id=your_mch_id&nonce_str=123456&op_user_id=646131"
      . "&out_refund_no=201608142308&out_trade_no=860524080535541654&refund_fee=3&total_fee=3"
      . "&key=suiji123"));//sign加密MD5

   $refund=array('appid'=>'your_appid',//应用ID,固定
      'mch_id'=>'your_mch_id',//商户号,固定
      'nonce_str'=>'123456',//随机字符串
      'op_user_id'=>'646131',//操作员
      'out_refund_no'=>'201608142308',//商户内部唯一退款单号
      'out_trade_no'=>'860524080535541654',//商户订单号,pay_sn码 1.1二选一,微信生成的订单号,在支付通知中有返回
      // 'transaction_id'=>'1',//微信订单号 1.2二选一,商户侧传给微信的订单号
      'refund_fee'=>'3',//退款金额
      'total_fee'=>'3',//总金额
      'sign'=>$ref//签名
   );$url="https://api.mch.weixin.qq.com/secapi/pay/refund";;//微信退款地址,post请求
   $xml=arrayToXml($refund);$ch=curl_init();curl_setopt($ch,CURLOPT_URL,$url);curl_setopt($ch,CURLOPT_HEADER,1);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,1);//证书检查
   curl_setopt($ch,CURLOPT_SSLCERTTYPE,'pem');curl_setopt($ch,CURLOPT_SSLCERT,dirname(__FILE__).'/cert/apiclient_cert.pem');curl_setopt($ch,CURLOPT_SSLCERTTYPE,'pem');curl_setopt($ch,CURLOPT_SSLKEY,dirname(__FILE__).'/cert/apiclient_key.pem');curl_setopt($ch,CURLOPT_SSLCERTTYPE,'pem');curl_setopt($ch,CURLOPT_CAINFO,dirname(__FILE__).'/cert/rootca.pem');curl_setopt($ch,CURLOPT_POST,1);curl_setopt($ch,CURLOPT_POSTFIELDS,$xml);$data=curl_exec($ch);if($data){ //返回来的是xml格式需要转换成数组再提取值,用来做更新
      curl_close($ch);var_dump($data);}else{$error=curl_errno($ch);echo "curl出错,错误代码:$error"."<br/>";echo "<a href='http://curl.haxx.se/libcurl/c/libcurs.html'>;错误原因查询</a><br/>";curl_close($ch);echo false;}
}
function arrayToXml($arr){$xml = "<root>";foreach ($arr as $key=>$val){if(is_array($val)){$xml.="<".$key.">".arrayToXml($val)."</".$key.">";}else{$xml.="<".$key.">".$val."</".$key.">";}}$xml.="</root>";return $xml ;
}
Home_index();



四.退款查询接口

如果上述退款调通了的话,那这个接口更简单了,只要把上述demo的参数换成退款查询的参数即可,这里就不赘述了

官方文档地址:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_5


$url = https://api.mch.weixin.qq.com/pay/refundquery


请求参数

字段名 变量名 必填 类型 示例值 描述
公众账号ID appid String(32) wx8888888888888888 微信分配的公众账号ID(企业号corpid即为此appId)
商户号 mch_id String(32) 1900000109 微信支付分配的商户号
设备号 device_info String(32) 013467007045764 商户自定义的终端设备号,如门店编号、设备的ID等
随机字符串 nonce_str String(32) 5K8264ILTKCH16CQ2502SI8ZNMTM67VS 随机字符串,不长于32位。推荐随机数生成算法
签名 sign String(32) C380BEC2BFD727A4B6845133519F3AD6 签名,详见签名生成算法
微信订单号 transaction_id 四选一 String(32) 1217752501201407033233368018 微信订单号
商户订单号 out_trade_no String(32) 1217752501201407033233368018 商户系统内部的订单号
商户退款单号 out_refund_no String(32) 1217752501201407033233368018 商户侧传给微信的退款单号
微信退款单号 refund_id String(28) 1217752501201407033233368018

微信生成的退款单号,在申请退款接口有返回

举例如下:

<xml>
   <appid>wx2421b1c4370ec43b</appid>
   <mch_id>10000100</mch_id>
   <nonce_str>0b9f35f484df17a732e537c37708d1d0</nonce_str>
   <out_refund_no></out_refund_no>
   <out_trade_no>1415757673</out_trade_no>
   <refund_id></refund_id>
   <transaction_id></transaction_id>
   <sign>66FFB727015F450D167EF38CCC549521</sign>
</xml>



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/34944.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

话费充值API

最近正在做一个小项目&#xff0c;其中一个要实现手机话费充值功能。我在网上搜罗了很久&#xff0c;最终找了微客云上的那个手机话费充值API&#xff0c;下面就分享一下&#xff0c;希望对需求的朋友有所帮助。 1.手机直充接口 接口地址&#xff1a;微客云 - 淘宝客CMS,公众…

第一台真正的现代打字机 | 历史上的今天

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2023 年 4 月 27 日&#xff0c;在 1791 年的今天&#xff0c;摩斯电码的共同发明者、电报发明者塞缪尔摩斯&#xff08;Samuel Morse&#xff09;诞生。摩斯最开始是一…

秘史公开!当年,马斯克离开 OpenAI 的真相

在 ChatGPT 的影响下&#xff0c;目前 OpenAI 成为了全球最火爆的 AI 公司。然而回顾过去&#xff0c;它与马斯克之间的恩怨从创立之初就埋下了。 原文链接&#xff1a;https://www.semafor.com/article/03/24/2023/the-secret-history-of-elon-musk-sam-altman-and-openai 未经…

阿里集团“换帅”!张勇将卸任集团董事会主席和CEO两大职务

整理 | 苏宓 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 这一场从上往下的改革&#xff0c;阿里巴巴正在有条不紊地进行中。 今天中午&#xff0c;据阿里巴巴公众号消息&#xff0c;阿里巴巴控股集团董事会主席兼 CEO 张勇发布了一封全员信&#xff0c;其中不…

微软的人工智能 Copilot 到底有多强大?带你来体验一下

本文同步发表于我的微信公众号&#xff0c;扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注&#xff0c;每个工作日都有文章更新。 说实话&#xff0c;这是一篇我早就应该写的文章&#xff0c;我也不知道为什么我能拖这么久。 但好像从来也没有读者朋友们催我写过这类文章&…

用中国版ChatGPT文心一言体验

现在ChatGPT很火&#xff0c;很多同行也对ChatGPT做了很多测试&#xff0c;但是使用ChatGPT有很多限制&#xff0c;开通账号都比较困难&#xff0c;前些天百度AI文心一言也上线了&#xff0c;可以免费体验&#xff0c;只要有百度账号就可以了&#xff0c;但是也需要预约&#x…

IDEA 插件 Easy Code 代码生成器使用+过程中出现的小问题

Easy Code代码生成器使用教程 idea下载Easy Code插件 File-setting-Plugins-Browse repositories… 2.配置数据库&#xff0c;添加数据源 这里配置数据库连接信息&#xff0c;测试。 连接成功后&#xff0c;右键你要生成代码的表&#xff0c;EasyCode会出来两个子菜单分别是…

微信登录的时候总是显示错误

如图&#xff0c;一直崩溃&#xff0c;气到不行&#xff0c;隔了好久又下定决心把它解决&#xff0c;终于找到一个靠谱的方法。 WeChatWin.dll 错误模块这个&#xff0c;还专门去下载了这个模块&#xff0c;按照提示的方法运行&#xff0c;结果只是关机&#xff0c;没有什么作…

Word闪退,几个意思?

这些天终于又要用到 Transtools 的正则替换功能&#xff0c;发现试用已经过期了&#xff0c;于是果断上网花了35美刀&#xff0c;买了一个license。 几百个极其复杂的正则表达式&#xff0c;对几千条长短不一的段落进行搜索替换&#xff0c;结果在运行到3%的时候Word闪退&#…

入局laaS市场,字节跳动能否带来新变局?

随着各行业数字化转型步伐加速&#xff0c;对人工智能、物联网等新技术需求强劲&#xff0c;云计算作为新技术输出窗口&#xff0c;继而推动云服务市场保持强劲增长。 根据海比研究院调查数据显示&#xff0c;2020年中国公有云市场规模为1356亿元&#xff0c;预计2022年将会增长…

阿里内部不外传的 50 万字 Java 面试手册,首次开放,一天遭狂转 10w 次

​ 10月见底&#xff0c;现在可以说是备战金九银十的最佳时候了。为了让大家能在面试中过关斩将&#xff0c;小编特地找了在阿里的朋友要了这份阿里内部不外传秘籍&#xff1a;50 万字 Java 面试手册。 这份面试手册涉及的技术栈非常全面而且足够细致&#xff0c;内容包括网络协…

字节跳动在 Rust 微服务方向的探索和实践

近日&#xff0c; Qcon 全球软件开发大会 2022&#xff08;上海站&#xff09;圆满落幕&#xff0c;大会是由 InfoQ 中国主办的综合性技术盛会&#xff0c;近百位国内外技术大咖现场分享前沿技术案例与创新实践。本文整理自字节跳动火山引擎基础架构服务框架工程师吴迪于大会上…

Zigbee通讯之开发篇(基于TI 的Z-Stack)

1.Zigbee协议和Z-Stack Zigbee协议和Z-Stack是什么关系&#xff1f;这可能是初学Zigbee同学想知道的问题。给大家举个例子吧&#xff0c;我们生活中使用的插排是要符合一定的标准的&#xff0c;现在国家标准是GB2099.3-2008&#xff0c;里面规定了好多插排的电气、机械等要求。…

牛逼,字节跳动又一开源大作!程序员的福音!

最近有位读者私信&#xff0c;说能不能推荐一些大厂使用的安卓类开源项目&#xff0c;想了下&#xff0c;读者中也有不少搞安卓开发的&#xff0c;所以今天给大家推荐一个大厂出品的安卓开源项目。 这个项目是「ByteHook」&#xff0c;目前在 GitHub 收获了 670 Star&#xff…

字节跳动开源又一力作

【公众号回复 “1024”&#xff0c;免费领取程序员赚钱实操经验】 大家好&#xff0c;我是章鱼猫。 今天给大家推荐的这个项目是「BoostMultiDex」&#xff0c;一个用于 Android 低版本设备&#xff08;4.X 及以下&#xff0c;SDK < 21&#xff09;快速加载多 DEX 的解决方案…

炸裂!万字长文拿下HTTP 我在字节跳动等你!

本文将从以下几个方面进行分享。其中包括HTTP发展史&#xff0c;HTTP缓存代理机制&#xff0c;常用的web攻击&#xff0c;HTTP和HTTPS的流量识别&#xff0c;网络协议学习的工具推荐以及高频HTTP与HTTPS的高频面试题题解等&#xff0c;开工。ps(如果需要带目录pdf&#xff0c;私…

字节跳动青训营--前端day2

文章目录 前言一、css1. css的组成2. css三种使用方式3.css的工作方式 二、 css选择器Selector1. 选择元素的方式2. 伪类&#xff08;pseudo-classes&#xff09;2.1 状态伪类2.1 结构伪类 3.通过组合选择元素3.1 直接组合3.2 元素组合的拓展 4. 选择器的特异度&#xff08;Spe…

字节跳动第七期技术训练营——“抓到你了”项目

github地址 一. 项目要求&#xff1a; 作业名称 《抓到你了——具备安全防护能力的账号系统》 产品形态 具有安全风控防护能力的账号注册登录系统 产品功能介绍 设计并开发一个登录注册系统&#xff0c;可以支持注册、登录和登出或注销的基本功能&#xff0c;另外也需要…

字节跳动青训营--前端day8

文章目录 前言一、CSR&#xff0c;SSR&#xff0c;SSG1. CSR2. SSR3. SSG4. SSR&#xff0c;SSG的优势利于SEO更短的首屏时间 二、什么是Next.js三、Next.js客户端开发1. Api2. CSS Modules3. Layout4. 文件式路由 四、Next.js服务端开发 前言 仅以此文章记录学习历程。 一、C…

孙叫兽CSDN社区云----WebIT已创建,欢迎大家前端全栈小伙伴踊跃加入

目录 社区云是什么&#xff1f; 创建CSDN社区云WebIT的目的 推荐分享的技术点&#xff08;如下图所示&#xff09; 社区成员权益 版主权益 管理员权益 WebIT社区云积分规则 WebIT优质版主及管理员可以申请直播分享前端技术 WebIT社区云将为社区运营者提供&#xff1a; …