Harmony接口
DevEco Studio: Build Version: 5.0.3.100
SDKVersion: Developer Beta1 | Developer Preview2
1. 创建CMBApi对象
let cmbApi: CMBApi = CMBAPIFactory.createCMBApi(getContext() as common.UIAbilityContext)
2.发送请求
sendRequestWithCallback(request: CMBRequest, callback: CMBPayCallback): void
CMBRequest对象
参数 | 参数含义/作用 | 是否必传 | 备注 |
---|---|---|---|
schema | 和之前android上保持一致,用以校验商户。 | 1.招商银行app跳转必要参数。 2.网页支付无需该参数 | |
appUrl | 用以跳转招行app的支付url | 1.招商银行app跳转必要参数。 2.网页支付无需该参数 | h5Url与appUrl至少有一个赋值。 如果都赋值,招行app安装时跳转app支付,未安装时,跳转网页支付 |
h5Url | 用以内部网页支付url | 1.招商银行app跳转无需该参数。 2.网页支付必传参数 | |
enableNavbar | 用以内部网页支付url,网页是否展示原生导航栏 | 不必传,网页支付时默认为true(展示导航栏) | |
requestData | 支付、协议、领券等业务功能等请求参数,具体内容由业务功能给出具体内容,SDK透传,会将该字段信息Post给对应功能页面 | 非必传,根据特定业务决定,和android一致。 | 目前12306无需传值,其他商户需要传值。 |
avoidHeight | 商户应用如果设置了沉浸式且需要使用h5支付时,需要传状态栏高度,用来页面避让。 | 非必传 | 1.非沉浸式应用无需考虑该参数 2.沉浸式应用如果不想传高度的话,也可以针对本h5页面豁免沉浸式 |
CMBPayCallback对象
商户侧需实现以下回调事件。
export interface CMBPayCallback { //支付错误。info:错误原因,包括支付参数错误。 onError: (info: string)=>void; //支付成功,info:成功回调携带支付成功url onSuccess: (info: string)=>void; //用户取消,无具体原因或者支付流程被打断都是用户取消 onCancel: (info: string)=>void; }
3.handleWant接口(处理招行app支付场景)
如果仅对接网页支付,无需对接该方法。
在唤起支付的entryablity里onCreate()和onNewWant()生命周期显示调用该方法拦截回调。
生命周期 | 对接要点 | 备注 |
---|---|---|
onCreate() | 商户app在客户使用招行app支付时被用户在后台杀掉进程,支付完成后被招行app重新唤起,可以在此拦截支付结果。如果商户不处理该场景,可以不用拦截。由商户自身业务流程决定。如果需要拦截的话,需要重新构建回调,并传值。因为app重启后,原先回调已释放。 | 商户从自身隐私安全性出发,可以将仅招行app唤起的want交给招行支付sdk处理。可以校验want的源bundlename 即(ohos.aafwk.param.callerBundleName字段)是否为”com.cmbchina.harmony“ |
onNewWant() | 商户应用在后台的正常支付流程,。商户app在此拦截支付结果,调用该方法,无需传callback,将从原来发送请求构建的回调回调支付结果。如果构建新的callback,将替换原有callback回调。 |
handleWant(want: Want, callback?: CMBPayCallback)
4.destroy
支付流程完成后,释放cmbapi对象和回调对象。防止内存泄漏
CMBAPIFactory.destroy()