/**
* @Project: hehenian-mobile
* @Package com.hehenian.mobile.common.utils
* @Title: ColorLifeUtils.java
* @Description: 彩之云红包理财接口
*
* @author: zhanbmf
* @date 2015-4-14 上午11:05:54
* @Copyright: HEHENIAN Co.,Ltd. All rights reserved.
* @version V1.0
*/
package com.hehenian.mobile.common.utils;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
import com.hehenian.common.utils.HttpClientUtils;
import net.sf.json.JSONObject;
public class ColorLifeUtils {
/**
* prod:http://capi.colourlife.com/
* test:http://capi.5ker.com:6888
*/
//public static final String API_URL = "http://capi.colourlife.com";
public static final String API_URL = "http://capi.colourlife.com";
public static final String KEY = "2";
public static final String SECRET = "TestColourApi";
/**
* 获取 API 版本信息
* @return
* @author: zhanbmf
* @date 2015-4-14 上午11:08:51
*/
public static String getAPIVersion() {
return HttpClientUtils.get(API_URL + "/1.0", HttpClientUtils.UTF8);
}
/**
* 客户端与服务端对时
* @return
* @author: zhanbmf
* @date 2015-4-14 上午11:09:33
*/
public static String getTS() {
return HttpClientUtils.get(API_URL + "/1.0/ts?ts=", HttpClientUtils.UTF8);
}
/**
* 检测客户端认证(其中diff为第二部获取的diff值,key和secret为彩之云平台分配给合作方的授权码)
* @param diff
* @return
* @author: zhanbmf
* @date 2015-4-14 上午11:11:19
* @return ts服务端收到的客户端时间戳|now服务端收到该请求时服务端当前时间戳|diff上述两个值的差值
*
* 获取时间戳 ts = 1428987415
* 调整时间戳 ts = 2857969602
* 准备 MD5 的 url = "/1.0/auth?key=&ts=2857969602&ve=1.0.0&secret="
* MD5 签名值 md5("/1.0/auth?key=&ts=2857969602&ve=1.0.0&secret=") = "4684c8c7cdce88095e07e39943832c91"
* MD5 签名后的 url ="/1.0/auth?key=&ts=2857969602&ve=1.0.0&sign=4684c8c7cdce88095e07e39943832c91"
* 请求:GET /1.0/auth?key=&ts=2857969602&ve=1.0.0&sign=4684c8c7cdce88095e07e39943832c91
* 失败 [400]:{
* code: 400
* message: Forbidden: Invalid timestamp
* }
*/
public static String checkAuthentication() {
String ts = getTS();
JSONObject jb = JSONObject.fromObject(ts);
String diff = jb.getString("diff");
return HttpClientUtils.get(API_URL + "/1.0/auth", HttpClientUtils.UTF8);
}
/**
* 订单生成名称
* @param oa
* @return
* @author: zhanbmf
* @date 2015-4-14 下午1:32:37
*
* 获取时间戳 ts = 1428993122
* 调整时间戳 ts = 2857975309
* 准备 MD5 的 url = "/1.0/elicai/getEmpBalance?key=&ts=2857975309&ve=1.0.0&secret="
* MD5 签名值 md5("/1.0/elicai/getEmpBalance?key=&ts=2857975309&ve=1.0.0&secret=") = "daf5ee5ed090132d481a03c29998bc4d"
* MD5 签名后的 url ="/1.0/elicai/getEmpBalance?key=&ts=2857975309&ve=1.0.0&sign=daf5ee5ed090132d481a03c29998bc4d"
* 请求:POST /1.0/elicai/getEmpBalance?key=&ts=2857975309&ve=1.0.0&sign=daf5ee5ed090132d481a03c29998bc4d
*/
public static float getEmpBalance(String oauser) {
String ts = getTS();
JSONObject jb = JSONObject.fromObject(ts);
String tsdiff = jb.getString("diff");
String sign = DigestUtils.md5Hex("/1.0/elicai/getEmpBalance?key=" + KEY + "&ts=" + tsdiff + "&ve=1.0.0&secret=" + SECRET);
Map map = new HashMap();
map.put("oauser", oauser);
String result = HttpClientUtils.post(API_URL + "/1.0/elicai/getEmpBalance?key=" + KEY + "&ts=" + tsdiff + "&ve=1.0.0&sign=" + sign, map , HttpClientUtils.UTF8);
JSONObject emp = JSONObject.fromObject(result);
if("".equals(ObjectUtils.toString(emp.get("oauser"))) || "".equals(ObjectUtils.toString(emp.get("balance")))) {
return 0;
}
return Float.valueOf(ObjectUtils.toString(emp.get("balance"), "0"));
}
/**
* 订单详情
* @param oauser
* @param thirdSn 理财订单号
* @param type 理财类型
* @param balance 消费的红包金额
* @param note 订单备注(可留空)
* @return ex {"sn":"1080000150414163004853","thirdSn":"15242","balance":"23.50","status":"99"}
* status=99标识成功
* @author: zhanbmf
* @date 2015-4-14 下午3:41:25
*/
public static String elicaiSuccessSyntony(String oauser, String thirdSn, String type, String balance, String paySecret, String note) {
String ts = getTS();
JSONObject jb = JSONObject.fromObject(ts);
String tsdiff = jb.getString("diff");
String sign = DigestUtils.md5Hex("/1.0/elicai/elicaiSuccessSyntony?key=" + KEY + "&ts=" + tsdiff + "&ve=1.0.0&secret=" + SECRET);
//String sign = DigestUtils.md5Hex("/1.0/elicai/elicaiSuccessSyntony?key=" + "" + "&ts=" + tsdiff + "&ve=1.0.0&secret=" + "");
Map map = new HashMap();
map.put("oauser", oauser);
map.put("thirdSn", thirdSn);
map.put("type", type);
map.put("balance", balance);
map.put("sign", DigestUtils.md5Hex(paySecret));
map.put("note", note);
String result = HttpClientUtils.post(API_URL + "/1.0/elicai/elicaiSuccessSyntony?key=" + KEY + "&ts=" + tsdiff + "&ve=1.0.0&sign=" + sign, map , HttpClientUtils.UTF8);
JSONObject elicai = JSONObject.fromObject(result);
String status = ObjectUtils.toString(elicai.get("status"));
if(StringUtils.isBlank(status) || !status.equals("99")) {
return null;
}
return result;
}
/**
*
* @param oauser 第三方oa账号
* @param paySecret 支付密码
* @return
*/
public static int checkPayPwd(String oauser,String paySecret){
String ts = getTS();
JSONObject jb = JSONObject.fromObject(ts);
String tsdiff = jb.getString("diff");
String sign = DigestUtils.md5Hex("/1.0/elicai/checkPayPwd?key=" + KEY + "&ts=" + tsdiff + "&ve=1.0.0&secret=" + SECRET);
Map map = new HashMap();
map.put("oauser", oauser);
map.put("sign", DigestUtils.md5Hex(paySecret));
String result = HttpClientUtils.post(API_URL + "/1.0/elicai/checkPayPwd?key=" + KEY + "&ts=" + tsdiff + "&ve=1.0.0&sign=" + sign, map , HttpClientUtils.UTF8);
JSONObject elicai = JSONObject.fromObject(result);
String status = ObjectUtils.toString(elicai.get("state"));
if("ok".equals(status)) {
return 0;
} else if("no".equals(status)) {
return 1;
} else if("noPayPwd".equals(status)) {
return 2;
}
return -1;
}
/**
* @Description: TODO
* @param args
* @author: zhanbmf
* @throws UnsupportedEncodingException
* @date 2015-4-14 上午11:05:54
*/
public static void main(String[] args) throws UnsupportedEncodingException {
String result = "";
getAPIVersion();
getTS();
checkAuthentication();
Float balance = getEmpBalance("xiongjian");
System.out.println("getEmpBalance:::" + balance);
result = elicaiSuccessSyntony("xiongjian", "115249", "12", "10", "paySecret", "test");
System.out.println("elicaiSuccessSyntony:::" + result);
balance = getEmpBalance("test2");
System.out.println("getEmpBalance:::" + balance);
result = elicaiSuccessSyntony("test2", "115259", "12", "10", "123456", "test");
JSONObject jb = JSONObject.fromObject(result);
System.out.println("elicaiSuccessSyntony:::" + result);
//System.out.println(jb.get("message"));
//http://m.hehenian.com/product/index.do?appkey=0001&channel=2&mobilePhone=13066839936&oa=xiongjian&realName=熊见&sign=0087fe15a2470df05dd772fce16b400d
System.out.println(DigestUtils.md5Hex("GnKPe2BMT7PV" + "2" + "15012703798" + "zhangjhmf123" + "张三"));
System.out.println(DigestUtils.md5Hex("GnKPe2BMT7PV" + "2" + "13066839936" + "xiongjian" + "熊见"));
HttpClientUtils.get(API_URL + "/1.0/ts?ts=", HttpClientUtils.UTF8);
System.out.println(DigestUtils.md5Hex("GnKPe2BMT7PV" + "2" + "13800138001" + "test2"+"张继华"));
result = HttpClientUtils.get("http://m.hehenian.com/product/index.do?appkey=0001&channel=2&mobilePhone=13800138001&oa=test2&realName=张继华&sign=aa40cf3a5fd3665348cd71b761f0078a", "UTF-8");
System.out.println("+++++++++++++++++++" + result);
checkPayPwd("test2", "123456");
//http://m.hehenian.com/product/index.do?appkey=0001&channel=2&mobilePhone=13066839936&oa=xiongjian&realName=%E7%86%8A%E8%A7%81&sign=6343f9b5c95d3bb0574d20b4b19abaa7
/*
String mytext = java.net.URLEncoder.encode("张继华", "UTF-8");
String oa = java.net.URLEncoder.encode("test2", "UTF-8");
String sign = DigestUtils.md5Hex(WebConstants.CGJ_PASS_KEY+2+"13800138001"+oa+"张继华");
String result = HttpClientUtils.get("http://m.hehenian.com/product/index.do?appkey=0001&channel=2&mobilePhone=13800138001&oa="+oa+"&realName="+mytext+"&sign=" + sign, "UTF-8");
System.out.println("+++++++++++++++++++" + result);
String mytext = java.net.URLEncoder.encode("熊见", "UTF-8");
String oa = java.net.URLEncoder.encode("xiongjian", "UTF-8");
System.out.println(DigestUtils.md5Hex("GnKPe2BMT7PV" + "2" + "13066839936" + "xiongjian"+"熊见"));
//String result = HttpClientUtils.get("http://m.hehenian.com/product/index.do?appkey=0001&channel=2&mobilePhone=13800138001&oa="+oa+"&realName="+mytext+"&sign=43dbf5878674d503ff0a7215f910b8e8", "UTF-8");
//String result = HttpClientUtils.get("http://m.hehenian.com/product/index.do?appkey=0001&channel=2&mobilePhone=13066839936&oa="+oa+"&realName="+"zhanbiao詹彪"+"&sign=6343f9b5c95d3bb0574d20b4b19abaa7", "UTF-8");
String result = HttpClientUtils.get("http://m.hehenian.com/product/index.do?appkey=0001&channel=2&mobilePhone=13066839936&oa="+oa+"&realName="+mytext+"&sign=6343f9b5c95d3bb0574d20b4b19abaa7", "UTF-8");
System.out.println("+++++++++++++++++++" + result);*/
//new BigDecimal(null);
}
}