Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] sessiones y paypal

Estas en el tema de sessiones y paypal en el foro de PHP en Foros del Web. Hola, Tengo reservas online y uso paypal. Hasta ahora no he usado sessiones ya que funciona bien sin, pero quiero que la reserva se anule ...
  #1 (permalink)  
Antiguo 01/01/2014, 13:10
 
Fecha de Ingreso: mayo-2009
Mensajes: 382
Antigüedad: 15 años
Puntos: 6
sessiones y paypal

Hola,
Tengo reservas online y uso paypal.
Hasta ahora no he usado sessiones ya que funciona bien sin,
pero quiero que la reserva se anule cuando da al boton atras.

Eso debe de funcionar con sessiones, pero el problema es cuando el cliente va a paypal a pagar y no paga ni tampoco da clic en el boton cancelar dentro del paypal.

Entonces la reserva se eliminará con un cronjob que se ejecuta cada 30 minutos.
Lo que pasa es que a veces, no pagan, salen de paypal e intentan reservar otra vez, pero entonces esta ya reservado y tienen que esperar a que el cronjob cancela la reserva.

No sé como se podría hacer para que la session se quede despues de ir a paypal y seguir con la session cuando entran otra vez con la pagina de reservar, alli cancelariá la reserva, terminaría la session y empezaría una nueva.
gracias por las ideas.
  #2 (permalink)  
Antiguo 01/01/2014, 14:45
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: sessiones y paypal

Un usuario puede tener más de 1 reserva a la vez? Si no es así, cuando un usuario hace una reserva, se le eliminan todas las que tuviera pendientes.

Si el caso es más complejo, puedes guardar una variable "semáforo" dentro de la sesion (o en una cookie, por si el usuario desconecta y vuelve a conectar, etc).Esta variable se pone a "1" justo antes de que el usuario abandone tu web para ir a paypal.
Cuando paypal redirige al usuario de vuelta a tu web, lo primero que haces es poner esa variable a cero.
Si en cualquier página de tu web, que no sea el callback de paypal, esa variable de sesion está a "1", significa que ha dejado una reserva "pendiente" en la BD.Se elimina, y se pone la variable semaforo a "0".
  #3 (permalink)  
Antiguo 01/01/2014, 14:55
 
Fecha de Ingreso: mayo-2009
Mensajes: 382
Antigüedad: 15 años
Puntos: 6
Respuesta: sessiones y paypal

Cita:
Iniciado por dashtrash Ver Mensaje
Un usuario puede tener más de 1 reserva a la vez? Si no es así, cuando un usuario hace una reserva, se le eliminan todas las que tuviera pendientes.

Si el caso es más complejo, puedes guardar una variable "semáforo" dentro de la sesion (o en una cookie, por si el usuario desconecta y vuelve a conectar, etc).Esta variable se pone a "1" justo antes de que el usuario abandone tu web para ir a paypal.
Cuando paypal redirige al usuario de vuelta a tu web, lo primero que haces es poner esa variable a cero.
Si en cualquier página de tu web, que no sea el callback de paypal, esa variable de sesion está a "1", significa que ha dejado una reserva "pendiente" en la BD.Se elimina, y se pone la variable semaforo a "0".
No ando muy pez en las sessiones, estuve probando y cuando fui a paypal y volví se habia perdido la variable de la session.

Puede tener mas de una reserva aunque no es muy frecuente.

Lo hago de esta manera,
cuando hace una reserva y va a paypal, en caso de que no pague y hace clic en la pagina cancelación de paypal es rediregido a mi pagina de cancelar que recibe el id de la reserva que es único y se elimina asi:
Código PHP:
    <?php
    $id 
= @mysql_real_escape_string($_GET['id']);
include(
"base.php");         
$sql mysql_query("DELETE FROM bookings WHERE id=$id");
$sql mysql_query("UPDATE orders SET booked='deleted' WHERE id = '$id'");
    
?>

Un código parecido uso en un cronjob que entre 30 y 45 minutos elimina los que no estan pagados.

El problema está en cuando en el lapso dan al boton atras yendo a paypal y vuelve al formulario para hacer algún cambio la reserva está hecha y hay que esperar que el cronjob la elimine. Eso lo puedo resolver con sessiones.

Lo que no sé como resolver es si van a la pagina de paypal, es decir, deja la web y en vez de cancelar el pago en paypal con el enlace que va a mi pagina de anulación, cierra la ventana o da al botón atrás.
No hay nada que cancele la reserva, al no ser que puedo seguri con la session con la variable id.
Lo que quiero hacer es que si vuelve a la pagina del formulario que elimine la reserva.
Si es así que al abondonar la web se pierde la session, quizas habría que guardarlo en una cookie?
Gracias.
  #4 (permalink)  
Antiguo 01/01/2014, 15:19
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: sessiones y paypal

A ver...si...si todo eso ya lo explicaste en el primer post...
Si pierdes la variable de sesión , tendrías que ver por qué..
Si no quieres usar variables de sesión, lo mismo da, el concepto es el mismo: poner una variable a 1 cuando el usuario está pagando, y a 0 cuando ha vuelto.Si esa variable la guardas en una sesion, una cookie, la BD, un fichero con el id del usuario...lo que sea..lo mismo da.
  #5 (permalink)  
Antiguo 01/01/2014, 15:41
 
Fecha de Ingreso: mayo-2009
Mensajes: 382
Antigüedad: 15 años
Puntos: 6
Respuesta: sessiones y paypal

Cita:
Iniciado por dashtrash Ver Mensaje
A ver...si...si todo eso ya lo explicaste en el primer post...
Si pierdes la variable de sesión , tendrías que ver por qué..
Si no quieres usar variables de sesión, lo mismo da, el concepto es el mismo: poner una variable a 1 cuando el usuario está pagando, y a 0 cuando ha vuelto.Si esa variable la guardas en una sesion, una cookie, la BD, un fichero con el id del usuario...lo que sea..lo mismo da.
Siento si repetí, pero como preguntaste si podia tener mas de uno....
No es que no quiera tener sessiones, es que no sé muy bien lo que está mejor y porque se perdió, ni pensaba que hacia algo mal, sino que era así.

Quiero pasar el id tan solo, con eso me basta y de la mejor y mas sencilla manera.
Gracias.
  #6 (permalink)  
Antiguo 01/01/2014, 16:13
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: sessiones y paypal

La mejor sería en la BD.Así no dependes de lo que haga el usuario.Si una "reserva" tiene el flag (columna) "comprándose" a 1, y el usuario que la está comprando, es el mismo que está intentando re-comprarla, se elimina la anterior.
También es la más complicada de implementar, ya que tienes que modificar tablas, y no sólo introducir código PHP.
Una sesión o una cookie son más fáciles de implementar, aunque la sesión puedes perderla si el usuario cierra el navegador, y la cookie, en caso de que el usuario las borre.

Cuando dices que se perdió el valor guardado en la sesión, sabes si lo que ocurrió es si se perdió ese valor, o se perdió la sesión entera? (session_id distinto).Si se perdió la sesión entera, seguro que llamaste a session_start?
  #7 (permalink)  
Antiguo 01/01/2014, 16:28
 
Fecha de Ingreso: mayo-2009
Mensajes: 382
Antigüedad: 15 años
Puntos: 6
Respuesta: sessiones y paypal

Cita:
Iniciado por dashtrash Ver Mensaje
La mejor sería en la BD.Así no dependes de lo que haga el usuario.Si una "reserva" tiene el flag (columna) "comprándose" a 1, y el usuario que la está comprando, es el mismo que está intentando re-comprarla, se elimina la anterior.
También es la más complicada de implementar, ya que tienes que modificar tablas, y no sólo introducir código PHP.
Una sesión o una cookie son más fáciles de implementar, aunque la sesión puedes perderla si el usuario cierra el navegador, y la cookie, en caso de que el usuario las borre.

Cuando dices que se perdió el valor guardado en la sesión, sabes si lo que ocurrió es si se perdió ese valor, o se perdió la sesión entera? (session_id distinto).Si se perdió la sesión entera, seguro que llamaste a session_start?
No sé si te cogo,
como puedo saber si es el mismo que hace la reserva de nuevo o cualquier otro?
No hacen login, sino reservan directamente.
¿Comparando email o nombre? puede dar el caso de que no le va la tarjeta o cuenta paypal y va atras al formulario de nuevo para hacer la reserva en otro nombre para poder usar otra tarjeta?

Respecto al perder la sessión,
No estoy segura como lo hice, pero creo que llamé a session_start.
ya que al dar al boton atras volví a la pagina que empieza con session start.
Habría que reproducirlo si ese es el camino.

Creo que sessiones es suficiente, o quizas mejor cookies.
No es muy probable que el usuario cierre el navegador, pero es aún menos probable que en medio de una reserva elimina los cookies.
Tengo el cronjob como respaldo que a los 30-45 minutos lo elimina automáticamente si no está pagado.

Lo que ocurre a veces, es que reservan, tienen cualquier problema con el pago y no terminan pagando la reserva y nos llaman preocupados al ya no estar disponible.
  #8 (permalink)  
Antiguo 02/01/2014, 16:51
 
Fecha de Ingreso: mayo-2009
Mensajes: 382
Antigüedad: 15 años
Puntos: 6
Respuesta: sessiones y paypal

Bueno, ya me he puesto a probarlo de nuevo, y esta vez no pierde la session si estoy navegando.
Lo que si pierde la sesion es cuando voy a paypal y dejo la ventana abierta sin tocar nada unos minutos, cuando doy atras la sesion ha caducado.

Estoy intentando poner un poco de orden en mis pensamientos.
Tengo el formulario de reserva en pagina 1, en pagina 2 una pagina donde se registra la reserva en la bd y despues es rediregido hacia paypal.

Primero puse la session en pagina 1 y 2, pero al ver que el formulario se queda en blanco si no valida y dan al boton atras, he iniciado la sesion en pagina 2.
Creo que en pagina 2 debo de hacerlo todo.
Iniciar sesion, registrar la reserva, ir a pagar, si da a boton atras y vuelven a pagina 2 la reserva ha de ser eliminada y la sesion destruida, y cuando vuelven a pagina 1 rellena el formulario y una nueva sesion se inicia en pagina 2.
Tambien hay que tener en cuenta la posibilidad de una persona que hace una reserva, la paga, y despues va a otra propiedad y hace otra propiedad.
Alli tiene que inicarse una nueva sesion.

Mi idea asi a bote pronto es usar if enviar formulario en pagina 2 { registrar la reserva y guardar el id de la reserva en la sesion e ir a paypal a pagar }
else { (=dar al boton atras) eliminar la reserva con la ayuda del id de la sessin}
en pagina 1 donde esta el formulario destruir cualquier sesion anterior...
aqui estoy perdido, se puede destruir sin iniciar sesion?

Otra cosa,
para intentar hacer que la sesion no se muera por inactividad, cosa que si ocurre cuando van a pagar he probado session_set_cookie_params pero no me va.

A ver si alguien me puede alumbrar el camino
gracias

Etiquetas: paypal
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:33.