支付协议签约

Q1. 为什么接收到的通知报文中存在空格?

银行传输给商户的报文中如果存在“+”传输时会被替换成空格,这是正常情况。请商户接收到通知报文后,将空格替换为“+”,如下面的代码:

String reqData = (String) request.getParameter("RequestData"); 
reqData = reqData.replace(' ', '+');
Q2. 为什么对接支付测试时报“账户校验不通过,请确认账户信息及密码正确后重试或联系客服95555”?

测试卡片信息没有通过校验,请联系商户对应支持人员核对测试卡片信息。

Q3. 为什么对接支付测试时报“[身份证号]格式错误,请输入正确的身份证号!”?

身份证格式不对,js校验没有通过,请联系商户对应支持人员核对测试卡片信息。

Q4. 为什么对接支付测试时报“属性DrawPwd解密失败”或“密码解密失败!”?

密码解密失败,请核对密码键盘公钥以及正确集成了密码键盘sdk。

Q5. 为什么对接支付测试时报“您停留在页面太久没操作,请重新进入操作!”?

1、长时间未操作,会话超时

2、如果不是1的情况,请检查webview是否支持会话,可监控下url请求看是否有异常url请求

3、是否有跨url访问或者人为修改表单参数

4、是否有ip等网络变动

Q6. 使用一网通支付的用户如何登录招行手机银行?

用户在使用一网通支付成功后,可以在招行官网下载招行手机银行,登录时账号输入第一次支付时填写的预留手机号,密码随便输,点击登录会有提示并引导用户设置登录密码,完成密码设置后即可登录手机银行。

Q7. 签约后如何换卡?

先解约再用新的卡签约,也可以登录招行手机银行绑定其他支付卡,支付的时候可以选卡支付。

Q8. 对接支付测试时,密码键盘集成后,点击“下一步”按钮,为什么网页一直在加载或者点击密码框跳转至浏览器默认网页?

请参照密码键盘部分文档,确保密码键盘集成正确。

Q9. 为什么有的测试卡片签约过程中不用设置支付密码而是直接验证支付密码?

部分测试卡片被使用过,提前设置过支付密码,可继续使用该卡片测试完流程,后续再联系商户支持人员提供新的测试卡片测试设置支付密码场景。

Q10. 同一个客户,第一次上送签约号1,绑银行卡A, 绑卡签约支付成功后; 第二次,商户端误当新用户,上送新签约协议号2,银行引导其继续绑卡签约,客户仍然绑银行卡A。 银行是返回绑卡签约成功还是失败? 如成功,第二次重复签约返回的签约号为1还是2?第二次客户新绑银行卡B的情况下,银行会怎么返回?

签约成功,返回的签约协议号是2,同一个客户,在同一个商户下,生产环境最多只能签5条协议,测试环境支持签30条。

Q11. 签约回调通知失败后,会重发吗?

会重发,总计会重发10次,所以请商户收到后请返回确认,并且能处理重复接收的情况。重发机制如下:0s 第1次通知;10s 第2次通知;30s 第3次通知;1min 第4次通知;3min 第5次通知;10min 第6次通知;30min 第7次通知;1hour 第8次通知;6hour 第9次通知;20hour 第10次通知。

Q12. 签约的协议号,有什么要求?

客户协议号 --- 不超过30位,纯数字,协议开通请求流水号 --- 不超过20位, 数字字母都行,建议纯数字,协议用户ID --- 不超过20位, 数字字母都行,建议纯数字。

Q13. 为什么签约回调通知获取到的内容为乱码?

签约回调通知解析步骤为:从接收到的Json报文的BUSDAT字段取出原始信息-->做base64解码-->得到UTF8编码的内容-->做GBK转码-->得到GBK编码的内容。

按上面步骤,还有乱码问题,大多是由于客户使用第三方组件的原因,从BUSDAT字段获取到的原始信息中的+号变成了空格,需要重点检查中间是否有空格,如果有空格,先替换成+号,再做base64解码。

Q14. 为什么添加一网通支付卡时,输入卡号、身份证、手机号等相关信息后,点击获取验证码,界面就会出现卡死,无法进行下一步操作?

银行是调用jquery ajax来发送验证码,可能商户测试机器不支持ajax效果,可以用pc来测试下,使用谷歌浏览器Chrome。

Q15. 为什么添加本行信用卡时,提示“添加银行卡失败,原因:综合支付平台处理失败,本行贷记卡绑定要素检查失败:卡片未开卡(1083)?

可能是卡片状态有问题,建议换卡测试。

Q16. 为什么绑卡成功后收到了签约回调请求,但是参数什么数据都没有?

招行是以POST方式提交数据的,通知内容在RequestData参数中传递,请从RequestData参数中读取通知即可。

Q17. 为什么签约支付成功,收到的签约回调解码后没有任何参数?

代码编译问题,增加request.getparameter("requestData").replace(“ ","+")运行就可以了

Q18. 为什么一网通支付取消协议失败?

可能是对业务报文做BASE64编码时使用的函数有问题,可以使用cmbB2B.jar中的Base64.class的方法做BASE64编码。

Q19. 协议号怎么保存?如用户还没有签协议,那么就发送空的是吗?

协议号属于招行一网通支付同商户用户之间建立的支付协议标识,商户系统在第一次支付时需按照接口文档生成并传给招行支付接口,支付完成后,招行系统会通知商户系统协议签订是否成功,商户系统拿到结果后需保存协议号、商户系统用户、协议状态三者之间的关联关系。这样商户系统就知道该用户是否满足使用一网通支付条件,在后续支付过程中都要传该协议号。

Q20. 两条协议号是否可以绑定同一张卡片?

同一商户下,不同的协议号可以绑定同一张卡片,但这种绑定同一张卡片的协议号,数量有限制,最多支持5条。

Q21. 为什么签约回调时,返回“CMBMBXX,乘客签约申请,原因:数据库操作失败”?

可能是协议用户ID的值太长了,要求不超过20位.

Q22. 签约时填的手机号和在支付接口发过去的手机号不匹配,会导致签约失败吗?

不会

Q23. 为什么支付时, 出现“非法请求”的报错?

可能是上送的字段参数有问题,MERCHANTPARA这个字段上送了中文字符的参数,建议换成英文字符或为空。

Q24. 为什么安全控件安装完成后,刷新这个页面又提示安装控件?

浏览器兼容问题,手动安装

Q25. 测试环境中企业网银的公钥通过哪里获取?

登录企业网银-商户接入平台-企业通讯证书管理-企业网银公钥下载

Q26. “NP4014.抱歉,您解绑了所有卡片,目前绑定卡列表为空,请绑定后重试。未绑定支付卡【MB14425】”的报错是什么原因引起?

可能是商户选择消费类型为信用卡还款,不能用借记卡交易

Q27. RequestData 的数据包格式是什么?RequestData 里边的内容是json格式字符串?还是json字符串后的 Base64字符串?

RequestData 的数据包格式是JSON的

不过并不是以Json的形式提交,而是用Json格式组织报文字符串放在RequestData参数里提交

Q28. 为什么签约回调时报错“System.IO.FileNotFoundException: 未能加载文件或程序集“IKVM.OpenJDK.Security, Version=7.2.4630.5””

验证签名DLL中缺少IKVM.OpenJDK.Security、IKVM.OpenJDK.Text、IKVM.OpenJDK.Charsets.dll

Q29. 上传证书时,报错:证书有效期重叠

商户没有作废之前的证书,银行无法确认使用哪个证书做验签

Q30. 是否有PC支付对接 .NET的demo?

目前一网通支付只有APP版本

Q31. 同一商户不同用户是否支持绑定同一一网通支付协议号?

不能

Q32. 是否要求一网通支付协议下最多不能超过2张卡?

只要同一证件号下对应的客户协议号不超过5条以及同一证件号下绑定的卡片不超过5张即可

Q33. 测试环境上传的公钥证书是立即生效吗,还是需要等1天?

上传的公钥证书默认是第二天生效,测试环境如需实时生效,请联系一网通支付技术支持小组。

Q34. 企业网银设置的IP白名单是针对商户服务器还是针对客户端IP?

商户服务器的对外出口IP,即服务器IP白名单。

Q35. 企业网银的IP白名单设置是必须的吗?

非必须的,如果商户实现了:客户协议查询、协议取消功能,才需要配置。

Q36. 如果没有收到签约通知的话,商户如何判定是签约失败,还是异步通知失败呢?

1、签约在手机端就失败的话,界面上会有提示,只有签约成功,银行才会发送通知

2、如果超过3分钟都没有收到签约结果回调通知,建议调协议查询接口(CMCX)来确认签约是否成功

Q37. 在支付请求的网页中是否能再绑其他卡?

支付请求中不能绑定其他银行卡,如需绑定多张卡,请登陆手机银行APP一网通用户-卡片管理-添加银行卡。