Биз жөнүндөБлогБайланыш
E-Commerce2015-ж., 25-июль 4 мин 9

WooCommerce менен Кыргызстан үчүн онлайн-дүкөн кантип ачуу (2015)

AunimedaAunimeda
📋 Мазмуну

WooCommerce менен Кыргызстан үчүн онлайн-дүкөн кантип ачуу (2015)

Кыскача: WordPress 4.3 + WooCommerce 2.4 орнотуңуз, валютаны KGS (Кыргызстан сому) кылып коюңуз, Элсом платёжды кошуңуз, жеткизүү аймактарын Бишкек + башка шаарлар деп белгилеңиз. Толук орнотуу убактысы: 2–3 апта (дизайн кошо эмес).


Зарыл плагиндер (2015)

✓ WooCommerce 2.4           — негизги дүкөн
✓ WooCommerce - Kyrgyz Som  — KGS валютасы (же кол менен коюу)
✓ Contact Form 7            — байланыш формасы
✓ WP Super Cache            — ылдамдатуу
✓ Smush                     — сүрөт оптималдаштыруу
✗ Jetpack                   — ОЙ БОЛБОСУН (өтө оор)

WooCommerce орнотуу

# WP-CLI аркылуу:
wp plugin install woocommerce --activate
wp plugin install woocommerce --version=2.4.13 --activate  # Туруктуу версия

# Setup Wizard'ды өткөрүп кетпеңиз:
# WP Admin → WooCommerce → Settings → General

Валюта жана жалпы жөндөөлөр

<?php
// functions.php — KGS валютасын кошуу
// WooCommerce 2.4'та KGS жок болчу — кол менен кошуу керек

// Кыргызстан сомун кошуу
add_filter('woocommerce_currencies', function($currencies) {
    $currencies['KGS'] = __('Kyrgyzstani Som', 'woocommerce');
    return $currencies;
});

add_filter('woocommerce_currency_symbol', function($currency_symbol, $currency) {
    switch ($currency) {
        case 'KGS':
            $currency_symbol = 'сом';
            break;
    }
    return $currency_symbol;
}, 10, 2);
WP Admin → WooCommerce → Settings → General:
- Currency: KGS (Kyrgyzstani Som)
- Currency Position: Right (баасы оңдо: "500 сом")
- Thousand Separator: (бош)
- Decimal Separator: .
- Number of Decimals: 0  (тыйын колдонулбайт)

Жеткизүү аймактарын орнотуу

<?php
// functions.php — Кыргызстан шаарлары үчүн жеткизүү аймактары

// WooCommerce Shipping Zones (2.4+та жаңы функция)
// WP Admin → WooCommerce → Settings → Shipping → Shipping Zones

// Программалык жол менен кошуу:
add_action('woocommerce_init', function() {
    // Бул жерде Shipping Zone'ду жасоого болот
    // Же WP Admin аркылуу кол менен
});
Shipping Zones (WP Admin аркылуу):

Зона 1: "Бишкек"
- Аймак: Кыргызстан → Чүй облусу → Бишкек
- Метод: Flat Rate — 100 сом
- Метод: Free Shipping — 3000 сом'дан жогору заказдарга

Зона 2: "Кыргызстандын башка шаарлары"  
- Аймак: Кыргызстан (Бишкекти кошпогондо)
- Метод: Flat Rate — 300–500 сом
- Убакыт: 2–5 жумушчу күн

Зона 3: "Башка өлкөлөр"
- Отключить (2015: Кыргызстандан тышкары жеткизүү жок)

Элсом (E-Wallet) төлөм плагинин жазуу

<?php
// includes/class-wc-gateway-elsom.php
// WooCommerce Payment Gateway Элсом үчүн

class WC_Gateway_Elsom extends WC_Payment_Gateway {

    public function __construct() {
        $this->id                 = 'elsom';
        $this->method_title       = 'Элсом кошелёк';
        $this->method_description = 'Элсом электрондук кошелёк аркылуу төлөм';
        $this->has_fields         = false;

        $this->init_form_fields();
        $this->init_settings();

        $this->title       = $this->get_option('title', 'Элсом');
        $this->description = $this->get_option('description', 'Элсом кошелёк аркылуу төлөңүз');

        add_action('woocommerce_update_options_payment_gateways_' . $this->id,
            [$this, 'process_admin_options']
        );
    }

    public function init_form_fields(): void {
        $this->form_fields = [
            'enabled' => [
                'title'   => 'Иштетүү',
                'type'    => 'checkbox',
                'default' => 'yes',
            ],
            'merchant_id' => [
                'title' => 'Merchant ID',
                'type'  => 'text',
            ],
            'secret_key' => [
                'title' => 'Жашыруун ачкыч',
                'type'  => 'password',
            ],
        ];
    }

    public function process_payment($order_id): array {
        $order       = wc_get_order($order_id);
        $merchantId  = $this->get_option('merchant_id');
        $secretKey   = $this->get_option('secret_key');

        // Элсом API чалуу
        $response = wp_remote_post('https://api.elsom.kg/v1/payments/create', [
            'headers' => ['Content-Type' => 'application/json'],
            'body'    => json_encode([
                'merchant_id'   => $merchantId,
                'order_id'      => $order_id,
                'amount'        => $order->get_total(),
                'currency'      => 'KGS',
                'description'   => 'Заказ #' . $order_id . ' myshop.kg сайтынан',
                'callback_url'  => home_url('/wc-api/wc_gateway_elsom/'),
                'success_url'   => $this->get_return_url($order),
                'fail_url'      => wc_get_checkout_url(),
                'signature'     => hash_hmac('sha256',
                    $merchantId . '|' . $order_id . '|' . $order->get_total(),
                    $secretKey
                ),
            ]),
            'timeout' => 15,
        ]);

        if (is_wp_error($response)) {
            wc_add_notice('Байланыш катасы. Кайра аракет кылыңыз.', 'error');
            return ['result' => 'fail'];
        }

        $data = json_decode(wp_remote_retrieve_body($response), true);

        if (empty($data['payment_url'])) {
            wc_add_notice('Төлөм системасында ката кетти.', 'error');
            return ['result' => 'fail'];
        }

        // Заказды "Pending payment" статусуна өткөрүү
        $order->update_status('pending', 'Элсом аркылуу төлөм башталды.');

        return [
            'result'   => 'success',
            'redirect' => $data['payment_url'],
        ];
    }
}

// Плагинди WooCommerce'ка каттоо
add_filter('woocommerce_payment_gateways', function($gateways) {
    $gateways[] = 'WC_Gateway_Elsom';
    return $gateways;
});

Наличные при доставке + SMS билдирүү

<?php
// functions.php — заказ жасалганда SMS жибер

add_action('woocommerce_new_order', function($order_id) {
    $order = wc_get_order($order_id);
    $phone = $order->get_billing_phone();

    // Казахстан же Кыргызстан телефон номерин нормалдаштыруу
    $phone = preg_replace('/[^0-9]/', '', $phone);
    if (strlen($phone) === 10) $phone = '996' . $phone;  // 0xxx → 996xxx

    $message = "Заказ #{$order_id} кабыл алынды! "
             . "Сумма: " . number_format($order->get_total(), 0) . " сом. "
             . "Тез арада менеджер байланышат. myshop.kg";

    // SMS жибер (Mobizon API аркылуу)
    wp_remote_get('https://api.mobizon.kg/service/message/sendsmsmessage?' . http_build_query([
        'apiKey'    => SMS_API_KEY,
        'recipient' => $phone,
        'text'      => $message,
        'from'      => 'MyShop',
    ]));
});

Кыргызча/Орусча тил которулуу

<?php
// Тил боюнча URL структурасы:
// myshop.kg/     → орусча (default)
// myshop.kg/ky/  → кыргызча

// WPML же Polylang плагинин колдон (2015-жылда Polylang бекер)
// Polylang орнотуу:
// wp plugin install polylang --activate

// Же кол менен тил которулуу:
add_filter('woocommerce_checkout_fields', function($fields) {
    $lang = get_locale();
    
    if ($lang === 'ky') {
        $fields['billing']['billing_first_name']['label'] = 'Аты';
        $fields['billing']['billing_last_name']['label']  = 'Фамилиясы';
        $fields['billing']['billing_phone']['label']      = 'Телефон';
        $fields['billing']['billing_email']['label']      = 'Email';
    }
    
    return $fields;
});

Биринчи айдагы жыйынтыктар

Кардарыбыздын Бишкектеги кийим дүкөнү (WooCommerce, 2015):

Метрика 1-ай 3-ай
Заказдар 23 87
Орточо чек 1,850 сом 2,100 сом
Айлык айланым 42,550 сом 182,700 сом
Наличные / Элсом 78% / 22% 61% / 39%

Элсомдун үлүшү ар ай өстү — пайдалануучулар онлайн төлөмгө адаттанды.

Ошондой эле окуңуз

Vue.js менен биринчи долбоор: Бишкектеги тажрыйба (2016)aunimeda
Frontend

Vue.js менен биринчи долбоор: Бишкектеги тажрыйба (2016)

Vue.js 2.0 2016-жылдын октябрь айында чыкты. React'ка салыштырмалуу жеңилирек үйрөнүлгөн. Биз Бишкектеги бир кардар үчүн онлайн-дүкөндүн себет бөлүмүн Vue.js менен жасадык. Components, reactivity, Vuex — реалдуу мисалдар менен.

Express.js менен REST API сервер кантип жасоо: нөлдөн production'го чейин (2015)aunimeda
Backend

Express.js менен REST API сервер кантип жасоо: нөлдөн production'го чейин (2015)

Node.js 4 LTS + Express.js 4 — 2015-жылда PHP'га альтернатива катары пайда болду. Биз Бишкекте мобилдик тиркеме үчүн API сервер жасадык. Роутинг, middleware, валидация, JWT авторизация, MySQL — бардыгы бир жерде. Иштеген код мисалдары.

MySQL суроо-талаптарын кантип тездетүү керек: EXPLAIN жана индекстер (2015)aunimeda
Маалымат базасы

MySQL суроо-талаптарын кантип тездетүү керек: EXPLAIN жана индекстер (2015)

Жай MySQL суроо-талаптары 2015-жылда да, 2025-жылда да бирдей диагностикаланат: EXPLAIN, slow query log, индекс жетишпейт. Бул макалада реалдуу мисал менен 8 секунддук суроо-талапты 40 мс'ка чейин тездеткен жолду карайбыз — кодду өзгөртпөстөн.

Бизнесиңизге IT иштеп чыгуу керекпи?

Веб-сайттарды, мобилдик тиркемелерди жана AI чечимдерин иштеп чыгабыз. Акысыз консультация.

Консультация алуу Бардык макалалар