admin
2020-06-10 271ae63c20fcbe28d29c47f1881138ff6551a2a1
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
package com.yeshi.fanli.util.alipay;
 
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
 
import com.alibaba.fastjson.JSON;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayTradeQueryRequest;
import com.alipay.api.request.AlipayTradeWapPayRequest;
import com.alipay.api.response.AlipayTradeQueryResponse;
import com.yeshi.fanli.util.StringUtil;
 
public class AlipayApi {
 
    /**
     * 创建支付请求
     * @param map
     * @return
     * @throws Exception
     */
    public static String tradeWapPayRequest(Map<String, String> map, String payNotify, String backUrl) throws Exception{
        AlipayTradeWapPayRequest alipayRequest = new AlipayTradeWapPayRequest();
        // 前台回调地址
        alipayRequest.setReturnUrl(backUrl);
        // 成功付款回调
        alipayRequest.setNotifyUrl(payNotify);
        
        alipayRequest.setBizContent(URLEncoder.encode(JSON.toJSONString(map), "UTF-8"));
        
        return AlipayWapConfig.getInstance().pageExecute(alipayRequest).getBody();
    }
    
    
    
    /**
     * 查询是否交易完成
     * @param outTradeNo
     * @param tradeNo
     * @param orgPid
     * @param queryOptions
     * @return
     * @throws Exception
     */
    public static boolean tradeQuery (String outTradeNo, String tradeNo, String orgPid, String queryOptions) throws Exception {
        // 订单支付时传入的商户订单号,和支付宝交易号不能同时为空
        if (StringUtil.isNullOrEmpty(outTradeNo) || StringUtil.isNullOrEmpty(outTradeNo)) {
            return false;
        }
        
        // 待请求参数数组
        Map<String, String> map = new HashMap<String, String>();
        if (!StringUtil.isNullOrEmpty(outTradeNo))
            map.put("out_trade_no", outTradeNo);
        if (!StringUtil.isNullOrEmpty(tradeNo))
            map.put("trade_no", tradeNo);
        if (!StringUtil.isNullOrEmpty(orgPid))
            map.put("org_pid", orgPid);
        if (!StringUtil.isNullOrEmpty(queryOptions))
            map.put("query_options", queryOptions);
        
        
        AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
        request.setBizContent(URLEncoder.encode(JSON.toJSONString(map), "UTF-8"));
    
        // 支付宝查询
        AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", AlipayWapConfig.APP_ID,
                AlipayWapConfig.APP_PRIVATE_KEY, AlipayWapConfig.PARAM_TYPE, AlipayWapConfig.CHARSET,
                AlipayWapConfig.ALIPAY_PUBLIC_KEY, AlipayWapConfig.SIGNTYPE);
        
        AlipayTradeQueryResponse response = alipayClient.execute(request);
        if(response.isSuccess()){
            // 相应成功
            if ("TRADE_SUCCESS".equals(response.getTradeStatus())) { 
                return true; // 交易支付成功
            } else if ("TRADE_FINISHED".equals(response.getTradeStatus())) {
                return true; // (交易结束,不可退款)
            }            
        } 
        return false;
    }
    
    
    
}