Harmony OS接入要点
1.创建CMBApi的context
需要是UIAbilityContext
2.CMBRequest的schema(比之前android多的支付参数)
app支付时,使用之前android上和招行约定的schema,透传android的schema,用以校验商户是否合法。不一致会影响返回商户。
3.sendRequestWithCallback
1.注意必传参数,如参数存在问题会通过callback的error回调参数异常。如果未传callback,或者是null | undefined,会抛出异常。
2.优先打开招行app支付,如未安装招行app,且h5支付参数有效,会打开h5支付。
普通商户
测试环境: h5Url: http://netpay.netpay.bas.cmburl.cn:801/netpayment/BaseHttp.dll?H5PayJsonSDK appUrl: cmbmobilebank://CMBLS/FunctionJump?action=gofuncid&funcid=200013&serverid=CMBEUserPay&requesttype=post&cmb_app_trans_parms_start=here 生产环境 h5Url: https://netpay.cmbchina.com/netpayment/BaseHttp.dll?H5PayJsonSDK appUrl: cmbmobilebank://CMBLS/FunctionJump?action=gofuncid&funcid=200013&serverid=CMBEUserPay&requesttype=post&cmb_app_trans_parms_start=here
12306
//获取url和之前android一致。 //在webview.onLoadIntercept拦截存在PrePayWap.do的url发送请求 h5Url:和android一致 appUrl: 需要转换h5url。转换方法如下: private getAppUrl(url: string): string { try { let textEncoder: util.TextEncoder = new util.TextEncoder('utf-8') let finalUrl = encodeURIComponent (new util.Base64Helper().encodeToStringSync(textEncoder.encodeInto(url))); return "cmbmobilebank://CMBLS/functionjump?id=1200&action=gofuncid&funcid=200011&serverid=CMBEUserPay&requesttype=post&cmb_app_trans_parms_start=here&cmbpbsdk_payParam=" + finalUrl; } catch (e) { return "" } }
4.handleWant时机
1.需要在唤起支付的ability的生命周期处理(如是单ability应用,在entryability处理即可)。
2.商户从自身隐私安全性出发,可以将仅招行app唤起的want交给招行支付sdk处理。可以校验want的源bundlename 即(ohos.aafwk.param.callerBundleName字段)是否为”com.cmbchina.harmony“
onCreate()时机
如不想在应用重启时处理(即应用不在后台已被用户杀掉进程,被招行app支付完成后唤起),可以不用在oncreate()处理,如期望在该业务场景处理支付结果,
需要重新构建callback和重新创建CMBApi对象。
onNewWant()时机
1.不用传callback,会使用之前发送请求传的callback
2.传了新的callback,会替换原有的callback
5.销毁CMBApi
防止内存泄漏,销毁创建的对象和callback
CMBAPIFactory.destroy()