All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.alipay.api.DefaultAlipayClient Maven / Gradle / Ivy

/**
 * Alipay.com Inc. Copyright (c) 2004-2012 All Rights Reserved.
 */
package com.alipay.api;

import com.alipay.api.internal.util.StringUtils;

import java.security.cert.X509Certificate;
import java.util.concurrent.ConcurrentHashMap;

/**
 * @author runzhi
 * @version $Id: DefaultAlipayClient.java, v 0.1 2012-11-49:45:21 runzhi Exp $
 */
public class DefaultAlipayClient extends AbstractAlipayClient {

    private String                                     privateKey;
    private String                                     encryptKey;
    private String                                     alipayPublicKey;
    private Signer                                     signer;
    private SignChecker                                signChecker;
    private Encryptor                                  encryptor;
    private Decryptor                                  decryptor;
    private X509Certificate                            cert;
    private ConcurrentHashMap alipayPublicCertMap;

    /**
     * 推荐使用AlipayConfig统一配置参数对象初始化SDK
     *
     * @param alipayConfig 配置参数
     */
    public DefaultAlipayClient(AlipayConfig alipayConfig) throws AlipayApiException {
        super(alipayConfig.getServerUrl(), alipayConfig.getAppId(), alipayConfig.getFormat(),
                alipayConfig.getCharset(), alipayConfig.getSignType(),
                alipayConfig.getAppCertPath(), alipayConfig.getAppCertContent(),
                alipayConfig.getAlipayPublicCertPath(), alipayConfig.getAlipayPublicCertContent(),
                alipayConfig.getRootCertPath(), alipayConfig.getRootCertContent(),
                alipayConfig.getProxyHost(), alipayConfig.getProxyPort(), alipayConfig.getEncryptType());
        this.privateKey = alipayConfig.getPrivateKey();
        this.signer = new DefaultSigner(alipayConfig.getPrivateKey());
        this.encryptor = new DefaultEncryptor(alipayConfig.getEncryptKey());
        this.decryptor = new DefaultDecryptor(alipayConfig.getEncryptKey());

        if (!StringUtils.isEmpty(alipayConfig.getAlipayPublicKey())) {
            this.alipayPublicKey = alipayConfig.getAlipayPublicKey();
            this.signChecker = new DefaultSignChecker(alipayConfig.getAlipayPublicKey());
        }

        setHeaders(alipayConfig.getCustomHeaders());
        setConnectTimeout(alipayConfig.getConnectTimeout());
        setReadTimeout(alipayConfig.getReadTimeout());
        setMaxIdleConnections(alipayConfig.getMaxIdleConnections());
        setKeepAliveDuration(alipayConfig.getKeepAliveDuration());
        setCustomizedHttpClient(alipayConfig.getCustomizedHttpClient());
    }

    public DefaultAlipayClient(String serverUrl, String appId, String privateKey) {
        super(serverUrl, appId, null, null, null);
        this.privateKey = privateKey;
        this.signer = new DefaultSigner(privateKey);
    }

    public DefaultAlipayClient(String serverUrl, String appId, String privateKey, String format) {
        super(serverUrl, appId, format, null, null);
        this.privateKey = privateKey;
        this.signer = new DefaultSigner(privateKey);
    }

    public DefaultAlipayClient(String serverUrl, String appId, String privateKey, String format,
                               String charset) {
        super(serverUrl, appId, format, charset, null);
        this.privateKey = privateKey;
        this.signer = new DefaultSigner(privateKey);
    }

    public DefaultAlipayClient(String serverUrl, String appId, String privateKey, String format,
                               String charset, String alipayPublicKey) {
        super(serverUrl, appId, format, charset, null);
        this.privateKey = privateKey;
        this.signer = new DefaultSigner(privateKey);
        this.alipayPublicKey = alipayPublicKey;
        this.signChecker = new DefaultSignChecker(alipayPublicKey);
    }

    public DefaultAlipayClient(String serverUrl, String appId, String privateKey, String format,
                               String charset, String alipayPublicKey, String signType) {
        super(serverUrl, appId, format, charset, signType);
        this.privateKey = privateKey;
        this.signer = new DefaultSigner(privateKey);
        this.alipayPublicKey = alipayPublicKey;
        this.signChecker = new DefaultSignChecker(alipayPublicKey);
    }

    public DefaultAlipayClient(String serverUrl, String appId, String privateKey, String format,
                               String charset, String alipayPublicKey, String signType,
                               String proxyHost, int proxyPort) {
        super(serverUrl, appId, format, charset, signType, proxyHost, proxyPort);
        this.privateKey = privateKey;
        this.signer = new DefaultSigner(privateKey);
        this.alipayPublicKey = alipayPublicKey;
        this.signChecker = new DefaultSignChecker(alipayPublicKey);
    }

    public DefaultAlipayClient(String serverUrl, String appId, String privateKey, String format,
                               String charset, String alipayPublicKey, String signType,
                               String encryptKey, String encryptType) {
        super(serverUrl, appId, format, charset, signType, encryptType);
        this.privateKey = privateKey;
        this.signer = new DefaultSigner(privateKey);
        this.alipayPublicKey = alipayPublicKey;
        this.signChecker = new DefaultSignChecker(alipayPublicKey);
        this.encryptor = new DefaultEncryptor(encryptKey);
        this.decryptor = new DefaultDecryptor(encryptKey);
    }

    public DefaultAlipayClient(CertAlipayRequest certAlipayRequest) throws AlipayApiException {
        super(certAlipayRequest.getServerUrl(), certAlipayRequest.getAppId(), certAlipayRequest.getFormat(),
                certAlipayRequest.getCharset(), certAlipayRequest.getSignType(),
                certAlipayRequest.getCertPath(), certAlipayRequest.getCertContent(),
                certAlipayRequest.getAlipayPublicCertPath(), certAlipayRequest.getAlipayPublicCertContent(),
                certAlipayRequest.getRootCertPath(), certAlipayRequest.getRootCertContent(),
                certAlipayRequest.getProxyHost(), certAlipayRequest.getProxyPort(), certAlipayRequest.getEncryptType());
        this.privateKey = certAlipayRequest.getPrivateKey();
        this.signer = new DefaultSigner(certAlipayRequest.getPrivateKey());
        this.encryptor = new DefaultEncryptor(certAlipayRequest.getEncryptor());
        this.decryptor = new DefaultDecryptor(certAlipayRequest.getEncryptor());
    }

    public static Builder builder(String serverUrl, String appId, String privateKey) {
        return new Builder(serverUrl, appId, privateKey);
    }

    public Signer getSigner() {
        return signer;
    }

    public SignChecker getSignChecker() {
        return signChecker;
    }

    public Encryptor getEncryptor() {
        return encryptor;
    }

    public Decryptor getDecryptor() {
        return decryptor;
    }

    public X509Certificate getCert() {
        return cert;
    }

    public ConcurrentHashMap getAlipayPublicCertMap() {
        return alipayPublicCertMap;
    }

    public void setPrivateKey(String privateKey) {
        this.privateKey = privateKey;
        if (this.signer == null) {
            this.signer = new DefaultSigner(privateKey);
        }
    }

    public void setEncryptKey(String encryptKey) {
        this.encryptKey = encryptKey;
        if (this.encryptor == null) {
            this.encryptor = new DefaultEncryptor(encryptKey);
        }
        if (this.decryptor == null) {
            this.decryptor = new DefaultDecryptor(encryptKey);
        }
    }

    public void setAlipayPublicKey(String alipayPublicKey) {
        this.alipayPublicKey = alipayPublicKey;
        if (this.signChecker == null) {
            this.signChecker = new DefaultSignChecker(alipayPublicKey);
        }
    }

    public static class Builder {
        private DefaultAlipayClient client;

        Builder(String serverUrl, String appId, String privateKey) {
            client = new DefaultAlipayClient(serverUrl, appId, privateKey);
        }

        public DefaultAlipayClient build() {
            return client;
        }

        public Builder prodCode(String prodCode) {
            client.setProdCode(prodCode);
            return this;
        }

        public Builder format(String format) {
            client.setFormat(format);
            return this;
        }

        public Builder signType(String signType) {
            client.setSignType(signType);
            return this;
        }

        public Builder encryptType(String encryptType) {
            client.setEncryptType(encryptType);
            return this;
        }

        public Builder encryptKey(String encryptKey) {
            client.setEncryptKey(encryptKey);
            return this;
        }

        public Builder alipayPublicKey(String alipayPublicKey) {
            client.setAlipayPublicKey(alipayPublicKey);
            return this;
        }

        public Builder charset(String charset) {
            client.setCharset(charset);
            return this;
        }

        public Builder connectTimeout(int connectTimeout) {
            client.setConnectTimeout(connectTimeout);
            return this;
        }

        public Builder readTimeout(int readTimeout) {
            client.setReadTimeout(readTimeout);
            return this;
        }

        public Builder proxyHost(String proxyHost) {
            client.setProxyHost(proxyHost);
            return this;
        }

        public Builder proxyPort(int proxyPort) {
            client.setProxyPort(proxyPort);
            return this;
        }

        public Builder cert(X509Certificate cert) {
            client.setCert(cert);
            return this;
        }

        public Builder alipayPublicCertMap(ConcurrentHashMap alipayPublicCertMap) {
            client.setAlipayPublicCertMap(alipayPublicCertMap);
            return this;
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy