微信小程式支付和退款流程下

2022-09-24 01:51:08 字數 1705 閱讀 3784

微信小程式支付及退款流程詳解【上】中講了微信支付的相關流程。在理清思路後,流程還是比較清晰和簡單的。重點在於需要注意一些細節問題,例如資料格式,加密方法等。

下面說一下微信小程式退款的具體實現

小程式退款的流程和付款相似,但有一些細節上的不同。

首先退款的步驟通常如下:

使用者前端點選退款按鈕後,後端接收到使用者的退款請求通過**後台呈現給商戶,商戶確定允許退款後,後端再發起向微信退款介面的請求來請求退款。

後端向微信退款介面傳送請求後,得到響應資訊,確定退款是否完成,根據退款是否完成再去進行改變訂單狀態等業務邏輯。

退款的步驟相對微信支付來說比較簡單。

值得注意的有以下兩點:

1.向微信退款介面請求退款後,根據得到的響應是可以直接確定退款是否完成的。不再需要設定專門的**介面等待微信通知。當然如果需要也是可以在微信商戶平台設定**介面接受從而接受微信**的,但並不是必須的。

2.退款請求需要在請求伺服器安裝微信提供的安全證書,也就是說,發起退款請求相比較支付請求在請求時請求方法不能復用,因為微信退款需要攜帶證書的請求,此證書可在申請微信商戶號成功後從微信商戶平台自行**,linux下的php開發環境的證書只需要放在**根目錄的cert資料夾中即可。其他開發環境可能需要匯入操作。

下面講解一下退款的具體步驟

一. 使用者發起退款請求使用者在前端發起退款請求,後端接收到退款請求,將相應訂單標記為申請退款,展示在後台.商戶檢視後,如果同意退款再進行相應操作.此後才進入真正的退款流程.二. 商戶發起退款請求商戶同意退款後,後端即向微信提供的退款 api 發起請求.

同請求微信支付api一樣.退款請求也需要將需要的引數進行簽名後以xml傳送到微信的退款api [退款請求需要的引數如下(多個引數在支付api請求時也有使用):

小程式 appid。

商戶號 mch_id 。申請開通微信支付商戶認證成功後微信發給你的郵件裡有

商戶訂單號 out_trade_no 。退款訂單在支付時生成的訂單號

退款訂單號 out_refund_no 。由後端生成的退款單號,需要保證唯一,因為多個同樣的退款單號只會退款一次。

總金額 total_fee 。訂單總金額,單位為分。

退款金額 refund_fee 需要退款的金額,單位同樣為分

操作員 op_user_id .與商戶號相同即可

隨機字串 nonce_str 。同支付請求

簽名 sign 。使用上面的所有引數進行相應處理加密生成簽名。(具體處理方式與支付相同,可直接復用。)

三. 退款完成在發起退款請求後,就可以直接根據請求的響應xml中的 result_code欄位來判斷退款是否成功,從而對訂單狀態進行處理和後續操作。不需要像支付那樣等待另乙個介面的通知來確定請求狀態。當然如上文所說,如果需要微信伺服器傳送通知到後端的話,可以到微信商戶平台進行設定。退款因為流程與支付大同小異,因此退款的php類我選擇了直接繼承支付類,

**如下,注意區分退款請求方法postxmlsslcurl和支付請求方法postxmlcurl的區別,這也就是上文提到的退款需要的雙向證書的使用。

````

class winxinrefund extends weixinpay

public function refund()

private function wxrefundapi()

//需要使用證書的請求

function postxmlsslcurl($xml,$url,$second=30)

else

微信小程式支付及退款整體流程

wx.requestpayment fail res 文件也寫的很清楚,不細說,主要看下面這個流程 1 小程式內呼叫登入介面,獲取到使用者的openid,api參見公共api 小程式登入api 2 商戶server呼叫支付統一下單,api參見公共api 統一下單api 3 商戶server呼叫再次簽...

微信小程式支付及退款流程詳解

支付主要分為幾個步驟 前端攜帶支付需要的資料 商品id,購買數量等 發起支付請求 前端進行支付動作 下面就詳細的說明一下各個步驟的具體實現。1.前端請求支付 後端接收到前端傳送的支付請求後,可以進行一下相關驗證,例如判斷一下使用者有沒有問題,支付金額對不對等等。使用者標識 openid。也就是使用者...

微信小程式支付及退款流程詳解

一.支付 支付主要分為幾個步驟 前端攜帶支付需要的資料 商品id,購買數量等 發起支付請求 前端進行支付動作 1.前端請求支付 後端接收到前端傳送的支付請求後,可以進行一下相關驗證,例如判斷一下使用者有沒有問題,支付金額對不對等等。使用者標識 openid。也就是使用者的小程式標識,在我上篇部落格中...