StringBuilder sb = new StringBuilder();//组装mac加密明文串 sb.append(\
sb.append(\ sb.append(\
sb.append(\ sb.append(\ sb.append(\ sb.append(\
sb.append(\ sb.append(\此处是商户的key
String mac = CryptTool.md5Digest(sb.toString());//进行md5加密(商户自己封装MD5加密工具类,此处只提供参考)
Map
param.put(\merchantId); param.put(\merchantPwd); param.put(\oldOrderNo);
param.put(\oldOrderReqNo); param.put(\refundReqNo); param.put(\refundReqDate); param.put(\transAmt); param.put(\channel);
param.put(\ledgerDetail); param.put(\mac);
//创建信任证书 CloseableHttpClient httpClient = createSSLClientDefault(); HttpPost httpPost = null;
CloseableHttpResponse response = null; try {
httpPost = new HttpPost(\nd\
List
paramList.add(new BasicNameValuePair(key, param.get(key))); }
httpPost.setEntity(new UrlEncodedFormEntity(paramList, Consts.UTF_8));
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 System.out.println(EntityUtils.toString(entity)); } finally {
if (response != null) { response.close(); }
if (httpPost != null) {
httpPost.releaseConnection(); }
httpClient.close(); } } } //创建链接 public static CloseableHttpClient createSSLClientDefault() throws Exception {
SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new AllTrustStrategy()).build();
SSLConnectionSocketFactory sslSf = new SSLConnectionSocketFactory(sslContext); return HttpClients.custom().setSSLSocketFactory(sslSf).build(); } //加载证书 private static class AllTrustStrategy implements TrustStrategy {
public boolean isTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException { return true; } } }
2.3.8 错误码
错误码 -309 -301 1002 BE100002
描述
校验商户调用密码出错 校验商户MAC校验域出错 商户未配置密钥信息 受理机构代码为空
备注
BE110028 BE110062 BE199999 BE300000 BE300006 BE300007 BE300012 BE300013 BE300018 BE301001 BE301007
分账信息有误
没有找到符合条件的记录。 请求参数有误 商户不存在
受理机构未配置此交易权限 商户未配置此交易权限 分账金额总和不等于订单总金额 商户IP验证异常 订单不支持部分扣款 订单金额出现异常,交易失败 不支持批量支付订单的退款,退款失败
原订单不存在
具体的参数错误,在描述中有体现
原支付机构不支持退款
商户没有给定渠道的普通退款权限
原订单支付机构不支持部分退款 退款金额不符合要求
BE301008 订单的业务类型不支持退款,退款失败
BE301009 BE301010 BE301011 BE999999
订单状态不为成功,退款失败 退款订单受理中,退款失败 订单已退款或冲正,退款失败 系统繁忙,请稍后再试
系统原因,联系技术支协查
2.4 冲正 2.4.1 接口描述
接口名称 接口描述 支付交易冲正接口 通过调用退款接口向翼支付网关平台接口类型 数据编码 接口提供者 接口使用者
发出冲正请求完成冲正。 HTTPS UTF-8 翼支付网关平台 商户 2.4.2 接口地址
生产地址 https://webpaywg.bestpay.com.cn/ reverse/reverse 2.4.3 接口参数
属性 merchantId 含义 类型 长度 20 必填 M 备注 由翼支付网关平台统一分配给各接入商户 商户代码 n subMerchantId 商户子代码 ans 20 O 商户子代码 如没有则填空 merchantPwd 商户调用密码 an 20 M 商户执行时需填入相应密码 oldOrderNo 原扣款订单号 an 30 M 原扣款成功的订单号 oldOrderReqNo 原订单请求支付流水号 an 30 M 原扣款成功的请求支付流水号 refundReqNo 退款流水号 an 30 M 该流水在商户处必须是唯一的,而且每次发起退款时,都必须是唯一的 refundReqDate 退款请求日期 transAmt 冲正金额 n 12 M 单位为分,必须为原订单金额 channel 渠道 n 5 M 01:WEB 02:WAP 04:语音 05:客户端 mac Mac校验域
an 32 M md5摘要 n 14 M yyyyMMDD 2.4.4 接口响应
属性 success result errorCode errorMsg 含义 是否成功 调用返回值 错误码 错误描述 类型 boolean ans ans ans 长度 必填 M O O O true:成功 false:失败 预留字段 备注 100 10 10 当success为true时,为null,当success为false时,为错误码 当success为true时,为null,当success为false时,为错误描述 2.4.5 响应示例
请求示例
oldOrderReqNo=20150713093607000001&oldOrderNo=20150713093607&&mac=880D9E9DE657E3C351697D3B6CFE5626&merchantId=043101180050000&transAmt=1&channel=01&refundReqNo=r20150713093607000001&refundReqDate=20150708&merchantPwd=123456
响应示例 成功
{\。\失败