Planes de facturación con compromiso mensual de iOS
Copia un prompt de configuración con los pasos de instalación y la guía completa en markdown para este plugin.
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.
Requisitos
Sección titulada “Requisitos”- 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
pricingTermsybillingPlanType. - 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.
Cargar y mostrar términos de precios
Sección titulada “Cargar y mostrar términos de precios”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 |
|---|---|
billingDisplayPrice | El monto de facturación recurrente que ve el usuario, por ejemplo, el cargo mensual. |
billingPeriod | La cadencia de facturación para el precio mostrado. |
commitmentInfo.priceString | El precio total del compromiso formateado para la tienda del usuario. |
commitmentInfo.period | El periodo completo de compromiso. |
subscriptionOffers | Ofertas 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;}Comprar el plan de compromiso mensual
Sección titulada “Comprar el plan de compromiso mensual”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.
Leer metadatos de compromiso
Sección titulada “Leer metadatos de compromiso”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.
Notas de revisión de la App Store
Sección titulada “Notas de revisión de la App Store”- 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, ypricingTerms[].commitmentInfo.priceStringdesde 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.
Guías relacionadas
Sección titulada “Guías relacionadas”- Crear suscripciones de iOS
- Configurar pruebas en el sandbox de iOS
- Directrices de revisión de la App Store de iOS
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.