Saltar al contenido principal
Volver a plugins
@capgo/compras nativas
Tutoriales
por github.com/Cap-go

Compras nativas

Implemente compras en la aplicación nativas, suscripciones y planes de facturación de StoreKit de iOS con un API simple

Guía

Tutorial sobre Compras Nativas

Usando @capgo/native-purchases

Suscripciones en la Aplicación Facil.

Instalar

bun add @capgo/native-purchases
bunx cap sync

Qué Esta Pluggin Exposa

  • restorePurchases - Restaura el historial de un usuario y enlaza su appUserIDs con cualquier usuario que también utilice esos .
  • getAppTransaction - Obtiene la información de transacción de la aplicación, que proporciona detalles sobre cuando el usuario descargó o compró la aplicación originalmente.
  • isEntitledToOldBusinessModel - Compara la versión original de la aplicación desde la transacción de la aplicación contra una versión objetivo para determinar si el usuario tiene derecho a características de un modelo de negocio anterior.
  • getProducts - Carga los metadatos del producto de la tienda, incluyendo los términos de precios de suscripción iOS admitidos.
  • purchaseProduct - Inicia el proceso de compra para el producto y el plan de facturación seleccionados.

Ejemplo de uso

restorePurchases

Restaura los datos de usuario previos y vincula sus IDs de appUser a cualquier usuario que también utilice esos .

import { NativePurchases } from '@capgo/native-purchases';

await NativePurchases.restorePurchases();

getAppTransaction

Obtiene la información de transacción de la aplicación, que proporciona detalles sobre cuando el usuario descargó o compró la aplicación originalmente.

import { NativePurchases } from '@capgo/native-purchases';

const { appTransaction } = await NativePurchases.getAppTransaction();

// Check if user downloaded before version 2.0.0 (when subscription was added)
if (compareVersions(appTransaction.originalAppVersion, '2.0.0') < 0) {
  // User gets free access - they downloaded before subscriptions
  grantFreeAccess();
}

isEntitledToOldBusinessModel

Compara la versión original de la aplicación desde la transacción de la aplicación contra una versión objetivo para determinar si el usuario tiene derecho a características de un modelo de negocio anterior.

import { NativePurchases } from '@capgo/native-purchases';

// Check if user downloaded before version 2.0.0/build 42 (when subscription was added)
const result = await NativePurchases.isEntitledToOldBusinessModel({
  targetVersion: '2.0.0',
  targetBuildNumber: '42'
});

if (result.isOlderVersion) {
  console.log(`User downloaded v${result.originalAppVersion}, granting free access`);
  grantFreeAccess();
}

purchaseProduct

Inicia el proceso de compra para el producto dado. Para suscripciones de Android, pasa el ID del plan base de Google Play como planIdentifierPara las suscripciones de iOS admitidas que ofrecen facturación mensual con un compromiso de 12 meses, pasa billingPlanType: 'monthly'.

import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';

await NativePurchases.purchaseProduct({
  productIdentifier: 'com.example.premium.monthly',
  planIdentifier: 'monthly-plan',
  productType: PURCHASE_TYPE.SUBS,
});

En versiones de iOS admitidas, StoreKit puede exponer un plan de facturación mensual con un compromiso de 12 meses a través de

Muestra estos términos en su pantalla de pago antes de la compra: pricingTermsReferencia completa

import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';

const { products } = await NativePurchases.getProducts({
  productIdentifiers: ['com.example.premium.yearly'],
  productType: PURCHASE_TYPE.SUBS,
});

const yearlyProduct = products.find(
  (product) => product.identifier === 'com.example.premium.yearly',
);
const monthlyCommitment = yearlyProduct?.pricingTerms?.find(
  (term) => term.billingPlanType === 'monthly',
);

if (yearlyProduct && monthlyCommitment) {
  console.log('Monthly price:', monthlyCommitment.billingDisplayPrice);
  console.log('Total commitment:', monthlyCommitment.commitmentInfo?.priceString);

  const transaction = await NativePurchases.purchaseProduct({
    productIdentifier: yearlyProduct.identifier,
    productType: PURCHASE_TYPE.SUBS,
    billingPlanType: 'monthly',
  });

  console.log('Billing plan:', transaction.billingPlanType);
  console.log('Commitment ends:', transaction.commitmentInfo?.expirationDate);
}

__CAPGO_KEEP_0__