Сергей

Сергей

Был в сети 26 июня 2019, 11:08
Заказы принимаю
Володя
Володя
как минимум переделать так
<?php


if ($modx->event->name === 'OnDocFormSave') {
   
    if($mode == 'new'){
        $modx->log(1, 'Новый');
        
        if (!$user = $modx->getAuthenticatedUser('web')) {
            // не получен пользователь
            return;
        }
        
        $user_id = $user->get('id');
        if (!$user_money_profile = $modx->getObject('msCustomerProfile', $user_id)) {
            // не получе профиль пользователя
            return;
        }
        
        $balance = (float)$user_money_profile->get('account');
       
        if (!empty($_POST['pricetpl'])){
            if ($balance >= 100) {
                $new_balance = $balance - 100;
                $user_money_profile->set('account', $new_balance);
                $user_money_profile->save();
                $modx->log(1, 'Списал баланс');
            }else { $modx->log(1, 'Недостаточно средств');}
        }
    }
}
Евгений Webinmd
Евгений Webinmd
Илья Уткин
Илья Уткин
Нужно просто написать плагин на событие msOnChangeOrderStatus, проверить, что статус заказа стал «оплачен», получить список товара из заказа и отправить по API в это приложение. Тут нет привязки к способу оплаты — у вас на сайте их может быть несколько. Даже при ручной смене статуса (например, чел наличкой оплатил) плагин всё равно сработает.

Кстати, можно создать новый статус заказа «Чек отправлен» и устанавливать его после отправки в приложение.