You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Android应用中通过Anjlab库的getPurchaseHistory()获取内购购买记录

Anjlab内购库getPurchaseHistory方法使用指导

前置调用要求

  • 需确保BillingProcessor已完成初始化,在BillingProcessor.IBillingHandler的onBillingInitialized回调触发后再调用该方法,未初始化完成调用会返回空值或报错
  • 测试设备需登录正常可用的Google账号,且应用已获得结算相关权限

参数说明

getPurchaseHistory方法接收两个参数:

  • 第一个参数type:查询的商品类型,内购普通商品填BillingProcessor.SKU_TYPE_INAPP,订阅商品填BillingProcessor.SKU_TYPE_SUBS
  • 第二个参数extraParams:无特殊查询需求时直接传null即可

完整使用示例

// 必须在子线程调用,该方法为耗时操作,主线程调用会引发ANR
new Thread(() -> {
    // 示例为查询普通内购商品历史,如需查订阅替换type参数即可
    List<BillingHistoryRecord> historyList = bps.getPurchaseHistory(BillingProcessor.SKU_TYPE_INAPP, null);
    
    if (historyList == null || historyList.isEmpty()) {
        Log.i("PurchaseHistory", "无对应购买历史记录");
        return;
    }

    // 遍历输出所有字段
    for (BillingHistoryRecord record : historyList) {
        Log.i("PurchaseHistory", "--------------------------");
        Log.i("PurchaseHistory", "交易token:" + record.purchaseToken);
        Log.i("PurchaseHistory", "订单ID:" + record.orderId);
        Log.i("PurchaseHistory", "商品SKU:" + record.sku);
        Log.i("PurchaseHistory", "购买时间:" + record.purchaseTime);
        Log.i("PurchaseHistory", "购买状态:" + record.purchaseState);
        Log.i("PurchaseHistory", "开发者自定义 payload:" + record.developerPayload);
    }
}).start();

注意事项

  • 该方法为跨进程调用Google Play结算服务的耗时操作,必须放在子线程执行
  • 仅能返回当前设备登录的Google账号对应的购买历史,已退款、已取消的订单不会被查询到
  • 如查询无结果,优先检查type参数是否和你要查询的商品类型匹配,再确认当前登录的账号确实存在对应内购记录

内容的提问来源于stack exchange,提问作者user7191985

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 01:57:01