package com.yc.ship.module.trade.framework.common.ota.qunaer;



import cn.hutool.core.codec.Base64Decoder;
import cn.hutool.json.JSONObject;
import com.yc.ship.module.trade.framework.common.Md5;

import java.io.UnsupportedEncodingException;

/**
 * @Title: QunarAuthUtil.java
 * @Package: com.wisesoft.scenic.api.resolver
 * &#064;Description: 去哪儿认证处理类
 * @author: zhoulonggui
 * @date: 2017年5月23日 下午5:12:41
 * @version: V1.0
 */
public class QunarAuthUtil {

	/**
	 * 去哪儿：请求消息处理
	 * @param reqJson
	 * @return
	 * @author zhoulonggui
	 * @date 2017年5月23日
	 */
	public static QunarReqStruct handleRequest(JSONObject reqJson){
		String data = reqJson.getStr("data");
		String securityType = reqJson.getStr("securityType");
		String signed = reqJson.getStr("signed");
		String xmlData = Base64Decoder.decodeStr(data);
		xmlData = xmlData.replaceAll("&lt;", "<").replaceAll("&gt;", ">");
		return new QunarReqStruct(data, securityType, signed, xmlData);
	}
	
	/**
	 * 去哪儿：校验签名signed
	 * @param req
	 * @param userKey
	 * @return
	 * @throws UnsupportedEncodingException
	 * @author zhoulonggui
	 * @date 2017年5月23日
	 */
	public static boolean checkSign(QunarReqStruct req, String userKey) throws UnsupportedEncodingException{
		//String data= req.getData().replace("%2B","+");
		String waitSignString = userKey + req.getData();
		String usSign = Md5.getMD5(waitSignString.getBytes("UTF-8"));
		if (usSign.toUpperCase().equals(req.getSigned().toUpperCase())){
			return true;
		}
		return false;
	}
	
	/**
	 * 去哪儿：生成签名signed
	 * @param data
	 * @param userKey
	 * @return
	 * @throws UnsupportedEncodingException
	 * @author zhoulonggui
	 * @date 2017年5月27日
	 */
	public static String generateSign(String data, String userKey){
		String waitSignString = userKey + data;
		String usSign = "";
		try {
			usSign = Md5.getMD5(waitSignString.getBytes("UTF-8"));
		}catch (UnsupportedEncodingException e){
			e.printStackTrace();
		}
		return usSign.toUpperCase();
	}
	
	public static void main(String[] args) throws UnsupportedEncodingException {
		System.out.println(generateSign("scenic-ctrip-test", "test"));
		System.out.println(generateSign("scenic-ctrip-prop", "prop"));
	}
}
