IPN / Ubercart и все, что с ними связано: я хочу убедиться, что у меня есть деньги - PullRequest
0 голосов
/ 14 декабря 2010

Извините, если название немного сомнительное, я обещаю, что проясню это ниже:

Прежде всего, недавно я задал вопрос о продаже серийных ключей:

Как выполнить собственный скрипт после покупки с помощью Ubercart для Drupal

Информация, которую я там разместил, может помочь разобраться в этом вопросе, но я сильно сомневаюсь, потому что этот вопрос немного более общий.

По сути, я не хочу выполнять свой пользовательский код до тех пор, пока не узнаю, что платеж был очищен и деньги в моем аккаунте. Я был немного не уверен, что условное действие, которое вызывает триггер «Клиент завершает проверку», все же сделал? Когда в нем говорится, что они завершили проверку, это обязательно означает, что деньги успешно зачислены на мой счет или нет?

Если нет, как заставить Ubercart ждать, пока он не узнает, что я получил деньги от любого PSP (например, Google Checkout, PayPal и т. Д.) Для выполнения моего пользовательского кода? Я не могу разобраться, это вообще возможно?

1 Ответ

0 голосов
/ 15 декабря 2010

Это не задокументировано и не выставлено как нечто, что должно быть надежным, но я думаю, что использование триггера «Клиент завершает проверку» - это путь.

Имейте в виду, что следующее относится к Ubercart 6.x-2.4. (Последняя версия на сегодня)

Из того, что я посмотрел на код, кажется, что триггер выполняется только при успешных заказах. Если успешный заказ означает, что вы получили платеж, это во многом зависит от вашей текущей конфигурации и различных используемых вами платежных шлюзов или метода, но в общих ситуациях и конфигурации.

Этот триггер запускается только из одной функции:

function uc_cart_complete_sale($order, $login = FALSE);

Если вы выполняете поиск по всему модулю при выполнении этой функции, это должно дать вам приблизительное представление о различных ситуациях. В основном я узнал, что он выполняется из нескольких модулей оплаты (например, paypal и 2checkout), а также когда вы попадаете на страницу cart/checkout/complete drupal, которая обычно находится на успешных заказах. Модуль PayPal, о котором вы специально спросили, похоже, вызывает эту функцию при получении статуса «Завершено» IPN.

Нетрудно попробовать несколько покупок (правильных и неправильных) и посмотреть, срабатывает ли ваш триггер только тогда, когда заказ правильно заряжен.

...