Программирование

Подписка в приложении: 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_ остаётся в приложении, это публичный ключ.

Автор: Nibras Code