天天看點

支付寶支付開發-退款

之前寫了一篇 支付寶支付開發

,現在總結一下支付寶退款的開發。

總體上來說,支付寶的退款接口分為即時到賬批量有密退款接口(refund_fastpay_by_platform_pwd)和即時到賬批量無密退款接口(refund_fastpay_by_platform_nopwd)兩種,分别對應前台請求和背景請求。

通俗說明一下前台請求和背景請求的差別:

前台請求:通過html的form表單方式送出的。

背景請求:直接通過背景互動,利用http請求發送到請求系統。

一、有密退款接口

及時到賬有密退款接口

比較簡單,易于了解,相關字段到

支付寶網站

檢視一般業務流程是:使用者發起退款請求->營運人員審批退款請求->同意退款->背景組裝退款封包(html)->重定向到支付寶退款頁面->營運人員輸入密碼->支付寶将退款結果異步通知到背景->背景完成剩餘背景邏輯。

** DEMO如下: **

使用者發起退款後,營運人員打開退款稽核頁面:

支付寶支付開發-退款

Paste_Image.png

确認可以退款後,背景組裝一個重定向的html到支付寶:

支付寶支付開發-退款

輸入密碼後支付寶向notify_url發送退款結果通知。

注:

組裝發送到支付寶的html封包樣例如下:

<html>
 <head></head>
 <body>
  <form id="alipaysubmit" name="alipaysubmit" action="https://mapi.alipay.com/gateway.do?_input_charset=utf-8" method="post">
   <input type="hidden" name="sign" value="簽名值" />
   <input type="hidden" name="_input_charset" value="utf-8" />
   <input type="hidden" name="sign_type" value="MD5" />
   <input type="hidden" name="detail_data" value="201606132100100479^0.01^我要退款" />
   <input type="hidden" name="service" value="refund_fastpay_by_platform_pwd" />
   <input type="hidden" name="notify_url" value="退款通知位址" />
   <input type="hidden" name="seller_user_id" value="值同partner" />
   <input type="hidden" name="partner" value="合作商戶ID,需跟支付寶申請" />
   <input type="hidden" name="batch_num" value="1" />
   <input type="hidden" name="batch_no" value="20160613236648747861707090426379" />
   <input type="hidden" name="refund_date" value="2016-06-13 07:57:12" />
   <input type="submit" value="确認" style="display:none;" />
  </form>
  <script>document.forms['alipaysubmit'].submit();</script>
 </body>
</html>
           

其中的detail_data為單筆資料集,規則見支付寶文檔。

支付寶支付開發-退款

需要說明的是:原付款支付寶交易号對應的是支付結果通知時的trade_no字段。

二、無密退款接口

無密退款接口的權限是不開放的,如果你需要的話,需要重新與支付寶簽約,有密接口是跟着支付一起的,你具備了支付的接口權限,就能用有密退款接口。

無密退款接口的流程比較簡單:使用者發起退款->背景組裝退款資料->通過http請求到支付寶背景->接收退款結果異步通知->背景完成剩餘背景邏輯。

無密接口有幾個概念說明如下:

  • 充退:支付寶将退款退到買家支付寶賬号後,将錢再退到買家銀行卡的過程,也就是這裡是兩個過程:退到買家支付寶賬号,退到買家銀行卡。一般我們不關心這個,因為錢退到買家支付寶賬号後,錢已經退給買家了,至于能不能從買家的支付寶退到買家的銀行卡,一般不關心。
  • 充退結果通知:充退到買家銀行卡成功的異步通知。

三、說明(遇到的坑)

  1. 無密接口流程比較簡單,一開始就開發了無密接口,結果發現沒簽約,沒權限。
  2. 無密接口請求位址:

    https://mapi.alipay.com/gateway.do?_input_charset=UTF-8

    注意到gateway.do後面的_input_charset的值為UTF-8,我們在請求封包中可能也會有_input_charset這個key,注意其value也應該為UTF-8,不能為小寫utf-8,否則驗簽不過,被坑了一天。
  3. 最後
    支付寶支付開發-退款

繼續閱讀