APP支付

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()