zoukankan      html  css  js  c++  java
  • 支付宝 查看订单 退款

     上一篇写到支付宝的支付,这代码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/

  • 相关阅读:
    zoj3299 Fall the Brick
    hdu4533 威威猫系列故事——晒被子
    FZU 1650 1752 a^b mod c
    Codeforces Round #136 (Div. 1) B. Little Elephant and Array
    Codeforces Round #292 (Div. 1) C. Drazil and Park
    Uva 12436 Rip Van Winkle's Code
    Codeforces Beta Round #19 D. Points
    hdu1513 Palindrome
    poj1160 Post Office
    zjnu1181 石子合并【基础算法・动态规划】——高级
  • 原文地址:https://www.cnblogs.com/niudaxianren/p/10143299.html
Copyright © 2011-2022 走看看