Paykeeper 2 и WebMoney оплата заказов для интернет магазина



  • Пытаюсь по документации настроить оплату товаров в интернет магазине на базе Shopkeeper 3.2.4 через WebMoney merchant при помощи последнего Paykeeper 2. Но столкнулся со следующим: в документации указано, что "Оплата заказа в интернет магазине на базе Shopkeeper 3.x: [[!Paykeeper2? &gateway=`YandexMoney` &tpl=`pk_form` &orderId=`[[!+shk.id]]` &price=`[[!+shk.price]]`]]". Поменял параметр gateway на WebMoney, но форма которая выводится всё время зацикливается на кнопке купить. Т.е не хватает из документации сведений как организовать форму перехода на сам платежный шлюз платежной системы, чтобы можно было произвести непосредственно саму оплату. В предыдущей версии Paykeeper за это отвечала настройка &tpl_confirm и был дан пример чанка для формы в которой указано <form action="[[+action_url]]" method="post"> [[+hidden_fields]] <input type="submit" value="Продолжить" /> </form>. Как сделать для новой версии??? В документации даже плейсхолдеры не указанны для этого.


  • Администраторы

    В админке все параметры настроили?

    Поменял параметр gateway на WebMoney, но форма которая выводится всё время зацикливается на кнопке купить.

    Тут нужны подробности. Что за форма и как циклится.



  • Что бы заработала оплата вебмани нужно всего то включить в конфигурационный файл

    //WebMoney
            'webmoney' => array(
                'action_url' => 'https://merchant.webmoney.ru/lmi/payment.asp',//URL приёма платежа
                'action_test_url' => '',//URL тестового платежа
                //скрытые поля в форме
                'hidden_fields' => array(
                    'LMI_PAYMENT_AMOUNT' => '[[numberFormat? &number=`[[+price]]`]]',
    			    'LMI_PAYMENT_DESC' => 'Описание или идентификатор',
    			    'LMI_PAYMENT_NO' => 1,
    			    'LMI_PAYEE_PURSE' => 'Курс валют',
    			    'LMI_SIM_MODE' => 0,
    				'LMI_SUCCESS_URL' => 'url при успехе',
    				'LMI_FAIL_URL' => 'url при неудаче',
    				'LMI_RESULT_URL' =>  'url для callback'
                )
            ),
    

    В принципе это минимум, можно добавить сюда хеширование и тому подобное. Включаешь и все, больше по факту ни чего не требуется. Кроме вызова сниппета



  • @Pavel В какой именно конфигурационный файл?



  • @Andchir Вроде все настроил для WebMoney поля.
    0_1463419033329_QIP Shot - Screen 196.jpg
    Вызов сделан так: [[!Paykeeper2? &gateway=`WebMoney` &tpl=`pk_form` &orderId=`[[!+shk.id]]` &price=`[[!+shk.price]]` &testMode=`1`]]
    При нажатии на кнопку купить выпадает список выбора способа платежа (яндекс деньги, карты и т.д) и указания почты, при нажатии на кнопку оплатить опять просто появляется начальная кнопка купить. А должен быть переход в шлюз платежной системы.


  • Администраторы

    При нажатии на кнопку купить выпадает список выбора способа платежа (яндекс деньги, карты и т.д)

    Если нужно только вебмани, то список нужно убрать из чанка и кнопку сразу показывать ту которая сейчас появляется второй. Короче нужно отредактировать чанк "pk_form".



  • @Andchir Мне нужно сейчас чтобы сразу переходило на шлюз Вебмани при нажатии на кнопку оплатить. Примера как делать переход на шлюз платежной системы нет в документации. В старой версии Paykeeper этот чанк был дан в документации. Попробовал сделать как в старой версии, переделав чанк pk_form из новой версии так:

    <form id="pkForm[[+sid]]" action="https://merchant.webmoney.ru/lmi/payment.asp" method="post">
        [[+hidden_fields]]
        <input class="btn btn-warning center-block" type="submit" value="Оплатить" />
    </form>
    

    Но при переходе выдает ошибку. Может подскажите как реализовать?



  • Оригинальный код чанка pk_form, который идет с самим плагином таков:

    <div class="row">
        <div class="col-md-12">
            
            <a name="product[[+sid]]"></a>
            <form id="pkForm[[+sid]]" method="post" action="[[~[[*id]]?scheme=`abs`]]#product[[+sid]]">
                <input type="hidden" name="sid" value="[[+sid]]">
                
                <div class="form-group">
                    <label class="control-label" for="pkInputMethod[[+sid]]">Способ оплаты:</label>
                    <select id="pkInputMethod[[+sid]]" name="method" class="form-control">
                        <option value="YandexMoney__PC">Оплата из кошелька в Яндекс.Деньгах</option>
                        <option value="YandexMoney__AC">Оплата с произвольной банковской карты</option>
                        <option value="YandexMoney__MC">Платеж со счета мобильного телефона</option>
                        <option value="YandexMoney__GP">Оплата наличными через кассы и терминалы</option>
                        <option value="YandexMoney__WM">Оплата из кошелька в системе WebMoney</option>
                        <option value="YandexMoney__SB">Оплата через Сбербанк: оплата по SMS или Сбербанк Онлайн</option>
                        <option value="YandexMoney__MP">Оплата через мобильный терминал (mPOS)</option>
                        <option value="YandexMoney__AB">Оплата через Альфа-Клик</option>
                        <option value="YandexMoney__МА">Оплата через MasterPass</option>
                        <option value="YandexMoney__PB">Оплата через Промсвязьбанк</option>
                        <option value="YandexMoney__QW">Оплата через QIWI Wallet</option>
                        <option value="YandexMoney__KV">Оплата через КупиВкредит (Тинькофф Банк)</option>
                        
                        <option value="WebMoney__R">WebMoney</option>
                        <option value="PayPal__Express">PayPal</option>
                    </select>
                </div>
                
                <div class="form-group">
                    <label class="control-label" for="pkInputEmail[[+sid]]">Ваш адрес эл. почты:</label>
                    <input type="email" class="form-control" id="pkInputEmail[[+sid]]" name="email" value="[[+user_email]]" required>
                </div>
                
                <div class="form-group">
                    <button type="submit" class="btn btn-primary">Оплатить</button>
                    <button id="buttonCancel[[+sid]]" type="button" class="btn btn-default">Отмена</button>
                </div>
                
            </form>
            
            <button id="buttonStart[[+sid]]" type="button" class="btn btn-primary btn-lg" style="display:none;">
                Купить
            </button>
            
        </div>
    </div>
    
    <script type="text/javascript">
        document.getElementById('pkForm[[+sid]]').style.display = 'none';
        document.getElementById('buttonStart[[+sid]]').style.display = 'inline-block';
        document.getElementById('buttonStart[[+sid]]').addEventListener("click", function(e){
            e.preventDefault();
            document.getElementById('pkForm[[+sid]]').style.display = 'block';
            this.style.display = 'none'
        }, false);
        document.getElementById('buttonCancel[[+sid]]').addEventListener("click", function(e){
            e.preventDefault();
            document.getElementById('buttonStart[[+sid]]').style.display = 'inline-block';
            document.getElementById('pkForm[[+sid]]').style.display = 'none';
        }, false);
    </script>
    

  • Администраторы

    Почему нельзя сделать так как я написал выше?

    Вот:

    <div class="row">
        <div class="col-md-12">
            
            <a name="product[[+sid]]"></a>
            <form id="pkForm[[+sid]]" method="post" action="[[~[[*id]]?scheme=`abs`]]#product[[+sid]]">
                <input type="hidden" name="sid" value="[[+sid]]">
                
                <div class="form-group">
                    <label class="control-label" for="pkInputEmail[[+sid]]">Ваш адрес эл. почты:</label>
                    <input type="email" class="form-control" id="pkInputEmail[[+sid]]" name="email" value="[[+user_email]]" required>
                </div>
                
                <div class="form-group">
                    <button type="submit" class="btn btn-primary">Оплатить</button>
                    <button id="buttonCancel[[+sid]]" type="button" class="btn btn-default">Отмена</button>
                </div>
                
            </form>
            
        </div>
    </div>
    


  • @Andchir Так я вам с самого начала и написал, что не переходит на сайт WebMoney. Ошибка где то в шаблоне, который дан по умолчанию. Вот что видит браузер:

        <div class="col-md-12">
            <a name="product1"></a>
            <form id="pkForm1" method="post" action="/shopping-cart/thanks.html#product1">
                <input name="sid" value="1" type="hidden">
                <div class="form-group">
                    <label class="control-label" for="pkInputEmail1">Ваш адрес эл. почты:</label>
                    <input class="form-control" id="pkInputEmail1" name="email" value="shamarins_family@mail.ru" required="" type="email">
                </div>  
                <div class="form-group">
                    <button type="submit" class="btn btn-primary">Оплатить</button>
                    <button id="buttonCancel1" type="button" class="btn btn-default">Отмена</button>
                </div>          
            </form>      
        </div>
    
    

  • Администраторы

    Где вызывает сниппет?
    Надо сначала проверить чтобы [[!+shk.id]] это не было пустым.



  • @Andchir Там же где и предыдущую версию paykeeper вызывал, на странице где уже произошло оформление заказа. Там где shopkeeper уже считает что заказ оформлен и уведомление на почту присылает. Где проверить [[! +shk.id]]? С предыдущей версией на Робокассу переходит.


  • Администраторы

    Просьба не писать больше про что-то предыдущее. Это не имеет никакого значения. Пишите, пожалуйста, строго по делу.

    Где проверить [[!+shk.id]]?

    Просто в шаблон страницы вставить плейсхолдер.



  • @Andchir Значение не пустое, в точности как и значение [[!+shk.price]]. Проблема как я понимаю в том, что в форме ссылки нет на переход в систему WebMoney по submit.


  • Администраторы

    Проблема как я понимаю в том, что в форме ссылки нет на переход в систему WebMoney по submit.

    Нет. Проблема в том, что нет ID заказа. На странице где вызываете Paykeeper2 вызывается Shopkeeper? Проверьте чтобы он вызывался выше чем Paykeeper.



  • @Andchir ID заказа вроде задаётся через [[!+shk.id]] - его ведь отображает. На странице где вызывается Paykeeper нет вызова Shopkeeper, кроме [[!form_to_session? &emptyOn=`37`]]. Версия Shopkeeper последняя 3.2.4, версия PHP 7.0.5, MODX Revo 2.5.0



  • Сейчас у меня сделано следующим образом - на странице контактных данных сделан такой вызов

    [[!$stepwizard]]
    [[!Shopkeeper3@myShopkeeper?propertySetName=`myShopkeeper`]]
    [[!FormIt?
    &hooks=`spam,shk_fihook,email,FormItAutoResponder,redirect,FormItSaveForm`
    &submitVar=`order`
    &validate=`fullname:required,phone:required,email:required,city:required,street:required,house_number:required,flat_number:required,zip_code:required`
    &emailTpl=`myShopOrderReport`
    &fiarTpl=`myShopOrderReport`
    &emailSubject=`В интернет-магазине "[[++site_name]]" сделан новый заказ`
    &fiarSubject=`Вы сделали заказ в интернет-магазине "[[++site_name]]"`
    &emailTo=`[[++emailsender]]`
    &emailFrom=`[[++emailsender]]`
    &fiarReplyTo=`[[++emailsender]]`
    &fiarFrom=`[[++emailsender]]`
    &fiarToField=`email`
    &redirectTo=`37`
    &errTpl=`<br /><span class="error">[[+error]]</span>`
    ]]
    [[$shopOrderForm2]]
    

    По submit на этой странице идет редирект на страницу с ID 37, где сделан такой вызов:

    <h2 class="text-center">Благодарим Вас за заказ в нашем интернет-магазине &copy;[[++site_name]]!</h2>
    <h4 class="text-danger text-center">Ваш заказ принят. На ваш электронный ящик отправлено письмо с данными заказа. Если будет необходимо, то наш менеджер свяжеться с вами.</h4>
    [[!Paykeeper2? &gateway=`WebMoney` &tpl=`my_pk_form` &orderId=`[[!+shk.id]]` &price=`[[!+shk.price]]` &testMode=`1`]]
    [[!form_to_session?
    &emptyOn=`37`
    ]]
        </div>
    </div>
    


  • Режим отладки как то можно включить в новом Paykeeper? В коде есть строчки про отладку, но в документации нет сведений как включить режим отладки, чтобы можно было глянуть в админке потом в чём причина.


  • Администраторы

    Режим отладки включается в системных настройках. Там по-русски написано "Режим отладки".



  • @Andchir Пардон, не заметил в начале эту настройку.



Похоже, подключение к Форум | MODX Shopkeeper было разорвано, подождите, пока мы пытаемся восстановить соединение.