with color buttons ios app-store in-app-purchase itunesconnect storekit

ios - color - ionic header button



¿Cómo detectar y verificar una renovación para una suscripción auto-renovable? (1)

Así que he configurado una suscripción auto-renovable para mi aplicación con un período de 1 mes, lo que equivale a aproximadamente 5 minutos en el arenero. En la aplicación cliente me suscribo, envío el recibo a mi servidor, se verifica y puse un registro en mi base de datos de que este usuario tiene una suscripción.

Mi pregunta es ¿cómo compruebo si esta suscripción ha sido renovada? He leído los documentos y no puedo averiguar qué debo hacer.

Aquí es donde estoy hasta ahora:

  1. El recibo inicial que se envía a mi servidor se verifica con un estado 0 , excelente. También obtengo latest_receipt , que reemplacé en mi base de datos con el recibo más antiguo.
  2. Después de 6 minutos, cuando trato de verificar la latest_receipt , obtengo el estado 21006 (recibo caducado) y esto:

{ receipt: { original_purchase_date_pst: ''2013-08-06 11:58:04 America/Los_Angeles'', unique_identifier: ''------------'', original_transaction_id: ''----------'', expires_date: ''1376129825000'', transaction_id: ''------------'', quantity: ''1'', product_id: ''subscription'', item_id: ''--------'', bid: ''com.--------'', unique_vendor_identifier: ''---------'', web_order_line_item_id: ''---------'', bvrs: ''2.0'', expires_date_formatted: ''2013-08-10 10:17:05 Etc/GMT'', purchase_date: ''2013-08-10 10:12:05 Etc/GMT'', purchase_date_ms: ''1376129525000'', expires_date_formatted_pst: ''2013-08-10 03:17:05 America/Los_Angeles'', purchase_date_pst: ''2013-08-10 03:12:05 America/Los_Angeles'', original_purchase_date: ''2013-08-06 18:58:04 Etc/GMT'', original_purchase_date_ms: ''1375815484000'' }, latest_expired_receipt_info: { original_purchase_date_pst: ''2013-08-06 11:58:04 America/Los_Angeles'', unique_identifier: ''-------'', original_transaction_id: ''-'', expires_date: ''1376129825000'', transaction_id: ''-'', quantity: ''1'', product_id: ''subscription'', item_id: ''-'', bid: ''com.-'', unique_vendor_identifier: ''--'', web_order_line_item_id: ''-'', bvrs: ''2.0'', expires_date_formatted: ''2013-08-10 10:17:05 Etc/GMT'', purchase_date: ''2013-08-10 10:12:05 Etc/GMT'', purchase_date_ms: ''1376129525000'', expires_date_formatted_pst: ''2013-08-10 03:17:05 America/Los_Angeles'', purchase_date_pst: ''2013-08-10 03:12:05 America/Los_Angeles'', original_purchase_date: ''2013-08-06 18:58:04 Etc/GMT'', original_purchase_date_ms: ''1375815484000'' }, status: 21006 }

El segundo elemento de la matriz solía ser latest_receipt_info , pero ahora es latest_EXPIRED_receipt_info . Esto es lo que dicen los documentos:

Además del campo rece_data, la respuesta también puede incluir dos nuevos campos. Si la suscripción del usuario está activa y fue renovada por una transacción que tuvo lugar después del recibo que su servidor envió a la App Store, el campo latest_receipt incluye un recibo codificado en base 64 para la última renovación de esta suscripción . Los datos decodificados para este nuevo recibo también se proporcionan en el campo latest_expired_receipt_info . Su servidor puede usar este nuevo recibo para mantener un registro de la renovación más reciente.

Por lo tanto, si el subcomité se ha renovado desde la última vez que se verificó mi servidor, el recibo decodificado para la renovación debe estar en latest_expired_receipt_info . En ese objeto, la fecha de expires_date es la misma que la fecha de expires_date del recibo original.

¿Que demonios? Sólo quiero comprobar si el sub está activo. ¿Alguien puede explicar en palabras simples cómo hago eso?

¡Gracias!


Mi experiencia. Supongamos que siempre enviamos el recibo inicial al servidor de Apple.

En cualquier caso, obtendrá JSON con al menos dos campos: status (sin comentarios) y receipt (información sobre el recibo que ha enviado).

Además de eso:

1) Si la suscripción aún está activa , también obtendrá latest_receipt (cadena codificada en base64) y latest_receipt_info (información sobre ese recibo).

2) Si la suscripción ya ha caducado , también obtendrá latest_expired_receipt_info (información sobre el último recibo de renovación). Sí, solo obtienes información al respecto, no una cadena codificada en base64.

Y sí, AFAIK, eso no está documentado en ninguna parte. Espero que ayude.