2011-06-10 15 views
5

Estoy trabajando en una aplicación para iPhone y deseo implementar el nuevo modelo de renovación automática para compras en la aplicación. Puedo implementar transacciones con éxito e incluso puedo suscribirme a la aplicación, pero ¿qué pasa si el usuario cancela la suscripción de renovación automática?Notificación de cancelación de renovación automática para una compra en la aplicación

¿Cómo podré saber que se ha cancelado y, por lo tanto, no continuar permitiendo el acceso (una vez caducado)?

Respuesta

4

Puede encontrar la fecha de vencimiento de la suscripción de un usuario enviando una verificación de recibo a los servidores de Apple. Consulte la figura 1-3 en el In-App Purchase Programming Guide.

Básicamente, los pasos son:

  1. En el dispositivo, obtener un recibo de transacción para una aplicación con opción de compra en. O bien uno que ha guardado durante una transacción o llamando al [SKPaymentQueue restoreCompletedTransactions].
  2. Envía ese recibo a tu servidor. (Esto es preferible a tratar de hacer una verificación de recibo con los servidores de Apple directamente desde la aplicación, ya que eso requeriría almacenar su secreto compartido en el dispositivo.)
  3. Envíe el recibo a los servidores de Apple desde su servidor, y en respuesta busca una clave llamada expires_date (expresada en milli segundos desde el 1 de enero de 1970 GMT).

Utilicé esta guía para ayudarme en el lado del servidor: Verifying Apple App Store Receipts For In App Purchases With PHP and cURL.

No hay manera de determinar si el usuario ha activado o no la renovación automática. Apple no le da acceso a esta información. La única forma es esperar hasta que la fecha de vencimiento pase sin una renovación.

+0

Oye, Andrew, es posible suscribirse desde la cuenta de iTunes1 y luego Cambiar la cuenta de iTunes a Cuenta2, y la aplicación debería continuar con la nueva cuenta de iTunes, es decir, Cuenta2. La aplicación no debería solicitar compras desde la cuenta 2. de iTunes. ¿Cómo debo administrar? Estoy usando la suscripción de renovación automática. – Charmi

2

si el estado de la recepción es 21006 y hay una clave denominada cancellation_date, entonces es una cancelación, se puede encontrar la nueva fecha de caducidad en esa clave, pero es una fecha formateada, si necesita un mejor valor para analizar comprobar receipt['latest_expired_receipt_info']['cancellation_date_ms'] Igual que expires_date

+0

No recibí el recibo ['latest_expired_receipt_info']. ¿está recibiendo más? – Jasmit

+0

no obtengo ninguna de las claves mencionadas. –

Cuestiones relacionadas