工行支付之加工需要提交的数据和签名

methodName:icbc加密签名

public icbc icbcMD(TspResponseOrderInfo i) {
	icbc result = new icbc();
	ICBCTranData tranData = new ICBCTranData();

	try {
		//为空返回true
		if (!StringUtils.isBlank(i.getPrice())) {

// double cny = Double.parseDouble(“0.01”) * 100;
double cny = Double.parseDouble(i.getPrice()) * 100;// 转换成Double
int amounts = (int) cny;
tranData.setAmount(String.valueOf(amounts));
}

		if (!StringUtils.isBlank(i.getOrderId())) {
			tranData.setOrderid(i.getOrderId());
		}
		if (!StringUtils.isBlank(i.getPacketName())) {
			tranData.setGoodsName(i.getPacketName());
		}
		if (!StringUtils.isBlank(i.getPurchaseTime())) {
			SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			 Date date = formatter.parse(i.getPurchaseTime());

// Date date = formatter.parse(“2018-12-31 21:12:13”);
SimpleDateFormat formatter1 = new SimpleDateFormat(“yyyyMMddHHmmss”);
String dString = formatter1.format(date);
log.info(“订单产生时间:” + dString);
tranData.setOrderDate(dString);
}
if (!StringUtils.isBlank(i.getEffectEnd())) {
SimpleDateFormat formatter = new SimpleDateFormat(“yyyy-MM-dd”);
Date date1= formatter.parse(i.getEffectEnd());
// Date date1 = formatter.parse(“2018-12-31”);
SimpleDateFormat formatter1 = new SimpleDateFormat(“yyyyMMddHHmmss”);
String dStrin = formatter1.format(date1);
log.info(“失效时间:” + dStrin);
tranData.setExpireTime(dStrin);
}
tranData.setMerID(MERID);
tranData.setMerAcct(MERACCT);
tranData.setShopAppID(APPID);
tranData.setMerVAR(MD5.encrypt16(CommentUtil.getUUID()));
tranData.setMerURL(CALLBACKICBC);
// tranData.setMerURL("");

		StringBuilder strXml = new StringBuilder();
		strXml.append("<?xml version=\"1.0\" encoding=\"GBK\" standalone=\"no\"?>");
		strXml.append("<B2CReq>");
		strXml.append("<interfaceName>" + tranData.getInterfaceName() + "</interfaceName>");
		strXml.append("<interfaceVersion>" + tranData.getInterfaceVersion() + "</interfaceVersion>");
		strXml.append("<orderInfo>");
		strXml.append("<orderDate>" + tranData.getOrderDate() + "</orderDate>");
		strXml.append("<orderid>" + tranData.getOrderid() + "</orderid>");
		strXml.append("<amount>" + tranData.getAmount() + "</amount>");
		strXml.append("<installmentTimes>" +"1"+ "</installmentTimes>");
		strXml.append("<curType>" + "001" + "</curType>");
		strXml.append("<merID>" + tranData.getMerID() + "</merID>");
		strXml.append("<merAcct>" + tranData.getMerAcct() + "</merAcct>");
		strXml.append("<expireTime>" + StringChangeUtil.removeNull(tranData.getExpireTime()) + "</expireTime>");
		strXml.append("<unipassID>" + "" + "</unipassID>");
		strXml.append("<shopAppID>" + tranData.getShopAppID() + "</shopAppID>");
		strXml.append("<icbcappid>" + ""+ "</icbcappid>");
		strXml.append("</orderInfo>");
		strXml.append("<custom>");
		strXml.append("<verifyJoinFlag>" + "0" + "</verifyJoinFlag>");
		strXml.append("<Language>" + "zh_CN" + "</Language>");
		strXml.append("</custom>");
		strXml.append("<message>");
		strXml.append("<goodsID>" + "" + "</goodsID>");
		strXml.append("<goodsName>" + StringChangeUtil.removeNull(tranData.getGoodsName()) + "</goodsName>");
		strXml.append("<goodsNum>" + "" + "</goodsNum>");
		strXml.append("<carriageAmt>" + "" + "</carriageAmt>");
		strXml.append("<merHint>" + "" + "</merHint>");
		strXml.append("<remark1>" + "" + "</remark1>");
		strXml.append("<remark2>" + "" + "</remark2>");
		strXml.append("<merURL>" + tranData.getMerURL() + "</merURL>");
		strXml.append("<merVAR>" + tranData.getMerVAR() + "</merVAR>");
		strXml.append("<notifyType>" + "HS" + "</notifyType>");
		strXml.append("<resultType>" + "1"+ "</resultType>");
		strXml.append("<limitPay>" + "" + "</limitPay>");
		strXml.append("<backup1>" + "" + "</backup1>");
		strXml.append("<backup2>" + "" + "</backup2>");
		strXml.append("<backup3>" + "" + "</backup3>");
		strXml.append("<backup4>" + "" + "</backup4>");
		strXml.append("<isSupportDISCOUFlag>" + "0" + "</isSupportDISCOUFlag>");
		strXml.append("<thirdPartyFlag>" + "1" + "</thirdPartyFlag>");
		strXml.append("</message>");
		strXml.append("</B2CReq>");
		System.out.println(strXml.toString());
		icbc item = new icbc();
		item.setTranData(strXml.toString());
		log.info("产生的ml明文是进入字节加密" + strXml.toString());
		// byte[] temp = ReturnValue.base64enc(strXml.toString().getBytes());
		 获取工商银行验证
		// CBCPayOnline.getCheckInfo(icbcModel);
		// icbcModel.setTranData(strXml.toString());
		log.info("进入加密");

		result = this.getBase64ICBC(item);
		System.out.println("icbc:::::" + item.toString());
		System.out.println("tranData:::::" + item.getTranData());
		System.out.println("result:" + result);
		return result;
	} catch (Exception e) {
		e.printStackTrace();
	}
	return result;
}

2 进行编码

public icbc getBase64ICBC(icbc item) {
	String tranData = item.getTranData();
	System.out.println("明文:" + tranData);
	String password = PASSWORD;
	String returnTransData = "";
	String returnSignMsg = "";
	String returnCert = "";
	try {
		byte[] byteSrc = tranData.getBytes();
		char[] keyPass = password.toCharArray();
		FileInputStream in1 = new FileInputStream(CRT);
		byte[] bcert = new byte[in1.available()];
		in1.read(bcert);
		in1.close();
		FileInputStream in2 = new FileInputStream(KEY);
		byte[] bkey = new byte[in2.available()];
		in2.read(bkey);
		in2.close();

		byte[] sign = ReturnValue.sign(byteSrc, byteSrc.length, bkey, keyPass);

		if (sign == null) {
			System.out.println("签名失败,签名返回为空。请检查证书私钥和私钥保护口令是否正确。");
		} else {
			System.out.println("签名成功");

			byte[] transDataByte = ReturnValue.base64enc(tranData.getBytes("GBK"));
			String transDataBase64 = new String(transDataByte).toString();
			System.out.println("XML明文BASE64编码:" + transDataBase64);

			byte[] EncSign = ReturnValue.base64enc(sign);
			String SignMsgBase64 = new String(EncSign).toString();
			System.out.println("签名信息BASE64编码:" + SignMsgBase64);

			byte[] EncCert = ReturnValue.base64enc(bcert);
			String CertBase64 = new String(EncCert).toString();
			System.out.println("证书公钥BASE64编码:" + CertBase64);
			returnTransData = transDataBase64;
			returnSignMsg = SignMsgBase64;
			returnCert = CertBase64;

		}
	} catch (Exception e) {
		System.out.println(e);
	}
	icbc icbc = new icbc();
	icbc.setTranData(returnTransData);
	icbc.setMerCert(returnCert);
	icbc.setMerSignMsg(returnSignMsg);
	log.info("icbc是" + icbc);
	return icbc;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值