翼支付分账账户,带子商户交易需要填写 子商户号,其他参数带父商户的,并填写分账字段 格式 : 子商户号:金额
构建请求参数
OnlinePayConfig config = getShopOnlinePayConfig();//获取配置信息
int orderid = orderDTO.getAsInteger("id");//获取订单ID
String merchantId = config.getMerchantId();
String subMerchantId = config.getSubMerchantId();
String orderNo = String.valueOf(orderid);
String orderReqNo = String.valueOf(orderid);
String orderDate = DateUtils.currentTime();
BigDecimal priceoffinal = orderDTO.getAsBigDecimal("priceoffinal");
String orderAmt = String.valueOf(new Float(priceoffinal.floatValue() * 100).intValue());
String keyString=config.getBusikey();//获取交易KEY
StringBuilder sb = new StringBuilder();//组装MAC明文串 sb.append("MERCHANTID=").append(merchantId);
sb.append("&ORDERNO=").append(orderNo);
sb.append("&ORDERREQNO=").append(orderReqNo);
sb.append("&ORDERDATE=").append(orderDate);
sb.append("&BARCODE=").append(barcode);
sb.append("&ORDERAMT=").append(orderAmt);
sb.append("&KEY=").append(keyString);
String mac = CryptTool.md5Digest(sb.toString());
Map<String,String> paramMap = new HashMap<String, String>();//组装请求参数
paramMap.put("merchantId", merchantId);
if(subMerchantId==null||subMerchantId.equals("")){//如果存在子商户就用分账模式,如果不存在就直接用父商户的账号交易
paramMap.put("subMerchantId", "");
}else{
paramMap.put("subMerchantId", subMerchantId);
}
paramMap.put("barcode", barcode);
paramMap.put("orderNo", orderNo);
paramMap.put("orderReqNo", orderReqNo);
paramMap.put("orderDate", orderDate);
paramMap.put("channel", config.getChannel());
paramMap.put("busiType", config.getBusikey());
paramMap.put("TransType", "B");
paramMap.put("orderAmt", orderAmt);
paramMap.put("productAmt", orderAmt);
paramMap.put("attachAmt", "0");
paramMap.put("goodsName", "条码支付");
paramMap.put("storeId", config.getStoreId());
paramMap.put("backUrl", config.getBackUrl());
if(subMerchantId==null||subMerchantId.equals("")){//如果存在子商户就用分账模式,如果不存在就直接用父商户的账号交易
paramMap.put("ledgerDetail", "");
}else{
paramMap.put("ledgerDetail", subMerchantId+":"+orderAmt);
}
paramMap.put("attach", shopid+","+userid);
paramMap.put("mac", mac);
return paramMap;发起请求,并检验返会参数。
httpClient = createSSLClientDefault();
httpPost = new HttpPost("https://webpaywg.bestpay.com.cn/barcode/placeOrder");
List<NameValuePair> paramList = new ArrayList<NameValuePair>();
for (String key : epayMap.keySet()) {
paramList.add(new BasicNameValuePair(key, epayMap.get(key)));
}
urlEntity=new UrlEncodedFormEntity(paramList, Consts.UTF_8);
httpPost.setEntity(urlEntity);
httpPost.setConfig(RequestConfig.custom().setConnectTimeout(30000).setSocketTimeout(30000).build());
response = httpClient.execute(httpPost);
HttpEntity entity = response.getEntity();
int statusCode = response.getStatusLine().getStatusCode();
if(HttpStatus.SC_OK == statusCode) {
//如果响应码是200
String eResult = EntityUtils.toString(entity);
EpayEntity epayEntity = JSONObject.parseObject(eResult, EpayEntity.class);
if(epayEntity.isSuccess() && BocUtils.isNotEmpty(epayEntity.getResult())
&& "B".equals(epayEntity.getResult().getTransStatus())) {
//先做签名校验
OnlinePayConfig config = userFacade.getShopOnlinePayConfig(shopid, PayWayEnum.EPAY);
String sign = epayEntity.getResult().getSign();
StringBuilder sb = new StringBuilder();//组装mac加密明文串
sb.append("MERCHANTID=").append(config.getMerchantId());
sb.append("&ORDERNO=").append(epayEntity.getResult().getOrderNo());
sb.append("&ORDERREQNO=").append(epayEntity.getResult().getOrderReqNo());
sb.append("&ORDERDATE=").append(epayEntity.getResult().getOrderDate());
sb.append("&OURTRANSNO=").append(epayEntity.getResult().getOurTransNo());
sb.append("&TRANSAMT=").append(epayEntity.getResult().getTransAmt());
sb.append("&TRANSSTATUS=").append(epayEntity.getResult().getTransStatus());
sb.append("&ENCODETYPE=").append(epayEntity.getResult().getEncodeType());
sb.append("&KEY=").append(config.getBusikey());
if(sign.equals(CryptTool.md5Digest(sb.toString()))) {//签名认证成功
tradeFacade.execShopOrderByOnlineSuccess(Integer.parseInt(epayEntity.getResult().getOrderNo()), epayEntity.getResult().getTransAmt(),
OrderPayTypeEnum.YIPAYTO, epayEntity.getResult().getOurTransNo());
res.setAppCode(Constants.SUCCESS);
}else{
res.setAppCode(Constants.FAIL, "翼支付支付响应签名认证失败!");
}
}else{
res.setAppCode(Constants.FAIL, "翼支付失败!ErrCode【"+epayEntity.getErrorCode()+"】,ErrorMsg【"+epayEntity.getErrorMsg()+"】");
}
}else{
res.setAppCode(Constants.FAIL, "翼支付支付响应失败!状态码【"+statusCode+"】");
}
1376

被折叠的 条评论
为什么被折叠?



