微信退款 - 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