商户定单管理
Q1. 直联接口,测试环境的用法是什么?
目前在测试环境中使用直联接口,登录时需要以下步骤:
Settle settle=new Settle();
settle.testit(); //测试环境需要调用,生产环境不能调用
settle.SetOptions("121.15.180.66 "); //测试环境的IP。如果是生产环境,请改成paymane.ebank.cmbchina.com
iRet = settle.LoginC("0755","000107","888888");
其中,红色字体部分,是测试环境区别于生产环境的部分
Q2. 测试环境中,商户秘钥是多少?
测试环境中,商户秘钥统一设置成空字符串(“”),即长度为0的字符串
Q3. 定单状态的“未结账”、“撤销”、“已结帐”,是什么意思?
一网通支付目前只支持立即结账,因此不存在未结账和撤销状态,仅有已结账状态。
Q4. 定单状态,有“失败”状态吗?
没有。能查到的定单都是成功的定单(极少数“状态不明”的定单除外)。
Q5. 为什么我们财务对账,发现账不平?怎么实现“自动对账”?
对账应用调用入账查询API: QueryTransactByPage,其包括支付交易和退款交易。
QueryTransactByPage查询,只有在银行日终处理完成后,才有准确的结果。建议商户在第二天上午执行。
如果商户使用了QuerySettleOrderByPage,查询结果和银行入账金额可能会有差异。因为这个是根据“商户日期”来查询,在午夜12点附近的交易和银行的时间不一致;另外,这个查询不包括退款记录。
Q6. 为什么我的商户号,不是6位的,而是比6位长的多?
找开户工作人员索取6位的商户号。这个很长的商户号不是用于网上支付业务的。
Q7. 定单有退款状态吗?退款和定单是什么关系?
定单没有退款状态。
在招行的网上支付系统中,退款和支付,是两种不同的交易。退款要通过退款查询才能查到。执行过退款的定单,状态不会有任何改变,仍然是“已结帐”状态。
Q8. 支付成功后,能马上退款吗?
Q9. 有没有查询一笔退款的查询接口?
目前只有QueryRefundByPage可以查询退款。
Q10. 定单查询系统地址在哪?
定单查询系统,就是“网上商户结账处理”系统。
在招行主页上,有入口。位置在,右边“在线服务”栏目中。
也可以在我行主页中查找(按Ctrl-F)“网上商户结账处理”这几个字
Q11. 预登录密码是什么?
Q12. 商户的初始密码是什么?
Q13. 重置了密码以后,密码是什么?
Q14. 预登录,密码输入框不显示如何解决?
必须使用IE浏览器。
如果是IE 11,则需要设置打开“兼容性视图”
如果仍然不能显示密码输入框,可能被拦截软件阻止了安装。可以手工安装:
http://site.cmbchina.com/download/SafeEditInstall.exe
Q15. 为什么我点击了退款按钮,但是没有反应
退款控件没有安装。
如果是64位系统,则控件可能无法使用。请启动32位IE来访问本系统。
一般情况下,退款控件会自动安装。如果系统无法自动安装控件,则请手工下载:https://site.cmbchina.com/download/CMBSignClient.cab
解压缩里面的DLL文件,放到系统的System32文件夹下面
然后打开系统的“命令提示符”,输入以下命令:
Cd %windir%\system32
Regsvr32 CMBSignClient.dll
Q16. 批量退款的格式是什么?
文件数据的格式:
日期,定单号,退款金额
日期,定单号,退款金额
...
在退款界面上,也有这个说明。
Q17. 商户开发包能做什么?
1、已结账定单查询(按定单日期查询)
2、入账明细查询(按结账日期查询)
3、单笔定单查询
4、退款记录查询
5、退款
6、商户校验码的计算生成(支付接口中使用)
7、对通知消息中的数字签名的检验
Q18. 退款的时候,报“没有权限”原因以及如何解决?
原因是没有给操作员号,赋予退款的权限。
赋权限的方法是:
1、先建立一个岗位,给岗位赋予“退款权限。
2、操作员指定这个岗位”。
Q19. 退款时报错:“超出交易金额限制”原因以及如何解决?
有两种可能:
1、 累计退款超过原定单金额
2、 当天入账金额不够用于退款的
如果入账金额不够用,解决方法为:
1、 自己做一笔支付交易,然后用这笔支付交易的钱来完成退款。
2、 请分行授予一定的额度,在额度范围内可以分行垫付,第二天清算时才从企业账户中扣除
Q20. 定单日期,是以商户日期为准吗?
是的。在“单笔定单查询”、“已结帐定单查询”中,日期都是商户的日期。
Q21. 为什么报错ClSID问题?
Q22. 64位系统,应该使用什么版本的开发包?
控件版和DLL版的开发包,都有64位的版本。
如果需要使用32位的控件,请把32位控件,放到C:\windows\syswow64下面,并注册
Q23. 为什么调用什么方法,都失败?
请注意,调用API所返回的标志,0表示成功。不要把0当作“False”失败了。
Q24. PHP应该选择什么版本的开发包?
Linux下的PHP,有两个选择:
1、 使用java版本的开发包
2、 调用公开的数字签名验证算法,来验证数字签名
其中,用Java版本的开发包,可以通过PHP Java Bridge来调用。“示例”文件夹中有调用的例子。
Q25. 如果不用Java,可以开发吗?
可以,请参考文档《一网通支付商户定单管理开发指南》
Q26. Java版本的开发包,如何设置代理?
Java系统自己拥有设置代理的能力。
请在调用开发包之前,先使用Java标准的方法,设置好代理,就可以正常调用开发包中的功能了。
Q27. Linux系统应该用什么开发包?
Q28. 商户需要证书吗?
招商银行的网上支付,不需要任何“证书”。
只需要用到一个“公钥”和一个“商户秘钥”。
Q29. 公钥、商户秘钥,都有什么用?
“公钥”,是用在“检验银行交易成功通知”中的数字签名的。用来确保其他人无法伪冒银行身份发送通知。
“商户秘钥”,有两个用处:1、直联退款中,用于加强交易安全 2、支付过程中,可以通过“定单校验码”来防止客户恶意篡改定单要素(比如定单金额)。
Q30. 商户密钥的设置步骤?
登录招行的“网上商户结账处理” 系统进行设置(登录类型选择:系统管理员),招行主站www.cmbchina.com上有登录入口。预登录密码:75268
Q31. 多少天内的交易可以退款?
Q32. 退款什么时候到帐?
对于储蓄卡,是的。退款的钱实时到达客户的账户
对于信用卡,目前退款不会自动恢复额度。额度要到下一个账单日才能恢复。
Q33. 是否可以支持全额、部分、超额退款?
可以全额退款,部分退款。部分退款还能分多次退款。
但是不能超额退款。
Q34. 当前的交易,能退款吗?
Q35. 退款有什么限制?
退款不能超过原定单金额
退款必须使用当天的收入来退。如果当天收入不足以退款,会报错“超出交易金额限制”
Q36. 需要退款,但当天收入不足怎么办?
Q37. “店铺已冻结”问题如何处理?
需要商户自己操作,把店铺0001的状态,从“冻结”改成“正常”。
操作步骤:
1、 在招行网站上的“网上商户结账处理”中,登录。注意,登录的时候,“登录类型”要选择“系统管理员登录”。
2、 在“店铺管理”中,点击“查询所有店铺”,然后,在店铺0001的后面点击“修改”
3、 “店铺状态”应该显示为冻结。现在改成“可用”,然后提交。
4、 等15分钟后,再试。(因为修改后可能需要15分钟才生效)
Q38. 为什么我使用直连接口登录,报错Communication failed: return null?
需要更新java自带的证书库文件
步骤:
1、到java.com官方网站下载最新版的jre安装文件
2、从里面提取cacerts文件
3、用这个文件,覆盖本机的所有同名文件
Q39. 直联接口登录失败:返回Communication failed: Can't recognize the returned flag如何处理?
可能是域名错误。
正确的应该是:setOptions("payment.ebank.cmbchina.com")
Q40. 如何区分交易时借记卡和信用卡?
可以通过查询接口,获取区分交易对应的卡类型
下面两个查询,能够获取卡类型
1、单笔查询
2、入账查询
Q41. 为什么我在做支付测试时,报错“定单已过期”?
Q42. 为什么我的IE10、11,无法正常使用“网上商户结账处理系统?
必须打开“兼容性视图”。
1、先进入“网上商户结账处理”的登录界面
2、工具>>兼容性试图设置>>添加
Q43. 为什么我无法输入预登录密码?
如果是64位Windows,参考“64位Windows怎么登录商户结账处理系统”
1、下载密码控件的安装版本,执行安装
2、下载地址是:http://site.cmbchina.com/download/SafeEditInstall.exe
3、关闭所有浏览器窗口,重新打开浏览器
Q44. 64位Windows怎么登录商户结账处理系统?
首先,必须使用32位的IE来访问网站
其次,确保打开了“兼容性视图”
Q45. 为什么我的定单在后台查不到?
1、请先确认,是否支付成功了?没有支付成功的定单是查不到的。
2、请确认定单日期是否正确。定单日期和定单号都正确,才能找到定单。尤其是半夜12点的定单,最好在分别用两天的日期都查一下
Q46. 定单号是谁生成的?
定单号是商户生成的。我行系统只负责检查定单号有没有重复。
Q47. 定单查询结果,是实时的吗?
Q48. 支付成功了,是否就立即收到钱?
Q49. 一个定单可以退好几次吗?
Q50. 定单列表里没有“已退款”之类的标记吗?
没有。定单没有“已退款”这种状态。可以通过专门的退款查询,查退款的记录。
Q51. 定单下载工具,生成文件的格式?
在定单下载工具的界面上,点击“帮助按钮”,有格式和字段的详细说明
Q52. 为什么我使用javaAPI测试登录时,报错“Communication fail”?
更新Java环境的cacerts。方法:下载最新版的java,从里面获取cacerts文件,并用来覆盖自己使用的同名文件。
Q53. 为什么我在测试登录时登录报错, “无法验证服务器证书”?
报错“无法验证服务器证书”,需要确保电脑能够网络访问VeriSign公司的“吊销服务器”
Q54. 为什么我在做直联退款时,报错“无此定单”?
1、 商户号不对。对于有多个商户号的商户,请确认退款定单的商户号是否正确。
2、 日期或者定单号不对。退款接口中的日期字段应该填写为支付交易的日期。银行根据“支付日期+定单号”查找原始定单。
Q55. 为什么我在做直联退款时,报错“无此权限”?
登录的操作员没有退款的权限。用操作员“9999”登录。如果使用其他的操作员登录,请确认是否为该操作员赋予了退款权限。
Q56. 直联退款失败,能否再次发起?
直联退款失败,不要再次发起,这样可能导致重复退款。
直联退款失败,不一定是因为退款没成功,还有其他的可能性,包括:
1、 通讯故障(退款请求已经发送到银行,然后网络出现问题,导致收不到结果)
2、 通讯超时(退款执行比较慢的情况下,可能出现)
因此,退款失败后,应该通过GetLastErr来获取失败原因,然后人工判断是否真的退款失败。
Q57. 退款查询,有单笔退款查询吗?
Q58. 为什么没有下载定单的地方?
Q59. 我在64位系统上使用控件版(COM),已经注册成功,但仍然报错:CLSID原因是什么?
在64位系统上,建议分别注册32位和64位的控件。
因为64位系统上,即可以运行32位程序,也可以运行64位程序。32位的程序只能调用32位控件,64位的程序只能调用64位控件。只注册了64位的控件,但是运行32位应用程序,就会找不到控件。反之亦然。
Q60. Visual Studio中如何使用开发包?
在Visual Studio中使用开发包,可以开发任意类型的应用。可以使用的开发包类型有:COM控件版本,和Dll版本。建议采用COM控件版本。在64位Windows系统中,只能使用DCOM控件版本。64位系统,请参考《在64位系统上的使用办法.doc》
COM控件版本的开发包使用步骤:
1、必须先注册控件
2、在Visual Studio的项目中,添加COM控件的引用
3、在项目中使用开发包的控件
具体步骤
1、注册控件
双击请“以管理员身份运行.vbs”,应该能够自动完成注册。注册成功的画面如下:
如果注册失败,一般是因为权限不够。
先确保使用管理员登录,然后在register_control.vbs的图标上点击鼠标右键,然后选择“以管理员身份运行”。
2、在项目中,添加COM控件的引用
在项目的“References”上,点右键,选择“Add Reference…”
然后,在弹出的窗口中,选择第二个Tab“COM”,里面找到“CmbChina 1.0 Type Library”
3、在项目中使用开发包控件
现在可以直接在代码中使用控件了。比如:
CMBCHINALib.FirmClientClass fm = new CMBCHINALib.FirmClientClass();
fm.exSetOptions("payment.ebank.cmbchina.com", "");
Q61. 商户使用账号密码登录招行银行商户管理系统,为什么提示“本次操作失败,很抱歉,您目前还不能使用本系统”?
Q62. 为什么开发包里给的PHP文件里是java的文件运行不了?
第一步:java.inc放到PHP的inclede目录中;
第二步:运行javaBridge.jar;
第三步:运行开发包中提供的例子程序。
Q63. 为什么查询单笔订单接口,返回的查询结果中结账金额多了【】?
结账金额多了括号是因为结账金额这个字段可能出现,可能不出现,跟格式没有关系,对于立即结账方式,这个字段不会出现。
Q64. 退款中使用到的秘钥跟调支付接口的商户秘钥是否是同一个?
Q65. 分页查询退款记录里的返回结果中,费用金额是指手续费吗?
支付交易时产生的手续费,如果商户发起退款,手续费也会一并退回,费用金额是指退回的手续费。
Q66. 退款款项什么时候能到客户的卡上?
本行借记卡是实时到账,最晚T+1到账,本行信用卡T+1到账,短信提醒需要客户开通动账提醒功能;他行卡退款到账取决于他行,招行实时提出,短信提醒取决于他行系统。
Q67. “Can't do refund for this order: DL4007.直连退款失败.WWO0072 - 其他原因错误,本次操作失败 NN(SSP2004) [DL113939] ”的报错原因是什么?
Q68. 为什么商户管理平台登录界面开户分行没有下拉框?
Q69. COM控件测试版本和生产版本的组件ID一样吗?
Q70. 64位电脑使用控件版,如何调用exCheckInfoFromBank?
1、使用 64位的com dll 分别放入 system32 和 sysWOW64,分别注册成功
2、引用后右键点击引用列表中的 CMBCHINALib 打开属性选项“嵌入互操作类型”设置为“False”。
Q71. 为什么COM版登陆查询接执行到fc=new FirmClientClass();就闪退?
Q72. 一网通支付有没有每天对账机制?
可以通过分页查询实现,没有源代码例子,在商户开发包接口说明里有接口
Q73. 为什么调查询协议接口,返回提示协议不存在,但是调用取消签约接口,却返回取消成功?.
Q74. 为什么退款时,提示NP1032无效订单,订单内容被篡改【DL151754】?
Q75. 银行流水号可以通过哪些途径获取?
银行流水号有2个途径获得:
1.通过查询未结帐定单的接口获得;
2.通过银行支付成功通知,从通知参数中获得。
Q76. 为什么入账查询接口查询返回数据为空?
1. 测试环境收单日期和自然日期存在差异,请咨询一网通支付技术支持小组系统日期是哪天,使用系统日期查询。
Q77. 调用查询协议接口,返回值有没有签约银行账号后4位?
Q78. 为什么签约回调的内容有RequestData这个域,而查询协议返回的内容就没有RequestData这个域?
同步(查询协议)返回的报文没有,异步(签约回调)返回的报文才会有。同步是商户主动发起的连接,服务器会从原来的连接返回数据;签约回调是我们主动发起的连接,所以我们把请求的数据放RequestData里。
Q79. 免登录接口Request=参数,参数需要urlencoding吗?
1、报文中如果有中文,编码需要采用UTF-8;
2、根据HTTP协议要求,请求报文中的特殊字符,如&、@、<、>等,需进行URLEncoding处理。
Q80. 免登录接口单笔订单查询使用浏览器查看为什么信息不全?
Q81. 免登录接口,退款字段DESC,商户传中文时,默认UTF-8,招行需要的是GBK,转码又不方便,怎么办?
1.避免使用中文,就不存在转码问题。
2.如果商户一定要使用中文并且是UTF-8格式,可以先经过转码成%7%1%2,这样就不存在中文编码问题,招行识别就不会存在问题。
3.可以送空。
Q82. 免登录接口:商户入账查询、按商户日期查询已结账订单接口和按结账日期查询已结账订单接口这三个接口有什么区别?
免登录三个查询接口的区别:
1、商户入账查询,入账日期是指核心系统的时间,即客户银行卡支付扣款的日期;
2、按商户日期查询已结账订单接口,商户日期是商户端的日期,银行会把商户送来的日期记录下来;
3、按结账日期查询已结账订单接口,结账日期是指,一笔交易送到银行主机之后,这个时候主机自己取的机器日期。
注:商户日期和结账日期绝大多数都是同一天,但是个别0点左右的交易,可能会有差别。
Q83. 免登录接口提交入账查询请求,为什么报“NP1017.商户号格式错误”?
Q84. 使用商户结账管理平台办理退款时提示输入证书卡密码,请问这个是什么密码?
企业网银U盾的卡密码,商户登录企业网银时要填登录密码、卡密码这两项。
Q85. 为什么COM组件登录报错:“无法与服务器建立连接”?
确认是否是测试版控件连接测试地址,生产版控件连接生产地址,如果还不行,需要按以下步骤操作一遍:
1.先把电脑上所有的com组件删除;
2.重新注册;
3.替换程序里面的动态库。
Q86. 测试环境,商户退款操作时的商户秘钥是什么?
和生成商户校验码的密钥一样,一串长度为0的字符串。
Q87. 为什么免登录接口退款时报:“DX4010.Hash错误”?
Hash计算错误导致。
容易导致计算错误的地方,包括:
1、报文中包含不可见字符,如空格、换行等,在计算时,如果忽略了这些不可见字符,会导致计算结果不正确。建议不要在报文中出现不可见字符。
2、报文中带有中文。有中文就有转换到byte所用编码的问题,因为汉字编码有不止一种。建议不要带中文。如果非要有中文,可以用urlEncode转换成普通ascii字符串,这样就不再有中文了。
Q88. 从订单管理平台导出的交易明细没有交易立减的优惠金额。通过免登陆商户入账查询接口导出数据一次只能导出一天交易明细如何解决?
1、商户可通过免登陆商户入账查询接口导出交易明细,明细内容涵盖交易立减优惠金额信息;
2、一次导出多天交易明细需商户在程序开发时做个循环查询功能即可。
Q89. 为什么会报“loginC:1 err:Communication failed: return null refundRct:3 refund:You have not loged in queryRct:3”?
Q90. 免登陆接口的退款失败,可以再次发起吗?
请先通过退款查询功能确定是否退款成功,如果没成功,可以再次发起退款。
Q91. 商户管理平台岗位权限里的直联退款、经办退款和授权退款有什么区别?
经办-审核退款
经办人员先用“经办退款”提交退款单(此时退款没有执行),由授权人员审核后进行“授权退款”操作时,才会执行退款操作。
要使用这种方式,系统管理员应该先为经办和审核人员设置好相应的权限。
直接退款就是直接进行退款,不需要审核。
Q92. 为什么退款时,报错:“系统没找到合法的IC卡或USBKEY”?
1. 企业网银ukey安装是否正确,企业网银ukey能否正常使用;
2. 电脑可能插入了多个Ukey;
3. Ukey被其他程序或者网页占用。
Q93. 免登录接口签名用的密钥是你们发给我们的的手机银行密钥吗?
Q94. 免登录接口退款,返回给我的成功,是退款成功还是提交退款申请成功?
返回的是退款成功,退款金额一般实时入账,最迟T+1入账到客户银行卡上。
Q95. 免登录接口,返回的信息需要验签吗?
Q96. 交易的订单号在哪里查询呢?
可以登录商户管理平台查询,生产地址:
https://ebank.sz1.cmbchina.com/EB10/EBServer?Command=5001&ClientID=0&PRID=LOGINPREVIEW;
测试地址:
http://121.15.180.68/EB10/EBServer?Command=5001&ClientID=0&PRID=LOGINPREVIEW
Q97. 为什么免登陆接口单笔订单查询正常,入账查询却提示超时?
商户首次发起免登陆接口入账查询续传包参数首次应当送空,而商户续传包参数送了值导致系统提示超时。