微信退款 - tp5
原文:http://www.upwqy.com/details/19.html
1 微信退款官方文档
https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_4&index=6
2 微信退款的实现过程
老板已经催促了好几个月了。今天实在是没有办法了,那就给他写了吧,原来没有写过退款 ,看文档还是看了很久的,虽然说官方给的demo 但是还是看一下比较好 就当是学习了嘛
好了,废话不多说 ,开始上菜 因为是第一次做退款 咱们还是直接用demo里面的代码
首先呢 导入类库
Loader::import('paywx.lib.WxPay', EXTEND_PATH, '.Api.php');
然后在demo里面找到refund.php 文件 可以看到里面有两种退款方式 一种是根据商户订单号退款 一种是根据微信订单号退款
咱们使用商户订单号退款 其实代码是基本是一样的 只是设置订单时参数不一样的而已
好了 上代码
public static function WxRefund($out_trade_no,$total_fee,$refund_fee){
if($out_trade_no){
$input = new \WxPayRefund();
$input->SetOut_trade_no($out_trade_no);
$input->SetTotal_fee($total_fee*100);
$input->SetRefund_fee($refund_fee*100);
$input->SetOut_refund_no(\WxPayConfig::MCHID.date("YmdHis"));
$input->SetOp_user_id(\WxPayConfig::MCHID);
$param = \WxPayApi::refund($input);
if($param['return_code'] == 'SUCCESS'){
return true;
}
throw new Exception($param['return_msg']);
}
return true;
}
我们可以看到 基本上时demo里面是一样的 那么我们为什么还要专门写出来呢,当然不是来显摆的啊。
虽然 是代码很简单 但是里面还是有坑的
第一 :看代码 其实订单金额和退款金额两个参数都 (*100),为什么呢,这就要看文档了。文档上说的这两个参数的单位是分。因为看文档没有看仔细 浪费了不少时间。直接使用订单金额 会报 订单金额和退款金额不一致的错误
第二:就是证书的路径问题。我不知道别人是怎么配置的 我这里电脑是Mac的直接使用demo里面的路径 在调用接口后 返回
curl出错,错误码:58
这样的错误 在网上查了很久 大多都是说在windows上使用绝对路径 ,在linux上使用相对路径 ,而Mac上应该也是使用相对路径 但是还是一直报错 ,我这里是使用的 TP5 ,demo是放在extend目录下面 ,我想是不是应该tp5的入口是public目录下 而extend不能直接访问 所以在使用相对路径是找不到路径的原因呢 ,然后就开始尝试把证书放址到public目录下 其实路径改为
getcwd().'/cert/apiclient_cert.pem'
结果竟然成功了。
但是感觉放置在public目录下 很不安全 但是暂时也没有别的办法了。只能先这样用着
微信退款 - tp5的更多相关文章
- C#.NET ,微信退款证书
微信退款时遇到:基础连接已经关闭 连接被意外关闭. 服务器环境:WIN SERVER 2008 R2. WINDOWS服务承载的WCF服务,基于.NET FRAMEWORK 3.5. 第一笔交易的退 ...
- 微信退款证书使用c#
微信退款需要证书 data为已封装好的xml数据 具体怎么封装>打开 public string get(string data) { string cert = @"D:\certi ...
- 微信退款和支付宝退款接口调用(java版)
项目中需要使用到微信和支付宝的退款功能,在这两天研究了一下这两个平台的退款,有很多坑,在开发中需要留意 1.微信退款接口 相对来说我感觉微信的退款接口还是比较好调用的,直接发送httppost请求即可 ...
- 微信小程序支付以及微信退款开发
最近公司项目急着测试,需要开发微信小程序+微信支付+微信退款,本着这几天的一些研究,决定记录一下开发的过程. 本着知识分享的原则,希望对大家有所帮助. 本篇针对的是微信小程序的支付开发,如果有对微信公 ...
- PHP实现微信退款功能
最近在调微信退款接口,发现有许多坑,更大家分享一下 ① 要是在测试的时候,网页提示 curl 58 说明 证书的路径出现问题(这里要填物理路径,也就是绝对路径) ②网页提示curl 52 说明你的证书 ...
- PHP实现微信退款的分析与源码实现
原文:https://blog.csdn.net/jason19905/article/details/78628349 网上的很多PHP微信支付接入教程都颇为复杂,且需要配置和引入较多的文件,本人通 ...
- node 微信退款
基于node 的微信退款 申请微信退款:微信退款, 1.在前端页面访问 /refund var request = require('request'); var WxPayRefund = req ...
- 微信退款流程,以及在过程中遇见的错误和解决方式(php 语言)
官方下载demo 1:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1 开发步骤 : https://pay.weix ...
- 微信退款SpringBoot读取resource下的证书
微信支付退款接口,需要证书双向验证,测试的时候证书暂时放在resource下,上图 起初MyConfig中我是这样,在本机IDE中运行没有问题 但到Linux服务器的docker中运行就IO异常了,查 ...
随机推荐
- 35 个 jQuery 小技巧
1. 禁止右键点击 $(document).ready(function(){ $(document).bind("contextmenu",function(e){ return ...
- bzoj 1814 Ural 1519 Formula 1 插头DP
1814: Ural 1519 Formula 1 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 942 Solved: 356[Submit][Sta ...
- JavaScript那些事
1.定义静态常量: const C=1; 该常量不能变化的. 2.在if判断中如果是两个变量比较js会将一个字符和一个数字比较的话,会将字符转换成数字然后在对这两个进行对比: var num= ...
- 在Centos环境下安装兼容Apache2.4高版本SVN服务
在阿里云Centos环境下,搭建PHP运行环境,PHP选择了php7版本,Mysql选择了5.7版本,Apache选择了2.4版本,在搭建SVN版本控制服务过程中出现了不兼容问题,当前环境下Apach ...
- Egret学习笔记.1 (写在前面的废话)
我记得之前谁说过,大部分程序员入行,都是因为小的时候的游戏机啊,各种电子设备啊....觉得有意思,才入的行 . 至少我本人是因为之前上高中那会儿,喜欢玩手机.那会儿还是MTK,塞班的时代,喜欢拿着手机 ...
- # *Qt for Com 交互*
Qt COM Q_PROPERTY ActiveX properties public slots ActiveX methods signals ActiveX events Qt 属性支持的数据类 ...
- 99%的人理解错 HTTP 中 GET 与 POST 的区别
转自:http://www.oschina.net/news/77354/http-get-post-different GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发 ...
- Linux下安装MySQL数据库(压缩包方式安装)
1.这里我将Mysql安装在/usr/local/mysql目录里面,也可以安装在其他地方; mkdir /usr/local/mysql 2.下载MySQL压缩包 wget http://dev.M ...
- Android(Java)利用findbugs进行代码静态检查
主要介绍利用java静态代码检查工具findbugs进行代码检查,包括其作用.安装.使用.高级功能(远程review和bug同步). 虽然Android提供了Test Project工程以及instr ...
- 讨论MMU
MMU是Memory Management Unit的缩写,中文名是内存管理单元,它是中央处理器(CPU)中用来管理虚拟存储器.物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制 ...