当前位置:编程学习 > JAVA >>

易宝代扣充值 提交报文易宝返回错误“验证签名失败”

 * 发送报文的完整步骤:
 *  1. 拿到Grp标签的内容(包括Grp标签本身)
 *  2. 调用DigitSignUtils.getSignInfo方法进行签名
 *  3. 将生成的签名进行Base64编码并放入Sign标签内
 *  4. 将报文整个再进行Base64编码进行Post


/**
 * 在线充值
 * @throws Exception 
 */
public PayReturnData recharge(PayReCharge charge) throws Exception{
PayReturnData payReturn = new PayReturnData();
//明文数据(Grp标签的内容)
String data = PayUtil.recharge(charge); 
//生成签名
String sign = PayUtil.signInfo(data);
//完整报文
String dataComplete = PayUtil.reChargeComplete(data, sign);
System.out.println(dataComplete);
//String dataComplete = "<MsgTes><Grp><GrpHead><Version>2.0.0</Version><BusCd>1023</BusCd><MctCd>10040010535</MctCd><SendDate>20121207</SendDate><SendTime>153030</SendTime><SendSeq>1234567890</SendSeq><remark1>remark1</remark1><remark2>remark2</remark2></GrpHead><GrpBody><OdrNo>20130705181836</OdrNo><OdrAmt>100</OdrAmt><OdrTime>20130705181836</OdrTime><CommName>futuresrading</CommName><CertType>010</CertType><CertCode>610111199006252073</CertCode><CstName>www</CstName><CstCard>6222023700016065783</CstCard><BankNo>102</BankNo><bakAccType>pu</bakAccType></GrpBody></Grp><Sign>mtUal1+AJMrWpmcT2mcm6ptAu2SU7C88Y7yal8ToFPAVYaF3elLCyku+peL2+RXyfG1v6mM2zhP01mRgJmT4lypxRgWhBOIhDfDmclap+THTIjxQcMJQnflOAxU6ubMnMCjQ9KcTQIlrHGQO+Jt2Q7z+pq6sVk58g/5so5Isn34=</Sign></MsgTes>";
if(dataComplete != null && !"".equals(dataComplete)){
//机构端完整报文加密
dataComplete = Base64Utils.encrypt(dataComplete);
//post提交,获取返回值
String returnData = PayUtil.postData(dataComplete);
System.out.println(returnData);
if(returnData != null && !"".equals(returnData)){
//易宝返回信息解密
returnData = Base64Utils.decrypt(returnData);
//签名校验
if(PayUtil.signVerify(returnData)){
//返回信息解析成对象集合
payReturn = PayUtil.returnData(returnData);
}

}
}
return  payReturn;
}



请懂行的朋友指点一下。 易宝数字签名   校验失败java   易宝 数字签名 校验失败 java
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,