PHP實現微信申請退款流程例項原始碼

2022-05-05 02:42:09 字數 2088 閱讀 5724

目錄

(2)安全考慮,涉及到支付涉及到金錢,必須要非常安全。官方sdk雖然我也吐槽,但至少會相對比較安全,再次重寫,雖然暫時沒看出問題,但是萬一有漏洞就不好了。

本篇還是使用到官方提供的sdk中的最重要的乙個類檔案wxpay.api.php中提供的refund()方法來實現,此方法在wxpay.api.php檔案的第141行,**如下:

/*

* *

* 申請退款,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, $timeout = 6)

else

if(!$inputobj->isout_refund_noset())

else

if(!$inputobj->istotal_feeset())

else

if(!$inputobj->isrefund_feeset())

else

if(!$inputobj->isop_user_idset())

公眾賬號id

$inputobj->setmch_id(wxpayconfig::mchid);//

商戶號

$inputobj->setnonce_str(self::getnoncestr());//

隨機字串

$inputobj->setsign();//

簽名 $xml = $inputobj->toxml();

$starttimestamp = self::getmillisecond();//

請求開始時間

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

);

$result = wxpayresults::init($response

); self::reportcosttime($url, $starttimestamp, $result);//

上報請求花費時間

return

$result

; }

官方的方法,寫的很清楚需要哪些引數,還有一些必須引數sdk已經幫我們補齊了,我將這個方法重新封裝一下,便於在專案中呼叫:

/*

* * @param string $order_id 訂單id

* @return 成功時返回(array型別),其他拋異常 */

function wxrefund($order_id

)

這裡需要吐槽一下,竟然不說返回值的型別,在支付的時候返回的是xml資料,這裡竟然返回的是陣列,讓我措手不及,哈哈不過還是返回陣列比較好,可以直接判斷處理。

方法呼叫就更加簡單了:

//

$result = wxrefund($order_id

); //

這句file_put_contents是用來檢視伺服器返回的退款結果 測試完可以刪除了

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

if(($result['return_code']=='fail') || ($result['result_code']=='fail'))

else

退款成功返回如下:

PHP實現微信申請退款

申請退款,wxpayrefund中out trade no transaction id至少填乙個且 out refund no total fee refund fee op user id為必填引數 param wxpayrefund inputobj param int timeout thr...

php 實現微信退款

要是在測試的時候,網頁提示 curl 58 說明 證書的路徑出現問題 這裡要填物理路徑,也就是絕對路徑 網頁提示curl 52 說明你的證書引入少了,在官方的demo上只有兩個證書 apiclient cert.pem和 apiclient key.pem 你還需要引入乙個證書 rootca.pem...

php做乙個微信退款,PHP實現微信申請退款功能

前期準備 2 安全考慮,涉及到支付涉及到金錢,必須要非常安全。官方sdk雖然我也吐槽,但至少會相對比較安全,再次重寫,雖然暫時沒看出問題,但是萬一有漏洞就不好了。本篇還是使用到官方提供的sdk中的最重要的乙個類檔案wxpay.api.php中提供的refund 方法來實現,此方法在wxpay.api...