PayPal IPN возвращает корзину покупок или идентификатор заказа для последующей обработки - PullRequest
0 голосов
/ 28 июля 2010

Я успешно разместил свою пользовательскую корзину для покупок в PayPal - она ​​обрабатывает заказ просто великолепно, а когда платеж получен, отправляет данные обратно по URL-адресу, указанному мной в конфигурации. Код основан на библиотеке, найденной здесь: http://www.phpfour.com/blog/2009/02/php-payment-gateway-library-for-paypal-authorizenet-and-2checkout/

Итак, я успешно проверяю IPN, отправляя данные обратно в PayPal - это все здорово. Вот моя дилемма - как мне узнать, какой порядок подтверждает IPN?

Я не пользуюсь корзиной PayPals, у меня есть своя. У него есть собственный идентификатор корзины в моей базе данных, и когда я получу IPN для этой корзины, я бы хотел «закрыть» корзину и сохранить ее как заказ, который будет найден позднее.

Я попытался передать дополнительное настраиваемое поле вместе с перенаправлением в PayPal, которое заполняет корзину, но это значение не возвращается мне в IPN. Документация на x.com просто отсутствует, поэтому я не нашел там никакой помощи.

Кто-нибудь имеет опыт работы с PayPal и IPN? Не обязательно должен быть с PHP - я могу интерпретировать код - но если у вас есть способ отправить значение в PayPal с заказом, а затем вернуть это значение с IPN, то это УДИВИТЕЛЬНО!

Если это невозможно с API PayPal (в который я бы не поверил) - есть ли другие предложения о том, как с этим справиться?

Ответы [ 4 ]

1 голос
/ 29 июля 2012

Вы можете создать и опубликовать сквозную переменную custom длиной 255 символов, которая может содержать любые данные. Больше информации на странице 44 в официальном руководстве Paypal IPN.

1 голос
/ 28 июля 2010

(это может отличаться для других API).

Мой опыт был с экспресс-проверкой через C #, но процесс должен быть таким же, даже в PHP.Если вы используете интерфейс «имя-значение» (NVP) непосредственно перед перенаправлением пользователя в PayPal, вы заходите на сайт PayPal, чтобы получить URL-адрес перенаправления.В рамках своего ответа они передают вам маркер.Вы сохраняете этот токен вместе со своим заказом.Когда происходит обратная передача IPN, вы получаете тот же токен, который позволяет вам искать исходный заказ.

Ход процесса выглядит так («Вы» - ваш сайт):

  • Пользователь заполняет корзину, нажимает кнопку / ссылку, чтобы оформить заказ
  • Запрос отправленна ваш сайт
  • Ваш сайт получает запрос, отправляет данные в PayPal
  • Вы получаете первоначальный ответ от PayPal, который содержит токен
  • Вы сохраняете этот токен вместе с покупками этого пользователякорзина.
  • Вы перенаправляете пользователя на ссылку, возвращенную PayPal
  • Пользователь перенаправляется на PayPal и вводит платежную информацию
  • Платежная информация подтверждается PayPal
  • Пользователь перенаправлен обратно на ваш сайт
  • PayPal отправляет ответ IPN обратно на ваш сайт
  • Вы получаете токен, включенный в ответ
  • Вы просматриваете ранее сохраненный токенчтобы найти корзину (они имеют одинаковое значение)
  • Вы закрываете первоначальный заказ / корзину.

Возможно, вы захотите попробовать PHP SDK - прокрутите вниз до пары имя-значение Interface.

1 голос
/ 18 июня 2012

Я очень сомневаюсь, что это поможет оригинальному постеру, но PayPal либо добавил, либо, наконец, задокументировал опцию «счет-фактура», которая позволяет опубликовать OrderID и отправить его обратно через IPN. Я в настоящее время использую это, и это, кажется, работает как ожидалось.

Для получения дополнительной информации см. Стандартное руководство по интеграции платежей через веб-сайт (PDF) : Приложение A, Таблица A.4

1 голос
/ 28 июля 2010

Я не знаю, является ли это хорошей идеей или нет, но здесь есть несколько разных вариантов:

A: Используйте первый набор on1 / os1 для элемента 1 и добавьте идентификатор заказа втот.

B: В настраиваемом поле я не уверен, что у вас там, но вы можете сделать что-то вроде orderidhere41 | otheritems здесь, а затем просто разобрать это, взорвавшись в |чтобы разделить их.

Paypal ограничивает это, и я не знаю почему, но оба из них должны работать.Если вы сделаете это в режиме «вкл / выкл», это поместит его в квитанцию ​​PayPal для пользователя, так что это мой предпочтительный метод.

Если у кого-то еще есть лучшее решение, я бы тоже заинтересовался!

РЕДАКТИРОВАТЬ:

Уточнение по 1 os1.Это «параметры», обычно используемые для размера / цвета и т. Д. См. Переменные PayPal IPN PDT в option_name1 option_selection (sp) для получения дополнительной информации о них.Название курса - это заголовок, который будет "Order ID", а os будет фактическим идентификатором.

РЕДАКТИРОВАТЬ:

Просматривая эту документацию $my2CO->addField('cart_order_id', rand(1, 100)); - это место, где я бы поставил свой собственный идентификатор заказа корзины.Это должно быть правильное поле.Приносим извинения за путаницудля вас и от.Это нужно назвать обычай с обеих сторон.

...