He configurado un archivo IPN de PayPal. Cuando el usuario está en el sitio y presiona enviar, los detalles sobre la transacción se cargan en la base de datos. La identificación relevante se envía a través de PayPal como campo personalizado. Cuando se completa el pago, la IPN se usa para actualizar la base de datos como transacción completada según la identificación.
Todo está bien.
Sin embargo, esta es la parte difícil. También necesito actualizar otra tabla: un código de descuento/cupón db. La actualización se basa en el código ingresado y también en la cantidad de veces que aún se puede usar el código. Básicamente, si fue 50 veces, después de usarlo una vez, la base de datos se actualizaría con 49. Entonces, necesito pasar el código y los usos restantes permitidos, así que puedo decir actualizar tabla donde código = XXXX (actualizar nuevo valor de 49, etc.).
Puedo averiguar cómo pasar todos estos valores en el campo personalizado, pero no puedo averiguar cómo analizarlos nuevamente. Lea acerca de cómo separarlos con: etc., pero necesita algunos consejos de alguien que lo haya hecho antes.
Así es como regresan actualmente los detalles de IPN:
$personalizado = $_POST[‘custom’];
Gracias.
Hice esto recientemente,
Envíe su campo personalizado de Paypal a los datos como lo haría, dentro de ese campo personalizado, use un separador para dividir sus datos. En el siguiente ejemplo, los valores se dividen usando un “|”, puede usar cualquier carácter que desee que esté disponible en su juego de caracteres.
$member_id = 1;
$some_other_id = 2;
<input type="hidden" name="custom" value="<?php echo $member_id.'|'.$some_other_id ?>"/>
Esto generará:
<input type="hidden" name="custom" value="1|2"/>
Cuando obtenga la información de paypal (la respuesta de IPN), procéselo así:
$ids = explode('|', $_POST['custom']); // Split up our string by '|'
// Now $ids is an array containing your 2 values in the order you put them.
$member_id = $ids[0]; // Our member id was the first value in the hidden custom field
$some_other_ud = $ids[1]; // some_other_id was the second value in our string.
Básicamente, enviamos una cadena con un delimitador personalizado que elegimos a paypal, paypal nos lo devolverá en la respuesta de IPN. Luego necesitamos dividirlo (usando la función explotar()) y luego hacer lo que quieras con él.
Cuando obtenga su valor de la base de datos, selecciónelo usando métodos normales, luego simplemente disminúyalo en 1 usando:
$val_from_db--; // Thats it!, Takes the current number, and minus 1 from it.
Esto amplía la solución de JustAnil.
HTML:
<input type="hidden" name="custom" value="some-id=1&some-type=2&some-thing=xyz"/>
y su secuencia de comandos IPN se vería así:
<?php
parse_str($_POST['custom'],$_CUSTOMPOST);
echo $_CUSTOMPOST['some-id'];
echo $_CUSTOMPOST['some-type'];
echo $_CUSTOMPOST['some-price'];
?>
Es posible que desee volver a verificar que parse_str realiza urldecode en los elementos de matriz resultantes.
Aquí hay un ejemplo usando JSON:
<?php
$arr = array($member_id, $coupon);
$data = json_encode($arr);
?>
<input type="hidden" name="custom" value="<?= $data ?>"/>
Luego por el otro lado:
$custom = json_decode($_POST['custom'], true);
$member_id = $custom[0];
$coupon = $custom[1];
También puede analizar matrices asociativas también:
<?php
$arr = array('id' => $member_id, 'coupon' => $coupon);
$data = json_encode($arr);
?>
<input type="hidden" name="custom" value="<?= $data ?>"/>
Luego por el otro lado:
$custom = json_decode($_POST['custom'], true);
$member_id = $custom['id'];
$coupon = $custom['coupon'];
Hay una buena simetría cuando se usa JSON para analizar los datos.
.
Encontré este bit de código …
– usuario718359
30 sep.
$temp = $_POST[‘custom’]; // & & ip & visitorId & attributionInfo list($, $, $custIP, $visitorId, $attributionInfo) = explotar(“&”, $temp, 5);
– usuario718359
30 sep.