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

com.sc.channel.alipay.AliPayCore Maven / Gradle / Ivy

The newest version!
package com.sc.channel.alipay;

import com.sc.utils.rest.httpClient.HttpProtocolHandler;
import com.sc.utils.rest.httpClient.HttpRequest;
import com.sc.utils.rest.httpClient.HttpResponse;
import com.sc.utils.rest.httpClient.HttpResultType;
import com.sc.utils.encrypt.MD5;
import com.sc.utils.encrypt.RSATools;

import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.lang3.StringUtils;

import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;



public class AliPayCore {
    private AliPayConf aliPayConf;

    public AliPayCore(AliPayConf aliPayConf) {
        this.aliPayConf = aliPayConf;
    }

    
    private String buildRequestMysign(Map sPara) {
        String prestr = createLinkString(sPara); 
        String mysign = "";
        if ("MD5".equals(aliPayConf.getSign_type())) {
            mysign = MD5.sign(prestr, aliPayConf.getKey(), aliPayConf.getInput_charset());
        } else {
            mysign = RSATools.sign(prestr, aliPayConf.getKey(), aliPayConf.getInput_charset());
        }
        return mysign;
    }


    
    private Map buildRequestPara(Map sParaTemp) {
        
        Map sPara = paraFilter(sParaTemp);
        
        String mysign = buildRequestMysign(sPara);

        
        sPara.put("sign", mysign);
        sPara.put("sign_type", aliPayConf.getSign_type());

        return sPara;
    }

    
    public String buildRequest(String strParaFileName, String strFilePath, Map sParaTemp) throws Exception {
        sParaTemp.put("partner",aliPayConf.getPartner());
        sParaTemp.put("_input_charset",aliPayConf.getInput_charset());
        sParaTemp.put("service",aliPayConf.getServiceName());
        
        Map sPara = buildRequestPara(sParaTemp);

        HttpProtocolHandler httpProtocolHandler = HttpProtocolHandler.getInstance();

        HttpRequest request = new HttpRequest(HttpResultType.BYTES);
        
        request.setCharset(aliPayConf.getInput_charset());

        request.setParameters(generatNameValuePair(sPara));
        request.setUrl(aliPayConf.getAlipayGateway() );

        HttpResponse response = httpProtocolHandler.execute(request, strParaFileName, strFilePath);
        if (response == null) {
            return null;
        }

        String strResult = response.getStringResult();

        return strResult;
    }

    
    public String buildRequest(Map sParaTemp) throws Exception {
        return buildRequest("", "", sParaTemp);
    }

    public String buildRequestUrl(Map sParaTemp)throws Exception {
        sParaTemp.put("partner", aliPayConf.getPartner());
        sParaTemp.put("_input_charset", aliPayConf.getInput_charset());
        sParaTemp.put("service", aliPayConf.getServiceName());
        
        Map sPara = buildRequestPara(sParaTemp);
        HttpRequest request = new HttpRequest(HttpResultType.BYTES);
        
        request.setCharset(aliPayConf.getInput_charset());
        request.setParameters(generatNameValuePair(sPara));
        request.setUrl(aliPayConf.getAlipayGateway());
        StringBuilder sb = new StringBuilder();
        for (NameValuePair parameters : request.getParameters()) {
            sb.append(parameters.getName() + "=" + URLEncoder.encode(parameters.getValue(), "UTF-8")+ "&");
        }
        String param = StringUtils.removeEnd(sb.toString(), "&");
        System.out.println("-->" +param);
        return request.getUrl() + param;
    }
    
    private NameValuePair[] generatNameValuePair(Map properties) {
        NameValuePair[] nameValuePair = new NameValuePair[properties.size()];
        int i = 0;
        for (Map.Entry entry : properties.entrySet()) {
            nameValuePair[i++] = new NameValuePair(entry.getKey(), entry.getValue());
        }

        return nameValuePair;
    }

    
    private Map paraFilter(Map sArray) {

        Map result = new HashMap();

        if (sArray == null || sArray.size() <= 0) {
            return result;
        }

        for (String key : sArray.keySet()) {
            String value = sArray.get(key);
            if (value == null || value.equals("") || key.equalsIgnoreCase("sign")
                    || key.equalsIgnoreCase("sign_type")) {
                continue;
            }
            result.put(key, value);
        }

        return result;
    }

    
    private String createLinkString(Map params) {

        List keys = new ArrayList(params.keySet());
        Collections.sort(keys);

        String prestr = "";

        for (int i = 0; i < keys.size(); i++) {
            String key = keys.get(i);
            String value = params.get(key);

            if (i == keys.size() - 1) {
                prestr = prestr + key + "=" + value;
            } else {
                prestr = prestr + key + "=" + value + "&";
            }
        }

        return prestr;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy