關於微信支付,退款操作,原路返回

2021-09-07 20:22:51 字數 2775 閱讀 2980

有這樣的場景,使用者購買商品。但是退款的時候要去除運費。

或者,使用者購買多個商家的商品,統一支付。但是使用者只退其中乙個商家的商品。

又或者,使用者乙個訂單購買多個商品。只退其中乙個商品。

下面看看實際的情況。

從上圖可以看出,我支付2分錢,可以一次性退。

也可以,一次退1分,分兩次退還。

而且,用銀行卡就退到銀行卡,用信用卡就退到信用卡。

這些支付,退款相關的資訊,可以在管理後台中統一管理。或者寫到配置檔案中。

一筆退款失敗後重新提交,請不要更換退款單號,請使用原商戶退款單號。

private function refundwx($data)

$response = wxpayapi::refund($input, $path);

if ($response['return_code'] == 'success' && $response['result_code'] == 'success') else

}

/**

* * 申請退款,wxpayrefund中out_trade_no、transaction_id至少填乙個且

* out_refund_no、total_fee、refund_fee、op_user_id為必填引數

* @param wxpayrefund $inputobj

* @param int $timeout

* @throws wxpayexception

* @return 成功時返回,其他拋異常

*/public static function refund($inputobj, $path, $timeout = 6)

else if(!$inputobj->isout_refund_noset())else if(!$inputobj->istotal_feeset())else if(!$inputobj->isrefund_feeset())else if(!$inputobj->isop_user_idset())

$inputobj->setnonce_str(self::getnoncestr());//隨機字串

$inputobj->setsign();//簽名

$xml = $inputobj->toxml();

$starttimestamp = self::getmillisecond();//請求開始時間

$response = self::postxmlcurl($xml, $url, true, $timeout, $path);

$result = wxpayresults::init($response);

self::reportcosttime($url, $starttimestamp, $result);//上報請求花費時間

return $result;

}

/**

* 以post方式提交xml到對應的介面url

* * @param string $xml 需要post的xml資料

* @param string $url url

* @param bool $usecert 是否需要證書,預設不需要

* @param int $second url執行超時時間,預設30s

* @throws wxpayexception

*/private static function postxmlcurl($xml, $url, $usecert = false, $second = 30, $certpath = '')

curl_setopt($ch,curlopt_url, $url);

curl_setopt($ch,curlopt_ssl_verifypeer,true);

curl_setopt($ch,curlopt_ssl_verifyhost,2);//嚴格校驗

//設定header

curl_setopt($ch, curlopt_header, false);

//要求結果為字串且輸出到螢幕上

curl_setopt($ch, curlopt_returntransfer, true);

if($usecert == true)

//post提交方式

curl_setopt($ch, curlopt_post, true);

curl_setopt($ch, curlopt_postfields, $xml);

//執行curl

$data = curl_exec($ch);

//返回結果

if($data) else

}

具體的參考:

微信支付 退款篇

快速搭建指南 安裝配置nginx phpfpm php 建sdk解壓到 根目錄 修改lib wxpay.config.php為自己申請的商戶號的資訊 配置詳見說明 cert下的檔案 退款是需要用到證書的。搭建完成 遇見問題1 解決方法 配置檔案中的證書路徑必須寫絕對路徑,且如下 wxpay.conf...

微信支付 退款 v3版微信支付

證書 apiclient cert.p12。jar包 commons codec 1.6.jar commons logging 1.1.3.jar fluent hc 4.3.4.jar httpclient 4.3.4.jar httpclient cache 4.3.4.jar httpcor...

微信退款操作總結

要點 請求需要雙向證書。相比支付 預支付 退款操作需要雙向證書,即客戶端也需要提供證書 openssl 實現 載入api證書檔案 private sslcontext getsslcontext throws exception 商戶雙向證書 pkcs12證書 keystore keystore k...