/** * * @创建人: yinxm * @时间 : 2014-05-13 11:52:23 * @功能 : TODO 1.2.2 对B2C请求支付参数 进行签名加密处理 * @param orgceb 银行Bean * @param orderData 支付参数Bean * @return Map "rtn" rtn[0]000:请求成功;rtn[1]支付地址 "parmsRequestMap" 支付请求参数 */ private Map<String, Object> paySignB2C(EcOrgCeb orgceb,CEBPayData orderData) { if(log.isDebugEnabled()) {log.debug("【paySignB2C");} String rtn[] = new String[]{"999",""}; Map<String, Object> rtnMap = new HashMap<String, Object>(); //组织plain StringBuffer sb = new StringBuffer(); String plainXsm = null; //明文 String signXsm = null; //密文 String payUrl = null; //支付请求地址 //向银行请求的参数 Map<String,String> parmsRequestMap = new HashMap<String,String>(); try { /*******组织签名数据*****************/ // transId 交易代码 Char4 IPER/EPER // merchantId 商户代码 Char12 // orderId 订单号Char 30 // transAmt 交易金额Decimal 13,2 // transDateTime 交易时间Char14 // currencyType 币种Char2 // customerName 订货人姓名Char 25 (非必输) // merSecName 二级商户Char30 二级商户名称(非必输) // productInfo 商品信息Char30 商户信息描述(非必输) // customerEMail 订货人EMAIL Char 60 (非必输) // merURL 商户URL Char 256 用于后台通知商户 // merURL1 商户URL1Char 256 用于后台通知商户失败或者默认情况下,引导客户回商户页面支付地址 // payIp Char 64 客户在商户网站上生成订单时的客户IP(非必输) // msgExt 附加信息Char 30(非必输) sb.append("transId=").append(orderData.getTransid()); sb.append("~|~").append("merchantId=").append(orderData.getMerchantid()); sb.append("~|~").append("orderId=").append(orderData.getOrderid()); sb.append("~|~").append("transAmt=").append(orderData.getTransamt()); sb.append("~|~").append("transDateTime=").append(orderData.getTransdatetime()); sb.append("~|~").append("currencyType=").append(orderData.getCurrencytype()); sb.append("~|~").append("customerName=").append(orderData.getCustomername()); sb.append("~|~").append("merSecName=").append(orderData.getMersecname()); sb.append("~|~").append("productInfo=").append(orderData.getProductinfo()); sb.append("~|~").append("customerEMail=").append(orderData.getCustomeremail()); sb.append("~|~").append("merURL=").append(orderData.getMerurl()); sb.append("~|~").append("merURL1=").append(orderData.getMerurl1()); sb.append("~|~").append("payIp=").append(orderData.getPayip()); sb.append("~|~").append("msgExt=").append(orderData.getMsgext()); /*******组织请求支付传送参数*****************/ String TransName = ""; //IPER String Plain = ""; //明文 String Signature = ""; //密文 parmsRequestMap.put("TransName", TransName); parmsRequestMap.put("Plain", Plain); parmsRequestMap.put("Signature", Signature); plainXsm = sb.toString(); if (log.isDebugEnabled()) {log.debug("明文plainXsm="+plainXsm); } //调试用,上线后注释掉 try { signXsm = Tool.sign(plainXsm); } catch (Exception e) { if (log.isDebugEnabled()) { log.error("签名数据出错!"); } logException(e); throw new RuntimeException(e); } if (log.isDebugEnabled()) {log.debug("密文signXsm="+signXsm);} //调试用,上线后注释掉 payUrl = orgceb.getPayUrl(); //从 光大银行 银行表中记录请求支付地址 if (payUrl == null || payUrl.equals("")){ rtn[0] = "999"; } else { rtn[0] = "000"; //组织请求数据签名成功 rtn[1] = payUrl; //记录请求支付地址 } } catch (Exception e) { rtn[0] = "999"; rtn[1] = ""; if (log.isDebugEnabled()) { log.debug("获取支付地址或者签名数据出错");} logException(e); } rtnMap.put("rtn", rtn); rtnMap.put("parmsRequestMap", parmsRequestMap); if(log.isDebugEnabled()) {log.debug("paySignB2C】");} return rtnMap; }