Example #1
0
 public function goAction($pay_id, $merchant_id, $currency_id)
 {
     $pay = Money\Pay::get($pay_id);
     if (!$pay) {
         Tools::redirect('/', 'Такой платеж не найден', 'danger');
     }
     if ($pay->pay_status_id != 1) {
         Tools::redirect('/', 'Счет уже обработан');
     }
     $merchant = \Money\Merchant::get($merchant_id);
     if (!$merchant || !$merchant->active) {
         Tools::redirect('/', 'Такой способ оплаты не найден', 'danger');
     }
     $allowCurrencies = $merchant->allowCurrencies($pay);
     $method = [];
     foreach ($allowCurrencies as $allowCurrency) {
         if ($allowCurrency['currency']->id == $currency_id) {
             $method = $allowCurrency;
             break;
         }
     }
     if (!$method) {
         Tools::redirect('/', 'Валюта для этого способа оплаты не найдена', 'danger');
     }
     $merchantOptions = ['description' => $pay->description ? '#' . $pay->id . ' ' . $pay->description : 'Оплата счета №' . $pay->id . ' на сайте: ' . idn_to_utf8(INJI_DOMAIN_NAME), 'success' => 'http://' . INJI_DOMAIN_NAME . '/', 'false' => 'http://' . INJI_DOMAIN_NAME . '/'];
     $this->Money->goToMerchant($pay, $merchant, $method, $merchantOptions);
 }
Example #2
0
 public function reciver($data, $system, $status, $mr)
 {
     if ($system) {
         $merchant = \Money\Merchant::get($system, 'object_name');
     } else {
         $merchant = false;
     }
     if ($merchant) {
         $this->currentMerchant = $system;
     }
     $className = 'Money\\MerchantHelper\\' . $this->currentMerchant;
     $result = $className::reciver($data, $status);
     $result['pay'] = null;
     if (!empty($result['payId'])) {
         $result['pay'] = Money\Pay::get($result['payId']);
         $mr->pay_id = $result['payId'];
     }
     if ($result['pay'] && $result['pay']->pay_status_id == 1) {
         $statuses = \Money\Pay\Status::getList(['key' => 'code']);
         if (!empty($statuses[$result['status']])) {
             $result['pay']->pay_status_id = $statuses[$result['status']]->id;
         }
         $result['pay']->date_recive = date('Y-m-d H:i:s');
         $result['pay']->save();
         if ($result['status'] == 'success' && $result['pay']->callback_module && $result['pay']->callback_method) {
             App::$cur->{$result['pay']->callback_module}->{$result['pay']->callback_method}($result);
         }
     }
     if (!empty($result['callback'])) {
         echo $result['callback'];
         $mr->result_callback = $result['callback'];
     }
     if (!empty($result['status'])) {
         $mr->status = $result['status'];
     }
     $mr->save();
 }
Example #3
0
 public function primaryPayAction($payId, $currencyId)
 {
     $pay = Money\Pay::get((int) $payId);
     if (!$pay || $pay->user_id != \Users\User::$cur->id) {
         Tools::redirect('/money/merchants/pay/', 'Такой счет не найден');
     }
     $merchant = \Money\MerchantHelper\Primary::getMerchant();
     if (!$merchant->active) {
         Tools::redirect('/money/merchants/pay/' . $pay->id, 'Этот способ оплаты недоступен');
     }
     $allowCurrencies = $merchant->allowCurrencies($pay);
     $method = [];
     foreach ($allowCurrencies as $allowCurrency) {
         if ($allowCurrency['currency']->id == $currencyId) {
             $method = $allowCurrency;
             break;
         }
     }
     if (!$method) {
         Tools::redirect('/', 'Валюта для этого способа оплаты не найдена', 'danger');
     }
     $className = 'Money\\MerchantHelper\\' . $merchant->object_name;
     $sum = $className::getFinalSum($pay, $method);
     $this->view->setTitle('Прямая оплата');
     $this->view->page(['data' => compact('pay', 'sum', 'method')]);
 }
Example #4
0
<?php

return ['name' => 'Онлайн оплата', 'handler' => function ($cart) {
    if (\App::$cur->money) {
        $sums = $cart->finalSum();
        foreach ($sums->sums as $currency_id => $sum) {
            if (!$currency_id) {
                continue;
            }
            $pay = \Money\Pay::get([['data', $cart->id], ['currency_id', $currency_id], ['user_id', \Users\User::$cur->id]]);
            if (!$pay) {
                $pay = new Money\Pay(['data' => $cart->id, 'currency_id' => $currency_id, 'user_id' => \Users\User::$cur->id, 'sum' => $sum, 'description' => 'Оплата заказа №' . $cart->id . ' в онлайн-магазине', 'type' => 'pay', 'pay_status_id' => 1, 'callback_module' => 'Ecommerce', 'callback_method' => 'cartPayRecive']);
                $pay->save();
            } elseif ($pay->sum != $sum) {
                $pay->sum = $sum;
                $pay->save();
            }
        }
        return ['/money/merchants/pay/?data=' . $cart->id, 'Ваш заказ был создан. Вам необходимо оплатить счета, после чего с вами свяжется администратор для уточнения дополнительной информации', 'success'];
    }
}];