/**
*
*/
package jframe.pay.upmp.req;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.unionpay.acp.sdk.HttpClient;
import com.unionpay.acp.sdk.SDKUtil;
import jframe.pay.upmp.domain.UpmpFields;
/**
* @author dzh
* @date Nov 25, 2015 4:15:56 PM
* @since 1.0
*/
public class UpmpSdk implements UpmpFields {
protected static Logger LOG = LoggerFactory.getLogger(UpmpSdk.class);
public static String encoding = "UTF-8";
/**
* java main方法 数据提交 对数据进行签名
*
* @param contentData
* @return 签名后的map对象
*/
@SuppressWarnings("unchecked")
public static Map<String, String> signData(Map<String, ?> contentData) {
Entry<String, String> obj = null;
Map<String, String> submitFromData = new HashMap<String, String>();
for (Iterator<?> it = contentData.entrySet().iterator(); it.hasNext();) {
obj = (Entry<String, String>) it.next();
String value = obj.getValue();
if (StringUtils.isNotBlank(value)) {
// 对value值进行去除前后空处理
submitFromData.put(obj.getKey(), value.trim());
// System.out.println(obj.getKey() + "-->" + String.valueOf(value));
}
}
/**
* 签名
*/
SDKUtil.sign(submitFromData, encoding);
return submitFromData;
}
/**
* java main方法 数据提交 提交到后台
*
* @param contentData
* @return 返回报文 map
*/
public static Map<String, String> submitUrl(Map<String, String> submitFromData, String requestUrl) {
String resultString = "";
// System.out.println("requestUrl====" + requestUrl);
// System.out.println("submitFromData====" + submitFromData.toString());
/**
* 发送
*/
HttpClient hc = new HttpClient(requestUrl, 30000, 30000);
try {
int status = hc.send(submitFromData, encoding);
if (200 == status) {
resultString = hc.getResult();
}
} catch (Exception e) {
LOG.error(e.getMessage());
}
Map<String, String> resData = new HashMap<String, String>();
/**
* 验证签名
*/
if (null != resultString && !"".equals(resultString)) {
// 将返回结果转换为map
resData = SDKUtil.convertResultStringToMap(resultString);
if (SDKUtil.validate(resData, encoding)) {
LOG.info("验证签名成功");
} else {
LOG.info("验证签名失败");
}
// 打印返回报文
// System.out.println("打印返回报文:" + resultString);
}
return resData;
}
}