Я установил IPN-файл PayPal. Когда пользователь находится на сайте и нажимает кнопку отправки сведений о транзакции, она загружается в db. Соответствующий идентификатор отправляется через PayPal как настраиваемое поле. Когда платеж завершен, IPN используется для обновления БД по завершении транзакции на основе идентификатора.
Все хорошо.
Однако это сложный бит. Мне также нужно обновить другую таблицу – код скидки / купон db. Обновление основано на введенном коде, а также на том, сколько раз код может использоваться. В принципе, если это было 50 раз, после использования после того, как db будет обновлено с помощью 49. Поэтому мне нужно передать код, а оставшиеся разрешения разрешены, поэтому можно сказать таблицу обновлений, где code = XXXX (обновить новое значение 49 и т. Д.).
Я могу решить, как передать все эти значения в настраиваемом поле, но не может решить, как их снова разобрать? Читайте о разделении их на: и т. Д., Но вам нужны советы от кого-то, кто делал это раньше.
Вот как сейчас возвращаются данные IPN:
$ custom = $ _POST ['custom'];
Спасибо.
Я сделал это недавно,
Отправьте свое пользовательское поле paypal на данные, как и в этом настраиваемом поле, используйте разделитель для разделения ваших данных. В приведенном ниже примере значения разделяются с помощью «|», вы можете использовать любой символ, который вы хотите использовать в своей кодировке.
$member_id = 1; $some_other_id = 2; <input type="hidden" name="custom" value="<?php echo $member_id.'|'.$some_other_id ?>"/>
Это приведет к выводу:
<input type="hidden" name="custom" value="1|2"/>
Когда вы получаете информацию от paypal (ответ IPN), выполните так:
$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.
Таким образом, в основном, мы отправляем строку с пользовательским разделителем, который мы выбираем для PayPal, paypal вернет его нам в ответе IPN. Затем нам нужно разбить его (используя функцию explode ()), а затем делать то, что вы хотели бы с ним.
Когда вы получаете свое значение из базы данных, выберите ее с помощью обычных методов, а затем просто уменьшите ее на 1, используя:
$val_from_db--; // Thats it!, Takes the current number, and minus 1 from it.
Это расширяет решение JustAnil.
HTML:
<input type="hidden" name="custom" value="some-id=1&some-type=2&some-thing=xyz"/>
и ваш скрипт IPN будет выглядеть примерно так:
<?php parse_str($_POST['custom'],$_CUSTOMPOST); echo $_CUSTOMPOST['some-id']; echo $_CUSTOMPOST['some-type']; echo $_CUSTOMPOST['some-price']; ?>
Вы можете дважды проверить, что parse_str выполняет urldecode в результирующих элементах массива.
Вот пример использования JSON :
<?php $arr = array($member_id, $coupon); $data = json_encode($arr); ?> <input type="hidden" name="custom" value="<?= $data ?>"/>
Затем с другой стороны:
$custom = json_decode($_POST['custom'], true); $member_id = $custom[0]; $coupon = $custom[1];
Вы также можете анализировать ассоциативные массивы:
<?php $arr = array('id' => $member_id, 'coupon' => $coupon); $data = json_encode($arr); ?> <input type="hidden" name="custom" value="<?= $data ?>"/>
Затем с другой стороны:
$custom = json_decode($_POST['custom'], true); $member_id = $custom['id']; $coupon = $custom['coupon'];
При использовании JSON хорошая симметрия для анализа данных.