Planes de facturación mensual de iOS
Copie un comando de configuración con los pasos de instalación y la guía de markdown completa para este plugin.
Apple admite suscripciones que facturan mensualmente mientras comprometen al cliente con un plazo más largo de 12 meses. Cuando StoreKit y el sistema operativo en ejecución apoyen este plan de facturación, @capgo/native-purchases exponga los términos de precios, permita seleccionar el plan de facturación mensual durante la compra y devuelva metadatos de compromiso en transacciones y información de renovación.
Use this for annual subscription offers where users prefer monthly payments but you still want the retention and predictability of a committed annual term.
Requisitos
Sección titulada “Requisitos”- Configure el plan de facturación mensual con un compromiso de 12 meses en App Store Connect o en StoreKit Testing en Xcode.
- Construya la aplicación iOS con un Xcode SDK que contenga StoreKit
pricingTermsybillingPlanType. - Ejecutar en una versión de iOS que admita planes de facturación con compromiso de StoreKit.
- Mantenga una opción de facturación estándar disponible para dispositivos o tiendas que no devuelvan términos de precios de compromiso.
Cargar y mostrar términos de precios
Sección titulada “Cargar y mostrar términos de precios”Llamar getProducts() como de costumbre. Para los productos de suscripción iOS admitidos, 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',);Vincule los valores proporcionados por la tienda en lugar de precios hardcodeados:
| Campo | Utilícelo para |
|---|---|
billingDisplayPrice | El monto de facturación recurrente mostrado al usuario, por ejemplo, el cargo mensual. |
billingPeriod | El ritmo de facturación para el precio de facturación mostrado. |
commitmentInfo.priceString | El precio de compromiso total formateado para la tienda del usuario. |
commitmentInfo.period | El período de compromiso completo. |
subscriptionOffers | Ofertas promocionales o de introducción asociadas al término de precios. |
Ejemplo de copia de 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
Título de la sección “Comprar el Plan de Compromiso Mensual”Cuando el usuario selecciona 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,});Usar billingPlanType: 'upFront' únicamente cuando necesites seleccionar explícitamente el plan de facturación anticipada estándar. Si omites billingPlanTypeStoreKit utiliza el comportamiento de compra predeterminado del 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 información de renovación puede incluir el siguiente estado de 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);}Utilice los campos de nivel superior expirationDate y isActive para tomar decisiones sobre los derechos de acceso. Utilice commitmentInfo.expirationDate para explicar el plazo completo del compromiso al cliente.
Notas de Revisión de la Tienda de Aplicaciones
Sección titulada “Notas de Revisión de la Tienda de Aplicaciones”- Mostrar tanto el precio de facturación recurrente como el precio total de compromiso antes de la compra.
- Hacer explícita la longitud del compromiso cerca del botón de compra.
- Usar
product.title,product.priceString,pricingTerms[].billingDisplayPrice, ypricingTerms[].commitmentInfo.priceStringfrom StoreKit en lugar de precios hardcoded. - Proporcionar acciones de restauración de compras y gestión de suscripciones en la pantalla de pago o pantalla de cuenta.
Guías Relacionadas
Sección titulada “Guías Relacionadas”- Crear suscripciones de iOS
- Configurar pruebas de sandbox de iOS
- Directrices de revisión de la tienda de aplicaciones de iOS
Sigue adelante con los planes de facturación mensual de iOS
Título de la sección “Sigue adelante con los planes de facturación mensual de iOS”Si estás utilizando Planes de facturación mensual de iOS para planificar pagos y compras, conecta con Usando @capgo/native-purchases para la capacidad nativa en Usando @capgo/native-purchases, Capgo Precios para el flujo de trabajo del producto en Capgo Precios, Sistema de pago para el detalle de implementación en Sistema de pago @capgo/compras nativas para el detalle de implementación en @capgo/compras nativas, y Inicio para el detalle de implementación en Inicio.