# Модуль поиска

## Установка при помощи composer ##

1) В файл composer.json добавить

```
#!php

"require": {
...
"ciext/yandex_kassa":"1.0.*"

}

```
2) В административной панеле установить модуль logger

3) Создать файл MODULES_DIR/yandex_kassa/config/config.php, укахать настройки Яндекс кассы и модель для выборки данных заказа с БД
```
#!php
// MODULES_DIR/yandex_kassa/config/config.php
<?php

if (!defined('BASEPATH')) {
    exit('No direct script access allowed');
}

$config['yk_order_model'] = 'yandex_kassa/yk_order_model'; <-- указать модель, которая будет обрабатывать запросы

$config['enable_demo_mode'] = false;
$config['action'] = $config['enable_demo_mode'] ? 'https://demomoney.yandex.ru/eshop.xml' : 'https://money.yandex.ru/eshop.xml';
$config['shopId'] = $config['enable_demo_mode'] ? 'demo shopId' : 'production shopId';
$config['scId'] = $config['enable_demo_mode'] ? 'demo scId': 'production scId';
$config['ShopPassword'] = 'some password';

$config['success_page'] = '/order/success';
$config['fail_page'] = '/order/fail';
```

4) Создать модель для обработки запросов. ВНИМАНИЕ! В работе используються 2 метода модели  get_order_amount($order_number = '') и update_order($order_sum_amount = '')
```
#!php
// MODULES_DIR/yandex_kassa/models/yk_order_model.php
<?php

if (!defined('BASEPATH')) {
    exit('No direct script access allowed');
}

class yk_order_model extends CI_Model
{

    public function get_order_amount($order_number = '')
    {
        $q = $this->db->
                        select('p.price as amount')->
                        join('product p', 'p.id_product=po.id_product', 'left')->
                        where('po.id_product_order', (int) $order_number)->
                        get('product_order po')->row_array();

        if (empty($q['amount'])) {
            return 0;
        }

        $this->load->library('ciext/configurator');
        $conf = new configurator();
        $conf->set_resource('product');
        $data = $conf->get_config();

        return !empty($data['rate_rub_kzt']) ? floatval(round($q['amount'] / $data['rate_rub_kzt'], 2)) : 0;
    }

    public function update_order($order_sum_amount = '')
    {
        $this->db->where('id_product_order', (int) $order_sum_amount)->update('product_order', array(
            'payed_by' => '3',
        ));
    }

}
```

5) Прописать адреса checkorder и paymentaviso дял яндекса.

- domain.com/ajax/yandex_kassa/checkorder

- domain.com/ajax/yandex_kassa/paymentaviso

6) Вставить вызов формы оплаты
```
    <?=
    Modules::run('yandex_kassa/yandex_kassa_site/payform', array(
        'user_full_name' => 'Test user',
        'amount'         => '10',
        'order_id'       => 'some order id',
        'user_phone'     => '79110001000',
        'user_email'     => 'user1423@domain.com',
    ))
    ?>
```