接连连支付的同学可以参考下
package com.lanmei.third.lianlian.utils;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.apache.log4j.Logger;
import com.alibaba.fastjson.JSONObject;
/**
* 连连银通签名工具类
*/
public class SignUtil {
private static Logger logger = Logger.getLogger(SignUtil.class);
/**
* 返回签名
*/
public static String genRSASign(JSONObject reqObj) {
// 生成待签名串
String sign_src = genSignData(reqObj);
logger.info("商户[" + reqObj.getString("oid_partner") + "]待签名原串" + sign_src);
//商户私钥 商户通过openssl工具生成公私钥,公钥通过商户站上传,私钥用于加签,替换下面的值
return TraderRSAUtil.sign("私钥", sign_src);
}
/**
* 生成待签名串
*/
public static String genSignData(JSONObject jsonObject) {
StringBuffer content = new StringBuffer();
// 按照key做首字母升序排列
List<String> keys = new ArrayList<String>(jsonObject.keySet());
Collections.sort(keys, String.CASE_INSENSITIVE_ORDER);
for (int i = 0; i < keys.size(); i++) {
String key = (String) keys.get(i);
// sign 和ip_client 不参与签名
if ("sign".equals(key)) {
continue;
}
String value = (String) jsonObject.getString(key);
// 空串不参与签名
if (ValidatorUtils.isNull(value)) {
continue;
}
content.append((i == 0 ? "" : "&") + key + "=" + value);
}
String signSrc = content.toString();
if (signSrc.startsWith("&")) {
signSrc = signSrc.replaceFirst("&", "");
}
return signSrc;
}
/**
* 生成待签名串
*
* @param paramMap
* @return
*/
public static String genSignDataExcludeCardNo(JSONObject jsonObject) {
StringBuffer content = new StringBuffer();
// 按照key做首字母升序排列
List<String> keys = new ArrayList<String>(jsonObject.keySet());
Collections.sort(keys, String.CASE_INSENSITIVE_ORDER);
for (int i = 0; i < keys.size(); i++) {
String key = (String) keys.get(i);
// sign 和ip_client 不参与签名
if ("sign".equals(key)) {
continue;
}
if ("card_no".equals(key)) {
continue;
}
String value = (String) jsonObject.getString(key);
// 空串不参与签名
if (ValidatorUtils.isNull(value)) {
continue;
}
content.append((i == 0 ? "" : "&") + key + "=" + value);
}
String signSrc = content.toString();
if (signSrc.startsWith("&")) {
signSrc = signSrc.replaceFirst("&", "");
}
return signSrc;
}
}