2012-05-18 30 views
7

tengo una membresía basada en suscripción, sin embargo me encontré con el siguiente problema:PayPal pago recurrente cancelado con los días restantes

  1. usuario suscrito el 1 de mayo de 2012 con un pago mensual indefinida.
  2. IPN envía al servidor, la activación de la suscripción
  3. usuario ha cancelado el 3 de mayo de 2012.
  4. IPN envía al servidor, se cancela la suscripción y el servidor canceló la membresía.

Sin embargo, como el usuario se suscribió el 1 de mayo de 2012, todavía le quedan algunos días si cancela antes de un mes. ¿Alguna forma de resolver esto? ¿PayPal envía alguna IPN para este tipo de problema?

Una solución en la que pensé es hacer un cronjob todas las noches para comprobar si se acabó el mes.

Respuesta

3

Cuando implementamos servicios de suscripción en nuestro sitio web, que básicamente controlar los eventos de esta manera:

  • confirmación de suscripción - nos marque la suscripción del usuario en nuestro servidor como "renovación automática"
  • dinero recibido - movemos la suscripción del usuario exp fecha de inicio basada en el plazo acordado (mensual o anual); el uso de períodos de prueba, este evento solo es enviado cuando el período de prueba termina
  • suscripción cancelación - marcamos la suscripción del usuario en nuestro servidor como "renovación manual"
  • dinero reembolsado - nos movemos suscripción fecha de caducidad del usuario volver basado en el término acordado.

Al iniciar sesión, comprobamos si la suscripción ha caducado (lo cual es fácil si la almacena en su db).

Básicamente, los eventos de suscripción son independientes de los eventos de pago. Se puede cancelar una suscripción, pero eso no significa que el pago se reembolsa; eso sería un evento separado.

Por cierto, los eventos de pago y suscripción pueden venir en orden diferente (por ejemplo, el pago puede ser primero, seguido de la notificación de suscripción); es importante atender a eso.

2

Cuando el usuario se suscriba, paypal creará un perfil de pago recurrente, lo que significa que el usuario tendrá que pagar mensualmente (anual, diariamente dependiendo del perfil) la suma, el día que se suscribió (por ejemplo, 1 de mayo, 1 de junio , 1 ° de julio). Cuando el usuario cancela, cancela el perfil de pago, no el pago en sí. Entonces, después de eso, PayPal no solicitará ningún otro pago. Si desea darle al usuario los días que le quedan, debe almacenar la información sobre la suscripción.

Puede almacenar en un db el día que se suscribió y el día que lo canceló. Desde allí, puede saber cuántos días tiene el usuario. Paypal envía mensajes de IPN tanto sobre la creación del perfil de pago recurrente, sobre el pago mismo y sobre la cancelación también.

puede encontrar información sobre los mensajes de IPN aquí: https://cms.paypal.com/cms_content/US/en_US/files/developer/IPNGuide.pdf

+0

al menos ¿puedo tener una razón por la que se votó? (solo para aprender de mis errores) – zolipapa

1

Uno de los pares D/V en el mensaje de IPN es next_payment_date seguido de una fecha presentan de esta forma: 03:00:00 06 de julio 2013 PDT

I convertir la fecha a AAAA MM-DD y almacenar eso en la base de datos además del valor profile_status que viene en el mensaje IPN. Cuando un individuo se suscribe, también tengo una simple célula de abonado VERDADERO/FALSO en la base de datos.

lo tanto, si un suscriptor cancela, su profile_status se actualiza en la base de datos de 'Cancelado' y la actualización a FALSO celular suscriptor.

Cuando un usuario visita contenido premium, la celda del suscriptor en la base de datos se comprueba como VERDADERO. Si es así, obtienen el contenido. Si es FALSE, la celda profile_status está marcada y si esa celda está 'Caducada' o NULA, entonces no obtienen el contenido. Si el contenido de la celda está 'Cancelado', se extraen los datos next_payment_date, se agrega un día (para tratar el problema de la zona horaria) y si es mayor que la hora actual, se carga el contenido premium. Si es menor que la fecha actual, su celda profile_status se actualiza a 'Caducado' y no obtienen el contenido.

Cuestiones relacionadas