import { iap } from '@kit.IAPKit';
import { common } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
// JWTUtil为自定义类,可参见示例代码
import { JWSUtil } from '../common/JWSUtil';
queryPurchases() {
const param: iap.QueryPurchasesParameter = {
productType: iap.ProductType.NONCONSUMABLE,
queryType: iap.PurchaseQueryType.CURRENT_ENTITLEMENT
};
const context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext;
iap.queryPurchases(context, param).then((res: iap.QueryPurchaseResult) => {
console.info('Succeeded in querying purchases.');
const purchaseDataList: string[] = res.purchaseDataList;
if (purchaseDataList === undefined || purchaseDataList.length <= 0) {
return;
}
for (let i = 0; i < purchaseDataList.length; i++) {
const jwsPurchaseOrder: string = JSON.parse(purchaseDataList[i]).jwsPurchaseOrder;
if (!jwsPurchaseOrder) {
continue;
}
// 对jwsPurchaseOrder进行解码验签
const purchaseStr = JWSUtil.decodeJwtObj(jwsPurchaseOrder);
// 需自定义PurchaseOrderPayload类,包含的信息请参见PurchaseOrderPayload
const purchaseOrderPayload = JSON.parse(purchaseStr) as PurchaseOrderPayload;
// 处理权益发放
// ...
// 发放权益后向IAP Kit发送finishPurchase请求,确认发货,完成购买
if (purchaseOrderPayload && purchaseOrderPayload.finishStatus !== '1') {
this.finishPurchase(purchaseOrderPayload);
}
}
}).catch((err: BusinessError) => {
// 请求失败
console.error(`Failed to query purchases. Code is ${err.code}, message is ${err.message}`);
});
}
finishPurchase(purchaseOrder: PurchaseOrderPayload) {
const finishPurchaseParam: iap.FinishPurchaseParameter = {
productType: purchaseOrder.productType,
purchaseToken: purchaseOrder.purchaseToken,
purchaseOrderId: purchaseOrder.purchaseOrderId
};
const context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext;
iap.finishPurchase(context, finishPurchaseParam).then(() => {
// 请求成功
console.info('Succeeded in finishing purchase.');
}).catch((err: BusinessError) => {
// 请求失败
console.error(`Failed to query purchases. Code is ${err.code}, message is ${err.message}`);
});
}