Плагин оплаты. Где и как указать, что заказ оплачен?
Пишу плагин для оплаты. Вот не могу понять, как установит статус заказа "оплачен", в случае, если оплата произведена успешно?
Заранее спасибо!
Пишу плагин для оплаты. Вот не могу понять, как установит статус заказа "оплачен", в случае, если оплата произведена успешно?
Заранее спасибо!
7 ответов
Посмотрите в этой инструкции. Либо возьмите любой готовы плагин, умеющий автоматически изменять статус заказа (например, Яндекс.Деньги), и изучайте его код.
В инструкции нет ни слова о том как изменить статус заказа.
Может есть у кого-нибудь информация о том, как конкретно, меняется статус заказа из плагина оплаты?
Ну хотябы намекните какой метод или группа методов за это отвечает :)
Вот конкретная строчка кода одного из плагинов оплаты, оформленного как пример с комментариями по коду.
Строчка из файла: $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. В методе 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 - не совсем понятный элемент - но похоже что это статус операции
ПРОДОЛЖЕНИЕ СЛЕДУЕТ....
Метод callbackInit должен на основе параметров запроса определить - для какого приложения поступила оплата и какой id экземпляра настроек (merchant_id). Как вариант - настраивать URL уведомлений, чтобы они содержали эти параметры, либо были в "пользовательской" секции данных параметров запроса. Задавать фиксированный id некорректно.
Часть данных для $transaction_data заполняет родительский метод formalizeData, если его не забыть вызвать, остальное заполняет код плагина на основе формата запроса от платежного шлюза, остальные поля примерно об этом: