1. 程式人生 > >微信退款 - tp5

微信退款 - tp5

cep style ext 嘗試 lib details loader () 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