quitar - iphone cancelar suscripcion
En suscripciones de aplicaciĆ³n auto-renovables (4)
Aquí es cómo implementamos In App Purchases y específicamente los nuevos productos auto-renovables en mi empresa.
La aplicación transmite el recibo de la transacción a nuestro servicio web, devolvemos OK a la aplicación si la manejamos correctamente y Apple podría verificarla. En ese caso, actualizamos la cuenta de usuario (es decir, la base de datos) para decir "sí, él ha pagado y su suscripción es válida hasta la fecha de vencimiento del recibo".
Después de la aprobación de este servicio web, la aplicación vuelve a cargar la información de la cuenta a través de otro servicio web y ve que hay una suscripción válida. Eso fue todo ... Hasta que aparecieron productos auto-renovables.
Ahora teníamos que implementar algunos trabajos CRON que se ejecutan todos los días: todos los días hacemos una lista de pases que se supone que expiran, y le preguntamos a Apple si el recibo original sigue siendo válido: lo mágico es que en su respuesta, hay un campo latest-receipt
que incrusta el último recibo. Si no es el mismo que tenemos, entendemos que la suscripción se renovó automáticamente, almacenamos el último recibo para la próxima verificación cron y actualizamos la cuenta de usuario para extender la fecha de vencimiento.
Espero eso ayude.
Lo siento por la millonésima pregunta sobre las suscripciones de iTunes, pero todavía tengo algunas dudas.
Básicamente estoy implementando suscripciones auto renovables en mi aplicación y quiero asegurarme de que lo hice bien. Aquí hay una lista de pasos a seguir que se me ocurrieron:
- siempre que un usuario compre una suscripción, envíe el recibo al servidor para validarlo
- Si el recibo es válido, guárdelo en la base de datos.
- en la carga de la aplicación, pregunte al servidor si existe un recibo para este UDID (esto es para averiguar si el usuario tiene una suscripción válida)
- si es así, verifique si se ha agregado un nuevo artículo en la tienda en un rango de fechas desde la fecha de inicio de la suscripción hasta la fecha de caducidad
- en su caso, notifique al usuario sobre esos artículos de alguna manera y márquelos como descargables libremente
- si es así, verifique si se ha agregado un nuevo artículo en la tienda en un rango de fechas desde la fecha de inicio de la suscripción hasta la fecha de caducidad
¿Son correctos estos pasos? Y si es así, ¿por qué el documento de Apple dice:
En la mayoría de los casos, su aplicación de cliente iOS no debería tener que cambiar. De hecho, su aplicación cliente ahora es más sencilla, ya que puede usar el mismo código para recuperar suscripciones auto renovables como lo hace para recuperar productos no consumibles. Esto se describe en "Restauración de transacciones". Su aplicación recibe una transacción separada por cada período de tiempo en que se renovó la suscripción; Su solicitud debe verificar cada recibo por separado.
Para mí, parece que esto necesita un código para manejar todos los casos que mencioné, en su lugar. O estoy totalmente equivocado al respecto. Soy yo
Además, ¿cómo puedo saber sobre la fecha de vencimiento de la suscripción? No puedo encontrar una manera de obtener esta información en cualquier lugar. ¿Se supone que debo guardar esto en mi propia base de datos?
Actualizar:
He descubierto algunas cosas desde que publiqué esta pregunta. Siéntete libre de corregirme si me equivoco.
En primer lugar, supongo que debo guardar la duración de la suscripción en algún lugar de mi propia base de datos, ya que, como se indica en los documentos de Apple, no se puede recuperar de ninguna manera a través de los servicios web de Apple. De hecho, cada longitud de suscripción tiene un identificador de producto diferente, por lo que debe tener una forma de convertir un identificador de producto a una longitud de suscripción.
Además, Sylvian ha publicado detalles sobre su implementación de suscripciones auto-renovables, por lo que al menos sé que mi pensamiento no era demasiado defectuoso.
Ahora el único problema es este: ¿cómo puedo saber que un usuario tiene una suscripción válida? Podría almacenar esta información en mi servidor, sí, pero ¿cómo asocio a un usuario con una transacción completada? ¿Debo guardar el UDID del dispositivo?
Creo que encontré una solución. No requiere un nombre de usuario / contraseña adicional y parece estar funcionando.
Nota : Si cree que esto es inapropiado, explique por qué en los comentarios. Gracias.
Básicamente, cada vez que un usuario compra una suscripción, valido el recibo en mi servidor y almaceno los datos del recibo en los valores predeterminados del usuario. Luego, cuando se abre la aplicación, o cuando necesito verificar si la suscripción sigue siendo válida, recupero los datos de recibo guardados previamente de los valores predeterminados del usuario y los valido en el servidor.
Mi servicio web solo devuelve si la suscripción sigue siendo válida o ha caducado, además de otra información relacionada, como la duración de la suscripción. Para hacer esto, solo consulta el servidor de iTunes como de costumbre, y verifica si la respuesta de estado es distinta de cero. 21006
significa que la suscripción ha caducado.
Por lo que tengo entendido, el servidor de Apple se pondrá en contacto con usted (o el cliente con su iPhone) y le dirá "mire aquí, tengo una compra válida para usted". Dentro de su aplicación, usted lee este mensaje y desbloquea el contenido relacionado con el uso. El siguiente paso es decirle al servidor de Apple que ha respondido al recibo y que el servidor de Apple no volverá a mostrar el mensaje.
Así que con una suscripción renovable obtienes para cada período un nuevo mensaje. Corrígeme si me equivoco, por favor.
Si su aplicación tiene alguna administración de usuarios, es decir, si usa un nombre de usuario / contraseña para usarla, entonces debe mantener un servidor para registrar la compra / validez del usuario que ha iniciado sesión actualmente. Esto es aplicable para la suscripción normal y la compra no consumible. Pero ... si usa la nueva suscripción auto-renovable, NO es posible mantener múltiples usuarios en esa aplicación, porque: este tipo de compra no se puede realizar varias veces dentro del período de suscripción usando el mismo ID de Apple del mismo Me pareció muy molesto y encontré una mejor solución para este caso, es decir, donde tengo varias cuentas secundarias en la aplicación pero quiero usar el mismo ID de Apple para comprar una suscripción auto renovable para cada cuenta. Y creo que tengo que usar el antiguo modelo de suscripción. ¿Alguna idea nueva?