2009-12-03 37 views
21

Estoy tratando de pasar variables personalizadas a PayPal IPN. Puedo lograr pasar una variable. Pero no sé cómo pasar múltiples variables.Pasando variables personalizadas a paypal IPN

Mi proceso es algo como esto

  1. usuario llenar el formulario
  2. botón Hacen clic y va a paypal
  3. Pagaron, IPN me envía de vuelta la información y que ipn.php añadió variables que pasaron a la base de datos.

Mis variables personalizadas son

  1. total de líneas (cada vez que escriben, cuento las líneas)
  2. mensaje (el mensaje que escribieron)
  3. anuncio ID

Pero por ahora, solo puedo pasar una variable como esta

form.php

<input name="custom" type="hidden" id="custom" value="{$line_count}"> 

$_SESSION['line_count'] = $_POST['lines_txt']; 

ipn.php

$sql="INSERT INTO `form`(`totalline`) VALUES ('" .$_POST['custom']. "');"; 
+10

Ese guión ipn.php usted tiene se parece a un enorme agujero de seguridad de inyección SQL para mí. Por favor, no confirme ese código. –

Respuesta

19

No estoy seguro, si es posible incluso con Paypal para enviar y recibir múltiples variables. Si no es posible debido a las restricciones de Paypal, puede usar uno de los siguientes métodos:

  • Envíe los datos serializados y deserialice al devolverlos.
  • Escriba los datos en la base de datos en form.php (con estado no pagado) y envíe la identificación. En ipn.php, capture el id y establezca el estado = paid/error/whatever en la base de datos.
+0

gracias por su respuesta. Actualmente estoy comprobando y la variable personalizada solo puede contener 200 caracteres, mis variables son más que ese valor, por lo que no puedo pasar.Solo una cosa que puedo hacer es, como usted dice, primero, cuando envían el formulario, almaceno todas las cosas que necesito almacenar en la base de datos, luego obtengo el resultado de la IPN, si eso es exitoso, actualizo el estado, si eso falla, eliminar la entrada. Pero otro problema es que, si cierran el navegador y nunca realizan el pago, ¿cómo puedo eliminar esa entrada? ¿Necesito ejecutar cron y eliminar? :(es una gran cantidad de proceso y funciona – spotlightsnap

+0

@spotligthsnap: Si el usuario cierra el navegador mientras está en el sitio web de Paypal, entonces la entrada de la base de datos persiste, es correcta. Podría eliminarlos a través de un cronjob, pero también puede dejarlos en la base de datos para Analice más tarde (pagos/redirecciones a PayPal) En el mismo espíritu, podría escribir un error después de regresar de Paypal en lugar de simplemente borrar la entrada. – Residuum

+0

Gracias. Esto funciona muy bien. Además, almacenar algunos valores a db y luego enviar a PayPal es una mejor idea. – noobcode

0

Un vago recuerdo me dice que hay dos opciones para el envío de datos a PayPal. El comando x_click y pensé que había algo así como un parámetro de carga. Cuando el parámetro de carga se establece en 1, puede enviar varias líneas a PayPal.

actualizaciónPayPal information about this

2

Si es solo para pasar una variable que no es pertinente para paypal pero más pertinente para usted cuando vuelve, puede usar el valor ['personalizado'] para enviar a paypal, paypal simplemente lo pasará de vuelta a ti una vez que las cosas se hacen de su lado.