package com.hehenian.biz.facade.colorlife;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.digest.DigestUtils;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.TypeReference;
import com.hehenian.biz.common.util.HttpClientUtils;
import com.hehenian.biz.common.util.Md5Utils;
public class ColorLifeManager {
public static void main1(String[] args) throws Exception {
String baseUrl = "http://capi.5ker.com:6888";
String businessURL = "/1.0/activity/paySyntony";
String key = "3";
String secret = "%21%40%23JSD";
// String baseUrl = "http://capi.colourlife.com";
//login(baseUrl, key, secret);
Map<String, String> parameterMap = new LinkedHashMap<String, String>();
parameterMap.put("userid", "186489");
parameterMap.put("orderSn", "1040000141103142411620");
parameterMap.put("orderAmount", "10000");
parameterMap.put("orderSuccessTime", "1415070168");
parameterMap.put("orderPaySn", "paysn0001");
String ret = callColorOperate(baseUrl, businessURL, key, secret,
parameterMap);
System.out.println(getVal("Status", ret));
}
public static void main(String[] args) throws Exception {
String base64 = new String(Base64.encodeBase64("{\"userId\":\"25\",\"userName\":\"大哥\",\"areaName\":\"碧水龙庭\"}".getBytes()));
System.out.println(base64);
String s = DigestUtils.md5Hex("{\"userId\":\"25\",\"userName\":\"大哥\",\"areaName\":\"碧水龙庭\"}");
String baseUrl = "http://capi.5ker.com:6888";
String businessURL = "/1.0/activity/feesuccess";
String key = "3";
String secret = "%21%40%23JSD";
// String baseUrl = "http://capi.colourlife.com";
// login(baseUrl, key, secret);
Map<String, String> parameterMap = new LinkedHashMap<String, String>();
parameterMap.put("userId", "186489");
parameterMap.put("orderSN", "1040000141103142411620");
parameterMap.put("feeAmount", "10000");
parameterMap.put("feeTime", "1415070168");
parameterMap.put("status", "1");
parameterMap.put("remark", "");
String ret = callColorOperate(baseUrl, businessURL, key, secret,
parameterMap);
System.out.println(getVal("Status", ret));
}
/**
* 从返回的JSON串里取值
*
* @param key
* @param jsonStr
* @return
*/
private static Object getVal(String key, String jsonStr) {
ObjectMapper mapper = new ObjectMapper();
Map<String, Object> retJson;
try {
retJson = mapper.readValue(jsonStr,
new TypeReference<HashMap<String, Object>>() {
});
return retJson.get(key);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 彩生活登录三步骤之一, 版本
*
* @param baseUrl
* @return
* @throws Exception
*/
private static String stepOne(String baseUrl) throws Exception {
// access_token=colourlife
String versinURL = baseUrl + "/1.0";
Map<String, String> parameterMap = new LinkedHashMap<String, String>();
versinURL = HttpClientUtils.makeUrl(versinURL, parameterMap);
String ret = HttpClientUtils.get(versinURL);
String retVal = String.valueOf(getVal("ok", ret));
return retVal;
}
/**
* 彩生活登录三步骤之二, 时间戳
*
* @param baseUrl
* @return
* @throws Exception
*/
private static int stepTwo(String baseUrl) throws Exception {
// ts?ts=1414983525
Map<String, String> parameterMap = new LinkedHashMap<String, String>();
String tsUrl = baseUrl + "/1.0/ts";
// parameterMap.put("access_token", "colourlife");
String ts = String.valueOf(System.currentTimeMillis() / 1000);
parameterMap.put("ts", ts);
tsUrl = HttpClientUtils.makeUrl(tsUrl, parameterMap);
String ret = HttpClientUtils.get(tsUrl);
Integer diff = (Integer) getVal("diff", ret);
return diff;
}
/**
* 彩生活登录三步骤之三, 认证
*
* @param baseUrl
* @param diff
* @param key
* @param secret
* @throws Exception
*/
private static String stepThree(String baseUrl, long diff, String key,
String secret) throws Exception {
// "/1.0/auth?key=3&ts=1414983733&ve=1.0.0&secret=%21%40%23JSD";
long currentTime = System.currentTimeMillis() / 1000;
String ts = String.valueOf(currentTime + Long.valueOf(diff));
Map<String, String> parameterMap = new LinkedHashMap<String, String>();
parameterMap.put("key", key);
parameterMap.put("ts", ts);
parameterMap.put("ve", "1.0.0");
parameterMap.put("secret", secret);
// parameterMap.put("access_token", "colourlife");
String authURL = "/1.0/auth";
authURL = HttpClientUtils.makeUrl(authURL, parameterMap);
String sign = Md5Utils.MD5(authURL, "UTF-8");
parameterMap.remove("secret");
parameterMap.put("sign", sign);
authURL = HttpClientUtils.makeUrl(authURL, parameterMap);
StringBuilder signUrl = new StringBuilder();
signUrl.append(baseUrl).append(authURL);
String ret = HttpClientUtils.get(signUrl.toString());
String retVal = String.valueOf(getVal("ok", ret));
return retVal;
}
/**
* 获取绑定客服经理绑定资源的接口
* @param baseUrl
* @param businessURL
* @param key
* @param secret
* @param parameterMap
* @return
* @throws Exception
*/
public static String callColorResouce(String baseUrl, String businessURL,
String key, String secret, Map<String, String> parameterMap)
throws Exception {
stepOne(baseUrl);
int diff = stepTwo(baseUrl);
stepThree(baseUrl, diff, key, secret);
long currentTime = System.currentTimeMillis() / 1000;
String ts = String.valueOf(currentTime + Long.valueOf(diff));
Map<String,String> urlMap = new LinkedHashMap<String, String>();
urlMap.put("key", key);
urlMap.put("ts", ts);
urlMap.put("ve", "1.0.0");
urlMap.put("secret", secret);
String signURL = HttpClientUtils.makeUrl(businessURL, urlMap);
String sign = Md5Utils.MD5(signURL, "UTF-8");
StringBuilder signUrlSB = new StringBuilder();
signUrlSB.append(baseUrl).append(signURL).append("&sign=").append(sign);
return HttpClientUtils.post(signUrlSB.toString(), parameterMap);
}
/**
* 调用彩色活的服务
*
* @param baseUrl
* 彩生活地址
* @param businessURL
* 业务操作的相对地址
* @return
* @throws Exception
*/
public static String callColorOperate(String baseUrl, String businessURL,
String key, String secret, Map<String, String> parameterMap)
throws Exception {
stepOne(baseUrl);
int diff = stepTwo(baseUrl);
stepThree(baseUrl, diff, key, secret);
long currentTime = System.currentTimeMillis() / 1000;
String ts = String.valueOf(currentTime + Long.valueOf(diff));
parameterMap.put("key", key);
parameterMap.put("ts", ts);
parameterMap.put("ve", "1.0.0");
parameterMap.put("secret", secret);
String signURL = HttpClientUtils.makeUrl(businessURL, parameterMap);
String sign = Md5Utils.MD5(signURL, "UTF-8");
parameterMap.remove("secret");
parameterMap.put("sign", sign);
signURL = HttpClientUtils.makeUrl(businessURL, parameterMap);
StringBuilder signUrlSB = new StringBuilder();
signUrlSB.append(baseUrl).append(signURL);
return HttpClientUtils.post(signUrlSB.toString(), parameterMap);
}
public static String login(String baseUrl, String key, String secret)
throws Exception {
stepOne(baseUrl);
int diff = stepTwo(baseUrl);
return stepThree(baseUrl, diff, key, secret);
}
}