Saltar al contenido
WebViewGold Del vibe coding a la App Store
Español
Consigue WebViewGold

Rechazo en App Store

Directriz 3.1.1 (In-App Purchase): qué hacer cuando Apple rechaza tu checkout de Stripe

Tu app web cobra a través de Stripe, y eso está bien en la web. Dentro de la app de iOS, Apple exige In-App Purchase para cualquier bien digital que se use en la app. La solución no es arrancar Stripe; es dejar que la compilación de iOS use StoreKit a través de RevenueCat mientras la web conserva Stripe.

Desde $109 de pago único por plataforma, o deja que nuestro equipo lo haga todo desde $698.

  • Garantía de aprobación – o te devolvemos el dinero en 14 días
  • Sin programar
  • Pago único, actualizaciones gratuitas
  • Soporte humano 24/7
  • Hecho en Alemania desde 2014 · ISO 27001

Qué dice la 3.1.1, en palabras sencillas

Si tu app desbloquea funciones, contenido o servicios que se consumen dentro de la app (suscripciones, niveles premium, créditos de IA, plantillas, cursos), esa compra debe pasar por In-App Purchase. La directriz también prohíbe botones, enlaces y textos dentro de la app que dirijan a la gente a otra forma de pagar por esos artículos digitales. Apple la aplica por tienda regional, y existen excepciones por región (más abajo), pero para una app pequeña la regla práctica es: los bienes digitales dentro de la app de iOS usan IAP.

Las plantillas de Lovable, Bolt y v0 conectan Stripe Checkout por defecto, y la IA coloca encantada un botón de "Upgrade for $9/month" en la página de precios. El revisor lo pulsa, ve un formulario de Stripe y escribe el rechazo 3.1.1. No hay nada malo en tu modelo de negocio; lo que falla es el canal dentro de la app.

¿Tu compra necesita In-App Purchase?

Qué vendesDentro de la app de iOSDirectriz
Suscripción a funciones de la app, nivel premiumIAP obligatorio3.1.1
Créditos de IA, tokens, generacionesIAP obligatorio (consumible)3.1.1
Plantillas, libros electrónicos, cursos usados en la appIAP obligatorio3.1.1
Bienes físicos y servicios usados fuera de la app (productos enviados, comida a domicilio, una visita de limpieza)Stripe o cualquier procesador permitido; el IAP no debe usarse3.1.3(e)
Servicios en tiempo real de persona a persona (tutorías, consultas)Otros métodos de pago permitidos; de uno a muchos debe usar IAP3.1.3(d)
Contenido comprado en la web y consumido solo en la app (apps de lectura: libros, audio, video, noticias)Puede desbloquearse sin IAP; sin botones de compra en la app ni enlaces para comprar en otro sitio3.1.3(a)

Cambia la compilación de iOS a In-App Purchase con RevenueCat

Stripe se queda en la web; la app llama a un solo esquema de URL.

  1. Crea los productos en App Store Connect

    Firma el contrato de Paid Apps (titular de la cuenta) y luego añade la suscripción o el consumible con un identificador como pro_monthly. Añade un tester de sandbox en Users and Access para las pruebas.

  2. Configura RevenueCat y Config.swift

    Crea un proyecto en RevenueCat, importa los productos y pega la clave y el ID de proyecto en revenueCatAPIKey y revenueCatProjectID de Config.swift. El Bundle ID en Xcode, App Store Connect y RevenueCat debe coincidir. Guía completa: configuración de RevenueCat para apps web empaquetadas y la documentación de In-App Purchases.

  3. Haz que la app web sepa que se ejecuta dentro de la app

    Pon useragent_iphone en Config.swift con el user agent por defecto más un marcador como MyAppiOS y luego comprueba navigator.userAgent en tu app web. Dentro de la app, sustituye el botón de Stripe por un enlace a revenuecat://purchase?external_id=USER_ID&product=pro_monthly, o abre un paywall nativo con revenuecat://launchPaywall?external_id=USER_ID&offering=default (iOS 15 o posterior).

  4. Sincroniza el entitlement con tu backend

    Usa los webhooks de RevenueCat (o las variables inyectadas planID y transactionIdentifier) para fijar el plan en el registro del usuario en Supabase o Firebase, de modo que la misma cuenta sea premium en la web y en la app.

  5. Añade los enlaces de restaurar y gestionar

    Un enlace visible de "Restaurar compras" a restoreinapppurchases:// y un enlace de "Gestionar suscripción" a cancelinapppurchase://, que abre la gestión de suscripciones de Apple. Los revisores esperan ambos.

  6. Elimina cualquier pista de pago externo de la app

    Nada de "más barato en nuestra web", nada de portal de facturación de Stripe, ningún correo que diga "mejora tu plan en tudominio.com" disparado desde la app, ninguna página de precios que compare ambos. Después sube una nueva compilación y responde en el Centro de resolución con los IDs de producto.

Mi WebView de iOS finalmente está aprobada. ¡Gracias!

Taha Farooqui · CodeCanyon

Una sola función de compra para web y app

La web conserva Stripe; la compilación de iOS redirige a RevenueCat. Detecta la app mediante el marcador personalizado del user agent.

javascript
// Config.swift: useragent_iphone = default UA + " MyAppiOS"
var isIosApp = navigator.userAgent.indexOf("MyAppiOS") !== -1;

function buy(productId, userId) {
  if (isIosApp) {
    // StoreKit via RevenueCat inside the WebViewGold app
    window.location.href = "revenuecat://purchase?external_id=" + encodeURIComponent(userId) + "&product=" + productId;
  } else {
    // Stripe Checkout on the web
    window.location.href = "/checkout?plan=" + productId;
  }
}

Enlaces de pago externos: las reglas varían según la región

Las reglas varían según la región. En Estados Unidos, tras una orden judicial de 2025, las apps de la tienda estadounidense pueden enlazar a opciones de compra externas; la Unión Europea tiene condiciones alternativas bajo la Ley de Mercados Digitales; en el resto se aplica la regla clásica. Estas reglas cambian y conllevan sus propias obligaciones de información, así que consulta el texto vigente de Apple antes de confiar en ellas. Para una app de una sola persona, el IAP a través de RevenueCat pasa la revisión en todas las tiendas con el mínimo papeleo; consulta la guía de decisión Stripe frente a In-App Purchase para la parte de negocio.

Preguntas frecuentes

¿Puedo mantener Stripe para la versión web y usar IAP solo en la app?

Sí, esa es la configuración normal. La misma cuenta recibe el entitlement por cualquiera de los dos canales; tu backend trata igual un webhook de RevenueCat y un webhook de Stripe.

¿Puedo simplemente ocultar la página de precios en la app y pedir a los usuarios que se suscriban en la web?

Ocultar la compra está permitido para contenido de tipo lectura, pero decir a los usuarios dentro de la app que vayan a la web no lo está. Si la app en sí no tiene nada que comprar y nunca señala a otro sitio, los revisores suelen aceptarlo; a la mayoría de las apps les va mejor añadiendo IAP.

¿Los consumibles como los créditos de IA de verdad necesitan IAP?

Sí. Los créditos que se gastan dentro de la app son contenido digital. Créalos como compras consumibles dentro de la app y abona el saldo en tu backend cuando llegue el webhook de RevenueCat.

Tres formas de llevar tu app a las tiendas

El mismo resultado, con distinta cantidad de trabajo por tu parte. Las tres incluyen la garantía de aprobación y soporte humano 24/7.

Hazlo tú mismo

$109 por plataforma, pago único

La licencia de WebViewGold: un proyecto de Xcode o Android Studio listo para usar. Pega tu URL, define nombre e icono, activa funciones, compila y envía. Actualizaciones gratuitas para siempre.

Ver planes en la página principal

Full Service

$698 por plataforma $798

Envíanos tu URL y tu icono. Nuestro equipo configura, compila y entrega tu app en 72 horas, en marca blanca y con los proyectos fuente. Ambas plataformas por $1,158.

Detalles del Full Service Con tecnología de WeSetupYourWebViewApp

Precios de la Oferta de invierno válidos hasta el 31 de diciembre de 2026.

¿Listo para lanzar tu app?

Garantía de aprobación en App Store & Google Play – o te devolvemos el dinero en 14 días

¿Prefieres delegarlo? Full Service: configuramos, compilamos y entregamos en 72 horas, desde $698 por plataforma. ¿Preguntas? Chatea con nosotros 24/7.

Los reembolsos se conceden bajo las condiciones indicadas en nuestras FAQ: un rechazo por motivos ajenos al contenido por parte de Apple y/o Google, reclamado dentro de los 14 días posteriores a la compra.