Planes de facturación mensual de compromiso de iOS
Copia un prompt de configuración con los pasos de instalación y la guía markdown completa para este plugin.
Apple admite suscripciones que facturan mensualmente mientras que comprometen al cliente con un plazo más largo de 12 meses. Cuando StoreKit y el sistema operativo en ejecución apoyan este plan de facturación, @capgo/native-purchases exposa los términos de precios, permite seleccionar el plan de facturación mensual durante la compra y devuelve metadatos de compromiso en transacciones e información de renovación.
Utilice esto para ofertas de suscripciones anuales donde los usuarios prefieren pagos mensuales pero usted todavía quiere la retención y la previsibilidad de un plazo comprometido 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.
- Construya la aplicación iOS con un Xcode SDK que contenga StoreKit
pricingTermsybillingPlanType. - Ejecuta en una versión de iOS que admite planes de facturación de compromiso de StoreKit.
- Mantenga una opción de facturación estándar disponible para dispositivos o tiendas que no devuelvan los términos de precios de compromiso.
Cargar y mostrar términos de precios
Título de la sección “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',);Usar los valores proporcionados por la tienda en lugar de precios fijos.
| Field | Utilízalo para |
|---|---|
billingDisplayPrice | El monto de facturación recurrente mostrado al usuario, por ejemplo, el cargo mensual. |
billingPeriod | La cadencia de facturación para el precio de facturación mostrado. |
commitmentInfo.priceString | El precio total de compromiso 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
Sección titulada “Comprar el Plan de Compromiso Mensual”Cuando el usuario selecciona el plan de compromiso mensual, envíe billingPlanType: 'monthly'.
const transaction = await NativePurchases.purchaseProduct({ productIdentifier: 'com.example.app.premium.yearly', productType: PURCHASE_TYPE.SUBS, billingPlanType: 'monthly', appAccountToken: userStoreUuid,});Usar billingPlanType: 'upFront' Sólo cuando necesites seleccionar explícitamente el plan de facturación inicial estándar. Si omites billingPlanType, StoreKit utiliza su comportamiento de compra predeterminado para el producto.
Leer Metadatos de Compromiso
Sección titulada “Leer Metadatos de Compromiso”Transacciones incluyen el plan de facturación y el progreso de 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 próximo 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 de acceso. commitmentInfo.expirationDate explicar el cronograma de compromiso completo al cliente.
Notas de Revisión de la Tienda App
Nota de Revisión de la Tienda de Aplicaciones- Título de sección: Nota de Revisión de la Tienda de Aplicaciones
- Haga explícita la duración del compromiso cerca del botón de compra.
- Use
product.title,product.priceString,pricingTerms[].billingDisplayPriceUtilicepricingTerms[].commitmentInfo.priceStringen lugar de precios hardcoded desde StoreKit. - Proporcionar acciones de restaurar compras y gestionar 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
- Guías de revisión de la App Store de iOS
Continúa con planes de facturación mensual de iOS Commitment
Mantén el progreso desde los planes de facturación mensual de iOSSi está utilizando Planes de facturación mensual de compromiso de iOS para planificar pagos y compras, conecte esto 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 Getting Started para el detalle de implementación en Empezar.