Плагин оплаты. не вызываются функции callbackInit и callbackHandler

Владимир Мельничук

добрый день. пишу плагин оплаты.

размесил его в каталоге /wa-plugins/payment/

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

во фронте при покупке товара способ оплаты корретно выбрается, переход на оплату тоже происходит, после оплаты выполняется возврат.

но при этом не меняется статус заказа.

проверка показала, что функции callbackInit и callbackHandler не отрабатывают.

мог ли я что-то недоустановить, что плагин не срабатывает на события или в чем другом может быть причина?


при установке по инструкции тут https://developers.webasyst.ru/cookbook/plugins/

с размещением в wa-apps/shop/plugins/[PLUGIN]/

и

<code class="path" style="font-size: 16px; line-height: 1.4em;">добалвением в<strong>wa-config/apps/</strong>APP_ID/plugins.php</code>, строку:

'plugin_id' => true

плагин не отображается при добавлении способа оплаты

30 мая 2016
  • Это условие выполняется?

    callbackHandler()
    В этом методе описывается алгоритм обработки обратных запросов, полученных от платежной системы. Такие запросы должны направляться по URL вида http://yourdomain.ru/payments.php/[plugin_id]/
  • похоже, что нет. поставил тестовый вывод в методы payment, callbackInit и callbackHandler. в логе отразился только payment

  • А платежный шлюз вообще отправляет запросы на URL

    http://yourdomain.ru/payments.php/[plugin_id]/

    Если у вас локальная установка, то платежный шлюз может не суметь отправить запрос к вашей установке.

  • сайт на удаленном хосте.

    я передавал

    $hidden_fields['LMI_SUCCESS_URL'] = $this->getAdapter()->getBackUrl(waAppPayment::URL_SUCCESS, $transaction_data);
    
    $hidden_fields['LMI_FAIL_URL'] = $this->getAdapter()->getBackUrl(waAppPayment::URL_FAIL, $transaction_data);

    там было соответственно


    http://yourdomain.ua/shop/checkout/success/?order_id=58 
    http://yourdomain.ua/shop/checkout/fail/?order_id=58

    сейчас я не передаю эти строки в запросе. а задал в настройках личного кабинета платежной сиситемы


    http://yourdomain.ua/payments.php/paymasterua/?transaction_result=success
    http://yourdomain.ua/payments.php/paymasterua/?transaction_result=fail
    http://yourdomain.ua/payments.php/paymasterua/?transaction_result=result

    в callbackInit теперь попадаю, но платежка пишет

    Plugin not found

    тепер похоже проблема аналогичная https://developers.webasyst.ru/forum/3697/plugin-n...

  • так и не удалось решить проблему.

    параметры необходимые для платежки передаю все.

    в callbackInit в массиве $request приходит


        [LMI_MERCHANT_ID] => 0000
    
        [LMI_PAYMENT_NO] => 84
    
        [LMI_PAYMENT_AMOUNT] => 100.00
    
        [LMI_PAYMENT_DESC] => Оплата заказа #10084
    
        [LMI_PAYMENT_SYSTEM] => 18
    
        [LMI_MODE] => 1
    
        [LMI_PAYER_PHONE_NUMBER] => 
    
        [LMI_PAYER_EMAIL] => 
    
        [LMI_PREREQUEST] => 1
    
        [LMI_RESULT_URL] => http://yourdomain.ua/payments.php/paymasterua/
    
        [wa_app] => shop
    
        [wa_merchant_contact_id] => 0000
    
        [transaction_result] => result

    как сказано в инструкции заполняю


    $this->order_id 
    $this->app_id 
    $this->merchant_id

    и вызываю функцию базового класса.

    callbackHandler не вызывается.и Платежка пишет Plugin not found.


    почему в принципе может возникать ошибка Plugin not found?

    почему не вызывается callbackHandler?

    надо ли предоставить еще какую-то инфромацию?

  • В плагине есть файл /lib/config/plugin.php?

    Сообщение о ошибке именно так и выглядит: "Plugin not found"? Или всё-таки немного по-другому? Дайте точную цитату.

  • plugin.php есть


    return array(
        'name'        => 'PayMaster.ua',
        'description' => 'Платежная система <a href="https://paymaster.ua">PayMaster.ua</a>',
        'icon'        => 'img/paymasterua16.png',
        'logo'        => 'img/paymasterua.png',
        'vendor'      => 'webasyst',
        'version'     => '1.0.1',
        'locale'      => array('ru_RU', ),
        'type'        => waPayment::TYPE_ONLINE,
    );

    полное сообщение:

    Продавец отказался принять платеж:Plugin not found Пожалуйста, обратитесь к продавцу.
  • вчера создал в облаке магазин и установил платежку от webmoney (она очень схожа с той системой для которой я делаю плагин и у вас она дана как образец в инструкции по плагинам оплат)

    провел оплату, но по возврату на страницу успешной оплаты. она выдала сообщение, показанное на изображении

    на моем тестовом хосте тот же возврат все время. Судя по отзывам во многих плагинах неработает механизм изменения статуса.

    есть какой-то плагин оплат на которы можно реально ориентироваться?

    может это быть проблемой самого фреймворка?

  • здравствуйте. пока не получается найти решение.

    подскажите тогда, пожалуйста, может таким образом.

    Если плагин для вебмани считать за основу и на него ориентироваться (приводится как образец в инструкциях и, как уже писал выше, платежные системы очень схожи), то какие настройки магазина или самого же плагина должны быть, чтобы он коррректно отрабатывал?

    я (на созданном в облаке вебасиста сайте) с помощью инсталлера установил плагин вебмани.в разделе shop - настройки оплата. добавил способ оплаты вебмани. в настройках плагина прописал, merchant id, номер кошелька, секретный ключ. протокол подключения - подключение к webmony, Подпись - MD5, галочка на тестовом режиме включена, sim mode

    я что-то недонастроил? почему возникает ошибка скриншоте в предыдущем посте?

  • так и не получил ответа. когда можно ждать рекомендаций?

    Михаил Ушенин писал

    В плагине есть файл /lib/config/plugin.php? Сообщение о ошибке именно так и выглядит: "Plugin not found"? Или всё-таки немного по-другому? Дайте точную цитату.

    По тому, что я ответил выше хотя бы скажите правильно заполнен plugin.php? дает ли какую-то дополнительную информацию точное сообщение платежной системы, которое я привел?

  • Empty required field(s)

    Это сообщение отдаёт плагин webmoney, когда в запросе от платёжной системы нет полей LMI_PAYMENT_NO, wa_app или wa_merchant_contact_id.

    Plugin not found

    Попробуйте добавить отладочный код в классе wa-apps/shop/lib/classes/shopPayment.class.php во всех местах, где формируется значение переменной $info, чтобы увидеть, в какую ветку сработало условие и почему значение переменной оказалось пустым (в этом случае и выбрасывается исключение Plugin not found).

  • Михаил, спасибо. по Plugin not found решилось. я неправильно передавал $this->merchant_id



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