PHP實現微信申請退款

2021-10-03 19:14:22 字數 2213 閱讀 1117

/**

* 申請退款,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

)elseif(

!$inputobj

->

isout_refund_noset()

)elseif(

!$inputobj

->

istotal_feeset()

)elseif(

!$inputobj

->

isrefund_feeset()

)elseif(

!$inputobj

->

isop_user_idset()

)$inputobj

->

(wxpayconfig::)

;//公眾賬號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(

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...

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

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