Модуль оплаты с колбеком

Автор Andrey44, 09 ноября 2019, 22:39:40

« назад - далее »

Andrey44

Добрый вечер. Хочу узнать как правильно принимать оплату и создавать заказ (order).
На данный момент я использую external payment option (через post форму). После оплаты на сайте платежной системы клиент возращается на главную страницу.
ValidateOrder() вызывается в контроллере колбека. Проблема заключается в том платежная система вызывает колбек с задержкой около минуты и в течении этого времени клиент видит свою корзину.
Правильно ли будет вызвать ValidateOrder() во время перенаправления клиента на главную страницу без проверки ответа от платежной системы ? И как при этой схеме можно будет обеспечить проверку оплаты?
Думаю можно временно указывать любой статус заказа и в колбеке менять на корректный, но не знаю как получить заказ в коде колбека. Платежная система возращает только id корзины и суммы оплаты.

Adik

А ошибку оплаты она не возвращает?
Если оплата не прошла, что возвоащает?

Andrey44

Цитата: Adik от 10 ноября 2019, 12:24:15
А ошибку оплаты она не возвращает?
Если оплата не прошла, что возвоащает?
Ошибку можно получать на другой колбек.
Правильно ли будет сразу создать заказ через validateOrder() и на потом в колбеках менять статус заказа? И как можно изменить статус заказа имея только cart_id?

PrestaMan

Правильно, создаете заказ методом
public function validateOrder(
        $id_cart,
        $id_order_state,
        $amount_paid,
        $payment_method = 'Unknown',
        $message = null,
        $extra_vars = array(),
        $currency_special = null,
        $dont_touch_amount = false,
        $secure_key = false,
        Shop $shop = null
    )

Статус может быть "В ожидании оплаты".
После подтверждения оплыты меняете статус на "Оплаченный".
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!

Andrey44

Цитата: PrestaMan от 10 ноября 2019, 13:36:01
Правильно, создаете заказ методом
public function validateOrder(
        $id_cart,
        $id_order_state,
        $amount_paid,
        $payment_method = 'Unknown',
        $message = null,
        $extra_vars = array(),
        $currency_special = null,
        $dont_touch_amount = false,
        $secure_key = false,
        Shop $shop = null
    )

Статус может быть "В ожидании оплаты".
После подтверждения оплыты меняете статус на "Оплаченный".
ValidateOrder() можно использовать повторно с тем же $id_cart? Если нет, то как корректно изменить статус заказа? Я исходник метода смотрел, но не понял что именно происходит, слишком сложная логика в нем.

PrestaMan

Для смены статуса ValidateOrder не используют, для этого class OrderHistory метод
/**
     * Sets the new state of the given order.
     *
     * @param int $new_order_state
     * @param int/object $id_order
     * @param bool $use_existing_payment
     */
public function changeIdOrderState($new_order_state, $id_order, $use_existing_payment = false)
{
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!