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

Anjlab内购库支付成功后onProductPurchased未调用问题排查

解决anjlab内购库onProductPurchased未触发的问题

我之前做内购开发时也踩过类似的坑,结合anjlab这个库的运行机制,大概率是下面几个原因导致的,你可以逐一排查:

1. onActivityResult未传递回调给BillingProcessor

你的onActivityResult方法只调用了父类实现,但没有把支付结果传递给BillingProcessor实例——这是最常见的问题。库需要通过这个方法接收系统返回的支付完成回调,才能触发onProductPurchased。

修改后的代码应该是这样:

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    // 先让BillingProcessor处理回调,处理不了再交给父类
    if (!bp.handleActivityResult(requestCode, resultCode, data)) {
        super.onActivityResult(requestCode, resultCode, data);
    }
}

这里的bp是你初始化的BillingProcessor实例,要确保它是Activity的全局成员变量,能在onActivityResult中访问到。

2. BillingProcessor初始化不完整

检查你的初始化代码,是否正确传入了IBillingHandler(也就是你的PlusActivity本身),并且调用了initialize()方法。比如:

private BillingProcessor bp;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // 替换成你的License Key
    bp = new BillingProcessor(this, "YOUR_GOOGLE_PLAY_LICENSE_KEY", this);
    bp.initialize();
}

如果初始化时没传入当前Activity作为回调处理者,或者漏了调用initialize(),库就无法把购买结果回调到你的onProductPurchased方法。

3. 未主动恢复已购买商品状态

有时候支付成功后可能因为网络延迟、系统异常等原因,onProductPurchased没及时触发。这种情况下,你需要在Activity启动时主动检查用户已购买的商品,确保状态被正确识别:

@Override
protected void onResume() {
    super.onResume();
    if (bp != null) {
        bp.loadOwnedPurchasesFromGoogle();
    }
}

这个方法会拉取用户在Google Play的购买记录,如果发现有未处理的购买,会自动触发onProductPurchased回调。

4. 商品ID或License Key配置错误

确认代码中使用的productId和Google Play控制台里配置的完全一致(大小写敏感),同时License Key也没有复制错误。如果这些配置不对,库无法正确验证购买结果,自然不会触发回调。

5. 测试环境的特殊情况

如果你用测试账号进行购买,要确保已经在Google Play控制台添加了该测试账号,且测试商品处于“激活”状态。另外,测试支付后偶尔需要等待几秒,甚至重启App才能触发回调,这是Google测试环境的正常现象。

最后记得在Activity销毁时释放资源,避免内存泄漏:

@Override
public void onDestroy() {
    if (bp != null) {
        bp.release();
    }
    super.onDestroy();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:20:17