Плагин оплаты. Где и как указать, что заказ оплачен?

Пишу плагин для оплаты. Вот не могу понять, как установит статус заказа "оплачен", в случае, если оплата произведена успешно?

Заранее спасибо!

4 ответа

  • 1
    Эрик Webasyst 7 декабря 2015 09:03 #

    Посмотрите в этой инструкции. Либо возьмите любой готовы плагин, умеющий автоматически изменять статус заказа (например, Яндекс.Деньги), и изучайте его код.

  • 1
    theair 12 января 2018 14:28 #

    В инструкции нет ни слова о том как изменить статус заказа.

    Может есть у кого-нибудь информация о том, как конкретно, меняется статус заказа из плагина оплаты?

  • 1
    theair 12 января 2018 15:22 #

    Ну хотябы намекните какой метод или группа методов за это отвечает :)


    • +1

      Вот конкретная строчка кода одного из плагинов оплаты, оформленного как пример с комментариями по коду.

      • +1
        theair theair 12 января 2018 17:17 #

        Строчка из файла: $result = $this->execAppCallback(self::CALLBACK_PAYMENT, $transaction_data);

        Так, если с self::CALLBACK_PAYMENT все в принципе ясно.

        То с $transaction_data возникает куча вопросов.

        После анализа нескольких платежных плагинов выяснил следующее:

        1. Какие элементы должны быть в этом массиве?

        Как я понял:

        1. order_id - id текущего заказа

        2. state - тип операции из класса waPayment - то есть для успешной операции должно быть: OPERATION_CAPTURE

        3. plugin - не понятно - то ли id плагина (то есть например 26), то ли имя плагина совадающее с названием папки с плагинов то есть например "myplugin" ?

        3,1 и нужно ли здесь передавать "plugin_id" или нет?

        4. native_id - вообще не известно что

        5. type - тоже какой-то тип операции нужен он или нет непонятно

        6. amount - как я понял оплаченная сумма, но как ее получить если платежный шлюз не передает эту информацию не ясно

        7. currency_id - id валюты заказа или платежа. Или код валюты тоже не очень понятно

        8. view_data - вообще не известно что

        9. app_id - тут похоже это приложение которое должно обрабытывать результат платежа - то есть в моем случае - shop

        10. merchant_id - вообще не известно что

        11. id - вообще не известно что

        Можете расшифровать все это ?

        И какие из этих параметров обязательные а какие нет?

        И что они означают?

  • 1
    theair 12 января 2018 18:10 #

    Так.

    Методом проб и ошибок найден вариант пока промежуточный но хоть какой...

    1. В методе callbackInit необходимо прописать $this->merchant_id = [числовой ID способа оплаты, настроенного в приложении] (почемуто если прописывать в других местах ничего не выходит - пишет Invalid plugin Id и все тут...

    2. В методе callbackHandler необходимо:

    создать и заполнить массив $transaction_data.

    в нем должны быть следующи элементы:

    $transaction_data['plugin'] = $this->id; - название плагина, такое же как название папки с плагином оплаты

    $transaction_data['order_id'] = 23 - id заказа

    $transaction_data['app_id'] = $this->app_id; - приложение которое обработывает платеж - например "shop";

    $transaction_data['type'] = self::OPERATION_CAPTURE - тип операции из класса waPayment - то есть для успешной операции должно быть: OPERATION_CAPTURE

    $transaction_data['state'] = self::STATE_CAPTURED - не совсем понятный элемент - но похоже что это статус операции

    ПРОДОЛЖЕНИЕ СЛЕДУЕТ....

    • +1

      Метод callbackInit должен на основе параметров запроса определить - для какого приложения поступила оплата и какой id экземпляра настроек (merchant_id). Как вариант - настраивать URL уведомлений, чтобы они содержали эти параметры, либо были в "пользовательской" секции данных параметров запроса. Задавать фиксированный id некорректно.

      Часть данных для $transaction_data заполняет родительский метод formalizeData, если его не забыть вызвать, остальное заполняет код плагина на основе формата запроса от платежного шлюза, остальные поля примерно об этом:

      'native_id' — это id в транзакции в платежном шлюзе
      'amount' — сумма поступившего платежа
      'currency_id' — ISO3 код валюты (например RUB)
      'view_data' — строковая информация, показываемая в качестве комментария в истории обработки заказа (может содержать HTML, поэтому внешние данные необходимо экранировать)
      'id' — id записи о транзакции в БД (saveTransaction

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите