翼支付商户接入规范_第1页
翼支付商户接入规范_第2页
翼支付商户接入规范_第3页
翼支付商户接入规范_第4页
翼支付商户接入规范_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文格式为Word版,下载可任意编辑——翼支付商户接入规范翼支付商户接入规范

条形码支付

修订历史记录

日期2023.06.082023.07.15版本1.01.1初稿码新增2.2查询接口新增2.3退款http接口(含分账)废弃2.5退款ws接口废弃2.6分账退款ws接口新增2.4冲正http接口废弃2.7冲正ws接口2023.07.202023.0修订及完善查询接口相关文档下单接口返回值调整。韦家驹增加HTTP退款和冲正接口的相关文档2023.12.21

说明新增2.1下单业务返回刘永富林健韦家驹修订林健,张良善韦家驹1.4查询接口增加退款标志,及支付账户号韦家驹目录

1.引言71.1编写目的71.2编写原则71.3读者对象71.4需求来源71.5术语定义72.

条码支付7

2.1下单支付72.1.1接口描述72.1.2接口地址82.1.3接口参数82.1.4接口响应92.1.5响应例如错误!未定义书签。2.1.6接口说明112.1.7客户端测试用例122.2查询162.2.1接口描述162.2.2接口地址162.2.3接口参数162.2.4接口响应16

2.2.5响应例如182.2.6接口说明182.2.7客户端测试用例192.3退款222.3.1接口描述222.3.2接口地址222.3.3接口参数222.3.4接口响应242.3.5响应例如242.3.6接口说明242.3.7客户端测试用例252.4冲正282.4.1接口描述282.4.2接口地址292.4.3接口参数292.4.4接口响应302.4.5响应例如302.4.6接口说明312.4.7客户端测试用例312.5退款342.5.1接口描述342.5.2接口地址35

2.5.3接口参数352.5.4接口响应352.5.5响应例如362.5.6接口说明362.5.7客户端测试用例362.6分账退款372.6.1接口描述372.6.2接口地址372.6.3接口参数382.6.4接口响应382.6.5响应例如392.6.6接口说明392.6.7客户端测试用例392.7冲正402.7.1接口描述402.7.2接口地址412.7.3接口参数412.7.4接口响应412.7.5响应例如422.7.6接口说明422.7.7客户端测试用例422.8交易结果通知接口43

2.1.6接口说明

1.商户的商户号由翼支付统一分派,商户需与翼支付的运营人员对接,提供商户资料,申请

正式的商户号。

2.商户要保证订单号的唯一性。

3.订单请求流水号不能重复,建议以日期时间(yyyyMMDDhhmmss格式)加一固定长度(不

小于6位)流水号组成,如:20231012132425+0000001等。

4.订单流水号和订单号可以一致。(使用翼支付提供的“流程测试〞商户时除外,假使一致

会提醒订单或流水号重复的错误)

5.MAC校验,保证了交易信息到翼支付网关平台的完整性,参与MAC运算的字符及其顺序

如下:a)顺序

MERCHANTID=123456789importorg.apache.http.Consts;importorg.apache.http.HttpEntity;importorg.apache.http.HttpStatus;

importorg.apache.http.NameValuePair;

importorg.apache.http.client.config.RequestConfig;

importorg.apache.http.client.entity.UrlEncodedFormEntity;importorg.apache.http.client.methods.CloseableHttpResponse;importorg.apache.http.client.methods.HttpPost;

importorg.apache.http.impl.client.CloseableHttpClient;importorg.apache.http.impl.client.HttpClients;

importorg.apache.http.message.BasicNameValuePair;importorg.apache.http.util.EntityUtils;import.ssl.SSLContext;importspace.QName;

importjava.security.cert.CertificateException;importjava.security.cert.X509Certificate;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;

importorg.apache.http.conn.ssl.SSLConnectionSocketFactory;importorg.apache.http.conn.ssl.SSLContextBuilder;importorg.apache.http.conn.ssl.TrustStrategy;

importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;

publicclassTestClient{

publicstaticvoidmain(String[]args)throwsException{StringmerchantId=\StringorderNo=\

StringorderReqNo=\StringorderDate=\Stringbarcode=\

StringorderAmt=\

StringBuildersb=newStringBuilder();//组装mac加密明文串sb.append(\sb.append(\

sb.append(\sb.append(\TE=\sb.append(\sb.append(\

sb.append(\此处是商户的key

Stringmac=CryptTool.md5Digest(sb.toString());//进行md5加密(商户自己封装MD5加密工具类,此处只提供参考)

Mapparam=newHashMap();//组装请求参数

param.put(\merchantId);param.put(\merchantId);param.put(\barcode);param.put(\orderNo);

param.put(\orderReqNo);param.put(\orderDate);param.put(\\param.put(\\param.put(\\

param.put(\orderAmt);param.put(\\param.put(\\

param.put(\\条码支付\param.put(\\

param.put(\\param.put(\\param.put(\\param.put(\mac);

//创立信任证书CloseableHttpClienthttpClient=createSSLClientDefault();HttpPosthttpPost=null;

CloseableHttpResponseresponse=null;try{

httpPost=newHttpPost(\\

ListparamList=newArrayList();for(Stringkey:param.keySet()){paramList.add(newBasicNameValuePair(key,param.get(key)));}

httpPost.setEntity(newUrlEncodedFormEntity(paramList,Consts.UTF_8));

httpPost.setConfig(RequestConfig.custom().setConnectTimeout(30000).setSocketTimeout(30000).build());

response=httpClient.execute(httpPost);HttpEntityentity=response.getEntity();

intstatusCode=response.getStatusLine().getStatusCode();if(HttpStatus.SC_OK==statusCode)//假使响应码是200System.out.println(EntityUtils.toString(entity));;}finally{

if(response!=null){response.close();}

if(httpPost!=null){httpPost.releaseConnection();}

httpClient.close();}}}

//创立链接publicstaticCloseableHttpClientcreateSSLClientDefault()throwsException{

SSLContextsslContext=newSSLContextBuilder().loadTrustMaterial(null,newAllTrustStrategy()).build();

SSLConnectionSocketFactorysslSf=newSSLConnectionSocketFactory(sslContext);returnHttpClients.custom().setSSLSocketFactory(sslSf).build();}//加载证书privatestaticclassAllTrustStrategyimplementsTrustStrategy{

publicbooleanisTrusted(X509Certificate[]x509Certificates,Strings)throwsCertificateException{returntrue;}}}

说明

当使用org.apache.http.client之外的第三方类封装HTTP请求时,需要注意

1.2.

HTTP请求中的字符串,需要经过URL编码,其中的中文字符使用UTF-8。HTTP

请求中的

Content-Type

使用

application/x--form-urlencoded;

charset=UTF-8,请求方法为POST。

2.1.8错误码

错误码BE199999BARCODE_VALIDATE_ERROR84951464008-301-302-304100110021003-3061-3062-3063-3064-3065

卡信息解密失败查询绑卡信息出错绑卡信息不存在订单MAC域验证失败校验订单出错商户未配置此交易权限商户未注册商户未配置密钥信息商户未开通银行分账商户不存在分账金额有误

分账金额总和不等于订单金额分账商户父商户有误分账信息不允许有两个一致商户

BARCODE_STORE_CODE_IS_EMPTY

BE999999

描述

请求参数有误条形码验证异常

备注

检查HTTP请求相关代码

用户信息异常用户信息异常用户信息异常

检查订单金额

检查数据KEY是否申请

条码门店号不能为空

系统繁忙,请稍后再试系统原因,联系技术支协查

2.2订单查询2.2.1接口描述

接口名称接口描述接口类型传输方式数据编码接口提供者接口使用者

订单查询接口为商户提供入口HTTPSPOSTUtf-8翼支付网关平台商户业务平台2.2.2接口地址

生产地址/query/queryOrder

2.2.3接口参数

属性merchantIdorderNoorderReqNo含义商户号订单号订单请求交易流水号类型长度n30an30an30必填MMM备注由翼支付网关平台统一分派由商户平台提供,数字或字母组成由商户平台提供,数字或字母组成orderDatemac订单日期mac校验域an20an256MM日期格式:yyyyMMdd默认为0,当加密方式为1时有意义,采用标准的MD5算法,由商户实现

2.2.4接口响应

参数含义类型和长度备注success是否查询到订单booleanTrue:成功False:失败result调用返回值ans100当success为true时取此值,result中包含的信息见下表errorCodeerrorMsgrefundFlag错误码错误描述退款标识ans10ans10n1当success为false时取此值,result为空当success为false时取此值,result为空0代表为退款,1已退款2部分退款3已冲正

查询成功success为true时响应结果result(MAP)为:

参数merchantIdorderNoorderReqNoorderDate含义商户号商户总订单号商户总订单请求流水号商户下单时间n20M类型长度n30an30an30MMM必填一分派备注由翼支付网关平台统查询到的商户订单号查询到的商户请求流水号yyyyMMDDHHmmss查询到的订单实际日期,可能与查询请求日期不同ourTransNotransAmttransStatus网关平台流水号交易金额交易状态n30n10n1MMM翼支付生成的内部流水号单位:分A:请求(支付中)B:成功(支付成功)C:失败G:订单作废encodeType加密方式n1O1代表MD53代表RSA9代表CA默认为1signsign校验域anM验证签名,签名方式根据encodeType决定refundFlag退款标识n1M0代表为退款,1已退款2部分退款3已冲正客户条码消费时的支付手机号,中间4位被隐去,用*代替如180****2687customerID客户支付手机号n11M

2.2.5请求及响应例如

请求例如

orderReqNo=20230713093607000001importorg.apache.http.Consts;importorg.apache.http.HttpEntity;importorg.apache.http.HttpStatus;

importorg.apache.http.NameValuePair;

importorg.apache.http.client.config.RequestConfig;

importorg.apache.http.client.entity.UrlEncodedFormEntity;importorg.apache.http.client.methods.CloseableHttpResponse;importorg.apache.http.client.methods.HttpPost;

importorg.apache.http.impl.client.CloseableHttpClient;importorg.apache.http.impl.client.HttpClients;

importorg.apache.http.message.BasicNameValuePair;importorg.apache.http.util.EntityUtils;

importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;

import.ssl.SSLContext;importspace.QName;

importjava.security.cert.CertificateException;importjava.security.cert.X509Certificate;

importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;

importorg.apache.http.conn.ssl.SSLConnectionSocketFactory;importorg.apache.http.conn.ssl.SSLContextBuilder;importorg.apache.http.conn.ssl.TrustStrategy;

publicclassQueryClient{

publicstaticvoidmain(String[]args)throwsException{StringmerchantId=\StringorderNo=\

StringorderReqNo=\StringorderDate=\

StringBuildersb=newStringBuilder();//组装mac加密明文串sb.append(\sb.append(\

sb.append(\sb.append(\TE=\

sb.append(\此处是商户的key

Stringmac=CryptTool.md5Digest(sb.toString());//进行md5加密(商户自己封装MD5加密工具类,此处只提供参考)

Mapparam=newHashMap();//组装请求参数,参数名大小写敏感

param.put(\merchantId);param.put(\orderNo);

param.put(\orderReqNo);param.put(\orderDate);param.put(\mac);

//创立信任证书CloseableHttpClienthttpClient=createSSLClientDefault();HttpPosthttpPost=null;

CloseableHttpResponseresponse=null;try{

//发起HTTP的POST请求

httpPost=newHttpPost(\ListparamList=newArrayList();for(Stringkey:param.keySet()){paramList.add(newBasicNameValuePair(key,param.get(key)));

3.条码支付交互流程

交互流程

1.用户使用客户端生成条码。2.商户扫描条码。3.商户下单。

4.下单接口返回失败时,商户调冲正接口。5.下单成功时,商户对交易结果进行轮询。

6.查询接口result字段内的transStatus。返回A时:请求时,说明用户正在输入密码。商

户可继续轮询。

7.查询接口返回B:成功时,说明支付成功。本笔交易成功。8.查询接口返回C:失败时,说明支付失败,商户调冲正接口。9.轮询超时的状况商户可调用冲正接口。

4.权限申请

条码支付联调前,需要确认以下权限

1.接入翼支付的正式商户号,商户数据KEY,商户交易KEY

2.商户的银行支付权限,对于绑卡支付,需要申请商户的银行快捷支付权限

3.退款和冲正,商户需要申请退款和冲正的权限,并且提供服务器的固定IP以便配置访问白名单。

4.为让用户客户端正确显示历史支付信息,商户需提供门店信息。5.如商户需要进行分账支付,需为商户申请分账交易权限。

5.响应码说明

响应码0000000-100

本次调用成功本次调用成功本次调用成功

环境变量\未设置

说明

需要在在Linux或Unix上设置环境变量NPCDIR

-101

商户密钥文件不存在或无法开启,设置密钥文件为可写方式。

备注

-102密钥文件格式错误可能商户的密钥文件在传输途中有误。

-112-113-201-202

公钥文件不存在或无法开启公钥文件格式错误签名的数据项长度有误金额数据项格式错误

设置密钥文件为可写方式。可能公钥文件在传输途中有误。

以元为单位,必需包含两位小数点。如3.50或者100.00,常见的错误格式有02,4.5,-5.6,0.445,.45等。

-203订单号数据项格式错误订单号应当为6至16位长度的数字字符。

-301-401-800-801-802-803-804-805-806-807-808-809-810-811

验证签名出错

参与签名的数据体超过规定长度调用webservice失败版本号错误参数错误日期错误卡信息错误验数字签名错误服务处理出错无记录

商户在网关黑名单中银行卡bin错误网关号错误RSP_ERR_SOCKET

请检查参与签名的参数是否正确。

请检查服务的url是否正确请检查支付网关接口版本请检查接口参数

请检查商户日期和系统日期差距请检查卡信息请检查数字签名请检查服务

检查用户的卡bin是否合法检查网关是否存在

-812-813-814-815-816-817-818-819-820-821-831-832-833-834-835-836-837-838-839-840-841-842-843-844-845

RSP_ERR_MSG_LENRSP_ERR_SYS

RSP_ERR_INVALIDE_MERRSP_ERR_MER_CLOSERSP_ERR_INVALIDE_GATERSP_ERR_GATE_CLOSERSP_ERR_INVALIDE_TRANSRSP_ERR_NO_ORIG_TRANSRSP_ERR_ORIG_TRANS_FAILRSP_ERR_AMT_INVALIDE工行卡单笔支付限额超限回调地址不能为空卡BIN错误有效期格式错误CVV2格式错误证件类型格式错误证件类型不能为空证件号码格式错误姓名长度超过限制姓名不能为空验签名失败

发送或接收交易数据失败原始交易商户日期格式错误原始交易订单号格式错误交易类型错误

检查支付金额

-846-847-848-849-850-851-852-853-854-855-856-857-858-859-860-861-862

请求参数异常重复退款签名失败卡信息解密失败支付信息错误无效卡号

余额或信用额度不足卡有效期错误交易取消数据接收错误交易超时超限额非本行卡授权忙音授权次数超限交易失败,转人工处理证件号码不符败

身份证号码检查失

-863-864

户名不符查发卡行联系发卡行

户名检查失败卡状态非法,需持卡人

-865-866-867-868

无效CVV2CVV2无效无效商户过期的卡重复交易

}

//UTF8+URL编码

httpPost.setEntity(newUrlEncodedFormEntity(paramList,Consts.UTF_8));

httpPost.setConfig(RequestConfig.custom().setConnectTimeout(30000).setSocketTimeout(30000).build());

response=httpClient.execute(httpPost);HttpEntityentity=response.getEntity();

intstatusCode=response.getStatusLine().getStatusCode();if(HttpStatus.SC_OK==statusCode)//假使响应码是200System.out.println(EntityUtils.toString(entity));}finally{

if(response!=null){response.close();}

if(httpPost!=null){httpPost.releaseConnection();}

httpClient.close();}}}

publicstaticCloseableHttpClientcreateSSLClientDefault()throwsException{

SSLContextsslContext=newSSLContextBuilder().loadTrustMaterial(null,newAllTrustStrategy()).build();

SSLConnectionSocketFactorysslSf=newSSLConnectionSocketFactory(sslContext);returnHttpClients.custom().setSSLSocketFactory(sslSf).build();}//加载证书privatestaticclassAllTrustStrategyimplementsTrustStrategy{

publicbooleanisTrusted(X509Certificate[]x509Certificates,Strings)throwsCertificateException{returntrue;}}}

2.2.8错误码

错误码1002BE300001

描述

商户未配置密钥信息订单MAC域验证失败

备注

检查数据KEY是否申请

BE199999BE110062BE999999

请求参数有误

没有找到符合条件的记录。系统繁忙,请稍后再试

具体的参数错误,在描述中有表达

系统原因,联系技术支协查

2.3普通退款2.3.1接口描述

接口名称接口描述接口类型数据编码接口提供者接口使用者支付交易普通退款接口通过调用退款接口向翼支付网关平台发出退款请求完成退款。HTTPSUTF-8翼支付网关平台商户2.3.2接口地址

生产地址/refund/commonRefund

2.3.3接口参数

属性merchantId含义类型长度20必填M备注由翼支付网关平台统一分派给各接入商户商户代码nsubMerchantId商户子代码ans20O商户子代码如没有则填空merchantPwd商户调用密码an20M商户执行时需填入相应密码oldOrderNo原扣款订单号an30M原扣款成功的订单号oldOrderReqNo原订单请求支付流水号an30M原扣款成功的请求支付流水号refundReqNo退款流水号an30M该流水在商户处必需是唯一的,而且每次发起退款时,都必需是唯一的refundReqDate退款请求日期n14MyyyyMMDDtransAmt退款交易金额n12M单位为分,小于等于原订单金额ledgerDetail分账明细n1024O分账例如:0018888888:10|3100888888:10分账规则:父商户可以全额退款,子商户的分账退款金额必需小于支付分账金额,分账金额不能为0。channel渠道n5M01:WEB02:WAP04:语音05:客户端macMac校验域an32Mmd5摘要bgUrl退款回调地址ans256O商户的退款回调地址,当退款受理成功后,会有回调消息以HTTP形式发送至商户2.3.4接口响应

属性successresulterrorCodeerrorMsg含义是否成功调用返回值错误码错误描述类型booleanansansans长度必填MOOOtrue:成功false:失败预留字段备注1001010当success为true时,为null,当success为false时,为错误码当success为true时,为null,当success为false时,为错误描述

2.3.5请求响应例如

请求例如

oldOrderReqNo=20230713093607000001importorg.apache.http.Consts;importorg.apache.http.HttpEntity;importorg.apache.http.HttpStatus;

importorg.apache.http.NameValuePair;

importorg.apache.http.client.config.RequestConfig;

importorg.apache.http.client.entity.UrlEncodedFormEntity;importorg.apache.http.client.methods.CloseableHttpResponse;importorg.apache.http.client.methods.HttpPost;

importorg.apache.http.impl.client.CloseableHttpClient;importorg.apache.http.impl.client.HttpClients;

importorg.apache.http.message.BasicNameValuePair;importorg.apache.http.util.EntityUtils;

mport.ssl.SSLContext;

importspace.QName;

importjava.security.cert.CertificateException;importjava.security.cert.X509Certificate;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;

importorg.apache.http.conn.ssl.SSLConnectionSocketFactory;importorg.apache.http.conn.ssl.SSLContextBuilder;importorg.apache.http.conn.ssl.TrustStrategy;

publicclassTestClient{

publicstaticvoidmain(String[]args)throwsException{StringmerchantId=\StringmerchantPwd=\

StringoldOrderNo=\

StringoldOrderReqNo=\StringrefundReqNo=\StringrefundReqDate=\StringtransAmt=\Stringchannel=\

StringledgerDetail=\

StringBuildersb=newStringBuilder();//组装mac加密明文串sb.append(\

sb.append(\sb.append(\

sb.append(\sb.append(\sb.append(\sb.append(\

sb.append(\sb.append(\此处是商户的key

Stringmac=CryptTool.md5Digest(sb.toString());//进行md5加密(商户自己封装MD5加密工具类,此处只提供参考)

Mapparam=newHashMap();//组装请求参数

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);

//创立信任证书CloseableHttpClienthttpClient=createSSLClientDefault();HttpPosthttpPost=null;

CloseableHttpResponseresponse=null;try{

httpPost=newHttpPost(\nd\

ListparamList=newArrayList();for(Stringkey:param.keySet()){paramList.add(newBasicNameValuePair(key,param.get(key)));}

httpPost.setEntity(newUrlEncodedFormEntity(paramList,Consts.UTF_8));

httpPost.setConfig(RequestConfig.custom().setConnectTimeout(30000).setSocketTimeout(30000).build());

response=httpClient.execute(httpPost);HttpEntityentity=response.getEntity();

intstatusCode=response.getStatusLine().getStatusCode();

if(HttpStatus.SC_OK==statusCode)//假使响应码是200System.out.println(EntityUtils.toString(entity));}finally{

if(response!=null){response.close();}

if(httpPost!=null){httpPost.releaseConnection();}

httpClient.close();}}}//创立链接publicstaticCloseableHttpClientcreateSSLClientDefault()throwsException{

SSLContextsslContext=newSSLContextBuilder().loadTrustMaterial(null,newAllTrustStrategy()).build();

SSLConnectionSocketFactorysslSf=newSSLConnectionSocketFactory(sslContext);returnHttpClients.custom().setSSLSocketFactory(sslSf).build();}//加载证书privatestaticclassAllTrustStrategyimplementsTrustStrategy{

publicbooleanisTrusted(X509Certificate[]x509Certificates,Strings)throwsCertificateException{returntrue;}}}

2.3.8错误码

错误码-309-3011002BE100002

描述

校验商户调用密码出错校验商户MAC校验域出错商户未配置密钥信息受理机构代码为空

备注

BE110028BE110062BE199999BE300000BE300006BE300007BE300012BE300013BE300018BE301001BE301007

分账信息有误

没有找到符合条件的记录。请求参数有误商户不存在

受理机构未配置此交易权限商户未配置此交易权限分账金额总和不等于订单总金额商户IP验证异常订单不支持部分扣款订单金额出现异常,交易失败不支持批量支付订单的退款,退款失败

原订单不存在

具体的参数错误,在描述中有表达

原支付机构不支持退款

商户没有给定渠道的普通退款权限

原订单支付机构不支持部分退款退款金额不符合要求

BE301008订单的业务类型不支持退款,退款失败

BE301009BE301010BE301011BE999999

订单状态不为成功,退款失败退款订单受理中,退款失败订单已退款或冲正,退款失败系统繁忙,请稍后再试

系统原因,联系技术支协查

2.4冲正2.4.1接口描述

接口名称接口描述支付交易冲正接口通过调用退款接口向翼支付网关平台接口类型数据编码接口提供者接口使用者

发出冲正请求完成冲正。HTTPSUTF-8翼支付网关平台商户2.4.2接口地址

生产地址/reverse/reverse2.4.3接口参数

属性merchantId含义类型长度20必填M备注由翼支付网关平台统一分派给各接入商户商户代码nsubMerchantId商户子代码ans20O商户子代码如没有则填空merchantPwd商户调用密码an20M商户执行时需填入相应密码oldOrderNo原扣款订单号an30M原扣款成功的订单号oldOrderReqNo原订单请求支付流水号an30M原扣款成功的请求支付流水号refundReqNo退款流水号an30M该流水在商户处必需是唯一的,而且每次发起退款时,都必需是唯一的refundReqDate退款请求日期transAmt冲正金额n12M单位为分,必需为原订单金额channel渠道n5M01:WEB02:WAP04:语音05:客户端macMac校验域

an32Mmd5摘要n14MyyyyMMDD2.4.4接口响应

属性successresulterrorCodeerrorMsg含义是否成功调用返回值错误码错误描述类型booleanansansans长度必填MOOOtrue:成功false:失败预留字段备注1001010当success为true时,为null,当success为false时,为错误码当success为true时,为null,当success为false时,为错误描述2.4.5响应例如

请求例如

oldOrderReqNo=20230713093607000001&oldOrderNo=20230713093607&&mac=880D9E9DE657E3C351697D3B6CFE5626&merchantId=043101180050000&transAmt=1&channel=01&refundReqNo=r20230713093607000001&refundReqDate=20230708&merchantPwd=123456

响应例如成功

{\。\失败

{\没有找到符合条件的记录。\

2.4.6接口说明

1.商户要保证冲正流水号的唯一性。

2.冲正与退款接口不同在于,冲正接口对于除成功状态外的交易,可以使交易作废。当交易

已经成功时,冲正接口会申请退款。冲正接口的调用时间仅限于原交易发生的当天,退款不受此限制。

3.MAC校验,保证了交易信息到翼支付网关平台的完整性,参与MAC运算的字符及其顺序

如下:a.

MERCHANTID=123456789

importorg.apache.http.Consts;importorg.apache.http.HttpEntity;importorg.apache.http.HttpStatus;

importorg.apache.http.NameValuePair;

importorg.apache.http.client.config.RequestConfig;

importorg.apache.http.client.entity.UrlEncodedFormEntity;importorg.apache.http.client.methods.CloseableHttpResponse;importorg.apache.http.client.methods.HttpPost;

importorg.apache.http.impl.client.CloseableHttpClient;importorg.apache.http.impl.client.HttpClients;

importorg.apache.http.message.BasicNameValuePair;importorg.apache.http.util.EntityUtils;

importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;

publicclassTestClient{

publicstaticvoidmain(String[]args)throwsException{StringmerchantId=\

StringmerchantPwd=\

StringoldOrderNo=\

StringoldOrderReqNo=\StringrefundReqNo=\StringrefundReqDate=\StringtransAmt=\Stringchannel=\

StringBuildersb=newStringBuilder();//组装mac加密明文串sb.append(\

sb.append(\sb.append(\

sb.append(\sb.append(\sb.append(\sb.append(\

sb.append(\此处是商户的key

Stringmac=CryptTool.md5Digest(sb.toString());//进行md5加密(商户自己封装MD5加密工具类,此处只提供参考)

Mapparam=newHashMap();//组装请求参数

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(\mac);

CloseableHttpClienthttpClient=HttpClients.createDefault();HttpPosthttpPost=null;

CloseableHttpResponseresponse=null;try{

httpPost=newHttpPost(\ListparamList=newArrayList();for(Stringkey:param.keySet()){paramList.add(newBasicNameValuePair(key,param.get(key)));}

httpPost.setEntity(newUrlEncodedFormEntity(paramList,Consts.UTF_8));

httpPost.setConfig(RequestConfig.custom().setConnectTimeout(30000).setSocketT

imeout(30000).build());

response=httpClient.execute(httpPost);HttpEntityentity=response.getEntity();

intstatusCode=response.getStatusLine().getStatusCode();if(HttpStatus.SC_OK==statusCode)//假使响应码是200System.out.println(EntityUtils.toString(entity));}finally{

if(response!=null){response.close();}

if(httpPost!=null){httpPost.releaseConnection();}

httpClient.close();}}}

2.4.8错误码

错误码-309-3011002BE100002BE110028BE110062BE199999BE300000BE300006BE300007BE300012

描述

校验商户调用密码出错校验商户MAC校验域出错商户未配置密钥信息受理机构代码为空分账信息有误

没有找到符合条件的记录。请求参数有误商户不存在

受理机构未配置此交易权限商户未配置此交易权限分账金额总和不等于订单总金额

原订单不存在

具体的参数错误,在描述中有表达

原支付机构不支持退款

商户没有给定渠道的普通退款权限

备注

BE300013BE300018BE301001BE301007

商户IP验证异常订单不支持部分扣款订单金额出现异常,交易失败不支持批量支付订单的退款,退款失败

原订单支付机构不支持部分退款退款金额不符合要求

BE301008订单的业务类型不支持退款,退款失败

BE301009BE301010BE301011BE301012BE301013BE301014BE999999

订单状态不为成功,退款失败退款订单受理中,退款失败订单已退款或冲正,退款失败订单不为未退款,冲正失败订单状态为作废,冲正失败原订单不为当天订单,冲正失败系统繁忙,请稍后再试

系统原因,联系技术支协查

2.5退款2.5.1接口描述

接口名称接口描述接口类型数据编码接口提供者接口使用者支付交易普通退款接口通过调用退款接口向翼支付网关平台发出退款请求完成退款。WebServiceUTF-8翼支付网关平台商户

2.5.2接口地址

生产地址/services/refundV2?wsdl

2.5.3接口参数

属性commCodesubCommCodecommPwdoldOrderIdoldOrderPayId含义商户代码商户子代码商户调用密码原扣款订单号原订单请求支付流水号退款流水号类型nansananan长度2020203030必填MOMMM备注由翼支付网关平台统一分派给各接入商户商户子代码如没有则填空商户执行时需填入相应密码原扣款成功的订单号原扣款成功的请求支付流水号orderRefundIdan30MtransamtreqTimemac

订单交n易金额交易请n求时间Mac校an验域121432MMM该流水在商户处必需是唯一的,而且每次发起退款时,都必需是唯一的单位为分yyyyMMDDhhmmssmd5摘要2.5.4接口响应

属性errorCode含义错误码类型ans长度10O必填备注当success为false时取此值,为true时,errorCode为0000,

表示退款成功2.5.5响应例如

1.失败:{\2.成功:{\

2.5.6接口说明

9.商户要保证退款流水号的唯一性。

10.在商户提交退款时,防止屡屡提交同一笔退款。

11.接口方式采用webservices方式,key由翼支付网关平台分派给各商户。

12.MAC校验,保证了交易信息到翼支付网关平台的完整性,参与MAC运算的字符及其

顺序如下:

13.COMMCODE=123456789importspace.QName;

importmons.util.CryptTool;

publicclassWSTestClient{

publicstaticvoidmain(String[]args)throwsException{

Stringurl=\StringcommCode=\StringsubCommCode=\StringcommPwd=\

StringoldOrderId=\StringoldOrderPayId=\StringorderRefundId=\StringtransAmt=\

StringreqTime=\

//组装mac加密明文串

StringBuffersb=newStringBuffer();Stringkey=\

sb.append(\sb.append(\sb.append(\sb.append(\sb.append(\

sb.append(\此处是商户的key,用于MAC校验

Stringmac=CryptTool.md5Digest(sb.toString());//进行md5加密(商户自己封装MD5加密工具类,此处只提供参考)

String[]param={commCode,subCommCode,commPwd,oldOrderId,oldOrderPayId,orderRefundId,transAmt,reqTime,mac};

//WebService请求的入参,以数组形式给出,顺序排列需与接口文档一致

//例如使用ApacheAxis进行webservice请求,仅供参考,商户可以使用其它形式来发起webservice请求

Serviceservice=newService();Callcall=(Call)service.createCall();

call.setTargetEndpointAddress(url);//webservice的地址call.setOperationName(newQName(url,\//调用的方法Stringresult=(String)call.invoke(param);System.out.println(\响应结果:\}}

2.6分账退款2.6.1接口描述

接口名称接口描述接口类型数据编码接口提供者接口使用者

支付交易分账退款接口通过调用退款接口向翼支付网关平台发出退款请求完成退款。WebServiceUTF-8翼支付网关平台商户2.6.2接口地址

生产地址/services/divDetailsRefund?wsdl

2.6.3接口参数

属性commCodesubCommCode含义商户代码商户子代码商户调用密码原扣款订单号原订单请求支付流水号退款流水号订单交易金额交易请求时间分账明细类型nans长度2020必填MO备注由翼支付网关平台统一分派给各接入商户商户子代码如没有则填空商户执行时需填入相应密码commPwdan20MoldOrderIdan30M原扣款成功的订单号oldOrderPayIdan30M原扣款成功的请求支付流水号orderRefundIdan30Mtransamtn12M该流水在商户处必需是唯一的,而且每次发起退款时,都必需是唯一的单位为分yyyyMMDDhhmmssreqTimen14MdivDetai

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论