AbstractHttpDelegate.java 4.3 KB
Newer Older
J
Javen205 已提交
1
package com.ijpay.core.http;
J
WxPay  
Javen205 已提交
2 3 4 5 6 7 8 9 10 11 12 13 14 15

import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpUtil;
import cn.hutool.http.ssl.SSLSocketFactoryBuilder;

import javax.net.ssl.KeyManager;
import javax.net.ssl.KeyManagerFactory;
import java.io.FileInputStream;
import java.io.InputStream;
import java.security.KeyStore;
import java.security.SecureRandom;
import java.util.Map;

/**
J
Javen205 已提交
16 17 18 19
 * <p>IJPay 让支付触手可及,封装了微信支付、支付宝支付、银联支付常用的支付方式以及各种常用的接口。</p>
 *
 * <p>不依赖任何第三方 mvc 框架,仅仅作为工具使用简单快速完成支付模块的开发,可轻松嵌入到任何系统里。 </p>
 *
20 21 22 23
 * <p>IJPay 交流群: 723992875</p>
 *
 * <p>Node.js 版: https://gitee.com/javen205/TNW</p>
 *
J
Javen205 已提交
24
 * <p>Http 代理类</p>
J
WxPay  
Javen205 已提交
25 26 27
 *
 * @author Javen
 */
J
Javen205 已提交
28 29 30 31 32 33 34
public abstract class AbstractHttpDelegate {
    /**
     * get 请求
     *
     * @param url 请求url
     * @return {@link String} 请求返回的结果
     */
J
Javen205 已提交
35
     public String get(String url) {
J
WxPay  
Javen205 已提交
36 37 38
        return HttpUtil.get(url);
    }

J
Javen205 已提交
39 40 41 42 43 44 45
    /**
     * get 请求
     *
     * @param url      请求url
     * @param paramMap 请求参数
     * @return {@link String} 请求返回的结果
     */
J
Javen205 已提交
46
    public String get(String url, Map<String, Object> paramMap) {
J
WxPay  
Javen205 已提交
47 48 49
        return HttpUtil.get(url, paramMap);
    }

J
Javen205 已提交
50 51 52 53 54 55 56
    /**
     * post 请求
     *
     * @param url  请求url
     * @param data 请求参数
     * @return {@link String} 请求返回的结果
     */
J
Javen205 已提交
57
    public String post(String url, String data) {
J
WxPay  
Javen205 已提交
58 59 60
        return HttpUtil.post(url, data);
    }

J
Javen205 已提交
61 62 63 64 65 66 67
    /**
     * post 请求
     *
     * @param url      请求url
     * @param paramMap 请求参数
     * @return {@link String} 请求返回的结果
     */
J
Javen205 已提交
68
    public String post(String url, Map<String, Object> paramMap) {
J
WxPay  
Javen205 已提交
69 70 71
        return HttpUtil.post(url, paramMap);
    }

J
Javen205 已提交
72 73 74 75 76 77 78 79 80
    /**
     * post 请求
     *
     * @param url      请求url
     * @param data     请求参数
     * @param certPath 证书路径
     * @param certPass 证书密码
     * @return {@link String} 请求返回的结果
     */
J
Javen205 已提交
81
    public String post(String url, String data, String certPath, String certPass) {
J
WxPay  
Javen205 已提交
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
        try {
            return HttpRequest.post(url)
                    .setSSLSocketFactory(SSLSocketFactoryBuilder
                            .create()
                            .setProtocol(SSLSocketFactoryBuilder.TLSv1)
                            .setKeyManagers(getKeyManager(certPass, certPath, null))
                            .setSecureRandom(new SecureRandom())
                            .build()
                    )
                    .body(data)
                    .execute()
                    .body();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

J
Javen205 已提交
99 100 101 102 103 104 105 106 107
    /**
     * post 请求
     *
     * @param url      请求url
     * @param data     请求参数
     * @param certFile 证书文件输入流
     * @param certPass 证书密码
     * @return {@link String} 请求返回的结果
     */
J
Javen205 已提交
108
    public String post(String url, String data, InputStream certFile, String certPass) {
J
WxPay  
Javen205 已提交
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
        try {
            return HttpRequest.post(url)
                    .setSSLSocketFactory(SSLSocketFactoryBuilder
                            .create()
                            .setProtocol(SSLSocketFactoryBuilder.TLSv1)
                            .setKeyManagers(getKeyManager(certPass, null, certFile))
                            .setSecureRandom(new SecureRandom())
                            .build()
                    )
                    .body(data)
                    .execute()
                    .body();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    private KeyManager[] getKeyManager(String certPass, String certPath, InputStream certFile) throws Exception {
        KeyStore clientStore = KeyStore.getInstance("PKCS12");
J
Javen205 已提交
128 129 130 131 132
        if (certFile != null) {
            clientStore.load(certFile, certPass.toCharArray());
        } else {
            clientStore.load(new FileInputStream(certPath), certPass.toCharArray());
        }
J
WxPay  
Javen205 已提交
133 134 135 136 137
        KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
        kmf.init(clientStore, certPass.toCharArray());
        return kmf.getKeyManagers();
    }
}