Сергей

Сергей

С нами с 05 декабря 2017; Место в рейтинге пользователей: #844
Володя
15 мая 2018, 15:10
4
+1
как минимум переделать так
<?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
11 января 2018, 15:55
1
0
$user_id = $order->get('user_id');
Дальше уже юзер

$user = $modx->getObject('modUser', $user_id)
Остальное гуглится

Если нужен заполненный адрес то вот тут есть плагин, но он на другое событие, посмотрите, может совпадёт, только msOrder поменяете на order
github
Илья Уткин
08 января 2018, 13:42
1
0
Нужно просто написать плагин на событие msOnChangeOrderStatus, проверить, что статус заказа стал «оплачен», получить список товара из заказа и отправить по API в это приложение. Тут нет привязки к способу оплаты — у вас на сайте их может быть несколько. Даже при ручной смене статуса (например, чел наличкой оплатил) плагин всё равно сработает.

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