银企直联转账和企业通过网银转账一样,都会有手续费和退票问题,所以在实际对接中,这两个问题是不可避免,必须要处理的业务问题。

2019-05-14补充 转账时手续费受多种因素影响,实际生产环境中,出现了仅仅因为判断时,因为系统中收款方银行开户地未填写城市名,导致判断时,错误的判断为跨行异地,即LOCAL=N,导致手续费由1元直接提升为5元

对于手续费,企业通过银企直联进行转账操作时,正常来说每笔操作都会产生一笔手续费,这和企业通过网银操作时并无区别,不过一般情况下,为了吸引企业将资金留在本行,可能银行会对本行内转账进行免费,但跨行转账涉及人行及其它银行,这部分费用是不可避免的。而既然产生手续费,那对于企业来说就是一笔额外的开支,企业财务上肯定需要有这些手续费的对账信息,所以我们需要知道如何查询手续费。

你可以通过银企直联SDK下的BEDA.CIB来获取兴业银行对应的银企直联SDK,在兴业银行银企直联的API中,你只能通过通过3.3.6 账户余额和交易流水分页查询这个接口来查询手续费,请求代码示例如下,你可以通过此处来查看完整的代码,注意此处采用了查询接口2.0版本:

            string tid = string.Format("{0:yyyyMMddHHmmss}_3.3.6", DateTime.Now);var rq = GetRequest<FOXRQ<V1_SCUSTSTMTTRNRQ, V1_SCUSTSTMTTRNRS>>();rq.SECURITIES_MSGSRQV1 = new V1_SCUSTSTMTTRNRQ{SCUSTSTMTTRNRQ = new SCUSTSTMTTRNRQ{TRNUID = tid,SCUSTSTMTRQ = new SCUSTSTMTTRN_SCUSTSTMTRQ{VERSION = "2.0",ACCTFROM = new ACCTFROM{ACCTID = mainAccountId},INCTRAN = new INCTRAN{DTEND = DateTime.Now.AddDays(-2),DTSTART = DateTime.Now.AddDays(-3),TRNTYPE = 2,},SELTYPE = 1}}};var rs = client.Execute(rq);Console.WriteLine(rs.ResponseContent);

接口返回Xml报文如下(虽说是测试环境,但可能存在真实的银行卡信息,所以对应部分信息已脱敏,且删除了大部分记录,只保留少量交易和手续费记录):

<FOX><SIGNONMSGSRSV1><SONRS><STATUS><CODE>0</CODE><SEVERITY>INFO</SEVERITY></STATUS><DTSERVER>2019-03-18 10:38:44</DTSERVER></SONRS></SIGNONMSGSRSV1><SECURITIES_MSGSRSV1><SCUSTSTMTTRNRS><TRNUID>20190318093928_3.3.6</TRNUID><STATUS><CODE>0</CODE><SEVERITY>INFO</SEVERITY></STATUS><CLTCOOKIE>123</CLTCOOKIE><SCUSTSTMTRS><CURDEF>RMB</CURDEF><ACCTFROM><ACCTID>117010100100000177</ACCTID></ACCTFROM><TRANLIST MORE="N"><DTSTART>2019-03-15</DTSTART><DTEND>2019-03-16</DTEND><STMTTRN><SRVRTID>99990076</SRVRTID><TRNTYPE>DEBIT</TRNTYPE><TRNCODE>227</TRNCODE><DTACCT>2019-03-16T14:48:59</DTACCT><TRNAMT>0.60</TRNAMT><BALAMT>111538864425.34</BALAMT><CURRENCY>RMB</CURRENCY><MEMO></MEMO><CORRELATE_ACCTID></CORRELATE_ACCTID><CORRELATE_NAME></CORRELATE_NAME><CHEQUENUM></CHEQUENUM><BILLTYPE></BILLTYPE><BILLNUMBER></BILLNUMBER><CORRELATE_BANKNAME></CORRELATE_BANKNAME><CORRELATE_BANKCODE></CORRELATE_BANKCODE><BUSINESSTYPE>银行扣款</BUSINESSTYPE><ATTACHINFO>2019031600025392082000001</ATTACHINFO><HXJYLSBH>H00100201903160004624317620000</HXJYLSBH><SUMMNAME>收费</SUMMNAME><SUMMDESC>收费</SUMMDESC><PURPOSE>企业网银转账手续费;</PURPOSE><BRANCHNO>11701</BRANCHNO><CHANNELCODE>204</CHANNELCODE><CASHFLAG>1</CASHFLAG><CBBZ>0</CBBZ><BCZBZ>0</BCZBZ><ROUTECHOICE></ROUTECHOICE><BIZREF></BIZREF><TEXT1></TEXT1><TEXT2></TEXT2><TEXT3></TEXT3></STMTTRN><STMTTRN><SRVRTID>99990076</SRVRTID><TRNTYPE>DEBIT</TRNTYPE><TRNCODE>231</TRNCODE><DTACCT>2019-03-16T14:48:59</DTACCT><TRNAMT>3000.00</TRNAMT><BALAMT>111538861425.34</BALAMT><CURRENCY>RMB</CURRENCY><MEMO></MEMO><CORRELATE_ACCTID></CORRELATE_ACCTID><CORRELATE_NAME>薛</CORRELATE_NAME><CHEQUENUM>110334936</CHEQUENUM><BILLTYPE></BILLTYPE><BILLNUMBER></BILLNUMBER><CORRELATE_BANKNAME>招商银行</CORRELATE_BANKNAME><CORRELATE_BANKCODE></CORRELATE_BANKCODE><BUSINESSTYPE>网上汇款</BUSINESSTYPE><ATTACHINFO>2019031600025392083000001</ATTACHINFO><HXJYLSBH>H00100201903160004624317620000</HXJYLSBH><SUMMNAME>汇款</SUMMNAME><SUMMDESC>网上汇款</SUMMDESC><PURPOSE>P201903040000016--报销-TMS系统-物流预支(EBP-20190304-0004)</PURPOSE><BRANCHNO>11701</BRANCHNO><CHANNELCODE>204</CHANNELCODE><CASHFLAG>1</CASHFLAG><CBBZ>0</CBBZ><BCZBZ>0</BCZBZ><ROUTECHOICE>4</ROUTECHOICE><BIZREF></BIZREF><TEXT1></TEXT1><TEXT2></TEXT2><TEXT3></TEXT3></STMTTRN><STMTTRN><SRVRTID>99990078</SRVRTID><TRNTYPE>DEBIT</TRNTYPE><TRNCODE>227</TRNCODE><DTACCT>2019-03-16T14:50:33</DTACCT><TRNAMT>4.00</TRNAMT><BALAMT>111538861120.73</BALAMT><CURRENCY>RMB</CURRENCY><MEMO></MEMO><CORRELATE_ACCTID></CORRELATE_ACCTID><CORRELATE_NAME></CORRELATE_NAME><CHEQUENUM></CHEQUENUM><BILLTYPE></BILLTYPE><BILLNUMBER></BILLNUMBER><CORRELATE_BANKNAME></CORRELATE_BANKNAME><CORRELATE_BANKCODE></CORRELATE_BANKCODE><BUSINESSTYPE>银行扣款</BUSINESSTYPE><ATTACHINFO>2019031600025392086000001</ATTACHINFO><HXJYLSBH>H00100201903160004624189420000</HXJYLSBH><SUMMNAME>收费</SUMMNAME><SUMMDESC>收费</SUMMDESC><PURPOSE>企业网银转账手续费;</PURPOSE><BRANCHNO>11701</BRANCHNO><CHANNELCODE>204</CHANNELCODE><CASHFLAG>1</CASHFLAG><CBBZ>0</CBBZ><BCZBZ>0</BCZBZ><ROUTECHOICE></ROUTECHOICE><BIZREF></BIZREF><TEXT1></TEXT1><TEXT2></TEXT2><TEXT3></TEXT3></STMTTRN><STMTTRN><SRVRTID>99990078</SRVRTID><TRNTYPE>DEBIT</TRNTYPE><TRNCODE>231</TRNCODE><DTACCT>2019-03-16T14:50:33</DTACCT><TRNAMT>0.01</TRNAMT><BALAMT>111538861120.72</BALAMT><CURRENCY>RMB</CURRENCY><MEMO></MEMO><CORRELATE_ACCTID></CORRELATE_ACCTID><CORRELATE_NAME>马</CORRELATE_NAME><CHEQUENUM>110334938</CHEQUENUM><BILLTYPE></BILLTYPE><BILLNUMBER></BILLNUMBER><CORRELATE_BANKNAME>建设银行</CORRELATE_BANKNAME><CORRELATE_BANKCODE></CORRELATE_BANKCODE><BUSINESSTYPE>网上汇款</BUSINESSTYPE><ATTACHINFO>2019031600025392087000001</ATTACHINFO><HXJYLSBH>H00100201903160004624189420000</HXJYLSBH><SUMMNAME>汇款</SUMMNAME><SUMMDESC>网上汇款</SUMMDESC><PURPOSE>P201903040000009--报销</PURPOSE><BRANCHNO>11701</BRANCHNO><CHANNELCODE>204</CHANNELCODE><CASHFLAG>1</CASHFLAG><CBBZ>0</CBBZ><BCZBZ>0</BCZBZ><ROUTECHOICE>4</ROUTECHOICE><BIZREF></BIZREF><TEXT1></TEXT1><TEXT2></TEXT2><TEXT3></TEXT3></STMTTRN></TRANLIST><LEDGERBAL><BALAMT>111540544183.22</BALAMT><DTASOF>2019-03-18</DTASOF></LEDGERBAL><AVAILBAL><BALAMT>111536518538.20</BALAMT><DTASOF>2019-03-18</DTASOF></AVAILBAL></SCUSTSTMTRS></SCUSTSTMTTRNRS></SECURITIES_MSGSRSV1>
</FOX>

在报文中,我们可以发现转账对应的流水记录中BUSINESSTYPE网上汇款,而其流水是紧邻转账记录,其BUSINESSTYPE银行扣款,当然仅凭此还不能判断哪条记录为对应手续费,但我们可以发现转账流水和手续费对应的SRVRTID是完全一样的,再细看包括其DTACCT交易时间也是完全一样,所以我们可以通过这两个字段来将结果进行分组。

rs.SECURITIES_MSGSRSV1.SCUSTSTMTTRNRS.SCUSTSTMTRS.TRANLIST
.List.GroupBy(t=>new {t.SRVRTID,t.DTACCT })

2019-03-19补充
测试时发现其实交易流水的HXJYLSBH和手续费的HXJYLSBH是完全一样的,所以也可以通过HXJYLSBH来进行分组

rs.SECURITIES_MSGSRSV1.SCUSTSTMTTRNRS.SCUSTSTMTRS.TRANLIST
.List.GroupBy(x => x.HXJYLSBH)

转账和其对应的手续费如何查询我们是已经知道了,但如何知道该笔汇款对应企业内部系统的哪条记录呢?兴业银行的API没提供专门的字段用于记录外部系统id,而是通过TRNUID来区分不同的交易记录,在兴业银行交易中标志一笔交易的唯一性字段为HXJYLSBH(核心交易流水编号),该字段只能通过3.3.6 账户余额和交易流水分页查询查询才能得到,而3.4.1 转账汇款指令提交3.4.2 查询转账交易状态只能获取交易是否成功,并不能获取HXJYLSBH,所以我们需要通过其它方式来间接的记录该笔交易在企业内部系统中的唯一性id,如上面报文所示,我们可以通过PURPOSE字段来间接的记录企业内部系统id,然后我们可以按照特定的规则来判断PURPOSE,以便达到两个系统内交易流水的映射关系。

当然,如果只是手续费,HXJYLSBH并不重要,该字段的用处是辅助判断退票如何关联转账交易。所谓退票,就是指跨行交易时,当银行将转账信息提交至人行,人行响应成功时,银行这边就会记录该笔交易状态为已成功PAYOUT,但实际此时人行只是接收信息成功,真正是否能交易成功,需要待人行将转账信息提交给目标银行,目标银行在处理之后,才会给出是否交易成功,如果账号信息之类有误,那么目标银行就会反馈交易失败,此时人行会再通知发起银行该笔交易失败,在兴业银行中,它不会去更新之前那笔状态为PAYOUT的交易记录,而是会产生一笔退票流水,所以我们的问题就是如何查询这笔退票流水。

在兴业银行某文档中有以下截图的一段内容,当然很可惜我没能拿到这份文档。

图中内容详细的描述了应当如何查询退票流水,因为同样是调用的是3.3.6 账户余额和交易流水分页查询接口,所以此处就不再罗列示例代码,请自行替换SELTYPE值为3进行查询。当然图中只是阐述了如何查询退票流水,以及如何去查询其对应的转账交易记录,并没有描述如何得知转账失败原因,因为测试环境中未能查询到退票记录,所以此处只能以另外一张截图示例:

通过截图,可以发现PURPOSE记录了退票原因,所以我们可以将该字段的内容持久化到企业内部系统中,用于展示转账失败原因。

最后,按兴业银行相关人员回馈,银行内部转账(即收款账户为兴业银行账户)时,都是实时返回,是不可能会出现退票现象的,但个人建议还是与跨行交易一视同仁,按都可能存在退票这种业务情况进行处理。

兴业银行银企直联如何查询转账支付后的手续费及退票流水相关推荐

  1. 兴业银行银企直联冲账查询及网银审核退回经办

    之前写过兴业银行银企直联应当如何查询手续费及退票,但事实上兴业银行还会产生冲账问题.所谓冲账,就是指支付信息错误,导致根本无法到达实际收款银行,这时候因为根本无法到达收款银行,所以也就不会有收款银行回 ...

  2. 兴业银行银企直联如何判断支付结果是否成功

    说实在的,写这篇博客完全是意料之外,毕竟封装SDK后,银行支付理论上讲就仅仅只是简单的调用加判断,但应用实际上生产后,居然发现支付失败会有多种原因,而不同的错误,其后续处理逻辑也不一样,所以这篇博客内 ...

  3. 兴业银行银企直联客户端

    兴业银行银企直联客户端是一款企业网上银行,并也是一种新的网上银行系统与企业的财务软件系统在线直接联接的接入方式,也就是说客户可以通过通用浏览器(如微软的IE浏览器)方式来进行直接接入,以此快速的来获取 ...

  4. 兴业银行银企直联对接记录及SDK

    年前因为业务需要,接触了兴业银行的银企直联,因为感兴趣,所以大致搜了下国内一些银行,发现目前银行银企直联模式新接入的用户都只有前置代理机这一途径,所以兴业银行也不例外. 可在此处查看兴业银行的接口文档 ...

  5. 兴业银行银企直联查转账手续费和退票流水(C#代码篇)

    前几天写了在兴业银行的银企直联中,如何查询手续费和退票流水,但没有完整的代码展示,所以这里再完整的提供下查询相关的代码.封装代码不涉及任何外部业务,如果你也正在接入兴业银行,且使用的开发语言是NET, ...

  6. 聊聊银企直联服务那些事

    背景 相关 wiki 定义. 银企直联是指集团企业在集团内部建立自己的资金管理系统,通过数据接口将内部资金管理系统与商业银行核心系统.网银或者现金管理平台实现联接.通过银企直联系统企业可实现实时帐户信 ...

  7. NC65 报销单使用银企直联网银支付后,银行的电子回执单的收款人开户行跟报销单的收款对象的开户行不一致

    NC65 报销单使用银企直联网银支付后,银行的电子回执单的收款人开户行跟报销单的收款对象的开户行不一致,如下图: 解决方案:检查供应商的银行账户对应的联行号是否跟开户行对应.如果不对应,则需要修改为对 ...

  8. 网银和银企直联的区别

    1.1网银 网银,简单地讲,就是银行在互联网上开展的各种业务,也就是银行客户利用个人计算机通过Internet获得银行的各项服务,银行利用专用的服务器提供各项在线服务.对银行,这种高效.全天候的服务能 ...

  9. 银企直联中的银行接口

    1.网银和银企直联的区别 1.1网银 网银,简单地讲,就是银行在互联网上开展的各种业务,也就是银行客户利用个人计算机通过Internet获得银行的各项服务,银行利用专用的服务器提供各项在线服务.对银行 ...

  10. SAP银企直联解决方案

    SAP 银企直联是一种新的网上银行系统与企业SAP 软件系统在线直接联接的接入方式,改进了传统会计中'银行存款'的核算. 一.传统会计中'银行存款'的核算及特点 在传统会计核算系统中,企业会计人员主要 ...

最新文章

  1. tcpdump抓包并保存到远程服务器
  2. “数学不行,干啥也不行!”骨灰级程序员:其实你们都是瞎努力
  3. TP 框架没有考虑完善的功能点:1、表达式查询不支持INSTR形式的查询
  4. stand up meeting 1/14/2016
  5. css【清除浮动】常用方法*********** ******* *****
  6. Pixhawk代码分析-启动代码及入口函数
  7. leetcode 752. Open the Lock | 752. 打开转盘锁(BFS)
  8. 【LeetCode-面试算法经典-Java实现】【002-Add Two Numbers (单链表表示的两个数相加)】...
  9. 【bzoj5452】[Hnoi2016]大数(莫队)
  10. mysql 变量定义和赋值_MySQL变量解析
  11. javascript学习之数组的使用二 forEach方法
  12. Maven 常用的命令
  13. Netlink 0008 --- 通信
  14. celeste第二章_蔚蓝山Celeste全成就指南_蔚蓝山Celeste全成就获得方法_游戏堡
  15. 最常用的Windows快捷键大全【高手都是如何玩电脑的】(不断更新中……)
  16. 100个最励志最科学的无敌成功法则
  17. windows软链接
  18. 漫谈京东(一)——自营手机类商品数据分析
  19. bootstrap btn 按钮颜色
  20. 《MATLAB 神经网络43个案例分析》:第33章 模糊神经网络的预测算法——嘉陵江水质评价

热门文章

  1. python查看qq撤回消息_QQ坦白说里匿名叫我还想逃?Python轻松查看匿名用户信息...
  2. 使用javaw在windows上部署jar包在后台运行,并关闭
  3. IR2103H桥驱动电路
  4. 5.6 深度卷积神经网络(AlexNet)
  5. 三分钟明白 Activity工作流 -- java运用
  6. 单片机音频谱曲软件_单片机谱曲软件讲解
  7. linux查找文件夹名称
  8. 计算机中英文打字文章,中英文混合打字文章
  9. html5常用的小控件,收藏了
  10. android horizontalscrollview顶部导航,带有居中效果的HorizontalScrollView使用说明