微信退款API的操作方法
阿新 • • 發佈:2021-11-11
首先我們需要申請到商戶的key金鑰 這個是在
https://pay.weixin.qq.com/index.php/apply/applyment_home/guide_normal#none 微信官方連結
詳情請看https://www.cnblogs.com/wzsoul/p/15538319.html
應用場景 當交易發生之後一段時間內,由於買家或者賣家的原因需要退款時,賣家可以通過退款介面將支付款退還給買家,微信支付將在收到退款請求並且驗證成功之後,按照退款規則將支付款按原路退到買家賬號上。 注意: 1、交易時間超過一年的訂單無法提交退款 2、微信支付退款支援單筆交易分多次退款,多次退款需要提交原支付訂單的商戶訂單號和設定不同的退款單號。申請退款總金額不能超過訂單金額。 一筆退款失敗後重新提交,請不要更換退款單號,請使用原商戶退款單號3、請求頻率限制:150qps,即每秒鐘正常的申請退款請求次數不超過150次 4、每個支付訂單的部分退款次數不能超過50次 5、如果同一個使用者有多筆退款,建議分不同批次進行退款,避免併發退款導致退款失敗 6、申請退款介面的返回僅代表業務的受理情況,具體退款是否成功,需要通過退款查詢介面獲取結果。 7、一個月之前的訂單申請退款頻率限制為:5000/min
介面地址
介面連結:https://api.mch.weixin.qq.com/secapi/pay/refund
我們退款的時候需要注意要準備證書使用,在支付的時候不是必要條件
需要證書
一、超級管理員掃碼登入微信支付商戶平臺後,進入賬戶中心找到API安全;
點選申請證書,跳出生成API證書介面。點選“允許訪問”,同意網頁訪問剪下板;
三、下載證書工具,在證書工具中點選“申請證書”按鈕;
四、按照要求填寫商戶資訊,點選下一步;
五、複製請求串到剪下板,在之前的生成API證書介面貼上,輸入“簡訊驗證碼”和“登入密碼”;點選下一步,進入複製證書串介面。
六、複製證書串到剪下板,在證書工具的貼上證書串介面,點選貼上按鈕。然後進入下一步,生成證書。
七、生成證書之後,找到下載到電腦的證書檔案,改個好認的名字發給技術人員,記得保留一個備份。
技術人員獲得證書之後將證書部署到伺服器上。也就完成了微信支付與微信公眾號等平臺的對接了。
下面是請求時需要的參
由於跟支付的時候呼叫的一樣 我們這裡只寫核心的轉換程式碼 詳情請看部落格的支付流程
微信需要的是xml格式的資料所以我們必須轉換為對應的格式
$post_data = "<xml> <appid>".$appid."</appid> <body>".$body."</body> <mch_id>".$mch_id."</mch_id> <nonce_str>".$nonce_str."</nonce_str> <notify_url>".$notify_url."</notify_url> <out_trade_no>".$out_trade_no."</out_trade_no> <spbill_create_ip>".$spbill_create_ip."</spbill_create_ip> <total_fee>".$total_fee."</total_fee> <trade_type>".$trade_type."</trade_type> <sign>".$sign."</sign> </xml>";//拼接成XML 格式 // <scene_info>$scene_info</scene_info> // 微信地址 $url = 'https://api.mch.weixin.qq.com/pay/unifiedorder'; $dataxml=$this->posturl($url,$post_data); $reruxml = (array)simplexml_load_string($dataxml, 'SimpleXMLElement', LIBXML_NOCDATA);
//請求接收回來的資料轉換為陣列的格式
XML 轉陣列
//回撥資訊 public function wxhd(){ //允許從外部載入XML實體(防止XML注入攻擊) libxml_disable_entity_loader(true); // 用於接收所有的資料 $data=file_get_contents("php://input"); $postObj = (array)simplexml_load_string($data, 'SimpleXMLElement', LIBXML_NOCDATA); //此處 用於變更訂單的支付狀態 或者其他操作 // 下面更新成功的變數(更新資料表) 最後一個 更新欄位後 //此處用於返回給微信支付通知,我們也做出相應的修改 if(){ echo '<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>'; } }