鸿蒙CMCASDK接入指南
cmcasdk-default.tgz 使用前必读
1.
从华为官网下载DevEco Studio(开发工具版本号是DevEco Studio 5.0.2 Release),新建或打开已有的HarmonyOS工程。
2.
右键项目名称,选择
New -> Folder
新建一个名为 libs
的文件夹。将
cmcasdk-default.tgz
复制到 libs
文件夹下。
3.
在文件夹下
oh-package.json5
添加依赖:
"dependencies": { "cmcasdk": "file:./src/libs/cmcasdk-default.tgz" }
4.
执行
ohpm install
,执行成功后
5.
在
module.json5
的 "requestPermissions"
中添加使用网络的权限:
{ "name": "ohos.permission.INTERNET" }
6.
API支持14 (5.0.2)
接口调用
1. 获取token
export async function tokenPostRequest(url: string, msisdn: string): Promise<http.HttpResponse> {}
接口调用示例
onClick(async () => { try { const response = await tokenPostRequest( this.url, //传入的IP地址 5 this.phoneNumber //手机 ); if (response.responseCode === 200) { let rspData = JSON.parse(response.result.toString()) as RespData; let tokenRes = parseResponseGetToken(rspData)//解析出来token promptAction.showToast({ message: '请求成功!获取到的token是===》' + tokenRes }); this.responseData = tokenRes; console.info('tokenRes========>' + tokenRes); } } catch (error) { this.responseData = error.message; }
2.申请证书
/*** * 获取公钥 */ export async function getPubKey() : Promise{} /** * 获取私钥 * @returns */ export async function getPriKey() : Promise {}
/** * 申请证书 * @param url * @param token * @param data ( * algType: string; 算法类型 deviceType: string;v设备类型 imei: string;设备imei imsi: string;设备imsi misdn: string;手机号码 publicKey: string;公钥 transactionID: string;)时间ID * @returns */ export async function applyCertPostRequest(url: string, token: string, data: object): Promise{
调用示例
onClick(async () => { ToastUtil.showLong("申请证书中请稍后。。。") // 加载状态层 // if(StrUtil.isEmpty(await PreferencesUtil.getStringSync(CERT)) && !StrUtil.equal(this.phoneNumber,await PreferencesUtil.getStringSync(MSISDN))){ let pubKey = await getPubKey(); //公钥 let applyCertBean = new ApplyCertBean(); let applyCert: BaseBean= new BaseBean(); applyCertBean.misdn = this.phoneNumber; applyCertBean.transactionID = "20250221103647665199"; applyCertBean.algType = "1"; applyCertBean.deviceType = 'M2007J22C'; applyCertBean.imei = "a40174a8b94cb592"; applyCertBean.imsi = "a40174a8b94cb592"; applyCertBean.publicKey = pubKey; applyCert.data = applyCertBean; //拼接data try { const response = await applyCertPostRequest( this.url, this.responseData, applyCert ); if (response.responseCode === 200) { this.isLoading = false // 无论成功失败都关闭加载 let rspCertData = JSON.parse(response.result.toString()) as RespData ; let cert = parseResponseGetCert(rspCertData) //解析出来证书 this.certTextInfo = cert PreferencesUtil.putSync(CERT, cert); } } catch (error) { this.isLoading = false // 无论成功失败都关闭加载 this.certTextInfo = error.message; }
3.获取算法类型
/** * 获取算法类型 * @param url * @param qrString 二维码信息 * @returns */ export async function getAlgTypePostStrRequest(url: string, qrString: string): Promise{—}
调用示例
onClick(async () => { ToastUtil.showLong("申请证书中请稍后。。。") // 加载状态层 // if(StrUtil.isEmpty(await PreferencesUtil.getStringSync(CERT)) && !StrUtil.equal(this.phoneNumber,await PreferencesUtil.getStringSync(MSISDN))){ let pubKey = await getPubKey(); //公钥 let applyCertBean = new ApplyCertBean(); let applyCert: BaseBean= new BaseBean(); applyCertBean.misdn = this.phoneNumber; applyCertBean.transactionID = "20250221103647665199"; applyCertBean.algType = "1"; applyCertBean.deviceType = 'M2007J22C'; applyCertBean.imei = "a40174a8b94cb592"; applyCertBean.imsi = "a40174a8b94cb592"; applyCertBean.publicKey = pubKey; applyCert.data = applyCertBean; //拼接data try { const response = await applyCertPostRequest( this.url, this.responseData, applyCert ); if (response.responseCode === 200) { this.isLoading = false // 无论成功失败都关闭加载 let rspCertData = JSON.parse(response.result.toString()) as RespData ; let cert = parseResponseGetCert(rspCertData) //解析出来证书 this.certTextInfo = cert PreferencesUtil.putSync(CERT, cert); } } catch (error) { this.isLoading = false // 无论成功失败都关闭加载 this.certTextInfo = error.message; }
3.获取算法类型
/** * 获取算法类型 * @param url * @param qrString 二维码信息 * @returns */ export async function getAlgTypePostStrRequest(url: string, qrString: string): Promise{—}
调用示例
onClick(async () => { const algTypeResp = await getAlgTypePostStrRequest( this.url, this.mStrQrtext ); if (algTypeResp.responseCode === 200) { let rspAlgTypeData = JSON.parse(algTypeResp.result.toString()) as RespData; this.rspAlgTypeData = JSON.stringify(algTypeResp.result); let getPlatFormData = parseResponseGetPlatFormName(rspAlgTypeData);//解析出来的平台名称 promptAction.showToast({ message: '平台名称是!' + getPlatFormData }); } });
4.查询证书
/** * 查询证书 * @param url * @param data { * msisdn: string;手机号码 algType: number;算法类型 certNo: string;证书序列号 * } * @returns */ export async function QueryCertRequest(url: string, data: object): Promise{
调用示例
onClick(async () => { let certNoData = await getCertNo(this.certTextInfo); // 使用 await 等待请求完成(看似同步) let queryCertBean = new QueryCertBean(); queryCertBean.certNo = certNoData; queryCertBean.algType = 1; queryCertBean.msisdn = this.phoneNumber; let queryCertBeanData: BaseBean= new BaseBean() queryCertBeanData.data = queryCertBean; const queryCertResp = await QueryCertRequest( this.url, queryCertBeanData ); if (queryCertResp.responseCode === 200) { this.rspQueryData = JSON.stringify(queryCertResp.result); promptAction.showToast({ message: '查询证书的结果是====》' + queryCertResp.result }); } });
5.扫码登录
/** * 扫码登录 * @param url * @param qrCode 二维码信息 * @param userId userID * @returns */ export async function QrLoginPostRequest(url: string,qrCode :string,userId:string): Promise{
6.加密
/** * 加密 * @param orgData 原文 * @param pinStr 6位PIN * @returns */ export async function Encrypted(orgData :string,pinStr :string): Promise{
调用示例
onClick(async () => { let str = await Encrypted(this.encryptedStrData, this.setPin); promptAction.showToast({ message: `加密后的数据是后的数据是: ${await str}` }); this.dataStr = str; });
8.设置PIN
/** * 设置PIN * @param pinStr * @returns */ export async function SettingPIN(pinStr: string): Promise{}
调用示例
onClick(async () => { let str = SettingPIN(this.setPin); promptAction.showToast({ message: `` + await str }); }).width(320);
9.重置PIN
/** * 重置PIN * @param pinStr * @returns */ export async function ReSettingPIN(pinStrData: string): Promise
调用示例
.onClick(async () => { let reset = ReSettingPIN(this.reSetPIN); promptAction.showToast({ message: `` + await reset }); });
10.修改PIN
/** * 修改PIN * @param orgPinStr 原PIN * @param endPin 修改后的PIN * @returns */ export async function ChangerPIN(orgPinStr: string,endPin:string): Promise{}
调用示例
Button("修改PIN").width(320) .onClick(async () => { let str = ChangerPIN(this.oldPIN,this.newPIN); promptAction.showToast({ message: `` + await str }); });
* 获取token
* @param url 请求地址
* @param msisdn 手机号码
* @returns
*/