Saltar al contenido

Planes de facturación con compromiso mensual de iOS

GitHub

Apple admite suscripciones con facturación mensual que comprometen al cliente a un periodo de 12 meses. Cuando StoreKit y el SO lo permiten, @capgo/native-purchases muestra los términos de precio, permite elegir el plan mensual al comprar y devuelve metadatos de compromiso en las transacciones y renovaciones.

Úsalo para ofertas de suscripción anual donde los usuarios prefieren pagos mensuales, pero buscas la retención y previsibilidad de un compromiso anual.

  • Configura el plan de facturación mensual con compromiso de 12 meses en App Store Connect o en StoreKit Testing en Xcode.
  • Genera la app de iOS con un SDK de Xcode que contenga StoreKit pricingTerms y billingPlanType.
  • Ejecuta en una versión de iOS que admita planes de facturación por compromiso de StoreKit.
  • Mantén disponible una opción de facturación estándar para dispositivos o tiendas que no devuelvan términos de precios con compromiso.

Llama a getProducts() como siempre. Para productos de suscripción de iOS compatibles, cada producto puede incluir pricingTerms.

import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';
const { products } = await NativePurchases.getProducts({
productIdentifiers: ['com.example.app.premium.yearly'],
productType: PURCHASE_TYPE.SUBS,
});
const premiumYearly = products.find(
(product) => product.identifier === 'com.example.app.premium.yearly',
);
const monthlyCommitment = premiumYearly?.pricingTerms?.find(
(term) => term.billingPlanType === 'monthly',
);

Renderiza los valores de la tienda en lugar de precios fijos:

CampoÚsalo para
billingDisplayPriceEl monto de facturación recurrente que ve el usuario, por ejemplo, el cargo mensual.
billingPeriodLa cadencia de facturación para el precio mostrado.
commitmentInfo.priceStringEl precio total del compromiso formateado para la tienda del usuario.
commitmentInfo.periodEl periodo completo de compromiso.
subscriptionOffersOfertas introductorias o promocionales vinculadas al plan de precios.

Ejemplo de texto para el paywall:

function commitmentLabel(term: NonNullable<typeof monthlyCommitment>) {
const total = term.commitmentInfo?.priceString;
return total
? `${term.billingDisplayPrice} billed monthly, ${total} total commitment`
: term.billingDisplayPrice;
}

Cuando el usuario seleccione el plan de compromiso mensual, pasa billingPlanType: 'monthly'.

const transaction = await NativePurchases.purchaseProduct({
productIdentifier: 'com.example.app.premium.yearly',
productType: PURCHASE_TYPE.SUBS,
billingPlanType: 'monthly',
appAccountToken: userStoreUuid,
});

Usa billingPlanType: 'upFront' solo cuando necesites seleccionar explícitamente el plan de facturación estándar por adelantado. Si omites billingPlanType, StoreKit usará su comportamiento de compra predeterminado para el producto.

Las transacciones incluyen el plan de facturación y el progreso del compromiso cuando StoreKit lo proporciona:

if (transaction.billingPlanType === 'monthly') {
console.log('Current billing period:', transaction.commitmentInfo?.billingPeriodNumber);
console.log('Total billing periods:', transaction.commitmentInfo?.totalBillingPeriods);
console.log('Commitment ends:', transaction.commitmentInfo?.expirationDate);
console.log('Commitment total:', transaction.commitmentInfo?.price);
}

La info de renovación puede incluir el siguiente estado del compromiso:

const { purchases } = await NativePurchases.getPurchases({
productType: PURCHASE_TYPE.SUBS,
onlyCurrentEntitlements: true,
});
for (const purchase of purchases) {
const commitment = purchase.renewalInfo?.commitmentInfo;
if (!commitment) continue;
console.log('Renews into another commitment:', commitment.willAutoRenew);
console.log('Next billing plan:', commitment.renewalBillingPlanType);
console.log('Next renewal date:', commitment.renewalDate);
}

Usa los campos de expirationDate y isActive nivel superior para decidir sobre los entitlements. Usa commitmentInfo.expirationDate para explicar toda la línea de tiempo del compromiso al cliente.

  • Muestra tanto el precio de facturación recurrente como el precio total del compromiso antes de la compra.
  • Muestra la duración del compromiso cerca del botón de compra.
  • Usa product.title, product.priceString, pricingTerms[].billingDisplayPrice, y pricingTerms[].commitmentInfo.priceString desde StoreKit en lugar de usar precios fijos.
  • Permite restaurar compras y gestionar acciones de suscripción en el paywall o en la pantalla de cuenta.

Continúa desde los planes de facturación con compromiso mensual de iOS

Sección titulada “Continuar con los planes de facturación de iOS Monthly Commitment”

Si estás usando Planes de facturación con compromiso mensual de iOS para planificar pagos y compras, conéctalo con Uso de @capgo/native-purchases para la capacidad nativa al usar @capgo/native-purchases, Precios de Capgo para el flujo de trabajo de productos en Capgo Pricing, Sistema de pagos para el detalle de implementación en Sistema de pagos, @capgo/native-purchases para el detalle de implementación en @capgo/native-purchases, y Primeros pasos para los detalles de implementación en Getting Started.