先判断是哪个版本的开发包:
先看sdk用的是源码还是jar包,jar包看分支1,如果用的源码但源码里不包含AcpService.java也看分支1;其他看分支2。(分支2的发布时间大概是2015年的10月-2016年3月各产品陆续更新的,分支间可能有迷一样的过度分支,请自行根据实际情况看。)
分支1:
1. sdk原来用jar包的删除jar包,原来用源码的删除源码。把新开发包的sdk源码拷贝进src。(见图一)
2. lib库更新(见图一):
1) bcprov-jdk16-1.45更新为bcprov-jdk15on-1.54.jar(新开发包里有这个jar,如果自己工程必须用不是这个版本的bc的jar,请自行修改源码使兼容,修改时部分用不到的国密算法的代码可以先注释掉)。
(图一)
3. 改配置文件。(见图二)
1) acp_sdk.properties按新开发包的acp_sdk.properties添加配置。acpsdk.middleCert.path和acpsdk.rootCert.path是新加的配置,代替原来的sdk.validateCert.dir,非常重要请不要遗漏;其他自行比对添加。
(图二)
4. 配置文件中acpsdk.middleCert.path和acpsdk.rootCert.path配置的文件在开发包assets/测试环境证书(或者生产环境证书)文件夹下取,复制到配置的路径,如果文件名和配置的不一样时注意修改配置的文件名。(见图三)
(图三)
5. 替换调用sdk的方法,方法不知道如何调用的话可以看新开发包的demo,以下列出了一部分需要替换的方法(见图四):
(大部分方法不替换也能兼容,但建议替换一下新的。)
DemoBase.deCodeFileContent改为AcpService.deCodeFileContent,改sdk后原方法会报错建议删除。
DemoBase.getCustomer改为AcpService.getCustomerInfo,改sdk后原方法会报错建议删除。
DemoBase.signData(或者SDKUtil.sign)改为AcpService.sign。
DemoBase.submitUrl中的HttpClient相关方法+SDKUtil.convertResultStringToMap改为AcpService.post。←看新demo怎么写的理解一下。
SDKUtil.validate改为AcpService.validate。
DemoBase.createHtml改为AcpService.createAutoFormHtml。
(图四)
6. version改为5.1.0,但此处建议version和signMethod都改为读配置文件,方便以后再更新sdk版本时可减少改动。(见图五)
(图五)
7. 其他细节如果有问题,请自己根据自己使用的产品的demo修改,多数对外的sdk方法都在AcpService里。
8. 5.1.0对发backTransReq.do、cardTransReq.do的资金类交易,就算失败了也会发后台通知,请注意后台通知相关的代码修改一下逻辑。
分支2:
1. 删除原来的sdk源码,拷贝新的。
2. lib库更新:
1) bcprov-jdk16-1.45更新为bcprov-jdk15on-1.54.jar(新开发包里有这个jar,如果自己工程必须用不是这个版本的bc的jar,请自行修改源码使兼容,修改时部分用不到的国密算法的代码可以先注释掉)。
3. 改配置文件。(见图六)
1) acp_sdk.properties按新开发包的acp_sdk.properties添加配置。acpsdk.middleCert.path和acpsdk.rootCert.path是新加的配置,代替原来的sdk.validateCert.dir,非常重要请不要遗漏;其他自行比对添加。
(图六)
4. 配置文件中acpsdk.middleCert.path和acpsdk.rootCert.path配置的文件在开发包assets/测试环境证书(或者生产环境证书)文件夹下取,复制到配置的路径,如果文件名和配置的不一样时注意修改配置的文件名。(见图七)
(图七)
5. 使用多证书方式签名的,注意signByCertInfo方法的参数顺序可能改动过。
6. version改为5.1.0,但此处建议version和signMethod都改为读配置文件,方便以后再更新sdk版本时可减少改动。(见图八)
(图八)
7. 其他细节如果有问题,请自己根据自己使用的产品的demo修改,多数对外的sdk方法都在AcpService里。
8. 5.1.0对发backTransReq.do、cardTransReq.do的资金类交易,就算失败了也会发后台通知,请注意后台通知相关的代码修改一下逻辑。
其他注意点:
1. bc的jar有升级,可能存在一部分1.45支持的类在1.54中不支持了,比如http://stackoverflow.com/questions/14919048/bouncy-castle-pemreader-pemparser,我司sdk并没有用到这些类,但贵司项目其他地方可能会用到,用到的话请自行去搜索引擎搜索如何修改。
2. token产品5.0.0的accNo固定返回明文的卡号后4位,5.1.0中改为了密文的卡号后4位,解密代码请参考前台通知里对accNo的处理。
3. mpos产品5.0.0时有效期为无视配置、加密后填写入customerInfo的,5.1.0改为了和其他产品一样如果不加密就明文放customerInfo,如果加密就放encryptedInfo中加密后填入customerInfo,具体请看mpos开发包里如何填写customerInfo的代码;ICCardData不用再做转16进制,直接把二进制数据做base64就可以。
4. 所有的后台类接口的后台通知增加了失败通知,请注意对应修改。前台类交易的后台通知仍然只有成功才会发。
5. 【UPCARD体系加密的时候请勿升级5.1.0,可以升级sdk,但代码version还是填5.0.0,继续用旧的配置文件。】