本文提供了招商银行无前置机版本配置指南及常见问题解决方案。包括签名失败、私钥格式错误、业务模式编号缺失、查询余额失败、交易代码错误、密钥不匹配、IP未在白名单中等问题的具体原因和详细解决步骤。同时,还介绍了付款接口的选择配置,包括对公、对私及代发工资的接口选择及注意事项。
招行无前置机版本配置指导见:https://vip.kingdee.com/article/305397909754323712?productLineId=8
以下为测试环境常见问题
1、交互失败,签名失败,读取私钥失败(招行支持国密之后不再有该问题)
报错样例:[签名失败读取私钥失败java.security.InvalidKeyException: IOException : algid parse error, not a sequence]
原因:银企安装路径下 ebservice705/ebservice/configs/banks/CMB_CMP/下的rsa.txt文件内容格式存在问题
解决:要么自行与银行确认该rsa私钥内容,要么取附件中的rsa私钥文件直接替换(测试环境的几个密钥文件是固定的)
3、XXXXXXXXXX‘业务模式编号’为空或者有多个,请联系银企处理
原因:没有维护银行账户附加属性中的某种支付接口的业务模式编号,就去银行查,银行返回了空或者多个,银企平台就报了该错
解决:将银企平台-业务管理-帐号管理-招商银行 -无前置机版本 - 附加属性 - 所有的业务模式编号 维护正确,测试环境可都维护成 00002,正式环境需与银行确认之后维护。
日志举例:
4、如何才能调用招行查询账户业务模式编号接口DCLISMOD
解决:将银企平台-业务管理-帐号管理-招商银行 -无前置机版本 - 附加属性 - 所有的业务模式编号都维护成空。这样再发起付款就会调银行查询业务模式编号接口查
5、查询余额失败(招行支持国密之后不再有该问题)
报错1:报错堆栈中出现 lllegal key size or default parameters;
报错2:
java.lang.NoClassDefFoundError: Could not initialize class javax.crypto.SunJCE_b
at javax.crypto.Cipher.getInstance(DashoA13*..)
at javax.crypto.Cipher.getInstance(DashoA13*..)
at com.kingdee.ebservice.cmb.cmp.service.util.SignWithAES.encryptAES256(SignWithAES.java:45)
at com.kingdee.ebservice.cmb.cmp.service.util.SignWithAES.encryptAES256Str(SignWithAES.java:34)
均可参考解决方案1:
可能会存在环境问题,重新更换这两个文件(见附件jce_policy/jce_policy-6.zip/中的两个文件),同样的文件位置位银企安装路径下\jdk\jre\lib\security
方案1没解决的话再尝试下方案2:
解决方案2(更换银企平台jdk为1.8):
1)、关闭银企平台服务
2)、下载jdk1.8(此处为windows系统的jdk,如果客户是linux系统需要另外下载,云之家云盘获取:https://pan.yunzhijia.com/s/MTI1NjMxMSwwNDYy#/ )
3)、将jdk1.8的压缩包解压到银企平台安装路径ebservice705/下,将原来的jdk目录重命名(如:jdk_1.6bak),然后将jdk1.8的根目录名重命名成jdk
4)、下载jdk1.8版本的local_policy.jar和US_export_policy.jar,见附件jce_policy/jce_policy-8.zip/中的两个文件里面。将这两个jar包放到ebservice705/jdk/jre/lib/security/下
5)、重启银企服务
6、业务做 对私,普通支付,走到代发其他NTAGCAPY 接口,银行返回报错: 未找到合作方协议
原因:银行反馈 我们传的交易代码为BYSA 代表 代发工资,未签该协议,需要改成代发其他交易代码 BYBK。
解决:在银行业务配置-招行无前置机版本-代发其他NTAGCAPY交易代码编号处修改为BYBK 即可
7、银行返回:FBCNO26-字符串类型字段bbknbr长度不合法
该帐号的地区码不正确,查询地址:http://web20.kingdee.com/eb_cloud_cnaps/cmbcode
8、银行返回:DCKY016-解密失败,如您之前交易正常,请确认密钥是否有变更。
这里看起来像是我们和银行两边密钥不匹配导致解密失败,实际原因不一定,当前该报错多次最后原因是银行提供的UID与客户在银企前置机配置的UID不一致导致,修改一致之后交互成功。
9、银行返回:-查询帐号对应的币种不能为空
招行账户地区码不对,查询参考:http://web20.kingdee.com/eb_cloud_cnaps/cmbcode
11、查询余额银行返回报错:您的IP未定义在白名单中
银企平台服务器出口ip未定义在银行服务器的白名单中,找银行技术咨询解决
---------------下面开始是常见的该版本银行插件的业务问题---------------
招行无前置机版的 付款接口选择配置
默认情况下:
1、业务做 对公 ,普通支付: 走 企银支付单笔经办(BB1PAYOP)接口,该接口中不用传收款方城市或地区码之类的字段
2、业务做 对私,普通支付:走 代发其他经办NTAGCAPY 接口,该接口中在跨行的时候需要传收款方银行名称和城市
3、业务做 代发工资:走 代发工资经办NTAGCSAL接口,该接口中在跨行的时候需要传收款方银行名称和城市
星空付款单截图举例:
jce_policy.zip(13.17KB)
招行无前置机版本三个密钥文件.zip(2.46KB)