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

com.hc360.hcpay.payment.util.HCPayNotify Maven / Gradle / Ivy

The newest version!
package com.hc360.hcpay.payment.util;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Map;

import com.hc360.hcpay.payment.config.HCPayConfig;
import com.hc360.hcpay.payment.sign.SignVerifyFactory;

/* *
 *??????AlipayNotify
 *???ܣ??۸???֪ͨ??????
 *??ϸ???????۸??????ӿ?֪ͨ????
 *?汾??3.3
 *???ڣ?2012-08-17
 *˵????
 *???´???ֻ??Ϊ?˷????̻????Զ??ṩ?????????룬?̻????Ը????Լ???վ????Ҫ?????ռ????ĵ???д,????һ??Ҫʹ?øô??롣
 *?ô??????ѧϰ???о??۸????ӿ?ʹ?ã?ֻ???ṩһ???ο?

 *************************ע??*************************
 *????֪ͨ????ʱ???ɲ鿴???дlog??־??д??TXT??????ݣ??????֪ͨ?????Ƿ?????
 */
public class HCPayNotify {

    /**
     * ?۸?????Ϣ??֤??ַ
     */
    private static final String HTTPS_VERIFY_URL = "https://mapi.alipay.com/gateway.do?service=notify_verify&";

    /**
     * ??֤??Ϣ?Ƿ??ǻ۸????????ĺϷ???Ϣ
     * @param params ֪ͨ???????IJ???????
     * @return ??֤???
     */
    public static boolean verify(Map params) {

        //?ж?responsetTxt?Ƿ?Ϊtrue??isSign?Ƿ?Ϊtrue
        //responsetTxt?Ľ??????true????????????????⡢??????????ID??notify_idһ????ʧЧ?й?
        //isSign????true???밲ȫУ???롢????ʱ?IJ?????ʽ???磺???Զ???????ȣ????????ʽ?й?
    	String responseTxt = "true";
		if(params.get("notify_id") != null) {
			String notify_id = params.get("notify_id");
			responseTxt = verifyResponse(notify_id);
		}
	    String sign = "";
	    if(params.get("sign") != null) {sign = params.get("sign");}
	    boolean isSign = getSignVeryfy(params, sign);

        //д??־??¼????Ҫ???ԣ???ȡ??????????ע?ͣ?
        //String sWord = "responseTxt=" + responseTxt + "\n isSign=" + isSign + "\n ???ػ????IJ?????" + AlipayCore.createLinkString(params);
	    //AlipayCore.logResult(sWord);

        if (isSign && responseTxt.equals("true")) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * ???ݷ???????????Ϣ??????ǩ?????
     * @param Params ֪ͨ???????IJ???????
     * @param sign ?ȶԵ?ǩ?????
     * @return ???ɵ?ǩ?????
     */
	private static boolean getSignVeryfy(Map Params, String sign) {
    	//???˿?ֵ??sign??sign_type????
    	Map sParaNew = HCPayCore.paraFilter(Params);
        //??ȡ??ǩ???ַ???
        String preSignStr = HCPayCore.createLinkString(sParaNew);
        //???ǩ????֤???
        boolean isSign = SignVerifyFactory.createSignAndVerify(HCPayConfig.sign_type).verify(preSignStr, sign, HCPayConfig.key, HCPayConfig.input_charset);
        return isSign;
    }

    /**
    * ??ȡԶ?̷?????ATN???,??֤????URL
    * @param notify_id ֪ͨУ??ID
    * @return ??????ATN???
    * ??֤???????
    * invalid??????????? ??????????????ⷵ?ش?????partner??key?Ƿ?Ϊ?? 
    * true ??????ȷ??Ϣ
    * false ???????ǽ?????Ƿ???????ֹ?˿??????Լ???֤ʱ???Ƿ񳬹?һ????
    */
    private static String verifyResponse(String notify_id) {
        //??ȡԶ?̷?????ATN???????֤?Ƿ??ǻ۸???????????????????

        String partner = HCPayConfig.partner;
        String veryfy_url = HTTPS_VERIFY_URL + "partner=" + partner + "¬ify_id=" + notify_id;

        return checkUrl(veryfy_url);
    }

    /**
    * ??ȡԶ?̷?????ATN???
    * @param urlvalue ָ??URL·????ַ
    * @return ??????ATN???
    * ??֤???????
    * invalid??????????? ??????????????ⷵ?ش?????partner??key?Ƿ?Ϊ?? 
    * true ??????ȷ??Ϣ
    * false ???????ǽ?????Ƿ???????ֹ?˿??????Լ???֤ʱ???Ƿ񳬹?һ????
    */
    private static String checkUrl(String urlvalue) {
        String inputLine = "";

        try {
            URL url = new URL(urlvalue);
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
            BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection
                .getInputStream()));
            inputLine = in.readLine().toString();
        } catch (Exception e) {
            e.printStackTrace();
            inputLine = "";
        }

        return inputLine;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy