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

寻求Capacitor+React JS集成iOS/Android InApp purchase的文档与方案

基于Capacitor + React JS的跨平台内购集成方案

一、官方推荐插件

直接使用Capacitor官方维护的@capacitor/in-app-purchase插件,原生支持iOS和Android内购,无需额外封装。

  • 安装命令:
    npm install @capacitor/in-app-purchase
    npx cap sync
    

二、React项目核心代码实现

1. 初始化与商品加载

先初始化插件,再从平台拉取你在开发者后台配置好的商品信息:

import { InAppPurchase } from '@capacitor/in-app-purchase';
import { useState, useEffect } from 'react';

async function initIAP() {
  try {
    await InAppPurchase.initialize();
    // 传入你在苹果/Google后台创建的商品ID列表
    const { products } = await InAppPurchase.getProducts({
      products: ['com.yourapp.premium', 'com.yourapp.monthly_sub']
    });
    // 将商品信息存入状态,供前端展示
    // setProducts(products);
  } catch (err) {
    console.error('初始化内购失败:', err);
  }
}

// 组件挂载时调用初始化
useEffect(() => {
  initIAP();
}, []);

2. 发起购买流程

async function handlePurchase(productId) {
  try {
    const result = await InAppPurchase.purchase({ productId });
    if (result.purchased) {
      // 购买成功,这里建议把交易凭证传到后端做验证
      const isValid = await verifyPurchaseOnBackend(result.transaction.receipt);
      if (isValid) {
        // 解锁对应功能、更新用户状态
        console.log('购买验证通过,解锁功能');
      } else {
        console.error('购买凭证无效');
      }
    } else {
      console.log('用户取消购买');
    }
  } catch (err) {
    console.error('购买出错:', err);
  }
}

3. 恢复已购商品

处理用户卸载重装后恢复已购内容的场景:

async function restorePurchases() {
  try {
    const restoredTransactions = await InAppPurchase.restorePurchases();
    restoredTransactions.forEach(transaction => {
      // 恢复对应功能,同样建议先验证凭证
      verifyPurchaseOnBackend(transaction.receipt);
    });
  } catch (err) {
    console.error('恢复购买失败:', err);
  }
}

三、原生平台配置要点

  • iOS:
    • 在苹果开发者后台创建内购商品(消耗型/非消耗型/订阅),确保商品ID与代码中一致
    • 打开Xcode,为应用开启"In-App Purchase" Capability
    • 测试必须使用苹果沙盒账号,不能用真实Apple ID
  • Android:
    • 在Google Play控制台创建内购商品/订阅,关联应用包名
    • 确保应用签名证书与控制台配置一致,测试需将应用上传到Play控制台的内部测试渠道(草稿状态也可)

四、实践踩坑提示

  • 必须后端验证:绝对不能只相信客户端返回的购买结果,苹果和Google都提供了官方的凭证验证接口,后端调用这些接口确认交易合法性,防止恶意破解
  • 订阅状态处理:订阅类商品要监听过期、续费、取消等事件,及时更新用户权限,避免出现用户已续费但功能未解锁的情况
  • 测试注意事项:iOS沙盒购买可能存在延迟,Android测试需确保设备已加入测试渠道,且登录的Google账号是测试账号
  • 未完成交易处理:应用启动时建议检查未完成的交易,避免用户支付成功但功能未解锁的情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 23:52:52