ЯНДЕКС КАССА



  • При не удачной Оплате Яндекс шлет на assets/components/yandexmoney/connector_result.php

    Вопрос:
    Если параметр $_GET['fail'] == 1
    , можно както передать статус платежа на Неоплачен (ошибка платежа) в управлении заказами?



  • [[!Shopkeeper3@cart_main?propertySetName=`cart_main`]]
    
    [[!FormIt?
    &hooks=`spam,shk_fihook,email,FormItAutoResponder,YandexMoneyHook,redirect`
    &submitVar=`order`
    &emailTpl=`shopOrderReport`
    &emailSubject=`В интернет-магазине "[[++site_name]]" сделан новый заказ`
    &emailTo=`[[++emailsender]]`
    &emailFrom=`[[++mail_smtp_user]]`
    
    &fiarSubject=`Вы сделали заказ в интернет-магазине "[[++site_name]]"`
    &fiarTpl=`shopOrderReportUser`
    &fiarFromName=`[[++site_name]]`
    &_fiarReplyTo=`[[++emailsender]]`
    &fiarToField=`email`
    
    &fiarReplyTo=`[[++mail_smtp_user]]`
    &fiarSender=`[[++mail_smtp_user]]`
    
    &redirectTo=`95`
    &validate=`address:required,fullname:required,email:email:required,phone:required`
    &errTpl=`<br /><span class="error">[[+error]]</span>`
    ]]
    
    
    [[!+shk.items_total:gt=`0`:then=`
    [[$shopOrderForm]]
    `:else=`<center><p>Вы не положили в корзину ни одного товара</p></center>`]]
    
    <script type="text/javascript">
        function SHKloadCartCallback() {
            if( $('#shopOrderForm').size() > 0 && SHK.data.items_total == 0 ){
                window.location.reload();
            }
        }
    </script>
    

    Вот так вот вроде работает...



  • <?php
    $_isAdmin = ($modx->user->sudo == 1);
    
    if(!defined('YANDEXMONEY_PATH')) define('YANDEXMONEY_PATH', MODX_CORE_PATH."components/yandexmoney/");
    require_once YANDEXMONEY_PATH.'model/yandexmoney.class.php';
    
    $snippet = $modx->getObject('modSnippet',array('name'=>'YandexMoney'));
    $config = $snippet->getProperties();
    
    $ym = new Yandexmoney($modx, $config);
    
    if(!empty($_SESSION['shk_lastOrder']) && !empty($_SESSION['shk_lastOrder']['id'])){
        $ym->pay_method = !empty($_SESSION['shk_lastOrder']['payment']) ? $_SESSION['shk_lastOrder']['payment'] : '';
        $order_id = (int)$_SESSION['shk_lastOrder']['id'];    
    }
    if (!empty($_POST['payment'])){
        $ym->pay_method = $_POST['payment'];
    }
    if (!$ym->checkPayMethod()){
        return true;//false;
    }
    
    $modx->addPackage('shopkeeper3', MODX_CORE_PATH."components/shopkeeper3/model/");
    $order = $modx->getObject('shk_order',array('id'=>$order_id));
    
    if (!$order){
        return false;
    }
    $output = '';
    
    if ( $order_id ){
        $ym->userId = $modx->getLoginUserID('web') ? $modx->getLoginUserID('web') : 0;
        $ym->orderId = $order_id;
        $ym->orderTotal = $_SESSION['shk_lastOrder']['price'];
        $ym->orderTotal = floatval(str_replace(array(',',' '), array('.',''), $ym->orderTotal));
        $ym->comment = $_POST['message'];
    
        $_host = str_replace(array('http://', 'https://'), '' , $modx->config['site_url']);
        $host = 'https://' . $_host . 'assets/components/yandexmoney/connector_result.php';
        $ym->successUrl = $host.'?success=1';
        $ym->failUrl = $host.'?fail=1';
    
        echo $ym->createFormHtml();
        exit;
    
    }
    
    return true;
    

    А это YandexMoneyHook



  • Позанимавшись немного интеграцией яндек-кассы, наткнулся на момент: хук YandexMoneyHook как будто бы не рассчитан на то, что могут быть другие платежные методы, ктоме тех, которые в нем указаны. Например, нельзя просто так добавить способ оплаты "Наличными курьеру при получении" - хук будет возвращать false и все хуки, следующик за ним, не будут выполнены.

    Можно, конечно, дописать в его начало что-то вроде

    if ($_POST['payment'] == 'Наличными курьеру') {
        return true;
    }
    

    может, у кого-то есть более изящный вариант?

    +, как уже заметил @akradeus , хук из коробки содержит ошибку - $output всегда будет пуст.

    Здесь https://github.com/andchir/yandex-money-cms-modx почему-то нельзя добавить issue (почему, кстати?), поэтому пусть будет здесь.



  • Когда я с первого раза напишу сообщение без опечаток, вселенная сколлапсирует. @Andchir , можно увеличить время, в течении которого сообщения можно править?


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

    @whitebyte сказал ЯНДЕКС КАССА:

    Когда я с первого раза напишу сообщение без опечаток, вселенная сколлапсирует. @Andchir , можно увеличить время, в течении которого сообщения можно править?

    Там установлен час времени. Я думаю этого должно быть достаточно.



  • @Andchir закрывает через 60 секунд


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

    @whitebyte сказал ЯНДЕКС КАССА:

    @Andchir закрывает через 60 секунд

    Я перепутал секунды с минутами :) Увеличил время.



  • После оплаты не приходит письмо о смене статуса заказа. Статус заказа становится отмененным.



  • Со статусом разобрался, но письмо не приходит.


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

    @Ростилав сказал ЯНДЕКС КАССА:

    Со статусом разобрался, но письмо не приходит.

    Не приходит потому что такого функционала пока нет.



Последние темы

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