Foros del Web » Programando para Internet » PHP »

PayPal - Borrar Variables que Recibes

Estas en el tema de PayPal - Borrar Variables que Recibes en el foro de PHP en Foros del Web. Buenos dias a todos, Estoy haciendo un pequeño proyecto y me he topado con un problema que no me esperaba. La cuestion es que los ...
  #1 (permalink)  
Antiguo 21/09/2012, 04:35
 
Fecha de Ingreso: septiembre-2012
Ubicación: Palma de Mallorca
Mensajes: 25
Antigüedad: 11 años, 7 meses
Puntos: 1
Exclamación PayPal - Borrar Variables que Recibes

Buenos dias a todos,

Estoy haciendo un pequeño proyecto y me he topado con un problema que no me esperaba.

La cuestion es que los usuarios de mi pagina tienen unos creditos que puedan usar en la aplicacion , y que recargan mediante PayPal. Hasta aqui perfecto.

El problema esta en que cuando realizan el pago, les llevo a una pagina llamada exito.php , donde recogo los datos que me envia PayPal y actualizo la base de datos.

Pero si un usuario actualiza la página o vuelve atras se vuelve a actualizar la pagina, y se vuelve a actualizar la base de datos, añadiendole unos creditos que no ha pagado.

A alguien le ha pasado algo similar? Espero haberme explicado correctamente.

Saludos!!
  #2 (permalink)  
Antiguo 21/09/2012, 09:00
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: PayPal - Borrar Variables que Recibes

Usa header() para reemplazar la dirección del navegador al terminar la transacción con Paypal, también Paypal te manda un identificador, puedes tomar ese valor como único y así solo procesar una vez los cambios.

Otra opción es usar IPN de Paypal, que es completamente transparente al proceso con el usuario.

Saludos.
  #3 (permalink)  
Antiguo 21/09/2012, 09:18
 
Fecha de Ingreso: junio-2011
Ubicación: Veracruz
Mensajes: 16
Antigüedad: 12 años, 10 meses
Puntos: 5
Respuesta: PayPal - Borrar Variables que Recibes

Una solucion mas Facil y Rapida seria que lo hicieras con ajax, no tendrian la posibiliad de dar back...

Si necesitas ayuda con ajax puedes enviarme contactarme... saludos.
  #4 (permalink)  
Antiguo 21/09/2012, 09:33
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: PayPal - Borrar Variables que Recibes

Podrías usar ajax como dicen, pero si falla algo en el navegador implicando que esté desactivado o cualquier otro tipo de problema con javascript, olvidate de ajax, usa PHP
  #5 (permalink)  
Antiguo 21/09/2012, 10:43
 
Fecha de Ingreso: septiembre-2012
Ubicación: Palma de Mallorca
Mensajes: 25
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: PayPal - Borrar Variables que Recibes

Cita:
Iniciado por GatorV Ver Mensaje
Usa header() para reemplazar la dirección del navegador al terminar la transacción con Paypal, también Paypal te manda un identificador, puedes tomar ese valor como único y así solo procesar una vez los cambios.

Otra opción es usar IPN de Paypal, que es completamente transparente al proceso con el usuario.

Saludos.
Gracias por las contestaciones a todos.

Gator: Si uso header() lo que hare será redireccionar a otra parte, pero podrán volver atras igual, no? E incluso si les sale que el documento esta expirado, lo pueden actualizar, y seguramente apareceran las variables de PayPal de nuevo.
Lo he hecho de esta manera antes:

echo '<meta http-equiv="Refresh" content="1;url=perfil.php"> ';

El header no se por que ha decidido dejar de funcionar.

Y esta es la funcion que uso para tratar las variables de PayPal.

if(($_POST['custom']<>'')&& ($_POST['payer_email']<>'')&&($_POST['payer_id']<>'')&&($_POST['payer_status']<>'')&&($_POST['payment_date']<>'')){

$paypal= PayPal(limpiar($_POST['custom']), limpiar($_POST['payer_email']), limpiar($_POST['payer_id']), limpiar($_POST['payer_status']), limpiar($_POST['payment_date']), limpiar($_SESSION['id']),limpiar($_SESSION['creditos']));

}

Y lo que comentas del IPN de PayPal, sinceramente,ni idea. Es la primera vez que me meto con paypal.

Gracias a todos
  #6 (permalink)  
Antiguo 21/09/2012, 10:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: PayPal - Borrar Variables que Recibes

Repito, si usas header(), aunque hagan back, sería al formulario anterior a Paypal, es por eso que lo mejor para limpiar por completo, deberías de usar IPN, así todo esto corre en un proceso alterno al del browser actual.
  #7 (permalink)  
Antiguo 21/09/2012, 11:13
 
Fecha de Ingreso: septiembre-2012
Ubicación: Palma de Mallorca
Mensajes: 25
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: PayPal - Borrar Variables que Recibes

Cita:
Iniciado por GatorV Ver Mensaje
Repito, si usas header(), aunque hagan back, sería al formulario anterior a Paypal, es por eso que lo mejor para limpiar por completo, deberías de usar IPN, así todo esto corre en un proceso alterno al del browser actual.
Agradezcto tu ayuda, pero no domino nada este tema. Estoy un poco ofuscado ya, y no encuentro ayuda en la web. Puedes recomendarme algo?
Gracias
  #8 (permalink)  
Antiguo 21/09/2012, 18:37
 
Fecha de Ingreso: diciembre-2011
Mensajes: 159
Antigüedad: 12 años, 5 meses
Puntos: 18
Respuesta: PayPal - Borrar Variables que Recibes

Hola

Una solucion sencilla es que crearas un numero aleatorio y lo metiaras en una variable de sesion, si viene de paypal no existe, pero si recargas si, entonces no hace nada.

<?php session_start();

// aqui recoges si existe la sesion
$sesionexit=$_SESSION['numero'];

// si no existe
if (!$sesionexit) {

// recoges variables y las insertas en la base de datos

}

// aqui creas el aleatorio
$keychars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVW XYZ0123456789";

$length = 10;

// RANDOM KEY GENERATOR

$randkey = "";

$max=strlen($keychars)-1;

for ($i=0;$i<$length;$i++) {

$randkey .= substr($keychars, rand(0, $max), 1);

}

$_SESSION['numero']=$randkey;

Espero te sirva

Saludos
  #9 (permalink)  
Antiguo 21/09/2012, 18:58
 
Fecha de Ingreso: diciembre-2011
Mensajes: 159
Antigüedad: 12 años, 5 meses
Puntos: 18
Respuesta: PayPal - Borrar Variables que Recibes

Se me olvidaba, si desean hacer otro pago, solo borras la variable en la pagina de confirmacion del pago, supongo que confirman antes de realizar el pago con solo

<?php

unset($_SESSION['numero']);

?>
  #10 (permalink)  
Antiguo 21/09/2012, 19:35
 
Fecha de Ingreso: diciembre-2011
Mensajes: 159
Antigüedad: 12 años, 5 meses
Puntos: 18
Respuesta: PayPal - Borrar Variables que Recibes

Estaba pensando, la mejor solucion es que envies el id del pago a paypal, lo recibas y lo marques como pagado en base de datos, asi aun cuando refresquen la pagina ya esta como pagado.

o sea

creas una base de datos o usas la existente con un campo llamado por ejemplo pago, le das un valor de 0

envias el id del pago y lo recibes de paypal

al recibirla miras el campo esta como 0

si esta como 0 haces lo que tienes que hacer y actualizas el campo pago a 1

si se actualiza la pagina el campo estara como 1 por lo que no hara nada

No se si me di a entender, ando un poco apurado, si no mañana te muestro algo mas grafico.

Saludos
  #11 (permalink)  
Antiguo 22/09/2012, 03:03
 
Fecha de Ingreso: septiembre-2012
Ubicación: Palma de Mallorca
Mensajes: 25
Antigüedad: 11 años, 7 meses
Puntos: 1
De acuerdo Respuesta: PayPal - Borrar Variables que Recibes

Cita:
Iniciado por nestornoe Ver Mensaje
Estaba pensando, la mejor solucion es que envies el id del pago a paypal, lo recibas y lo marques como pagado en base de datos, asi aun cuando refresquen la pagina ya esta como pagado.

o sea

creas una base de datos o usas la existente con un campo llamado por ejemplo pago, le das un valor de 0

envias el id del pago y lo recibes de paypal

al recibirla miras el campo esta como 0

si esta como 0 haces lo que tienes que hacer y actualizas el campo pago a 1

si se actualiza la pagina el campo estara como 1 por lo que no hara nada

No se si me di a entender, ando un poco apurado, si no mañana te muestro algo mas grafico.

Saludos
Hola Nestornoe. Muchas gracias por tu tiempo. No lo habia pensado, pero lo de la base de datos me gusta mucho,por que una vez echo el pago, aunque refresquen no se añadira.Lo probaré y te digo cosas.
Gracias!!!

Etiquetas: paypal, variables
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 08:43.