发表于: 2018-10-14 21:16:00

1 467


今天完成的事情:

完成支付宝整理

明天计划的事情:

复盘评审

遇到的问题: 


收获:

支付流程:

(1)前端发起请求

(2)controller中pay接口

(3)alipayUtil中pay方法,向支付宝api发起请求,

(4)支付宝api返回一个html的跳转页面,返回给前端进行跳转(支付页面)

(5)支付完成,支付宝请求--回调接口---返回支付信息


AlipayUtil中封装5个方法,

支付、查询订单、退款、查询退款订单-----向阿里云api发起请求由AlipayUtil处理;

回调的url又controller中接受返回数据之后,具体的签名验证由AlipayUtil处理;

/**
    * @param [request]
    * @return java.lang.String
    * @mathodName test
    * @Description 回调信息
    * @date 2018/10/13 0:12
    */
   public String test(Map<String, String[]> requestParams, String outRradeNo, String tradeNo, String totalAmount
) {
try {
//获取支付宝GET过来反馈信息
           Map<String, String> params = new HashMap<String, String>();
           for (Iterator<String> iter = requestParams.keySet().iterator(); iter.hasNext(); ) {
String name = (String) iter.next();
               String[] values = (String[]) requestParams.get(name);
               String valueStr = "";
               for (int i = 0; i < values.length; i++) {
valueStr = (i == values.length - 1) ? valueStr + values[i]
: valueStr + values[i] + ",";
               }
//乱码解决,这段代码在出现乱码时使用
//            valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");
               params.put(name, valueStr);
           }

boolean signVerified = AlipaySignature.rsaCheckV1(params, AlipayConfig.alipay_public_key, AlipayConfig.charset, AlipayConfig.sign_type); //调用SDK验证签名

           if (signVerified) {

System.out.println("trade_no:" + tradeNo + "<br/>out_trade_no:" + outRradeNo + "<br/>total_amount:" + totalAmount);
               return "验签成功";
           } else {
System.out.println("验签失败");
               return "验签失败";
           }

} catch (AlipayApiException e) {
e.printStackTrace();
           return "验签失败";
       }
}


/**
    * @param [outTradeNo, tradeNo]
    * @return java.lang.String
    * @mathodName query
    * @Description 订单查询
    * @date 2018/10/13 0:14
    */
   public String query(String outTradeNo, String tradeNo) {
try {
//设置请求参数
           AlipayTradeQueryRequest alipayRequest = new AlipayTradeQueryRequest();

           //请二选一设置
           alipayRequest.setBizContent("{\"out_trade_no\":\"" + outTradeNo
+ "\"," + "\"trade_no\":\"" + tradeNo + "\"}");
           //请求
           String result = alipayClient.execute(alipayRequest).getBody();
           //输出
           System.out.println(result);
           return result;
       } catch (AlipayApiException e) {
e.printStackTrace();
           return null;
       }
}

/**
    * @param [outRradeNo, tradeNo]
    * @return java.lang.String
    * @mathodName close
    * @Description 订单关闭
    * @date 2018/10/13 0:14
    */
   public String close(String outRradeNo, String tradeNo) {

try {
//设置请求参数
           AlipayTradeCloseRequest alipayRequest = new AlipayTradeCloseRequest();

           //请二选一设置
           alipayRequest.setBizContent("{\"out_trade_no\":\"" + outRradeNo
+ "\"," + "\"trade_no\":\"" + tradeNo +
"\"}");
           //请求
           String result = alipayClient.execute(alipayRequest).getBody();
           //输出
           System.out.println(result);
           return result;
       } catch (AlipayApiException e) {
e.printStackTrace();
           return null;
       }
}

/**
    * @param [outRradeNo, tradeNo, tradeSubject, tradeBody]
    * @return java.lang.String
    * @mathodName pay
    * @Description 支付
    * @date 2018/10/13 0:14
    */
   public String pay(String outRradeNo, String tradeNo, String tradeSubject, String tradeBody) {

try {
//设置请求参数
           AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
           alipayRequest.setReturnUrl(return_url);
           alipayRequest.setNotifyUrl(notify_url);

           alipayRequest.setBizContent("{\"out_trade_no\":\"" + outRradeNo + "\","
                   + "\"total_amount\":\"" + tradeNo + "\","
                   + "\"subject\":\"" + tradeSubject + "\","
                   + "\"body\":\"" + tradeBody + "\","
                   + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");

           //请求
           String result = alipayClient.pageExecute(alipayRequest).getBody();
           System.out.println(result);

           return result;
       } catch (AlipayApiException e) {
e.printStackTrace();
           return null;
       }
}

/**
    * @param [outRradeNo, tradeNo, refundAmount, refundReason, outRequestNo]
    * @return java.lang.String
    * @mathodName refund
    * @Description 请求退款
    * @date 2018/10/13 0:15
    */
   public String refund(String outRradeNo, String tradeNo, String refundAmount, String refundReason, String
outRequestNo) {
try {
//设置请求参数
           AlipayTradeRefundRequest alipayRequest = new AlipayTradeRefundRequest();

           alipayRequest.setBizContent("{\"out_trade_no\":\"" + outRradeNo + "\","
                   + "\"trade_no\":\"" + tradeNo + "\","
                   + "\"refund_amount\":\"" + refundAmount + "\","
                   + "\"refund_reason\":\"" + refundReason + "\","
                   + "\"out_request_no\":\"" + outRequestNo + "\"}");

           //请求
           String result = alipayClient.execute(alipayRequest).getBody();

           //输出
           System.out.println(result);

           return result;
       } catch (AlipayApiException e) {
e.printStackTrace();
           return null;
       }
}

/**
    * @param [outRradeNo, tradeNo, outRequestNo]
    * @return java.lang.String
    * @mathodName findRefund
    * @Description 查询退款订单
    * @date 2018/10/13 0:15
    */
   public String findRefund(String outRradeNo, String tradeNo, String outRequestNo) {
try {
//设置请求参数
           AlipayTradeFastpayRefundQueryRequest alipayRequest = new AlipayTradeFastpayRefundQueryRequest();

           alipayRequest.setBizContent("{\"out_trade_no\":\"" + outRradeNo + "\","
                   + "\"trade_no\":\"" + tradeNo + "\","
                   + "\"out_request_no\":\"" + outRequestNo + "\"}");

           //请求
           String result = alipayClient.execute(alipayRequest).getBody();

           //输出
           System.out.println(result);
           return result;
       } catch (AlipayApiException e) {
e.printStackTrace();
           return null;
       }
}





返回列表 返回列表
评论

    分享到