微信退款 - tp5


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目录下 很不安全 但是暂时也没有别的办法了。只能先这样用着 


//更新时间 2018-05-01


在购买多商家商品时 多个商品时,会有不同的订单,申请其中一个商家的商品。在退款时 传入的订单总金额 应该是一共支付的金额 而不是这个订单的总金额,

image.png

这里的订单金额 是你实际支付的总金额 



来源: up61技术博客 欢迎分享 (QQ:529857614)

qq交流群:63739043 up61博客-php交流群

上一篇: Linux- Xampp - 查看和修改mysql默认端口
下一篇: 链接生成二维码-PHP