恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
建行支付退款-外联平台退款
首页
资讯中心
/
建行支付退款-外联平台退款
建行支付退款-外联平台退款
发布时间:2026/9/5 15:00:36
记录建行外联平台退款操作ps: 这是我对接最复杂繁琐的一个接口需要先安装行方提供的外联平台客户端才可以调用退款接口小白的我安装过程中一堆的坑网上搜了个遍没有找到一个可以参考的过程在此做个记录。主要分为以下几步和行方对接沟通好一定要(一定要多问行方对接人员不要自己去猜不懂就问)去建行商户平台创建操作员账户后面退款操作需要用到准备操作员-商户证书这里这个证书是个最大的坑安装建行客户端具体退款操作先说第一点沟通一定要多问血泪史行方从开始对接退款给我的文档一共给了三个版本。上图经过测试对没错我把三个版本文档给的东西都试了最后一个版本可行当时第一个版本里面提示安装要windows server 2003环境这东西我上阿里云看了都找不到了阿里镜像说不提供2003的淘汰了微软不维护2003版本了。第一个版本里面讲的是用网盾的方式(百度过说要一直放在前置机上不现实)这玩意儿一般都在公司财务那里也不好随便拿来用。第二个版本文档和第三个版本文档接近主要用第三个版本文档选择的安装方式是安装在linux服务器。内容如下解压文件方式先解压part1会自动解压part2(是两个压缩分卷)解压完可以得到如下目录然后主要根据如下三个文档提示操作开始客户端安装操作1、创建操作员账号登录主商户号进入“服务管理”-》“操作员管理”点击新增依次填写如下信息因为我们需求是单笔退款即可所以我勾选的是单笔退款根据需求来选择权限添加完账户后开始下载证书。2、准备证书注证书只能下载一次请妥善保存没找到可联系行方重置证书重新下载在建行商户服务平台下载E路护航工具此工具用于安装证书文件运行E路护航工具点击 证书更新-》商户证书下载第一步 依次填写相关字段点击提交进行到第二步的时候选择加密导出注操作员的客户号默认格式是 商户号-操作员号手机号码填写新增操作员时填写的手机号执行完后会出现如下画面点击进入商户服务平台会跳转到设置密码的页面第二次进入商户平台会提示选择证书点击确定即可 以操作员账户登录商户平台如何下载到本地打开ie浏览器点击internet选项点击内容-证书证书列表点击导出点击下一步选择“是导出私钥继续下一步”到设置密码这里填写证书密码加密方式默认即可填写的密码记得备份记录然后下一步填写文件名称选择证书保存路径继续下一步点击完成即可导出证书到本地目录3、将证书放在解压好的文件的cert目录下4、上传整个解压文件到linux服务器根据文档“网银外联平台安装手册”来安装建行外联平台客户端打开bin目录运行外联平台客户端启动脚本sh startService.sh,依次输入参数看到如图所示即客户端安装启动完成PS补充:启动乱码可尝试修改服务器系统字符集编码vim /etc/locale.conf替换LANGen_US.UTF-8为LANGzh_cn.GB18030source /etc/locale.conf客户号建行给的商户号操作员号上面新建的操作员号 格式商户号-操作员号交易密码支付密码证书密码导出证书时填写的密码端口号连接服务的端口是否使用专线默认选择N就可以----------------------------------------------------------------------------------------补充内容常见报错0130Z1101018ps客户号不存在或客户没有开通外联平台业务可能原因1、创建好操作员账号必须登录一次可以登录表示有下载登录证书2、操作员客户号格式是 商户号-操作员号3、证书必须用操作员的证书 操作员证书和商户证书是两个需要单独下载安装完外联平台客户端后即可开始退款接口的调用啦具体退款操作参考说明文档中的外联平台商户开发接口V40.chm和网银外联平台用户手册_V5.1_20180511.pdf具体退款封装的工具类importcom.baosoft.utility.tools.Conv;importcom.snsoft.ymbank.schedule.services.BrBase;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.PrintWriter;importjava.net.Socket;importjava.text.SimpleDateFormat;importjava.util.Date;/** * author Ljx * date 2021/7/6 18:09 * description 建行外联平台退款工具类 */publicclassWailianSocketUtilextendsBrBase{privatefinalstaticStringipAddress;//公网地址//private final static String ipAddress ;//内网地址privatefinalstaticintnPort;//部署的外联平台客户端端口privatestaticStringsendSocketRequest(StringipAddress,intnPort,StringsRequest)throwsIOException{Socketsocketnull;socketnewSocket(ipAddress,nPort);BufferedReaderinsnewBufferedReader(newInputStreamReader(socket.getInputStream(),GB18030));PrintWriteroutsnewPrintWriter(socket.getOutputStream());outs.print(sRequest);outs.flush();socket.shutdownOutput();StringsLinenull;StringBuffersbnewStringBuffer();while((sLineins.readLine())!null){sb.append(sLine);}ins.close();outs.close();socket.close();returnsb.toString();}/** * return * date: 2021/7/7 13:48 * params userId 操作员号 * params password 操作员支付密码 * params money 退款金额 * params orderId 订单号 * description: */publicstaticStringpayByCcbRefund(StringuserId,Stringpassword,doublemoney,StringorderId){/*if (StringUtils.isEmpty(userId)) { throw new Exception(退款参数操作员号不能为空!!!); } if (StringUtils.isEmpty(password)) { throw new Exception(退款参数操作员支付密码不能为空!!!); } if (StringUtils.isEmpty(money)) { throw new Exception(退款参数退款金额不能为空!!!); } if (StringUtils.isEmpty(orderId)) { throw new Exception(退款参数订单号不能为空!!!); }*///生成序列码SimpleDateFormatsdfnewSimpleDateFormat(yyyyMMddHHmmss);StringREQUEST_SNsdf.format(newDate());//参数对象StringBuffersbnewStringBuffer();sb.append(?xml version\1.0\ encoding\GB2312\ standalone\yes\ ?);sb.append(TX);sb.append(REQUEST_SNREQUEST_SN/REQUEST_SN);//请求序列码sb.append(CUST_ID商户号/CUST_ID);//商户号sb.append(USER_IDuserId/USER_ID);//操作员号sb.append(PASSWORDpassword/PASSWORD);//操作员支付密码sb.append(TX_CODE5W1004/TX_CODE);//交易请求码sb.append(LANGUAGECN/LANGUAGE);//语言sb.append(TX_INFO);sb.append(MONEYmoney/MONEY);//退款金额sb.append(ORDERorderId/ORDER);//退款订单号sb.append(/TX_INFO);sb.append(/TX);StringsRequestsb.toString();logger.info(退款请求报文:sRequest);Stringresultnull;try{resultsendSocketRequest(ipAddress,nPort,sRequest);}catch(IOExceptione){logger.error(e.getMessage());e.printStackTrace();}System.out.println(result);returnresult;}/** * return * date: 2021/7/7 13:48 * description:退款查询接口 */publicstaticStringpayByCcbRefundQuery(StringuserId,Stringpassword,StringorderId,Stringkind){//生成序列码//SimpleDateFormat sdf new SimpleDateFormat(yyyyMMddHHmmss);//String REQUEST_SN sdf.format(new Date());StringREQUEST_SNConv.toStr(System.currentTimeMillis());//参数对象StringBuffersbnewStringBuffer();sb.append(?xml version\1.0\ encoding\GB2312\ standalone\yes\ ?);sb.append(TX);sb.append(REQUEST_SNREQUEST_SN/REQUEST_SN);//请求序列码sb.append(CUST_ID商户号/CUST_ID);//商户号sb.append(USER_IDuserId/USER_ID);//操作员号sb.append(PASSWORDpassword/PASSWORD);//操作员支付密码sb.append(TX_CODE5W1003/TX_CODE);//交易请求码sb.append(LANGUAGECN/LANGUAGE);//语言sb.append(TX_INFO);sb.append(KINDkind/KIND);//0:未结流水,1:已结流水sb.append(ORDERorderId/ORDER);//退款订单号sb.append(NORDERBY2/NORDERBY);//排序 1:交易日期,2:订单号sb.append(PAGE1/PAGE);//当前页次sb.append(STATUS3/STATUS);//流水状态 0:交易失败,1:交易成功,2:待银行确认(针对未结流水查询);3:全部sb.append(/TX_INFO);sb.append(/TX);StringsRequestsb.toString();logger.info(退款流水查询请求报文:sRequest);Stringresultnull;try{resultsendSocketRequest(ipAddress,nPort,sRequest);}catch(IOExceptione){logger.error(e.getMessage());e.printStackTrace();}System.out.println(result);returnresult;}/** * return * date: 2021/7/7 13:48 * description: 支付流水查询 */publicstaticStringpayByCcbQuery(StringuserId,Stringpassword,StringorderId,Stringkind){//生成序列码SimpleDateFormatsdfnewSimpleDateFormat(yyyyMMddHHmmss);StringREQUEST_SNsdf.format(newDate());//参数对象StringBuffersbnewStringBuffer();sb.append(?xml version\1.0\ encoding\GB2312\ standalone\yes\ ?);sb.append(TX);sb.append(REQUEST_SNREQUEST_SN/REQUEST_SN);//请求序列码sb.append(CUST_ID商户号/CUST_ID);//商户号sb.append(USER_IDuserId/USER_ID);//操作员号sb.append(PASSWORDpassword/PASSWORD);//操作员支付密码sb.append(TX_CODE5W1002/TX_CODE);//交易请求码sb.append(LANGUAGECN/LANGUAGE);//语言sb.append(TX_INFO);sb.append(KINDkind/KIND);//0:未结流水,1:已结流水sb.append(ORDERorderId/ORDER);//退款订单号sb.append(DEXCEL1/DEXCEL);//DEXCELsb.append(NORDERBY2/NORDERBY);//排序 1:交易日期,2:订单号sb.append(PAGE1/PAGE);//当前页次sb.append(STATUS3/STATUS);//流水状态 0:交易失败,1:交易成功,2:待银行确认(针对未结流水查询);3:全部sb.append(/TX_INFO);sb.append(/TX);StringsRequestsb.toString();logger.info(支付流水查询请求报文:sRequest);Stringresultnull;try{resultsendSocketRequest(ipAddress,nPort,sRequest);}catch(IOExceptione){logger.error(e.getMessage());e.printStackTrace();}System.out.println(result);returnresult;}}