微信退款 - tp5

Posted wqy的笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信退款 - 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的主要内容,如果未能解决你的问题,请参考以下文章

微信退款回调

微信退款证书配置

微信支付宝各种支付退款

node.js实现微信支付退款

微信支付退款

TP5报如下的错误 Indirect modification of overloaded element of thinkpaginatorCollection has no effect(代码片段