鸿蒙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
*/