Подписка в приложении: RevenueCat
Проверяй продукт Play через entitlement. Ключ Android начинается с goog_.
Все уроки · Уроки JavaScript: учимся с нуля
Три слова
RevenueCat нужен, чтобы проверять оплату Play и App Store из одной панели. Приложение говорит не с магазином напрямую, а с его SDK. Product — это id подписки в Play, например monthly_pro. Entitlement — ключ оплаты, например pro_access. Если он активен, он стоит в списке. Offering — группа пакетов, которую видит пользователь. Цена меняется в панели, не в коде.
Подключи
В Play Console, в Monetize, Subscriptions, создай подписку и дай ей id. Открой проект в RevenueCat. Возьми JSON сервисного аккаунта из Google Cloud и загрузи его в панель. Этот файл секретный: не клади его на GitHub. Потом впиши этот id продукта в раздел Products. В приложении установи пакет и сделай sync. Ключ Android начинается с goog_. Ключ Apple начинается с appl_. Ключ Apple в Android не пиши.
npm install @revenuecat/purchases-capacitor npx cap sync
Проверь и купи
configure вызывается один раз, когда приложение открылось. getCustomerInfo показывает активный entitlement. Имя должно совпасть с панелью, разница в букве считается. Пакет приходит из offering, цену ты не пишешь. Отказ — это userCancelled. Не проверяй настоящей картой. Добавь тестовый аккаунт в список License testing в Play.
import { Purchases } from "@revenuecat/purchases-capacitor";
await Purchases.configure({ apiKey: "goog_ACAR" });
const { customerInfo } = await Purchases.getCustomerInfo();
const aktiv = customerInfo.entitlements.active["pro_access"];
const offerings = await Purchases.getOfferings();
const paket = offerings.current?.availablePackages?.[0];
if (paket) {
const { customerInfo: sonra } = await Purchases.purchasePackage({ aPackage: paket });
const aldi = sonra.entitlements.active["pro_access"];
}Вопросы
В чём разница goog_ и appl_? goog_ для Android. appl_ для Apple. Ключ чужой платформы отклоняет запрос.
Почему pro_access нет? Имя в панели и имя в коде не совпадают. Заглавная буква тоже разница.
Куда нельзя класть JSON? На GitHub и внутрь приложения. Загрузи его только в панель RevenueCat. Ключ goog_ остаётся в приложении, это публичный ключ.