支付寶 查看訂單 退款


 上一篇寫到支付寶的支付,這代碼copy下來就能直接用了,   我寫學習文檔時會經常貼 官方參數文檔的案例地址, 因為我覺得 請求參數,響應參數說明 官方文檔整理的很好,畢竟官方不會誤導大家.

  我學一個新技術的時候最喜歡做的就是把案例代碼copy到自己的項目里面跑一遍,  然后再一 一分析每段代碼的作用.

  昨天忘說了 別忘了引入支付寶的SDK :  
  在這里說一下,一般接入第三方都會有第三方的SDK包,要把他們放在自己項目里我們才能接入他們的API.
  支付寶SDK下載地址: https://docs.open.alipay.com/54/103419/

         然后我們需要把這個jar包引入到所需要的地方,這里不做過多的描述。

  1.查看支付訂單

  該接口提供所有支付寶支付訂單的查詢,商戶可以通過該接口主動查詢訂單狀態,獲取這個訂單的信息.

  重要參數 Out_Trade_No : 商戶網站唯一訂單號,也就是自己項目生成訂單號      Trade_No 支付寶交易號, 是支付寶端給這個交易生成的訂單交易號.
貼代碼:

   

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
    /**
     *
     * 說明:查看支付訂單
     * @param Out_Trade_No   商戶網站唯一訂單號
     * @param Trade_No  支付寶交易號
     * @return  公共響應參數 code,msg    響應參數: https://docs.open.alipay.com/api_1/alipay.trade.query
     * @author 許奧倫
     * @time:2018年12月11日 下午2:19:44
     */
    @Override
    public   String queryPayment(String Out_Trade_No,String Trade_No) {     
 
//填寫自己創建的app的對應參數
      AlipayClient alipayClient =  new  DefaultAlipayClient( "支付寶網關" "appid" "私鑰" "json" "utf-8" "公鑰" , "RSA2" );
 
        AlipayTradeQueryRequest alipay_request =  new  AlipayTradeQueryRequest();
         AlipayTradeQueryModel model= new  AlipayTradeQueryModel();
         model.setOutTradeNo(Out_Trade_No);
         model.setTradeNo(Trade_No);
         alipay_request.setBizModel(model);
         
        try  {
            AlipayTradeQueryResponse    alipay_response = alipayClient.execute(alipay_request);
            String queryPaymentStr = alipay_response.getBody();
            
             System.out.println(queryPaymentStr);
             return  queryPaymentStr;
        catch  (AlipayApiException e) {
            e.printStackTrace();
        }
        return  null ;
        
    }

 會返回 訂單金額,訂單狀態,買家支付寶賬號等很多數據, 官方參數字典:https://docs.open.alipay.com/api_1/alipay.trade.query

 

  2.支付寶訂單退款 

  當交易發生之后一段時間內,由於買家或者賣家的原因需要退款時,賣家可以通過退款接口將支付款退還給買家,支付寶將在收到退款請求並且驗證成功之后,按照退款規則將支付款按原路退到買家帳號上。 交易超過約定時間(簽約時設置的可退款時間)的訂單無法進行退款 支付寶退款支持單筆交易分多次退款,多次退款需要提交原支付訂單的商戶訂單號和設置不同的退款單號。一筆退款失敗后重新提交,要采用原來的退款單號。總退款金額不能超過用戶實際支付金額

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
     /**
      *
      * 說明: 支付寶訂單退款
      * @param out_trade_no  訂單編號
      * @param trade_no  支付寶訂單交易號
      * @param refund_amount 退款金額 不得大於訂單金額
      * @param refund_reason 退款說明
      * @param out_request_no 標識一次退款請求,同一筆交易多次退款需要保證唯一,如需部分退款,則此參數必傳。
      * @return  公共返回參數 code,msg,   響應參數實例: https://docs.open.alipay.com/api_1/alipay.trade.refund
      * @author 許奧倫
      * @time:2018年12月11日 下午2:29:13
      */
     @Override
public  String alipayRefund(String out_trade_no,
         String trade_no,
         String refund_amount,
         String refund_reason,
         String out_request_no) {
        
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//填寫自己創建的app的對應參數 AlipayClient alipayClient = new DefaultAlipayClient("支付寶網關", "appid", "私鑰", "json", "utf-8", "公鑰","RSA2");<br>          
         //訂單編號   支付寶交易號不為空 
         if (out_trade_no!= null && trade_no!= null ) {
             
             AlipayTradeRefundRequest alipay_request =  new  AlipayTradeRefundRequest();
             AlipayTradeRefundModel model= new  AlipayTradeRefundModel();
             model.setOutTradeNo(out_trade_no);
             model.setTradeNo(trade_no);
             model.setRefundAmount(refund_amount);
             model.setRefundReason(refund_reason);
             model.setOutRequestNo(out_request_no);
             alipay_request.setBizModel(model);
             
             try  {
                 AlipayTradeRefundResponse   alipay_response = alipayClient.execute(alipay_request);
                 String alipayRefundStr = alipay_response.getBody();
                   System.out.println(alipayRefundStr);
                   return  alipayRefundStr;
             catch  (AlipayApiException e) {
                 e.printStackTrace();
             }
           
         }
         
         return  null ;
     }
    

    會返回公共參數  code,msg  等狀態提示你 退款成功或者退款失敗  官方響應參數: https://docs.open.alipay.com/api_1/alipay.trade.refund/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM