Это не задокументировано и не выставлено как нечто, что должно быть надежным, но я думаю, что использование триггера «Клиент завершает проверку» - это путь.
Имейте в виду, что следующее относится к Ubercart 6.x-2.4. (Последняя версия на сегодня)
Из того, что я посмотрел на код, кажется, что триггер выполняется только при успешных заказах. Если успешный заказ означает, что вы получили платеж, это во многом зависит от вашей текущей конфигурации и различных используемых вами платежных шлюзов или метода, но в общих ситуациях и конфигурации.
Этот триггер запускается только из одной функции:
function uc_cart_complete_sale($order, $login = FALSE);
Если вы выполняете поиск по всему модулю при выполнении этой функции, это должно дать вам приблизительное представление о различных ситуациях. В основном я узнал, что он выполняется из нескольких модулей оплаты (например, paypal и 2checkout), а также когда вы попадаете на страницу cart/checkout/complete
drupal, которая обычно находится на успешных заказах. Модуль PayPal, о котором вы специально спросили, похоже, вызывает эту функцию при получении статуса «Завершено» IPN.
Нетрудно попробовать несколько покупок (правильных и неправильных) и посмотреть, срабатывает ли ваш триггер только тогда, когда заказ правильно заряжен.