{
  "brand": "Kevmi",
  "version": "2026-10-23.16",
  "updatedAt": "2026-10-23",
  "articles": [
    {
      "id": "quickstart",
      "title": "Жылдам бастау",
      "summary": "Жұмыс кеңістігіңізді зерттеңіз, дүкеніңізді орнатыңыз және клиентіңіз көретіндей шотты қараңыз. Бұл нұсқаулық сізді негізгі қадамдар арқылы ретімен өткізеді.",
      "group": "start",
      "url": "/docs/quickstart",
      "tags": [
        "бастау",
        "орнату",
        "алғашқы төлем",
        "жылдам бастау"
      ],
      "sections": [
        {
          "id": "explore",
          "title": "1. Өнімді зерттеңіз",
          "paragraphs": [
            "Тест тапсырысын жасау, төлем сілтемелерін зерттеу және комиссияны есептеуді тексеру үшін демо жұмыс кеңістігін ашыңыз. Демо бөлек тест деректерін пайдаланады. Ол банк төлемін жасамайды немесе әмиянға ақша аудармайды."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Демо жұмыс кеңістігін ашыңыз",
              "href": "/demo/index.html"
            },
            {
              "label": "Төлемді алдын ала қарау",
              "href": "/pay/demo"
            }
          ]
        },
        {
          "id": "account",
          "title": "2. Telegram арқылы аккаунт жасаңыз",
          "paragraphs": [
            "Telegram-ға кіргеннен кейін сатушы аккаунты ашылады. Веб-сайтта тіркелу /account#applications мекенжайында; форма да, жеке бақылау да /account#applications/{id} қолданба ішінде қалады.",
            "Жаңа төлем және карта ниеті сатушының соңғы веб-сайт шолу өтінімінің мақұлдануын талап етеді. Мақұлдау ғана төлем шлюзін қоспайды. Егер шолу жөнелтілгеннен кейін өзгерсе, бар операция мәртебе оқуы, есеп айырысу және сұралған банк коды үшін қолжетімді болып қалады."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Аккаунтыңызды ашыңыз",
              "href": "/account"
            }
          ]
        },
        {
          "id": "settings",
          "title": "3. Дүкеніңізді орнатыңыз",
          "paragraphs": [],
          "bullets": [],
          "steps": [
            "Клиентіңіз танитын дүкен атауын таңдаңыз.",
            "Әдепкі ҚҚС ережесін таңдаңыз. Әр жаңа шот клиент комиссиясы мен ҚҚС үлестерін 0-ден 100%-ға дейін бөлек қабылдайды.",
            "Telegram-да алғыңыз келетін хабарландыруларды таңдаңыз.",
            "Типтік тапсырыс сомасын тексеру үшін калькуляторды пайдаланыңыз."
          ],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Комиссиялар мен ҚҚС есептеу",
              "href": "/pricing"
            }
          ]
        },
        {
          "id": "invoice",
          "title": "4. Төлем сілтемесін дайындаңыз",
          "paragraphs": [
            "Нақты тапсырыс тақырыбын, соманы және валютаны енгізіңіз. Клиент сатып алу мәліметтері мен төленетін жалпы сомасы бар арнайы бетті алады. Бар шот дүкен параметрлері өзгерген кезде бастапқы шарттарын сақтайды."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Төлем сілтемелері бойынша нұсқаулық",
              "href": "/docs/payment-links"
            }
          ]
        },
        {
          "id": "activate",
          "title": "5. Төлемнің қолжетімділігін тексеріңіз",
          "paragraphs": [
            "Шоттарды, API кілттерін, виджеттерді және вебхуктарды аккаунтыңыздан басқарыңыз. Төлем алдында Kevmi шлюз конфигурациясын, сатушының мақұлдануын, соманы және шот шарттарын тексереді. Таңдалған әдіс қолжетімсіз болса, төлем беті себебін түсіндіреді.",
            "Жаңа жұмыс кеңістігі шоттары АҚШ доллары базалық бағасын пайдаланады, ал Any төрт әдістің барлығын ұсынады. SBP Ресей Банкінің мұздатылған анықтамалық бағамы бойынша рубльге айырбастайды; крипто айқын 1:1 АҚШ доллары/USDT шот ережесін пайдаланады. Мұрагерлік қолма-қол баға белгілеу ескі шоттар мен pricingMode=universal жоқ API сұраулары үшін қолжетімді болып қалады. Төмендегі бірнеше дүкен және АҚШ доллары бағасы бөлімін қараңыз.",
            "Жаңа тірі карта немесе Alipay төлемі үшін ағымдағы шлюз тек feeCustomerPercent=0 және vatCustomerPercent=100 мәндерін қолдайды: сатушы барлық өңдеу комиссиясын жабады, ал ҚҚС клиент үшін толық қосылады. Басқа үлестер шотта сақталып, есептелуі мүмкін, бірақ орындау unsupported_allocation кодымен бұғатталған. Сервер үнсіз сақталған шарттарды өзгертпейді. SBP және USDT крипто төлемдері кез келген өңдеу комиссиясы үлесін қолдайды және ҚҚС жоқ."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "Шот, кілт немесе өтінім жасау ақша алмайды. API арқылы төлем шығару қолжетімсіз; ақша алу шарттары бөлек нұсқаулықта қамтылған.",
          "links": [
            {
              "label": "Шлюз интеграциясы талаптары",
              "href": "/docs/gateway"
            }
          ]
        },
        {
          "id": "stores-usd",
          "title": "Бірнеше дүкен және бір АҚШ доллары базалық бағасы",
          "paragraphs": [
            "Жиынтық аналитика мен операциялар үшін Барлық дүкендерді таңдаңыз немесе жеке жазбалары үшін дүкенді таңдаңыз. Әр дүкеннің жеке storeId, атауы, ҚҚС әдепкі мәні, шоттары, API кілттері, вебхук нүктелері, оқиғалар тарихы және веб-сайт қосымшасы бар. Хабарландырулар мен қолдау билеттері тіркелгіге тиесілі. Тіркелгі 100 дүкенге дейін құра алады. Бар жазбалар оның бірінші дүкенінде қалады.",
            "Жаңа жұмыс кеңістігі шоттары pricingMode=\"universal\" және АҚШ доллары базалық бағасын пайдаланады. Any карта, alipay, sbp және криптоны қамтиды; сатушы ішкі жиынтықты таңдай алады. Карталар мен Alipay АҚШ долларымен есептейді. SBP Ресей Банкінің АҚШ доллары/рубль анықтамалық бағамын пайдаланып рубльмен есептейді. Крипто айқын шот ережесі бойынша USDT-мен есептейді: 1 АҚШ доллары = 1 USDT. Бұл шот айырбастау ережесі, нарықтық USDT котировкасы емес. Шлюз таңдалған монетаның бағамын, нақты аударым сомасын және нұсқауларды аударымға дейін береді.",
            "Анықтамалық бағам және екі сома да құру кезінде мұздатылады. Рубльге айырбастауды қамтитын шоттар 24 сағат ішінде мерзімі аяқталады. Егер анықтамалық бағамды алу мүмкін болмаса, құру FX_UNAVAILABLE қатесімен сәтсіз аяқталады; ойдан шығарылған немесе ескірген қосалқы бағам пайдаланылмайды. Меншік иесінің жауабындағы amountMinor және quotes АҚШ доллары бухгалтерлік валютасын пайдаланады. quotes[method].settlement туынды валютадағы төлем котировкасын қамтиды. Қоғамдық төлем беті таңдалған төлем валютасын currency өрісінде, бастапқы бағаны baseAmountMinor/baseCurrency өрістерінде және анықтамалық бағамды fx өрісінде көрсетеді. Төлем жіберілгеннен кейін оның әдісін өзгерту мүмкін емес; шотта бір шлюз операциясы болады.",
            "Мақсатты дүкен ішінде API кілтін жасаңыз және серверіңізден Authorization: Bearer <key> жіберіңіз. Оның дүкенге байланыстыруы өзгермейді; X-Kevmi-Store оған басқа дүкенге қолжетімділік бере алмайды. Браузер сеанстары X-Kevmi-Store: <storeId> таңдайды; оны алып тастағанда бірінші дүкен таңдалады. all мәні тек GET /api/account/dashboard және GET /api/payment-links сұраулары арқылы қабылданады. Өзгертулер таңдалған дүкенді, Origin және X-CSRF-Token талап етеді. Тіркелгі идентификаторлары мен дүкен идентификаторлары әртүрлі идентификаторлар болып табылады.",
            "Үйлесімділік үшін pricingMode=\"universal\" жоқ API сұраулары қолма-қол баға белгілеуді және бастапқы валюта шектеулерін сақтайды. Бар шоттар ешқашан қайта есептелмейді. Аналитикадағы расталған түбіртектер тексерілген төлемдерден сақталған шот шығындарын шегергендегі соманы көрсетеді; олар шығарылатын баланс емес. Мұрагерлік шот валюталары бөлек қалады, ал төлемдер қолдау қызметімен келісіледі. Тапсырысты тек payment.fulfillmentReady=true және payment.status=\"succeeded\" сервер API, оқиғалар тарихы немесе қол қойылған вебхук арқылы тексергеннен кейін орындаңыз."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        }
      ],
      "body": "1. Өнімді зерттеңіз\n\nТест тапсырысын жасау, төлем сілтемелерін зерттеу және комиссияны есептеуді тексеру үшін демо жұмыс кеңістігін ашыңыз. Демо бөлек тест деректерін пайдаланады. Ол банк төлемін жасамайды немесе әмиянға ақша аудармайды.\n\nДемо жұмыс кеңістігін ашыңыз\n\nТөлемді алдын ала қарау\n\n2. Telegram арқылы аккаунт жасаңыз\n\nTelegram-ға кіргеннен кейін сатушы аккаунты ашылады. Веб-сайтта тіркелу /account#applications мекенжайында; форма да, жеке бақылау да /account#applications/{id} қолданба ішінде қалады.\n\nЖаңа төлем және карта ниеті сатушының соңғы веб-сайт шолу өтінімінің мақұлдануын талап етеді. Мақұлдау ғана төлем шлюзін қоспайды. Егер шолу жөнелтілгеннен кейін өзгерсе, бар операция мәртебе оқуы, есеп айырысу және сұралған банк коды үшін қолжетімді болып қалады.\n\nАккаунтыңызды ашыңыз\n\n3. Дүкеніңізді орнатыңыз\n\nКлиентіңіз танитын дүкен атауын таңдаңыз.\n\nӘдепкі ҚҚС ережесін таңдаңыз. Әр жаңа шот клиент комиссиясы мен ҚҚС үлестерін 0-ден 100%-ға дейін бөлек қабылдайды.\n\nTelegram-да алғыңыз келетін хабарландыруларды таңдаңыз.\n\nТиптік тапсырыс сомасын тексеру үшін калькуляторды пайдаланыңыз.\n\nКомиссиялар мен ҚҚС есептеу\n\n4. Төлем сілтемесін дайындаңыз\n\nНақты тапсырыс тақырыбын, соманы және валютаны енгізіңіз. Клиент сатып алу мәліметтері мен төленетін жалпы сомасы бар арнайы бетті алады. Бар шот дүкен параметрлері өзгерген кезде бастапқы шарттарын сақтайды.\n\nТөлем сілтемелері бойынша нұсқаулық\n\n5. Төлемнің қолжетімділігін тексеріңіз\n\nШоттарды, API кілттерін, виджеттерді және вебхуктарды аккаунтыңыздан басқарыңыз. Төлем алдында Kevmi шлюз конфигурациясын, сатушының мақұлдануын, соманы және шот шарттарын тексереді. Таңдалған әдіс қолжетімсіз болса, төлем беті себебін түсіндіреді.\n\nЖаңа жұмыс кеңістігі шоттары АҚШ доллары базалық бағасын пайдаланады, ал Any төрт әдістің барлығын ұсынады. SBP Ресей Банкінің мұздатылған анықтамалық бағамы бойынша рубльге айырбастайды; крипто айқын 1:1 АҚШ доллары/USDT шот ережесін пайдаланады. Мұрагерлік қолма-қол баға белгілеу ескі шоттар мен pricingMode=universal жоқ API сұраулары үшін қолжетімді болып қалады. Төмендегі бірнеше дүкен және АҚШ доллары бағасы бөлімін қараңыз.\n\nЖаңа тірі карта немесе Alipay төлемі үшін ағымдағы шлюз тек feeCustomerPercent=0 және vatCustomerPercent=100 мәндерін қолдайды: сатушы барлық өңдеу комиссиясын жабады, ал ҚҚС клиент үшін толық қосылады. Басқа үлестер шотта сақталып, есептелуі мүмкін, бірақ орындау unsupported_allocation кодымен бұғатталған. Сервер үнсіз сақталған шарттарды өзгертпейді. SBP және USDT крипто төлемдері кез келген өңдеу комиссиясы үлесін қолдайды және ҚҚС жоқ.\n\nШот, кілт немесе өтінім жасау ақша алмайды. API арқылы төлем шығару қолжетімсіз; ақша алу шарттары бөлек нұсқаулықта қамтылған.\n\nШлюз интеграциясы талаптары\n\nБірнеше дүкен және бір АҚШ доллары базалық бағасы\n\nЖиынтық аналитика мен операциялар үшін Барлық дүкендерді таңдаңыз немесе жеке жазбалары үшін дүкенді таңдаңыз. Әр дүкеннің жеке storeId, атауы, ҚҚС әдепкі мәні, шоттары, API кілттері, вебхук нүктелері, оқиғалар тарихы және веб-сайт қосымшасы бар. Хабарландырулар мен қолдау билеттері тіркелгіге тиесілі. Тіркелгі 100 дүкенге дейін құра алады. Бар жазбалар оның бірінші дүкенінде қалады.\n\nЖаңа жұмыс кеңістігі шоттары pricingMode=\"universal\" және АҚШ доллары базалық бағасын пайдаланады. Any карта, alipay, sbp және криптоны қамтиды; сатушы ішкі жиынтықты таңдай алады. Карталар мен Alipay АҚШ долларымен есептейді. SBP Ресей Банкінің АҚШ доллары/рубль анықтамалық бағамын пайдаланып рубльмен есептейді. Крипто айқын шот ережесі бойынша USDT-мен есептейді: 1 АҚШ доллары = 1 USDT. Бұл шот айырбастау ережесі, нарықтық USDT котировкасы емес. Шлюз таңдалған монетаның бағамын, нақты аударым сомасын және нұсқауларды аударымға дейін береді.\n\nАнықтамалық бағам және екі сома да құру кезінде мұздатылады. Рубльге айырбастауды қамтитын шоттар 24 сағат ішінде мерзімі аяқталады. Егер анықтамалық бағамды алу мүмкін болмаса, құру FX_UNAVAILABLE қатесімен сәтсіз аяқталады; ойдан шығарылған немесе ескірген қосалқы бағам пайдаланылмайды. Меншік иесінің жауабындағы amountMinor және quotes АҚШ доллары бухгалтерлік валютасын пайдаланады. quotes[method].settlement туынды валютадағы төлем котировкасын қамтиды. Қоғамдық төлем беті таңдалған төлем валютасын currency өрісінде, бастапқы бағаны baseAmountMinor/baseCurrency өрістерінде және анықтамалық бағамды fx өрісінде көрсетеді. Төлем жіберілгеннен кейін оның әдісін өзгерту мүмкін емес; шотта бір шлюз операциясы болады.\n\nМақсатты дүкен ішінде API кілтін жасаңыз және серверіңізден Authorization: Bearer <key> жіберіңіз. Оның дүкенге байланыстыруы өзгермейді; X-Kevmi-Store оған басқа дүкенге қолжетімділік бере алмайды. Браузер сеанстары X-Kevmi-Store: <storeId> таңдайды; оны алып тастағанда бірінші дүкен таңдалады. all мәні тек GET /api/account/dashboard және GET /api/payment-links сұраулары арқылы қабылданады. Өзгертулер таңдалған дүкенді, Origin және X-CSRF-Token талап етеді. Тіркелгі идентификаторлары мен дүкен идентификаторлары әртүрлі идентификаторлар болып табылады.\n\nҮйлесімділік үшін pricingMode=\"universal\" жоқ API сұраулары қолма-қол баға белгілеуді және бастапқы валюта шектеулерін сақтайды. Бар шоттар ешқашан қайта есептелмейді. Аналитикадағы расталған түбіртектер тексерілген төлемдерден сақталған шот шығындарын шегергендегі соманы көрсетеді; олар шығарылатын баланс емес. Мұрагерлік шот валюталары бөлек қалады, ал төлемдер қолдау қызметімен келісіледі. Тапсырысты тек payment.fulfillmentReady=true және payment.status=\"succeeded\" сервер API, оқиғалар тарихы немесе қол қойылған вебхук арқылы тексергеннен кейін орындаңыз.",
      "readMinutes": 3
    },
    {
      "id": "overview",
      "title": "Kevmi қалай жұмыс істейді",
      "summary": "Kevmi жеке шоттарды, төлем әдістерін және баға ережелерін бір жұмыс кеңістігіне біріктіреді. Әр тапсырыс бөлек төленеді. Жазылымдар немесе автоматты мерзімді төлемдер жоқ.",
      "group": "start",
      "url": "/docs/overview",
      "tags": [
        "шолу",
        "бір реттік төлемдер",
        "жұмыс кеңістігі",
        "жазылымдар жоқ"
      ],
      "sections": [
        {
          "id": "roles",
          "title": "Сатушы және клиент",
          "paragraphs": [
            "Сатушы тапсырыс тақырыбын, базалық бағаны, валютаны және салық бөлуді белгілейді. Клиент арнайы төлем бетін ашады, қолжетімді әдісті таңдайды және растау алдында жалпы соманы көреді.",
            "Клиентке сатушының жұмыс кеңістігіне қол жеткізу қажет емес. Төлем беті бір тапсырыстың мәліметтерін көрсетеді, дүкен балансын, параметрлерін немесе басқа клиент жазбаларын емес."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "channels",
          "title": "Төрт төлем арнасы",
          "paragraphs": [],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Әдіс",
              "Аудитория",
              "Қабылдау комиссиясы"
            ],
            "rows": [
              [
                "Халықаралық карталар",
                "Халықаралық клиенттер",
                "10% + $0.50; 16% ҚҚС"
              ],
              [
                "SBP",
                "Ресейдегі клиенттер",
                "8%; ҚҚС жоқ"
              ],
              [
                "Alipay",
                "Қытайдағы клиенттер",
                "10% + $0.50; 16% ҚҚС"
              ],
              [
                "Криптовалюта",
                "Крипто төлемдері",
                "4%; ҚҚС жоқ"
              ]
            ]
          },
          "code": null,
          "note": "Visa және Mastercard 190-нан астам елде қолжетімді, жарияланған шектеулерді қоспағанда. Криптовалюта барлық елдерде қолжетімді.",
          "links": [
            {
              "label": "Елдер және шектеулер",
              "href": "/docs/geography"
            }
          ]
        },
        {
          "id": "workspace",
          "title": "Жұмыс кеңістігіңіздің ішінде",
          "paragraphs": [
            "Сервер жазбалары расталған аккаунтқа тиесілі. Демо бөлек және тірі төлемдер немесе алуға болатын баланс жасай алмайды."
          ],
          "bullets": [
            "Төлем сілтемелері мен тапсырыс шарттары: /account#links.",
            "Веб-сайт өтінімдері мен жеке бақылау: /account#applications.",
            "API кілттері, вебхуктар, виджет және оқиғалар: /account#keys, #webhooks, #widget, #events.",
            "Баға, калькулятор, ел картасы және толық құжаттама: /account#knowledge.",
            "Дүкен параметрлері, Telegram хабарламалары және қолдау сұраулары бір тіркелгіде қалады."
          ],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "money",
          "title": "Сомаларды түсіну",
          "paragraphs": [
            "Негізгі баға — бұл шығындарды бөлуге дейінгі тауар немесе қызмет бағасы. Комиссия мен ҚҚС бұл негізді тәуелсіз пайдаланады. Тұтынушы үлестері төлем кезінде қосылады; сатушы үлестері негізгі бағадан шегеріледі. Карта және Alipay ҚҚС 16% құрайды, комиссия мен ҚҚС бөлуі бөлек басқарылады.",
            "Kevmi платформалық комиссиясы жарияланған алымдарға қазірдің өзінде енгізілген. Қосымша 5% үстеме жоқ. USDT TRC20 төлемі қаражат көзіне және нақты айырбас бағамына негізделген жеке алымға ие."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Барлық алымдар",
              "href": "/pricing"
            }
          ]
        },
        {
          "id": "availability",
          "title": "Функцияларға қолжетімділік",
          "paragraphs": [
            "Құжаттама, калькулятор және құжаттама көмекшісі кірусіз қолжетімді. Дүкен параметрлері, төлем сілтемелері және жеке қолдау сұраулары тіркелгіні қажет етеді. Қаржылық қолжетімділік бөлек тексеріледі, ал қолжетімсіз төлем арнасы төлемге дейін хабарланады."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        }
      ],
      "body": "Сатушы және клиент\n\nСатушы тапсырыс тақырыбын, базалық бағаны, валютаны және салық бөлуді белгілейді. Клиент арнайы төлем бетін ашады, қолжетімді әдісті таңдайды және растау алдында жалпы соманы көреді.\n\nКлиентке сатушының жұмыс кеңістігіне қол жеткізу қажет емес. Төлем беті бір тапсырыстың мәліметтерін көрсетеді, дүкен балансын, параметрлерін немесе басқа клиент жазбаларын емес.\n\nТөрт төлем арнасы\n\nӘдіс · Аудитория · Қабылдау комиссиясы\nХалықаралық карталар · Халықаралық клиенттер · 10% + $0.50; 16% ҚҚС\nSBP · Ресейдегі клиенттер · 8%; ҚҚС жоқ\nAlipay · Қытайдағы клиенттер · 10% + $0.50; 16% ҚҚС\nКриптовалюта · Крипто төлемдері · 4%; ҚҚС жоқ\n\nVisa және Mastercard 190-нан астам елде қолжетімді, жарияланған шектеулерді қоспағанда. Криптовалюта барлық елдерде қолжетімді.\n\nЕлдер және шектеулер\n\nЖұмыс кеңістігіңіздің ішінде\n\nСервер жазбалары расталған аккаунтқа тиесілі. Демо бөлек және тірі төлемдер немесе алуға болатын баланс жасай алмайды.\n\nТөлем сілтемелері мен тапсырыс шарттары: /account#links.\n\nВеб-сайт өтінімдері мен жеке бақылау: /account#applications.\n\nAPI кілттері, вебхуктар, виджет және оқиғалар: /account#keys, #webhooks, #widget, #events.\n\nБаға, калькулятор, ел картасы және толық құжаттама: /account#knowledge.\n\nДүкен параметрлері, Telegram хабарламалары және қолдау сұраулары бір тіркелгіде қалады.\n\nСомаларды түсіну\n\nНегізгі баға — бұл шығындарды бөлуге дейінгі тауар немесе қызмет бағасы. Комиссия мен ҚҚС бұл негізді тәуелсіз пайдаланады. Тұтынушы үлестері төлем кезінде қосылады; сатушы үлестері негізгі бағадан шегеріледі. Карта және Alipay ҚҚС 16% құрайды, комиссия мен ҚҚС бөлуі бөлек басқарылады.\n\nKevmi платформалық комиссиясы жарияланған алымдарға қазірдің өзінде енгізілген. Қосымша 5% үстеме жоқ. USDT TRC20 төлемі қаражат көзіне және нақты айырбас бағамына негізделген жеке алымға ие.\n\nБарлық алымдар\n\nФункцияларға қолжетімділік\n\nҚұжаттама, калькулятор және құжаттама көмекшісі кірусіз қолжетімді. Дүкен параметрлері, төлем сілтемелері және жеке қолдау сұраулары тіркелгіні қажет етеді. Қаржылық қолжетімділік бөлек тексеріледі, ал қолжетімсіз төлем арнасы төлемге дейін хабарланады.",
      "readMinutes": 3
    },
    {
      "id": "fees",
      "title": "Төлем және төлем шығару алымдары",
      "summary": "Қабылдау алымы төлем әдісіне байланысты және тапсырыстың негізгі бағасын пайдаланады. Kevmi комиссиясы енгізілген. ҚҚС және төлем шығару алымдары бөлек көрсетіледі.",
      "group": "payments",
      "url": "/docs/fees",
      "tags": [
        "алымдар",
        "баға белгілеу",
        "шығын",
        "төлем шығару",
        "комиссия"
      ],
      "sections": [
        {
          "id": "incoming",
          "title": "Бір төлемді қабылдау",
          "paragraphs": [
            "Пайыздық және тұрақты құрамдастарды қосыңыз. $5 карта тапсырысы үшін алым $0.50 + $0.50 = $1 құрайды. ҚҚС $0.80 және бұл алымнан бөлек.",
            "Платформа үлесі, орта есеппен шамамен 5%, осы шарттарға қазірдің өзінде енгізілген. Екінші платформа пайызын қоспаңыз."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Әдіс",
              "Пайыз",
              "Тұрақты алым",
              "ҚҚС"
            ],
            "rows": [
              [
                "Халықаралық карталар",
                "10%",
                "$0.50",
                "Негізгі бағаның 16%"
              ],
              [
                "Alipay",
                "10%",
                "$0.50",
                "Негізгі бағаның 16%"
              ],
              [
                "SBP",
                "8%",
                "Жоқ",
                "Жоқ"
              ],
              [
                "Криптовалюта",
                "4%",
                "Жоқ",
                "Жоқ"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "payout",
          "title": "Қаражат шығару",
          "paragraphs": [
            "Қаражат көзі және төлем шығару желісі — бөлек параметрлер. TRC20 пайдалану әрбір төлем шығару алымын бірдей етпейді. Төлем шығару алымы қабылдау алымынан бөлек.",
            "Тұрақты алымды көрсетілген валютада сақтаңыз. USD сомасынан RUB 400 шегермеңіз немесе $3 — 3 USDT деп болжамаңыз. Соңғы төлем шығару нақты айырбас бағамын қажет етеді."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Қаражат көзі",
              "Төлем шығару алымы",
              "Мақсат орны"
            ],
            "rows": [
              [
                "Карталар",
                "4%",
                "USDT TRC20"
              ],
              [
                "Alipay",
                "4%",
                "USDT TRC20"
              ],
              [
                "SBP",
                "5% + RUB 400",
                "USDT TRC20"
              ],
              [
                "Криптовалюта",
                "0% + $3",
                "USDT TRC20"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "rounding",
          "title": "Есептеу дәлдігі",
          "paragraphs": [
            "Шот сомасы бүтін сан: 500 — анық көрсетілген валютада 5.00 USD, RUB немесе USDT дегенді білдіреді. Бұлар шот есептеу бірліктері; USD және USDT автоматты түрде айырбасталмайды. Алымдар мен ҚҚС бөлек жартылай жоғары дөңгелектеуді пайдаланады.",
            "Крипто аударымы үшін жасалған операция қайтарған нақты ондық монета сомасын және желіні пайдаланыңыз. Аударым сомасын дөңгелектелген шот бағасынан шығармаңыз. Есептеу теріс сатушы түсімін жасай алмайды."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "Formula",
            "code": "feeMinor = roundHalfUp(baseMinor × rate / 100) + fixedMinor\nvatMinor = roundHalfUp(baseMinor × 16 / 100)\n// For SBP and cryptocurrency, vatMinor = 0"
          },
          "note": "",
          "links": []
        },
        {
          "id": "before-pay",
          "title": "Төлем алдында тексеріңіз",
          "paragraphs": [],
          "bullets": [
            "Түпнұсқа тапсырыс сомасы мен валютасы.",
            "Төлем әдісі, ол алымды және ҚҚС қолданылатынын анықтайды.",
            "Шотпен бірге сақталған ҚҚС төлеуші.",
            "Тұтынушы жалпы сомасы және күтілетін сатушы кредиті."
          ],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Сомаңызды есептеңіз",
              "href": "/pricing"
            },
            {
              "label": "ҚҚС-ны түсіну",
              "href": "/docs/vat"
            }
          ]
        }
      ],
      "body": "Бір төлемді қабылдау\n\nПайыздық және тұрақты құрамдастарды қосыңыз. $5 карта тапсырысы үшін алым $0.50 + $0.50 = $1 құрайды. ҚҚС $0.80 және бұл алымнан бөлек.\n\nПлатформа үлесі, орта есеппен шамамен 5%, осы шарттарға қазірдің өзінде енгізілген. Екінші платформа пайызын қоспаңыз.\n\nӘдіс · Пайыз · Тұрақты алым · ҚҚС\nХалықаралық карталар · 10% · $0.50 · Негізгі бағаның 16%\nAlipay · 10% · $0.50 · Негізгі бағаның 16%\nSBP · 8% · Жоқ · Жоқ\nКриптовалюта · 4% · Жоқ · Жоқ\n\nҚаражат шығару\n\nҚаражат көзі және төлем шығару желісі — бөлек параметрлер. TRC20 пайдалану әрбір төлем шығару алымын бірдей етпейді. Төлем шығару алымы қабылдау алымынан бөлек.\n\nТұрақты алымды көрсетілген валютада сақтаңыз. USD сомасынан RUB 400 шегермеңіз немесе $3 — 3 USDT деп болжамаңыз. Соңғы төлем шығару нақты айырбас бағамын қажет етеді.\n\nҚаражат көзі · Төлем шығару алымы · Мақсат орны\nКарталар · 4% · USDT TRC20\nAlipay · 4% · USDT TRC20\nSBP · 5% + RUB 400 · USDT TRC20\nКриптовалюта · 0% + $3 · USDT TRC20\n\nЕсептеу дәлдігі\n\nШот сомасы бүтін сан: 500 — анық көрсетілген валютада 5.00 USD, RUB немесе USDT дегенді білдіреді. Бұлар шот есептеу бірліктері; USD және USDT автоматты түрде айырбасталмайды. Алымдар мен ҚҚС бөлек жартылай жоғары дөңгелектеуді пайдаланады.\n\nКрипто аударымы үшін жасалған операция қайтарған нақты ондық монета сомасын және желіні пайдаланыңыз. Аударым сомасын дөңгелектелген шот бағасынан шығармаңыз. Есептеу теріс сатушы түсімін жасай алмайды.\n\nfeeMinor = roundHalfUp(baseMinor × rate / 100) + fixedMinor\nvatMinor = roundHalfUp(baseMinor × 16 / 100)\n// For SBP and cryptocurrency, vatMinor = 0\n\nТөлем алдында тексеріңіз\n\nТүпнұсқа тапсырыс сомасы мен валютасы.\n\nТөлем әдісі, ол алымды және ҚҚС қолданылатынын анықтайды.\n\nШотпен бірге сақталған ҚҚС төлеуші.\n\nТұтынушы жалпы сомасы және күтілетін сатушы кредиті.\n\nСомаңызды есептеңіз\n\nҚҚС-ны түсіну",
      "readMinutes": 3
    },
    {
      "id": "vat",
      "title": "ҚҚС және шығындарды бөлу",
      "summary": "ҚҚС халықаралық карталар мен Alipay үшін негізгі тапсырыс бағасының 16% құрайды. Сатушы тұтынушы үлесін 0-ден 100%-ға дейін белгілейді және қалғанын кірістен жабады. SBP және криптовалюта осы жарияланған шарттар бойынша ҚҚС-сыз.",
      "group": "payments",
      "url": "/docs/vat",
      "tags": [
        "ҚҚС",
        "салық",
        "тұтынушы",
        "сатушы",
        "бес доллар"
      ],
      "sections": [
        {
          "id": "base",
          "title": "Алымдар мен салық үшін бір негіз",
          "paragraphs": [
            "Негізгі баға — бұл дүкен енгізген тапсырыс сомасы. 10% + $0.50 алымы және 16% ҚҚС осы бағадан тәуелсіз есептеледі. Алым үстіне қосылатын ҚҚС-қ қолданылмайды.",
            "$5 негізгі бағамен алым $1, ал ҚҚС $0.80 құрайды. Төлеушіні өзгерту бөлуді өзгертеді, салық мөлшерлемесін немесе оның есептеу негізін емес."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "customer",
          "title": "Тұтынушы ҚҚС-ны төлейді",
          "paragraphs": [
            "Бұл әдепкі ҚҚС ережесі: 100% тұтынушы үлесі, бұл мұрагерлік тұтынушы мәніне тең. Сатушы осы мысалда барлық алымды жабады. ҚҚС негізгі бағаға қосылады. Төлем кезінде тапсырыс бағасы, ҚҚС және төленетін жалпы сома көрсетіледі.",
            "Тек қабылдау алымы негізгі бағадан шегеріледі. $5 тапсырысы үшін тұтынушы $5.80 төлейді, ал сатушы $4 алады."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "Formula",
            "code": "customerTotalMinor = baseMinor + vatMinor\nmerchantNetMinor = baseMinor - feeMinor"
          },
          "note": "",
          "links": []
        },
        {
          "id": "merchant",
          "title": "Сатушы ҚҚС-ны төлейді",
          "paragraphs": [
            "Бұл мысалда тұтынушы үлестері ҚҚС және алым үшін де 0% құрайды. Мұрагерлік сатушы ҚҚС мәні нөлдік тұтынушы ҚҚС үлесіне сәйкес келеді; сатушы екі шығынды да негізгі бағадан жабады.",
            "$5 тапсырысы үшін тұтынушы $5 төлейді, алым $1, ҚҚС $0.80, ал сатушы $3.20 алады. ҚҚС негізгі бағаның 16% болып қалады; бұл ережені 16/116 формуласымен ауыстырмаңыз."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "Formula",
            "code": "customerTotalMinor = baseMinor\nmerchantNetMinor = baseMinor - feeMinor - vatMinor"
          },
          "note": "",
          "links": []
        },
        {
          "id": "comparison",
          "title": "Қатар орналасқан мысал",
          "paragraphs": [],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Сома",
              "Тұтынушы ҚҚС-ны төлейді",
              "Сатушы ҚҚС-ны төлейді"
            ],
            "rows": [
              [
                "Негізгі тапсырыс бағасы",
                "$5.00",
                "$5.00"
              ],
              [
                "Қабылдау комиссиясы",
                "$1.00",
                "$1.00"
              ],
              [
                "ҚҚС",
                "$0.80",
                "$0.80"
              ],
              [
                "Төлемді төлейді",
                "$5.80",
                "$5.00"
              ],
              [
                "Сатушы алады",
                "$4.00",
                "$3.20"
              ]
            ]
          },
          "code": null,
          "note": "Екі баған да тұтынушының өңдеу ақысының 0% үлесін болжайды. Аралық ҚҚС үлестері және бөлек ақы бөлу калькуляторда қолжетімді.",
          "links": []
        },
        {
          "id": "snapshot",
          "title": "Баптау қолданылғанда",
          "paragraphs": [
            "Дүкеннің баптауы бастапқы бөлуді қамтамасыз етеді. Интерфейс пен API әр шот үшін тұтынушының ҚҚС және өңдеу ақысының үлестерін 0-ден 100-ге дейін тәуелсіз сақтайды. Дүкен баптауларындағы өзгерістер берілген шоттарды қайта есептемейді.",
            "Жаңа тірі карта немесе Alipay төлемі үшін ағымдағы шлюз тек feeCustomerPercent=0 және vatCustomerPercent=100 мәндерін қолдайды: сатушы барлық өңдеу комиссиясын жабады, ал ҚҚС клиент үшін толық қосылады. Басқа үлестер шотта сақталып, есептелуі мүмкін, бірақ орындау unsupported_allocation кодымен бұғатталған. Сервер үнсіз сақталған шарттарды өзгертпейді. SBP және USDT крипто төлемдері кез келген өңдеу комиссиясы үлесін қолдайды және ҚҚС жоқ.",
            "Әртүрлі шарттар үшін жаңа сілтеме жасаңыз. SBP және криптовалюта үшін ҚҚС нөлге тең."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Дүкен баптаулары",
              "href": "/docs/settings"
            },
            {
              "label": "Есептеуді тексеру",
              "href": "/pricing"
            },
            {
              "label": "Өңдеу ақысы мен ҚҚС бөлу",
              "href": "/docs/cost-sharing"
            }
          ]
        }
      ],
      "body": "Алымдар мен салық үшін бір негіз\n\nНегізгі баға — бұл дүкен енгізген тапсырыс сомасы. 10% + $0.50 алымы және 16% ҚҚС осы бағадан тәуелсіз есептеледі. Алым үстіне қосылатын ҚҚС-қ қолданылмайды.\n\n$5 негізгі бағамен алым $1, ал ҚҚС $0.80 құрайды. Төлеушіні өзгерту бөлуді өзгертеді, салық мөлшерлемесін немесе оның есептеу негізін емес.\n\nТұтынушы ҚҚС-ны төлейді\n\nБұл әдепкі ҚҚС ережесі: 100% тұтынушы үлесі, бұл мұрагерлік тұтынушы мәніне тең. Сатушы осы мысалда барлық алымды жабады. ҚҚС негізгі бағаға қосылады. Төлем кезінде тапсырыс бағасы, ҚҚС және төленетін жалпы сома көрсетіледі.\n\nТек қабылдау алымы негізгі бағадан шегеріледі. $5 тапсырысы үшін тұтынушы $5.80 төлейді, ал сатушы $4 алады.\n\ncustomerTotalMinor = baseMinor + vatMinor\nmerchantNetMinor = baseMinor - feeMinor\n\nСатушы ҚҚС-ны төлейді\n\nБұл мысалда тұтынушы үлестері ҚҚС және алым үшін де 0% құрайды. Мұрагерлік сатушы ҚҚС мәні нөлдік тұтынушы ҚҚС үлесіне сәйкес келеді; сатушы екі шығынды да негізгі бағадан жабады.\n\n$5 тапсырысы үшін тұтынушы $5 төлейді, алым $1, ҚҚС $0.80, ал сатушы $3.20 алады. ҚҚС негізгі бағаның 16% болып қалады; бұл ережені 16/116 формуласымен ауыстырмаңыз.\n\ncustomerTotalMinor = baseMinor\nmerchantNetMinor = baseMinor - feeMinor - vatMinor\n\nҚатар орналасқан мысал\n\nСома · Тұтынушы ҚҚС-ны төлейді · Сатушы ҚҚС-ны төлейді\nНегізгі тапсырыс бағасы · $5.00 · $5.00\nҚабылдау комиссиясы · $1.00 · $1.00\nҚҚС · $0.80 · $0.80\nТөлемді төлейді · $5.80 · $5.00\nСатушы алады · $4.00 · $3.20\n\nЕкі баған да тұтынушының өңдеу ақысының 0% үлесін болжайды. Аралық ҚҚС үлестері және бөлек ақы бөлу калькуляторда қолжетімді.\n\nБаптау қолданылғанда\n\nДүкеннің баптауы бастапқы бөлуді қамтамасыз етеді. Интерфейс пен API әр шот үшін тұтынушының ҚҚС және өңдеу ақысының үлестерін 0-ден 100-ге дейін тәуелсіз сақтайды. Дүкен баптауларындағы өзгерістер берілген шоттарды қайта есептемейді.\n\nЖаңа тірі карта немесе Alipay төлемі үшін ағымдағы шлюз тек feeCustomerPercent=0 және vatCustomerPercent=100 мәндерін қолдайды: сатушы барлық өңдеу комиссиясын жабады, ал ҚҚС клиент үшін толық қосылады. Басқа үлестер шотта сақталып, есептелуі мүмкін, бірақ орындау unsupported_allocation кодымен бұғатталған. Сервер үнсіз сақталған шарттарды өзгертпейді. SBP және USDT крипто төлемдері кез келген өңдеу комиссиясы үлесін қолдайды және ҚҚС жоқ.\n\nӘртүрлі шарттар үшін жаңа сілтеме жасаңыз. SBP және криптовалюта үшін ҚҚС нөлге тең.\n\nДүкен баптаулары\n\nЕсептеуді тексеру\n\nӨңдеу ақысы мен ҚҚС бөлу",
      "readMinutes": 4
    },
    {
      "id": "geography",
      "title": "Елдер мен төлем әдістері",
      "summary": "Visa және Mastercard жарияланған шектеулерді қоспағанда, 190-нан астам елді қамтиды. SBP Ресейде қызмет көрсетеді, Alipay Қытайда қызмет көрсетеді, ал криптовалюта бүкіл әлемде қолжетімді.",
      "group": "payments",
      "url": "/docs/geography",
      "tags": [
        "елдер",
        "қамту",
        "190+",
        "Ресей",
        "Қытай",
        "Оланд аралдары",
        "Албания",
        "Алжир",
        "Америка Самоасы",
        "Андорра",
        "Ангола",
        "Ангилья",
        "Антигуа және Барбуда",
        "Аргентина",
        "Армения",
        "Аруба",
        "Австралия",
        "Австрия",
        "Әзірбайжан",
        "Багам аралдары",
        "Бахрейн",
        "Бангладеш",
        "Барбадос",
        "Бельгия",
        "Белиз",
        "Бенин",
        "Бермуд аралдары",
        "Бутан",
        "Боливия",
        "Кариб Нидерланды",
        "Босния және Герцеговина",
        "Ботсвана",
        "Буве аралы",
        "Бразилия",
        "Британдық Үнді мұхиты аймағы",
        "Бруней",
        "Болгария",
        "Буркина-Фасо",
        "Кабо-Верде",
        "Камбоджа",
        "Камерун",
        "Канада",
        "Кайман аралдары",
        "Чили",
        "Қытай",
        "Рождество аралы",
        "Кокос (Килинг) аралдары",
        "Колумбия",
        "Комор аралдары",
        "Кук аралдары",
        "Коста-Рика",
        "Хорватия",
        "Кюрасао",
        "Кипр",
        "Чехия",
        "Кот-д’Ивуар",
        "Дания",
        "Джибути",
        "Доминика",
        "Доминикан Республикасы",
        "Эквадор",
        "Мысыр",
        "Сальвадор",
        "Экваторлық Гвинея",
        "Эстония",
        "Эсватини",
        "Эфиопия",
        "Фолкленд аралдары",
        "Фарер аралдары",
        "Микронезия",
        "Фиджи",
        "Финляндия",
        "Франция",
        "Француз Гвианасы",
        "Француз Полинезиясы",
        "Француз Оңтүстік аймақтары",
        "Габон",
        "Гамбия",
        "Грузия",
        "Германия",
        "Гана",
        "Гибралтар",
        "Грекия",
        "Гренландия",
        "Гренада",
        "Гваделупа",
        "Гуам",
        "Гватемала",
        "Гернси",
        "Гвинея",
        "Гвинея-Бисау",
        "Гайана",
        "Херд пен Макдональд аралдары",
        "Ватикан",
        "Гондурас",
        "Гонконг (Қытай ААА)",
        "Мажарстан",
        "Исландия",
        "Үндістан",
        "Индонезия",
        "Ирландия",
        "Мэн аралы",
        "Израиль",
        "Италия",
        "Ямайка",
        "Жапония",
        "Джерси",
        "Иордания",
        "Қазақстан",
        "Кения",
        "Кирибати",
        "Кувейт",
        "Қырғызстан",
        "Лаос",
        "Латвия",
        "Ливан",
        "Лесото",
        "Либерия",
        "Лихтенштейн",
        "Литва",
        "Люксембург",
        "Макао АР Қытай",
        "Мадагаскар",
        "Малави",
        "Малайзия",
        "Мальдив аралдары",
        "Мальта",
        "Маршалл аралдары",
        "Мартиника",
        "Мавритания",
        "Маврикий",
        "Майотта",
        "Мексика",
        "Молдова",
        "Монако",
        "Моңғолия",
        "Черногория",
        "Монтсеррат",
        "Марокко",
        "Мозамбик",
        "Намибия",
        "Науру",
        "Непал",
        "Нидерланд",
        "Жаңа Каледония",
        "Жаңа Зеландия",
        "Нигер",
        "Нигерия",
        "Ниуэ",
        "Норфолк аралы",
        "Солтүстік Македония",
        "Солтүстік Мариана аралдары",
        "Норвегия",
        "Оман",
        "Пәкістан",
        "Палау",
        "Панама",
        "Папуа — Жаңа Гвинея",
        "Парагвай",
        "Перу",
        "Филиппин",
        "Питкэрн аралдары",
        "Польша",
        "Португалия",
        "Пуэрто-Рико",
        "Катар",
        "Румыния",
        "Руанда",
        "Реюньон",
        "Сен-Бартелеми",
        "Әулие Елена аралы",
        "Сент-Китс және Невис",
        "Сент-Люсия",
        "Сент-Мартен",
        "Сент-Пьер және Микелон",
        "Сент-Винсент және Гренадиндер",
        "Самоа",
        "Сан-Марино",
        "Сан-Томе және Принсипи",
        "Сауд Арабиясы",
        "Сенегал",
        "Сербия",
        "Сейшель аралдары",
        "Сьерра-Леоне",
        "Сингапур",
        "Синт-Мартен",
        "Словакия",
        "Словения",
        "Соломон аралдары",
        "Оңтүстік Африка",
        "Оңтүстік Георгия және Оңтүстік Сэндвич аралдары",
        "Оңтүстік Корея",
        "Испания",
        "Шри-Ланка",
        "Палестина аумақтары",
        "Суринам",
        "Шпицберген және Ян-Майен",
        "Швеция",
        "Швейцария",
        "Тайвань",
        "Тәжікстан",
        "Танзания",
        "Тайланд",
        "Тимор-Лесте",
        "Того",
        "Токелау",
        "Тонга",
        "Тринидад және Тобаго",
        "Тунис",
        "Түрікменстан",
        "Тёркс және Кайкос аралдары",
        "Тувалу",
        "Түркия",
        "Уганда",
        "Украина",
        "Біріккен Араб Әмірліктері",
        "Ұлыбритания",
        "АҚШ-тың қашықтағы аралдары",
        "Америка Құрама Штаттары",
        "Уругвай",
        "Өзбекстан",
        "Вануату",
        "Вьетнам",
        "Британдық Виргин аралдары",
        "АҚШ-тың Виргин аралдары",
        "Уоллис және Футуна",
        "Батыс Сахара",
        "Замбия"
      ],
      "sections": [
        {
          "id": "coverage",
          "title": "Арна бойынша қамту",
          "paragraphs": [],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Арна",
              "Қамту",
              "Шарттар"
            ],
            "rows": [
              [
                "Халықаралық карталар",
                "190-нан астам ел",
                "Шектеу тізімінен және Украинаның бес аймағынан басқа"
              ],
              [
                "SBP",
                "Ресей",
                "Қолжетімділік банкке және транзакцияға байланысты"
              ],
              [
                "Alipay",
                "Қытай",
                "Қолжетімділік шотқа және транзакцияға байланысты"
              ],
              [
                "Криптовалюта",
                "Барлық елдер",
                "Қолдау көрсетілетін монета мен желіні таңдаңыз"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "map",
          "title": "Интерактивті карта",
          "paragraphs": [
            "География бетінде екі өлшемді әлем картасы бар. Сүзгілер жарияланған халықаралық карта елдерін, SBP үшін Ресейді және Alipay үшін Қытайды ерекшелейді. Ел атауы немесе ISO коды бойынша іздеп, оның әдістері мен ескертулерін көріңіз.",
            "Штриховка Украинаны белгілейді, өйткені бес аймақ карталардан алынып тасталған. Украинаның қалған бөлігі қолжетімді. Карта шектеулері барлық елдерде қолжетімді криптовалютаға қолданылмайды."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Картаны ашу",
              "href": "/countries"
            }
          ]
        },
        {
          "id": "cards",
          "title": "Тізім нені қамтиды",
          "paragraphs": [
            "Төмендегі толық тізім халықаралық карта қамтуын сипаттайды. Сатушы тіркелген елдер мен төлем бағыттарының жеке шарттары бар.",
            "Мақұлдау шығарылған елге, банкке, карта түріне және төлем арнасын тексеруге байланысты. Елдің тізімде болуы әр карта немесе транзакция үшін мақұлдауға кепілдік бермейді."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "restrictions",
          "title": "Visa және Mastercard шектеулері",
          "paragraphs": [
            "Карталар Қырымда, Донецкіде, Луганскіде, Херсонда және Запорожьеде қолжетімді емес. Украинаның қалған бөлігі қолжетімді.",
            "Барлық басқа елдер қолжетімді. Нидерланд Антиль аралдары провайдер тізімінен тарихи жазба ретінде сақталған; ол заманауи Кариб аймағының ешбір аумағын бөгемейді."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Код",
              "Ел немесе аумақ"
            ],
            "rows": [
              [
                "AF",
                "Ауғанстан"
              ],
              [
                "AQ",
                "Антарктида"
              ],
              [
                "BY",
                "Беларусь"
              ],
              [
                "MM",
                "Бирма (Мьянма)"
              ],
              [
                "BI",
                "Бурунди"
              ],
              [
                "CF",
                "Орталық Африка Республикасы"
              ],
              [
                "TD",
                "Чад"
              ],
              [
                "CU",
                "Куба"
              ],
              [
                "CD",
                "Конго Демократиялық Республикасы"
              ],
              [
                "CG",
                "Конго Республикасы"
              ],
              [
                "ER",
                "Эритрея"
              ],
              [
                "HT",
                "Гаити"
              ],
              [
                "IR",
                "Иран"
              ],
              [
                "IQ",
                "Ирак"
              ],
              [
                "LY",
                "Ливия"
              ],
              [
                "ML",
                "Мали"
              ],
              [
                "NI",
                "Никарагуа"
              ],
              [
                "KP",
                "Солтүстік Корея"
              ],
              [
                "RU",
                "Ресей"
              ],
              [
                "SO",
                "Сомали"
              ],
              [
                "SS",
                "Оңтүстік Судан"
              ],
              [
                "SD",
                "Судан"
              ],
              [
                "SY",
                "Сирия"
              ],
              [
                "VE",
                "Венесуэла"
              ],
              [
                "YE",
                "Йемен"
              ],
              [
                "ZW",
                "Зимбабве"
              ],
              [
                "UA-43",
                "Қырым (Украина аймағы)"
              ],
              [
                "UA-14",
                "Донецк (Украина аймағы)"
              ],
              [
                "UA-65",
                "Херсон (Украина аймағы)"
              ],
              [
                "UA-09",
                "Луганск (Украина аймағы)"
              ],
              [
                "UA-23",
                "Запорожье (Украина аймағы)"
              ],
              [
                "AN",
                "Нидерланд Антиль аралдары"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "card-list",
          "title": "Елдер мен аумақтар каталогы",
          "paragraphs": [
            "Атаулар, ISO кодтар және белгілер ортақ ел тізілімінен алынады. Бұл ескертулер халықаралық карталарға қолданылады."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "ISO",
              "Ел немесе аумақ",
              "Ескерту"
            ],
            "rows": [
              [
                "AX",
                "Оланд аралдары",
                "—"
              ],
              [
                "AL",
                "Албания",
                "—"
              ],
              [
                "DZ",
                "Алжир",
                "—"
              ],
              [
                "AS",
                "Америка Самоасы",
                "—"
              ],
              [
                "AD",
                "Андорра",
                "—"
              ],
              [
                "AO",
                "Ангола",
                "—"
              ],
              [
                "AI",
                "Ангилья",
                "—"
              ],
              [
                "AG",
                "Антигуа және Барбуда",
                "—"
              ],
              [
                "AR",
                "Аргентина",
                "—"
              ],
              [
                "AM",
                "Армения",
                "—"
              ],
              [
                "AW",
                "Аруба",
                "—"
              ],
              [
                "AU",
                "Австралия",
                "—"
              ],
              [
                "AT",
                "Австрия",
                "—"
              ],
              [
                "AZ",
                "Әзірбайжан",
                "—"
              ],
              [
                "BS",
                "Багам аралдары",
                "—"
              ],
              [
                "BH",
                "Бахрейн",
                "—"
              ],
              [
                "BD",
                "Бангладеш",
                "—"
              ],
              [
                "BB",
                "Барбадос",
                "—"
              ],
              [
                "BE",
                "Бельгия",
                "—"
              ],
              [
                "BZ",
                "Белиз",
                "—"
              ],
              [
                "BJ",
                "Бенин",
                "—"
              ],
              [
                "BM",
                "Бермуд аралдары",
                "—"
              ],
              [
                "BT",
                "Бутан",
                "—"
              ],
              [
                "BO",
                "Боливия",
                "—"
              ],
              [
                "BQ",
                "Кариб Нидерланды",
                "—"
              ],
              [
                "BA",
                "Босния және Герцеговина",
                "—"
              ],
              [
                "BW",
                "Ботсвана",
                "—"
              ],
              [
                "BV",
                "Буве аралы",
                "—"
              ],
              [
                "BR",
                "Бразилия",
                "—"
              ],
              [
                "IO",
                "Британдық Үнді мұхиты аймағы",
                "—"
              ],
              [
                "BN",
                "Бруней",
                "—"
              ],
              [
                "BG",
                "Болгария",
                "—"
              ],
              [
                "BF",
                "Буркина-Фасо",
                "—"
              ],
              [
                "CV",
                "Кабо-Верде",
                "—"
              ],
              [
                "KH",
                "Камбоджа",
                "—"
              ],
              [
                "CM",
                "Камерун",
                "—"
              ],
              [
                "CA",
                "Канада",
                "—"
              ],
              [
                "KY",
                "Кайман аралдары",
                "—"
              ],
              [
                "CL",
                "Чили",
                "—"
              ],
              [
                "CN",
                "Қытай",
                "—"
              ],
              [
                "CX",
                "Рождество аралы",
                "—"
              ],
              [
                "CC",
                "Кокос (Килинг) аралдары",
                "—"
              ],
              [
                "CO",
                "Колумбия",
                "—"
              ],
              [
                "KM",
                "Комор аралдары",
                "—"
              ],
              [
                "CK",
                "Кук аралдары",
                "—"
              ],
              [
                "CR",
                "Коста-Рика",
                "—"
              ],
              [
                "HR",
                "Хорватия",
                "—"
              ],
              [
                "CW",
                "Кюрасао",
                "—"
              ],
              [
                "CY",
                "Кипр",
                "—"
              ],
              [
                "CZ",
                "Чехия",
                "—"
              ],
              [
                "CI",
                "Кот-д’Ивуар",
                "—"
              ],
              [
                "DK",
                "Дания",
                "—"
              ],
              [
                "DJ",
                "Джибути",
                "—"
              ],
              [
                "DM",
                "Доминика",
                "—"
              ],
              [
                "DO",
                "Доминикан Республикасы",
                "—"
              ],
              [
                "EC",
                "Эквадор",
                "—"
              ],
              [
                "EG",
                "Мысыр",
                "—"
              ],
              [
                "SV",
                "Сальвадор",
                "—"
              ],
              [
                "GQ",
                "Экваторлық Гвинея",
                "—"
              ],
              [
                "EE",
                "Эстония",
                "—"
              ],
              [
                "SZ",
                "Эсватини",
                "—"
              ],
              [
                "ET",
                "Эфиопия",
                "—"
              ],
              [
                "FK",
                "Фолкленд аралдары",
                "—"
              ],
              [
                "FO",
                "Фарер аралдары",
                "—"
              ],
              [
                "FM",
                "Микронезия",
                "—"
              ],
              [
                "FJ",
                "Фиджи",
                "—"
              ],
              [
                "FI",
                "Финляндия",
                "—"
              ],
              [
                "FR",
                "Франция",
                "—"
              ],
              [
                "GF",
                "Француз Гвианасы",
                "—"
              ],
              [
                "PF",
                "Француз Полинезиясы",
                "—"
              ],
              [
                "TF",
                "Француз Оңтүстік аймақтары",
                "—"
              ],
              [
                "GA",
                "Габон",
                "—"
              ],
              [
                "GM",
                "Гамбия",
                "—"
              ],
              [
                "GE",
                "Грузия",
                "—"
              ],
              [
                "DE",
                "Германия",
                "—"
              ],
              [
                "GH",
                "Гана",
                "—"
              ],
              [
                "GI",
                "Гибралтар",
                "—"
              ],
              [
                "GR",
                "Грекия",
                "—"
              ],
              [
                "GL",
                "Гренландия",
                "—"
              ],
              [
                "GD",
                "Гренада",
                "—"
              ],
              [
                "GP",
                "Гваделупа",
                "—"
              ],
              [
                "GU",
                "Гуам",
                "—"
              ],
              [
                "GT",
                "Гватемала",
                "—"
              ],
              [
                "GG",
                "Гернси",
                "—"
              ],
              [
                "GN",
                "Гвинея",
                "—"
              ],
              [
                "GW",
                "Гвинея-Бисау",
                "—"
              ],
              [
                "GY",
                "Гайана",
                "—"
              ],
              [
                "HM",
                "Херд пен Макдональд аралдары",
                "—"
              ],
              [
                "VA",
                "Ватикан",
                "—"
              ],
              [
                "HN",
                "Гондурас",
                "—"
              ],
              [
                "HK",
                "Гонконг (Қытай ААА)",
                "—"
              ],
              [
                "HU",
                "Мажарстан",
                "—"
              ],
              [
                "IS",
                "Исландия",
                "—"
              ],
              [
                "IN",
                "Үндістан",
                "—"
              ],
              [
                "ID",
                "Индонезия",
                "—"
              ],
              [
                "IE",
                "Ирландия",
                "—"
              ],
              [
                "IM",
                "Мэн аралы",
                "—"
              ],
              [
                "IL",
                "Израиль",
                "—"
              ],
              [
                "IT",
                "Италия",
                "—"
              ],
              [
                "JM",
                "Ямайка",
                "—"
              ],
              [
                "JP",
                "Жапония",
                "—"
              ],
              [
                "JE",
                "Джерси",
                "—"
              ],
              [
                "JO",
                "Иордания",
                "—"
              ],
              [
                "KZ",
                "Қазақстан",
                "—"
              ],
              [
                "KE",
                "Кения",
                "—"
              ],
              [
                "KI",
                "Кирибати",
                "—"
              ],
              [
                "KW",
                "Кувейт",
                "—"
              ],
              [
                "KG",
                "Қырғызстан",
                "—"
              ],
              [
                "LA",
                "Лаос",
                "—"
              ],
              [
                "LV",
                "Латвия",
                "—"
              ],
              [
                "LB",
                "Ливан",
                "—"
              ],
              [
                "LS",
                "Лесото",
                "—"
              ],
              [
                "LR",
                "Либерия",
                "—"
              ],
              [
                "LI",
                "Лихтенштейн",
                "—"
              ],
              [
                "LT",
                "Литва",
                "—"
              ],
              [
                "LU",
                "Люксембург",
                "—"
              ],
              [
                "MO",
                "Макао АР Қытай",
                "—"
              ],
              [
                "MG",
                "Мадагаскар",
                "—"
              ],
              [
                "MW",
                "Малави",
                "—"
              ],
              [
                "MY",
                "Малайзия",
                "—"
              ],
              [
                "MV",
                "Мальдив аралдары",
                "—"
              ],
              [
                "MT",
                "Мальта",
                "—"
              ],
              [
                "MH",
                "Маршалл аралдары",
                "—"
              ],
              [
                "MQ",
                "Мартиника",
                "—"
              ],
              [
                "MR",
                "Мавритания",
                "—"
              ],
              [
                "MU",
                "Маврикий",
                "—"
              ],
              [
                "YT",
                "Майотта",
                "—"
              ],
              [
                "MX",
                "Мексика",
                "—"
              ],
              [
                "MD",
                "Молдова",
                "—"
              ],
              [
                "MC",
                "Монако",
                "—"
              ],
              [
                "MN",
                "Моңғолия",
                "—"
              ],
              [
                "ME",
                "Черногория",
                "—"
              ],
              [
                "MS",
                "Монтсеррат",
                "—"
              ],
              [
                "MA",
                "Марокко",
                "—"
              ],
              [
                "MZ",
                "Мозамбик",
                "—"
              ],
              [
                "NA",
                "Намибия",
                "—"
              ],
              [
                "NR",
                "Науру",
                "—"
              ],
              [
                "NP",
                "Непал",
                "—"
              ],
              [
                "NL",
                "Нидерланд",
                "—"
              ],
              [
                "NC",
                "Жаңа Каледония",
                "—"
              ],
              [
                "NZ",
                "Жаңа Зеландия",
                "—"
              ],
              [
                "NE",
                "Нигер",
                "—"
              ],
              [
                "NG",
                "Нигерия",
                "—"
              ],
              [
                "NU",
                "Ниуэ",
                "—"
              ],
              [
                "NF",
                "Норфолк аралы",
                "—"
              ],
              [
                "MK",
                "Солтүстік Македония",
                "—"
              ],
              [
                "MP",
                "Солтүстік Мариана аралдары",
                "—"
              ],
              [
                "NO",
                "Норвегия",
                "—"
              ],
              [
                "OM",
                "Оман",
                "—"
              ],
              [
                "PK",
                "Пәкістан",
                "—"
              ],
              [
                "PW",
                "Палау",
                "—"
              ],
              [
                "PA",
                "Панама",
                "—"
              ],
              [
                "PG",
                "Папуа — Жаңа Гвинея",
                "—"
              ],
              [
                "PY",
                "Парагвай",
                "—"
              ],
              [
                "PE",
                "Перу",
                "—"
              ],
              [
                "PH",
                "Филиппин",
                "—"
              ],
              [
                "PN",
                "Питкэрн аралдары",
                "—"
              ],
              [
                "PL",
                "Польша",
                "—"
              ],
              [
                "PT",
                "Португалия",
                "—"
              ],
              [
                "PR",
                "Пуэрто-Рико",
                "—"
              ],
              [
                "QA",
                "Катар",
                "—"
              ],
              [
                "RO",
                "Румыния",
                "—"
              ],
              [
                "RW",
                "Руанда",
                "—"
              ],
              [
                "RE",
                "Реюньон",
                "—"
              ],
              [
                "BL",
                "Сен-Бартелеми",
                "—"
              ],
              [
                "SH",
                "Әулие Елена аралы",
                "—"
              ],
              [
                "KN",
                "Сент-Китс және Невис",
                "—"
              ],
              [
                "LC",
                "Сент-Люсия",
                "—"
              ],
              [
                "MF",
                "Сент-Мартен",
                "—"
              ],
              [
                "PM",
                "Сент-Пьер және Микелон",
                "—"
              ],
              [
                "VC",
                "Сент-Винсент және Гренадиндер",
                "—"
              ],
              [
                "WS",
                "Самоа",
                "—"
              ],
              [
                "SM",
                "Сан-Марино",
                "—"
              ],
              [
                "ST",
                "Сан-Томе және Принсипи",
                "—"
              ],
              [
                "SA",
                "Сауд Арабиясы",
                "—"
              ],
              [
                "SN",
                "Сенегал",
                "—"
              ],
              [
                "RS",
                "Сербия",
                "—"
              ],
              [
                "SC",
                "Сейшель аралдары",
                "—"
              ],
              [
                "SL",
                "Сьерра-Леоне",
                "—"
              ],
              [
                "SG",
                "Сингапур",
                "—"
              ],
              [
                "SX",
                "Синт-Мартен",
                "—"
              ],
              [
                "SK",
                "Словакия",
                "—"
              ],
              [
                "SI",
                "Словения",
                "—"
              ],
              [
                "SB",
                "Соломон аралдары",
                "—"
              ],
              [
                "ZA",
                "Оңтүстік Африка",
                "—"
              ],
              [
                "GS",
                "Оңтүстік Георгия және Оңтүстік Сэндвич аралдары",
                "—"
              ],
              [
                "KR",
                "Оңтүстік Корея",
                "—"
              ],
              [
                "ES",
                "Испания",
                "—"
              ],
              [
                "LK",
                "Шри-Ланка",
                "—"
              ],
              [
                "PS",
                "Палестина аумақтары",
                "—"
              ],
              [
                "SR",
                "Суринам",
                "—"
              ],
              [
                "SJ",
                "Шпицберген және Ян-Майен",
                "—"
              ],
              [
                "SE",
                "Швеция",
                "—"
              ],
              [
                "CH",
                "Швейцария",
                "—"
              ],
              [
                "TW",
                "Тайвань",
                "—"
              ],
              [
                "TJ",
                "Тәжікстан",
                "—"
              ],
              [
                "TZ",
                "Танзания",
                "—"
              ],
              [
                "TH",
                "Тайланд",
                "—"
              ],
              [
                "TL",
                "Тимор-Лесте",
                "—"
              ],
              [
                "TG",
                "Того",
                "—"
              ],
              [
                "TK",
                "Токелау",
                "—"
              ],
              [
                "TO",
                "Тонга",
                "—"
              ],
              [
                "TT",
                "Тринидад және Тобаго",
                "—"
              ],
              [
                "TN",
                "Тунис",
                "—"
              ],
              [
                "TM",
                "Түрікменстан",
                "—"
              ],
              [
                "TC",
                "Тёркс және Кайкос аралдары",
                "—"
              ],
              [
                "TV",
                "Тувалу",
                "—"
              ],
              [
                "TR",
                "Түркия",
                "—"
              ],
              [
                "UG",
                "Уганда",
                "—"
              ],
              [
                "UA",
                "Украина**",
                "Карталар Қырымда, Донецкіде, Луганскіде, Херсонда және Запорожьеде қолжетімді емес. Украинаның қалған бөлігі қолжетімді."
              ],
              [
                "AE",
                "Біріккен Араб Әмірліктері",
                "—"
              ],
              [
                "GB",
                "Ұлыбритания",
                "—"
              ],
              [
                "UM",
                "АҚШ-тың қашықтағы аралдары",
                "—"
              ],
              [
                "US",
                "Америка Құрама Штаттары",
                "—"
              ],
              [
                "UY",
                "Уругвай",
                "—"
              ],
              [
                "UZ",
                "Өзбекстан",
                "—"
              ],
              [
                "VU",
                "Вануату",
                "—"
              ],
              [
                "VN",
                "Вьетнам",
                "—"
              ],
              [
                "VG",
                "Британдық Виргин аралдары",
                "—"
              ],
              [
                "VI",
                "АҚШ-тың Виргин аралдары",
                "—"
              ],
              [
                "WF",
                "Уоллис және Футуна",
                "—"
              ],
              [
                "EH",
                "Батыс Сахара",
                "—"
              ],
              [
                "ZM",
                "Замбия",
                "—"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "crypto",
          "title": "Монеталар мен төлем желілері",
          "paragraphs": [
            "Каталогта 16 монета және 31 монета/желі жұбы бар. Бір монета бірнеше желіде қабылдана алады: USDT Tron-да және USDT Ethereum-да — бұл әртүрлі аудару нұсқалары. Толық тізім төменде көрсетілген.",
            "Белгілі бір шот үшін қолжетімді нұсқалар мен олардың лимиттері GET /api/checkout/{token}/crypto-services сұрауынан алынады. Бұл бет қолдау көрсетілетін комбинацияларды сипаттайды; ағымдағы шлюз жауабы төлем жасауға болатынын анықтайды. Анықтамалық жазбаның өзі қолжетімсіз жұпты төленетін етпейді.",
            "Сатушы USDT-те крипто шот жасайды, ал тұтынушы қолжетімді монета мен желіні таңдайды. Жасалған шлюз операциясы нақты монета сомасын, мекенжайды, QR кодты және мерзімді ұсынады. USDT шотының бағасы BTC, ETH немесе басқа монетаның айырбас бағамын бекітпейді немесе 1:1 бағамды білдірмейді. Төлем нұсқаулығындағы нақты ондық соманы дөңгелектеусіз немесе өзіңіз конвертация есептеусіз аударыңыз.",
            "USDT TRC20 — бұл сатушыға төлемнің жеке шарты. Ол кіретін төлемдерді Tron-ға шектемейді немесе шот немесе API арқылы төлем жасау қолжетімді екенін білдірмейді. Төлемдер нұсқаулығы шығару шарттары мен шектеулерін түсіндіреді."
          ],
          "bullets": [],
          "steps": [
            "Шотты ашып, төлем әдісі ретінде криптовалютаны таңдаңыз.",
            "Монетаны және қолжетімді желіні таңдаңыз. Жіберуші әмиянының желісі Kevmi төлем нұсқаулығындағы желіге сәйкес келуі тиіс.",
            "Төлем нұсқаулығын жасаңыз және нақты соманы, толық мекенжайды және мерзімді тексеріңіз. Мекенжай мен соманы көшіріңіз немесе тиісті QR кодын пайдаланыңыз.",
            "Таңдалған желіде көрсетілген соманы жіберіңіз. Алушы нұсқаулықта көрсетілген толық соманы алуы үшін әмиян немесе желі комиссияларын ескеріңіз.",
            "Төлем бетінде расталған мәртебені күтіңіз. Тек әмиян аударымын жіберу тапсырысты аяқтамайды: Kevmi нәтижені шлюз арқылы тексереді."
          ],
          "table": {
            "headers": [
              "Монета",
              "Атауы",
              "Желілер мен шлюз кодтары"
            ],
            "rows": [
              [
                "AVAX",
                "Avalanche",
                "Avalanche C-Chain (avalanche)"
              ],
              [
                "BCH",
                "Bitcoin Cash",
                "Bitcoin Cash (bch)"
              ],
              [
                "BNB",
                "BNB",
                "BNB Smart Chain (bsc)"
              ],
              [
                "BTC",
                "Bitcoin",
                "Bitcoin (btc)"
              ],
              [
                "DAI",
                "Dai",
                "BNB Smart Chain (bsc), Ethereum (eth), Polygon PoS (polygon)"
              ],
              [
                "DASH",
                "Dash",
                "Dash (dash)"
              ],
              [
                "DOGE",
                "Dogecoin",
                "Dogecoin (doge)"
              ],
              [
                "ETH",
                "Ethereum",
                "Ethereum (eth), Arbitrum One (arbitrum), BNB Smart Chain (bsc)"
              ],
              [
                "GRAM",
                "Gram",
                "TON (ton)"
              ],
              [
                "LTC",
                "Litecoin",
                "Litecoin (ltc)"
              ],
              [
                "POL",
                "Polygon",
                "Ethereum (eth), Polygon PoS (polygon)"
              ],
              [
                "SHIB",
                "Shiba Inu",
                "Ethereum (eth)"
              ],
              [
                "TRX",
                "TRON",
                "TRON (tron)"
              ],
              [
                "USDC",
                "USD Coin",
                "Arbitrum One (arbitrum), BNB Smart Chain (bsc), Polygon PoS (polygon), Ethereum (eth), Avalanche C-Chain (avalanche)"
              ],
              [
                "USDT",
                "Tether",
                "TRON (tron), Avalanche C-Chain (avalanche), BNB Smart Chain (bsc), TON (ton), Polygon PoS (polygon), Arbitrum One (arbitrum), Ethereum (eth)"
              ],
              [
                "XMR",
                "Monero",
                "Monero (xmr)"
              ]
            ]
          },
          "code": null,
          "note": "Мерзімі өткеннен кейін ескі төлем нұсқаулықтарын пайдаланбаңыз. Қаражатты жіберген болсаңыз, сол операцияны тексеріп, қажет болса қолдау қызметіне хабарласыңыз; біріншіні тексеру үшін екінші төлем жасамаңыз.",
          "links": [
            {
              "label": "Төлем беті",
              "href": "/docs/checkout#method"
            },
            {
              "label": "Төлем шарттары",
              "href": "/docs/payouts"
            }
          ]
        },
        {
          "id": "specific",
          "title": "Белгілі бір елді тексеру",
          "paragraphs": [
            "Көмекші елді орыс немесе ағылшын тіліндегі атауы немесе ISO коды бойынша таба алады және оның жарияланған белгісін түсіндіре алады. Кейбір елдер үшін қажетті орынды көрсетіңіз. Қытай үшін картаңыз туралы сұраңыз.",
            "Егер ел тізімде жоқ болса, бұл білім базасы халықаралық карта қамтуын растай алмайды. Қолдау сұранысына елді, банкті және қалаған әдісті қосыңыз. Толық карта нөмірін немесе төлем құпияларын жібермеңіз."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "География",
              "href": "/countries"
            },
            {
              "label": "Қолдау қызметінен сұраңыз",
              "href": "/?support=open"
            }
          ]
        }
      ],
      "body": "Арна бойынша қамту\n\nАрна · Қамту · Шарттар\nХалықаралық карталар · 190-нан астам ел · Шектеу тізімінен және Украинаның бес аймағынан басқа\nSBP · Ресей · Қолжетімділік банкке және транзакцияға байланысты\nAlipay · Қытай · Қолжетімділік шотқа және транзакцияға байланысты\nКриптовалюта · Барлық елдер · Қолдау көрсетілетін монета мен желіні таңдаңыз\n\nИнтерактивті карта\n\nГеография бетінде екі өлшемді әлем картасы бар. Сүзгілер жарияланған халықаралық карта елдерін, SBP үшін Ресейді және Alipay үшін Қытайды ерекшелейді. Ел атауы немесе ISO коды бойынша іздеп, оның әдістері мен ескертулерін көріңіз.\n\nШтриховка Украинаны белгілейді, өйткені бес аймақ карталардан алынып тасталған. Украинаның қалған бөлігі қолжетімді. Карта шектеулері барлық елдерде қолжетімді криптовалютаға қолданылмайды.\n\nКартаны ашу\n\nТізім нені қамтиды\n\nТөмендегі толық тізім халықаралық карта қамтуын сипаттайды. Сатушы тіркелген елдер мен төлем бағыттарының жеке шарттары бар.\n\nМақұлдау шығарылған елге, банкке, карта түріне және төлем арнасын тексеруге байланысты. Елдің тізімде болуы әр карта немесе транзакция үшін мақұлдауға кепілдік бермейді.\n\nVisa және Mastercard шектеулері\n\nКарталар Қырымда, Донецкіде, Луганскіде, Херсонда және Запорожьеде қолжетімді емес. Украинаның қалған бөлігі қолжетімді.\n\nБарлық басқа елдер қолжетімді. Нидерланд Антиль аралдары провайдер тізімінен тарихи жазба ретінде сақталған; ол заманауи Кариб аймағының ешбір аумағын бөгемейді.\n\nКод · Ел немесе аумақ\nAF · Ауғанстан\nAQ · Антарктида\nBY · Беларусь\nMM · Бирма (Мьянма)\nBI · Бурунди\nCF · Орталық Африка Республикасы\nTD · Чад\nCU · Куба\nCD · Конго Демократиялық Республикасы\nCG · Конго Республикасы\nER · Эритрея\nHT · Гаити\nIR · Иран\nIQ · Ирак\nLY · Ливия\nML · Мали\nNI · Никарагуа\nKP · Солтүстік Корея\nRU · Ресей\nSO · Сомали\nSS · Оңтүстік Судан\nSD · Судан\nSY · Сирия\nVE · Венесуэла\nYE · Йемен\nZW · Зимбабве\nUA-43 · Қырым (Украина аймағы)\nUA-14 · Донецк (Украина аймағы)\nUA-65 · Херсон (Украина аймағы)\nUA-09 · Луганск (Украина аймағы)\nUA-23 · Запорожье (Украина аймағы)\nAN · Нидерланд Антиль аралдары\n\nЕлдер мен аумақтар каталогы\n\nАтаулар, ISO кодтар және белгілер ортақ ел тізілімінен алынады. Бұл ескертулер халықаралық карталарға қолданылады.\n\nISO · Ел немесе аумақ · Ескерту\nAX · Оланд аралдары · —\nAL · Албания · —\nDZ · Алжир · —\nAS · Америка Самоасы · —\nAD · Андорра · —\nAO · Ангола · —\nAI · Ангилья · —\nAG · Антигуа және Барбуда · —\nAR · Аргентина · —\nAM · Армения · —\nAW · Аруба · —\nAU · Австралия · —\nAT · Австрия · —\nAZ · Әзірбайжан · —\nBS · Багам аралдары · —\nBH · Бахрейн · —\nBD · Бангладеш · —\nBB · Барбадос · —\nBE · Бельгия · —\nBZ · Белиз · —\nBJ · Бенин · —\nBM · Бермуд аралдары · —\nBT · Бутан · —\nBO · Боливия · —\nBQ · Кариб Нидерланды · —\nBA · Босния және Герцеговина · —\nBW · Ботсвана · —\nBV · Буве аралы · —\nBR · Бразилия · —\nIO · Британдық Үнді мұхиты аймағы · —\nBN · Бруней · —\nBG · Болгария · —\nBF · Буркина-Фасо · —\nCV · Кабо-Верде · —\nKH · Камбоджа · —\nCM · Камерун · —\nCA · Канада · —\nKY · Кайман аралдары · —\nCL · Чили · —\nCN · Қытай · —\nCX · Рождество аралы · —\nCC · Кокос (Килинг) аралдары · —\nCO · Колумбия · —\nKM · Комор аралдары · —\nCK · Кук аралдары · —\nCR · Коста-Рика · —\nHR · Хорватия · —\nCW · Кюрасао · —\nCY · Кипр · —\nCZ · Чехия · —\nCI · Кот-д’Ивуар · —\nDK · Дания · —\nDJ · Джибути · —\nDM · Доминика · —\nDO · Доминикан Республикасы · —\nEC · Эквадор · —\nEG · Мысыр · —\nSV · Сальвадор · —\nGQ · Экваторлық Гвинея · —\nEE · Эстония · —\nSZ · Эсватини · —\nET · Эфиопия · —\nFK · Фолкленд аралдары · —\nFO · Фарер аралдары · —\nFM · Микронезия · —\nFJ · Фиджи · —\nFI · Финляндия · —\nFR · Франция · —\nGF · Француз Гвианасы · —\nPF · Француз Полинезиясы · —\nTF · Француз Оңтүстік аймақтары · —\nGA · Габон · —\nGM · Гамбия · —\nGE · Грузия · —\nDE · Германия · —\nGH · Гана · —\nGI · Гибралтар · —\nGR · Грекия · —\nGL · Гренландия · —\nGD · Гренада · —\nGP · Гваделупа · —\nGU · Гуам · —\nGT · Гватемала · —\nGG · Гернси · —\nGN · Гвинея · —\nGW · Гвинея-Бисау · —\nGY · Гайана · —\nHM · Херд пен Макдональд аралдары · —\nVA · Ватикан · —\nHN · Гондурас · —\nHK · Гонконг (Қытай ААА) · —\nHU · Мажарстан · —\nIS · Исландия · —\nIN · Үндістан · —\nID · Индонезия · —\nIE · Ирландия · —\nIM · Мэн аралы · —\nIL · Израиль · —\nIT · Италия · —\nJM · Ямайка · —\nJP · Жапония · —\nJE · Джерси · —\nJO · Иордания · —\nKZ · Қазақстан · —\nKE · Кения · —\nKI · Кирибати · —\nKW · Кувейт · —\nKG · Қырғызстан · —\nLA · Лаос · —\nLV · Латвия · —\nLB · Ливан · —\nLS · Лесото · —\nLR · Либерия · —\nLI · Лихтенштейн · —\nLT · Литва · —\nLU · Люксембург · —\nMO · Макао АР Қытай · —\nMG · Мадагаскар · —\nMW · Малави · —\nMY · Малайзия · —\nMV · Мальдив аралдары · —\nMT · Мальта · —\nMH · Маршалл аралдары · —\nMQ · Мартиника · —\nMR · Мавритания · —\nMU · Маврикий · —\nYT · Майотта · —\nMX · Мексика · —\nMD · Молдова · —\nMC · Монако · —\nMN · Моңғолия · —\nME · Черногория · —\nMS · Монтсеррат · —\nMA · Марокко · —\nMZ · Мозамбик · —\nNA · Намибия · —\nNR · Науру · —\nNP · Непал · —\nNL · Нидерланд · —\nNC · Жаңа Каледония · —\nNZ · Жаңа Зеландия · —\nNE · Нигер · —\nNG · Нигерия · —\nNU · Ниуэ · —\nNF · Норфолк аралы · —\nMK · Солтүстік Македония · —\nMP · Солтүстік Мариана аралдары · —\nNO · Норвегия · —\nOM · Оман · —\nPK · Пәкістан · —\nPW · Палау · —\nPA · Панама · —\nPG · Папуа — Жаңа Гвинея · —\nPY · Парагвай · —\nPE · Перу · —\nPH · Филиппин · —\nPN · Питкэрн аралдары · —\nPL · Польша · —\nPT · Португалия · —\nPR · Пуэрто-Рико · —\nQA · Катар · —\nRO · Румыния · —\nRW · Руанда · —\nRE · Реюньон · —\nBL · Сен-Бартелеми · —\nSH · Әулие Елена аралы · —\nKN · Сент-Китс және Невис · —\nLC · Сент-Люсия · —\nMF · Сент-Мартен · —\nPM · Сент-Пьер және Микелон · —\nVC · Сент-Винсент және Гренадиндер · —\nWS · Самоа · —\nSM · Сан-Марино · —\nST · Сан-Томе және Принсипи · —\nSA · Сауд Арабиясы · —\nSN · Сенегал · —\nRS · Сербия · —\nSC · Сейшель аралдары · —\nSL · Сьерра-Леоне · —\nSG · Сингапур · —\nSX · Синт-Мартен · —\nSK · Словакия · —\nSI · Словения · —\nSB · Соломон аралдары · —\nZA · Оңтүстік Африка · —\nGS · Оңтүстік Георгия және Оңтүстік Сэндвич аралдары · —\nKR · Оңтүстік Корея · —\nES · Испания · —\nLK · Шри-Ланка · —\nPS · Палестина аумақтары · —\nSR · Суринам · —\nSJ · Шпицберген және Ян-Майен · —\nSE · Швеция · —\nCH · Швейцария · —\nTW · Тайвань · —\nTJ · Тәжікстан · —\nTZ · Танзания · —\nTH · Тайланд · —\nTL · Тимор-Лесте · —\nTG · Того · —\nTK · Токелау · —\nTO · Тонга · —\nTT · Тринидад және Тобаго · —\nTN · Тунис · —\nTM · Түрікменстан · —\nTC · Тёркс және Кайкос аралдары · —\nTV · Тувалу · —\nTR · Түркия · —\nUG · Уганда · —\nUA · Украина** · Карталар Қырымда, Донецкіде, Луганскіде, Херсонда және Запорожьеде қолжетімді емес. Украинаның қалған бөлігі қолжетімді.\nAE · Біріккен Араб Әмірліктері · —\nGB · Ұлыбритания · —\nUM · АҚШ-тың қашықтағы аралдары · —\nUS · Америка Құрама Штаттары · —\nUY · Уругвай · —\nUZ · Өзбекстан · —\nVU · Вануату · —\nVN · Вьетнам · —\nVG · Британдық Виргин аралдары · —\nVI · АҚШ-тың Виргин аралдары · —\nWF · Уоллис және Футуна · —\nEH · Батыс Сахара · —\nZM · Замбия · —\n\nМонеталар мен төлем желілері\n\nКаталогта 16 монета және 31 монета/желі жұбы бар. Бір монета бірнеше желіде қабылдана алады: USDT Tron-да және USDT Ethereum-да — бұл әртүрлі аудару нұсқалары. Толық тізім төменде көрсетілген.\n\nБелгілі бір шот үшін қолжетімді нұсқалар мен олардың лимиттері GET /api/checkout/{token}/crypto-services сұрауынан алынады. Бұл бет қолдау көрсетілетін комбинацияларды сипаттайды; ағымдағы шлюз жауабы төлем жасауға болатынын анықтайды. Анықтамалық жазбаның өзі қолжетімсіз жұпты төленетін етпейді.\n\nСатушы USDT-те крипто шот жасайды, ал тұтынушы қолжетімді монета мен желіні таңдайды. Жасалған шлюз операциясы нақты монета сомасын, мекенжайды, QR кодты және мерзімді ұсынады. USDT шотының бағасы BTC, ETH немесе басқа монетаның айырбас бағамын бекітпейді немесе 1:1 бағамды білдірмейді. Төлем нұсқаулығындағы нақты ондық соманы дөңгелектеусіз немесе өзіңіз конвертация есептеусіз аударыңыз.\n\nUSDT TRC20 — бұл сатушыға төлемнің жеке шарты. Ол кіретін төлемдерді Tron-ға шектемейді немесе шот немесе API арқылы төлем жасау қолжетімді екенін білдірмейді. Төлемдер нұсқаулығы шығару шарттары мен шектеулерін түсіндіреді.\n\nШотты ашып, төлем әдісі ретінде криптовалютаны таңдаңыз.\n\nМонетаны және қолжетімді желіні таңдаңыз. Жіберуші әмиянының желісі Kevmi төлем нұсқаулығындағы желіге сәйкес келуі тиіс.\n\nТөлем нұсқаулығын жасаңыз және нақты соманы, толық мекенжайды және мерзімді тексеріңіз. Мекенжай мен соманы көшіріңіз немесе тиісті QR кодын пайдаланыңыз.\n\nТаңдалған желіде көрсетілген соманы жіберіңіз. Алушы нұсқаулықта көрсетілген толық соманы алуы үшін әмиян немесе желі комиссияларын ескеріңіз.\n\nТөлем бетінде расталған мәртебені күтіңіз. Тек әмиян аударымын жіберу тапсырысты аяқтамайды: Kevmi нәтижені шлюз арқылы тексереді.\n\nМонета · Атауы · Желілер мен шлюз кодтары\nAVAX · Avalanche · Avalanche C-Chain (avalanche)\nBCH · Bitcoin Cash · Bitcoin Cash (bch)\nBNB · BNB · BNB Smart Chain (bsc)\nBTC · Bitcoin · Bitcoin (btc)\nDAI · Dai · BNB Smart Chain (bsc), Ethereum (eth), Polygon PoS (polygon)\nDASH · Dash · Dash (dash)\nDOGE · Dogecoin · Dogecoin (doge)\nETH · Ethereum · Ethereum (eth), Arbitrum One (arbitrum), BNB Smart Chain (bsc)\nGRAM · Gram · TON (ton)\nLTC · Litecoin · Litecoin (ltc)\nPOL · Polygon · Ethereum (eth), Polygon PoS (polygon)\nSHIB · Shiba Inu · Ethereum (eth)\nTRX · TRON · TRON (tron)\nUSDC · USD Coin · Arbitrum One (arbitrum), BNB Smart Chain (bsc), Polygon PoS (polygon), Ethereum (eth), Avalanche C-Chain (avalanche)\nUSDT · Tether · TRON (tron), Avalanche C-Chain (avalanche), BNB Smart Chain (bsc), TON (ton), Polygon PoS (polygon), Arbitrum One (arbitrum), Ethereum (eth)\nXMR · Monero · Monero (xmr)\n\nМерзімі өткеннен кейін ескі төлем нұсқаулықтарын пайдаланбаңыз. Қаражатты жіберген болсаңыз, сол операцияны тексеріп, қажет болса қолдау қызметіне хабарласыңыз; біріншіні тексеру үшін екінші төлем жасамаңыз.\n\nТөлем беті\n\nТөлем шарттары\n\nБелгілі бір елді тексеру\n\nКөмекші елді орыс немесе ағылшын тіліндегі атауы немесе ISO коды бойынша таба алады және оның жарияланған белгісін түсіндіре алады. Кейбір елдер үшін қажетті орынды көрсетіңіз. Қытай үшін картаңыз туралы сұраңыз.\n\nЕгер ел тізімде жоқ болса, бұл білім базасы халықаралық карта қамтуын растай алмайды. Қолдау сұранысына елді, банкті және қалаған әдісті қосыңыз. Толық карта нөмірін немесе төлем құпияларын жібермеңіз.\n\nГеография\n\nҚолдау қызметінен сұраңыз",
      "readMinutes": 15
    },
    {
      "id": "payment-links",
      "title": "Төлем сілтемелері",
      "summary": "Төлем сілтемесі арнайы тапсырыс бетін ашады. Клиенттер сатушыны, сатып алу сипаттамасын, қолжетімді әдістерді және жалпы соманы телефон немесе компьютер арқылы көреді.",
      "group": "payments",
      "url": "/docs/payment-links",
      "tags": [
        "төлем сілтемесі",
        "шот-фактура",
        "төлем беті",
        "үзіліс",
        "тапсырыс",
        "Кез келген",
        "әдісті таңдау"
      ],
      "sections": [
        {
          "id": "contents",
          "title": "Шот-фактураға не кіреді",
          "paragraphs": [
            "Жаңа жұмыс кеңістігі шоттары АҚШ доллары базалық бағасын пайдаланады, ал Any төрт әдістің барлығын ұсынады. SBP Ресей Банкінің мұздатылған анықтамалық бағамы бойынша рубльге айырбастайды; крипто айқын 1:1 АҚШ доллары/USDT шот ережесін пайдаланады. Мұрагерлік қолма-қол баға белгілеу ескі шоттар мен pricingMode=universal жоқ API сұраулары үшін қолжетімді болып қалады. Төмендегі бірнеше дүкен және АҚШ доллары бағасы бөлімін қараңыз.",
            "Жария сипаттамаларға құпия сөздерді, API кілттерін, карта деректерін немесе банк кодтарын ешқашан қоспаңыз. Клиент танитын тапсырыс тақырыбын және сілтемені пайдаланыңыз."
          ],
          "bullets": [
            "Дүкен атауы, 120 таңбаға дейінгі тапсырыс тақырыбы және 500 таңбаға дейінгі сипаттама.",
            "Негізгі сома және нақты USD, RUB немесе USDT валютасы.",
            "Үйлесімді әдістер, бөлек комиссия және ҚҚС үлестері, тапсырыс сілтемесі және сілтеменің мерзімі.",
            "Иелердің жауаптары link.payment-ті қамтиды, ол бар операцияның сақталған күйін көрсетеді; бұл сілтеменің қолжетімділік күйінен бөлек."
          ],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "any",
          "title": "Кез келгені — тұтынушы таңдайды",
          "paragraphs": [
            "Кез келгені есепшот валютасына сәйкес келетін барлық әдістерді таңдайды: USD үшін карталар мен Alipay, RUB үшін SBP, ал USDT үшін крипто. API 'any' жолының орнына нақты әдістер массивін қабылдайды. Әр әдістің өз бағасы бар.",
            "Жаңа жұмыс кеңістігі шоттары АҚШ доллары базалық бағасын пайдаланады, ал Any төрт әдістің барлығын ұсынады. SBP Ресей Банкінің мұздатылған анықтамалық бағамы бойынша рубльге айырбастайды; крипто айқын 1:1 АҚШ доллары/USDT шот ережесін пайдаланады. Мұрагерлік қолма-қол баға белгілеу ескі шоттар мен pricingMode=universal жоқ API сұраулары үшін қолжетімді болып қалады. Төмендегі бірнеше дүкен және АҚШ доллары бағасы бөлімін қараңыз.",
            "Жаңа тірі карта немесе Alipay төлемі үшін ағымдағы шлюз тек feeCustomerPercent=0 және vatCustomerPercent=100 мәндерін қолдайды: сатушы барлық өңдеу комиссиясын жабады, ал ҚҚС клиент үшін толық қосылады. Басқа үлестер шотта сақталып, есептелуі мүмкін, бірақ орындау unsupported_allocation кодымен бұғатталған. Сервер үнсіз сақталған шарттарды өзгертпейді. SBP және USDT крипто төлемдері кез келген өңдеу комиссиясы үлесін қолдайды және ҚҚС жоқ."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "API арқылы әдістерді жіберу",
              "href": "/docs/payment-links-api#methods"
            }
          ]
        },
        {
          "id": "create",
          "title": "Сілтеме жасау",
          "paragraphs": [],
          "bullets": [],
          "steps": [
            "Төлем сілтемелерін тіркелгіңізде ашыңыз.",
            "Тақырып, сома, валюта және сипаттама енгізіңіз. Екі басқару элементі арқылы комиссия мен ҚҚС үлестерін орнатыңыз.",
            "Тұтынушы таңдауы үшін «Кез келгені» опциясын қалдырыңыз немесе нақты әдістерді таңдаңыз. Мерзімін орнатыңыз.",
            "Әр әдіс үшін жалпы соманы салыстырып, төлем бетін алдын ала қараңыз.",
            "Дайын төлем сілтемесін жасағаннан кейін бірден алыңыз, сосын оны тұтынушыға немесе виджетке көшіріңіз."
          ],
          "table": null,
          "code": null,
          "note": "Егер төлем қабылдау қолжетімсіз болса, төлем беті растау алдында бұл туралы хабарлайды. Есепшот жасау ақшаны есептен шығармайды.",
          "links": []
        },
        {
          "id": "fixed",
          "title": "Шарттар есепшотпен бірге қалады",
          "paragraphs": [
            "Сақталған есепшот дүкен параметрлері өзгергенде өзгермейді. Оның бағасы, валютасы, комиссия мен ҚҚС үлестері, тапсырыс сілтемесі және метадеректері сол тапсырысқа тиесілі. Бұл сілтемені бұрын ашқан тұтынушы үшін жалпы соманы тұрақты етеді.",
            "Баға, сипаттама немесе шығындарды бөлу өзгергенде жаңа сілтеме жасап, ескісін тоқтатыңыз. URL сомасын өңдеу сервер есебін өзгерте алмайды."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "public",
          "title": "Арнайы төлем беті",
          "paragraphs": [
            "Сервер сілтемелері дерекқорда сақталады және /pay/… мекенжайы арқылы әртүрлі құрылғыларда сатушы тіркелгісіне қолжетімділіксіз ашылады. Тұтынушыға есепшотты көру үшін тіркелу қажет емес. Дүкен баланстары, параметрлер және басқа тұтынушы жазбалары жеке болып қалады.",
            "/pay/demo мысалы ақша алмай-ақ тәжірибені көрсетеді. Браузер демо сілтемелері тест деректері болып табылады және нақты есепшоттар ретінде ұсынылмауы керек."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Төлемді алдын ала қарау",
              "href": "/pay/demo"
            },
            {
              "label": "Төлем бетінің күйлері",
              "href": "/docs/checkout"
            }
          ]
        },
        {
          "id": "control",
          "title": "Қолжетімділікті басқару",
          "paragraphs": [
            "Сілтемені тоқтата тұру, болдырмау немесе мерзімін өткізу жаңа операцияны бұғаттайды. Бұл жіберілген төлемді жасырмайды: мәртебе, есептестіру және сұралған банк коды қолжетімді болып қалады. Сілтеменің қолжетімділігі мен қаржылық күйі бөлек тексеріледі.",
            "Қайта жалғастыру шарттарды өзгертпей-ақ тоқтата тұруды алып тастайды. Болдырмау түпкілікті, ал мерзімі өткен сілтемені ұзарту мүмкін емес. Жаңа тапсырыс немесе өзгерген шарттар үшін жаңа есепшот жасаңыз, нәтижесі белгісіз төлемді қайта талпыныс үшін емес."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "stores-usd",
          "title": "Бірнеше дүкен және бір АҚШ доллары базалық бағасы",
          "paragraphs": [
            "Жиынтық аналитика мен операциялар үшін Барлық дүкендерді таңдаңыз немесе жеке жазбалары үшін дүкенді таңдаңыз. Әр дүкеннің жеке storeId, атауы, ҚҚС әдепкі мәні, шоттары, API кілттері, вебхук нүктелері, оқиғалар тарихы және веб-сайт қосымшасы бар. Хабарландырулар мен қолдау билеттері тіркелгіге тиесілі. Тіркелгі 100 дүкенге дейін құра алады. Бар жазбалар оның бірінші дүкенінде қалады.",
            "Жаңа жұмыс кеңістігі шоттары pricingMode=\"universal\" және АҚШ доллары базалық бағасын пайдаланады. Any карта, alipay, sbp және криптоны қамтиды; сатушы ішкі жиынтықты таңдай алады. Карталар мен Alipay АҚШ долларымен есептейді. SBP Ресей Банкінің АҚШ доллары/рубль анықтамалық бағамын пайдаланып рубльмен есептейді. Крипто айқын шот ережесі бойынша USDT-мен есептейді: 1 АҚШ доллары = 1 USDT. Бұл шот айырбастау ережесі, нарықтық USDT котировкасы емес. Шлюз таңдалған монетаның бағамын, нақты аударым сомасын және нұсқауларды аударымға дейін береді.",
            "Анықтамалық бағам және екі сома да құру кезінде мұздатылады. Рубльге айырбастауды қамтитын шоттар 24 сағат ішінде мерзімі аяқталады. Егер анықтамалық бағамды алу мүмкін болмаса, құру FX_UNAVAILABLE қатесімен сәтсіз аяқталады; ойдан шығарылған немесе ескірген қосалқы бағам пайдаланылмайды. Меншік иесінің жауабындағы amountMinor және quotes АҚШ доллары бухгалтерлік валютасын пайдаланады. quotes[method].settlement туынды валютадағы төлем котировкасын қамтиды. Қоғамдық төлем беті таңдалған төлем валютасын currency өрісінде, бастапқы бағаны baseAmountMinor/baseCurrency өрістерінде және анықтамалық бағамды fx өрісінде көрсетеді. Төлем жіберілгеннен кейін оның әдісін өзгерту мүмкін емес; шотта бір шлюз операциясы болады.",
            "Мақсатты дүкен ішінде API кілтін жасаңыз және серверіңізден Authorization: Bearer <key> жіберіңіз. Оның дүкенге байланыстыруы өзгермейді; X-Kevmi-Store оған басқа дүкенге қолжетімділік бере алмайды. Браузер сеанстары X-Kevmi-Store: <storeId> таңдайды; оны алып тастағанда бірінші дүкен таңдалады. all мәні тек GET /api/account/dashboard және GET /api/payment-links сұраулары арқылы қабылданады. Өзгертулер таңдалған дүкенді, Origin және X-CSRF-Token талап етеді. Тіркелгі идентификаторлары мен дүкен идентификаторлары әртүрлі идентификаторлар болып табылады.",
            "Үйлесімділік үшін pricingMode=\"universal\" жоқ API сұраулары қолма-қол баға белгілеуді және бастапқы валюта шектеулерін сақтайды. Бар шоттар ешқашан қайта есептелмейді. Аналитикадағы расталған түбіртектер тексерілген төлемдерден сақталған шот шығындарын шегергендегі соманы көрсетеді; олар шығарылатын баланс емес. Мұрагерлік шот валюталары бөлек қалады, ал төлемдер қолдау қызметімен келісіледі. Тапсырысты тек payment.fulfillmentReady=true және payment.status=\"succeeded\" сервер API, оқиғалар тарихы немесе қол қойылған вебхук арқылы тексергеннен кейін орындаңыз."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        }
      ],
      "body": "Шот-фактураға не кіреді\n\nЖаңа жұмыс кеңістігі шоттары АҚШ доллары базалық бағасын пайдаланады, ал Any төрт әдістің барлығын ұсынады. SBP Ресей Банкінің мұздатылған анықтамалық бағамы бойынша рубльге айырбастайды; крипто айқын 1:1 АҚШ доллары/USDT шот ережесін пайдаланады. Мұрагерлік қолма-қол баға белгілеу ескі шоттар мен pricingMode=universal жоқ API сұраулары үшін қолжетімді болып қалады. Төмендегі бірнеше дүкен және АҚШ доллары бағасы бөлімін қараңыз.\n\nЖария сипаттамаларға құпия сөздерді, API кілттерін, карта деректерін немесе банк кодтарын ешқашан қоспаңыз. Клиент танитын тапсырыс тақырыбын және сілтемені пайдаланыңыз.\n\nДүкен атауы, 120 таңбаға дейінгі тапсырыс тақырыбы және 500 таңбаға дейінгі сипаттама.\n\nНегізгі сома және нақты USD, RUB немесе USDT валютасы.\n\nҮйлесімді әдістер, бөлек комиссия және ҚҚС үлестері, тапсырыс сілтемесі және сілтеменің мерзімі.\n\nИелердің жауаптары link.payment-ті қамтиды, ол бар операцияның сақталған күйін көрсетеді; бұл сілтеменің қолжетімділік күйінен бөлек.\n\nКез келгені — тұтынушы таңдайды\n\nКез келгені есепшот валютасына сәйкес келетін барлық әдістерді таңдайды: USD үшін карталар мен Alipay, RUB үшін SBP, ал USDT үшін крипто. API 'any' жолының орнына нақты әдістер массивін қабылдайды. Әр әдістің өз бағасы бар.\n\nЖаңа жұмыс кеңістігі шоттары АҚШ доллары базалық бағасын пайдаланады, ал Any төрт әдістің барлығын ұсынады. SBP Ресей Банкінің мұздатылған анықтамалық бағамы бойынша рубльге айырбастайды; крипто айқын 1:1 АҚШ доллары/USDT шот ережесін пайдаланады. Мұрагерлік қолма-қол баға белгілеу ескі шоттар мен pricingMode=universal жоқ API сұраулары үшін қолжетімді болып қалады. Төмендегі бірнеше дүкен және АҚШ доллары бағасы бөлімін қараңыз.\n\nЖаңа тірі карта немесе Alipay төлемі үшін ағымдағы шлюз тек feeCustomerPercent=0 және vatCustomerPercent=100 мәндерін қолдайды: сатушы барлық өңдеу комиссиясын жабады, ал ҚҚС клиент үшін толық қосылады. Басқа үлестер шотта сақталып, есептелуі мүмкін, бірақ орындау unsupported_allocation кодымен бұғатталған. Сервер үнсіз сақталған шарттарды өзгертпейді. SBP және USDT крипто төлемдері кез келген өңдеу комиссиясы үлесін қолдайды және ҚҚС жоқ.\n\nAPI арқылы әдістерді жіберу\n\nСілтеме жасау\n\nТөлем сілтемелерін тіркелгіңізде ашыңыз.\n\nТақырып, сома, валюта және сипаттама енгізіңіз. Екі басқару элементі арқылы комиссия мен ҚҚС үлестерін орнатыңыз.\n\nТұтынушы таңдауы үшін «Кез келгені» опциясын қалдырыңыз немесе нақты әдістерді таңдаңыз. Мерзімін орнатыңыз.\n\nӘр әдіс үшін жалпы соманы салыстырып, төлем бетін алдын ала қараңыз.\n\nДайын төлем сілтемесін жасағаннан кейін бірден алыңыз, сосын оны тұтынушыға немесе виджетке көшіріңіз.\n\nЕгер төлем қабылдау қолжетімсіз болса, төлем беті растау алдында бұл туралы хабарлайды. Есепшот жасау ақшаны есептен шығармайды.\n\nШарттар есепшотпен бірге қалады\n\nСақталған есепшот дүкен параметрлері өзгергенде өзгермейді. Оның бағасы, валютасы, комиссия мен ҚҚС үлестері, тапсырыс сілтемесі және метадеректері сол тапсырысқа тиесілі. Бұл сілтемені бұрын ашқан тұтынушы үшін жалпы соманы тұрақты етеді.\n\nБаға, сипаттама немесе шығындарды бөлу өзгергенде жаңа сілтеме жасап, ескісін тоқтатыңыз. URL сомасын өңдеу сервер есебін өзгерте алмайды.\n\nАрнайы төлем беті\n\nСервер сілтемелері дерекқорда сақталады және /pay/… мекенжайы арқылы әртүрлі құрылғыларда сатушы тіркелгісіне қолжетімділіксіз ашылады. Тұтынушыға есепшотты көру үшін тіркелу қажет емес. Дүкен баланстары, параметрлер және басқа тұтынушы жазбалары жеке болып қалады.\n\n/pay/demo мысалы ақша алмай-ақ тәжірибені көрсетеді. Браузер демо сілтемелері тест деректері болып табылады және нақты есепшоттар ретінде ұсынылмауы керек.\n\nТөлемді алдын ала қарау\n\nТөлем бетінің күйлері\n\nҚолжетімділікті басқару\n\nСілтемені тоқтата тұру, болдырмау немесе мерзімін өткізу жаңа операцияны бұғаттайды. Бұл жіберілген төлемді жасырмайды: мәртебе, есептестіру және сұралған банк коды қолжетімді болып қалады. Сілтеменің қолжетімділігі мен қаржылық күйі бөлек тексеріледі.\n\nҚайта жалғастыру шарттарды өзгертпей-ақ тоқтата тұруды алып тастайды. Болдырмау түпкілікті, ал мерзімі өткен сілтемені ұзарту мүмкін емес. Жаңа тапсырыс немесе өзгерген шарттар үшін жаңа есепшот жасаңыз, нәтижесі белгісіз төлемді қайта талпыныс үшін емес.\n\nБірнеше дүкен және бір АҚШ доллары базалық бағасы\n\nЖиынтық аналитика мен операциялар үшін Барлық дүкендерді таңдаңыз немесе жеке жазбалары үшін дүкенді таңдаңыз. Әр дүкеннің жеке storeId, атауы, ҚҚС әдепкі мәні, шоттары, API кілттері, вебхук нүктелері, оқиғалар тарихы және веб-сайт қосымшасы бар. Хабарландырулар мен қолдау билеттері тіркелгіге тиесілі. Тіркелгі 100 дүкенге дейін құра алады. Бар жазбалар оның бірінші дүкенінде қалады.\n\nЖаңа жұмыс кеңістігі шоттары pricingMode=\"universal\" және АҚШ доллары базалық бағасын пайдаланады. Any карта, alipay, sbp және криптоны қамтиды; сатушы ішкі жиынтықты таңдай алады. Карталар мен Alipay АҚШ долларымен есептейді. SBP Ресей Банкінің АҚШ доллары/рубль анықтамалық бағамын пайдаланып рубльмен есептейді. Крипто айқын шот ережесі бойынша USDT-мен есептейді: 1 АҚШ доллары = 1 USDT. Бұл шот айырбастау ережесі, нарықтық USDT котировкасы емес. Шлюз таңдалған монетаның бағамын, нақты аударым сомасын және нұсқауларды аударымға дейін береді.\n\nАнықтамалық бағам және екі сома да құру кезінде мұздатылады. Рубльге айырбастауды қамтитын шоттар 24 сағат ішінде мерзімі аяқталады. Егер анықтамалық бағамды алу мүмкін болмаса, құру FX_UNAVAILABLE қатесімен сәтсіз аяқталады; ойдан шығарылған немесе ескірген қосалқы бағам пайдаланылмайды. Меншік иесінің жауабындағы amountMinor және quotes АҚШ доллары бухгалтерлік валютасын пайдаланады. quotes[method].settlement туынды валютадағы төлем котировкасын қамтиды. Қоғамдық төлем беті таңдалған төлем валютасын currency өрісінде, бастапқы бағаны baseAmountMinor/baseCurrency өрістерінде және анықтамалық бағамды fx өрісінде көрсетеді. Төлем жіберілгеннен кейін оның әдісін өзгерту мүмкін емес; шотта бір шлюз операциясы болады.\n\nМақсатты дүкен ішінде API кілтін жасаңыз және серверіңізден Authorization: Bearer <key> жіберіңіз. Оның дүкенге байланыстыруы өзгермейді; X-Kevmi-Store оған басқа дүкенге қолжетімділік бере алмайды. Браузер сеанстары X-Kevmi-Store: <storeId> таңдайды; оны алып тастағанда бірінші дүкен таңдалады. all мәні тек GET /api/account/dashboard және GET /api/payment-links сұраулары арқылы қабылданады. Өзгертулер таңдалған дүкенді, Origin және X-CSRF-Token талап етеді. Тіркелгі идентификаторлары мен дүкен идентификаторлары әртүрлі идентификаторлар болып табылады.\n\nҮйлесімділік үшін pricingMode=\"universal\" жоқ API сұраулары қолма-қол баға белгілеуді және бастапқы валюта шектеулерін сақтайды. Бар шоттар ешқашан қайта есептелмейді. Аналитикадағы расталған түбіртектер тексерілген төлемдерден сақталған шот шығындарын шегергендегі соманы көрсетеді; олар шығарылатын баланс емес. Мұрагерлік шот валюталары бөлек қалады, ал төлемдер қолдау қызметімен келісіледі. Тапсырысты тек payment.fulfillmentReady=true және payment.status=\"succeeded\" сервер API, оқиғалар тарихы немесе қол қойылған вебхук арқылы тексергеннен кейін орындаңыз.",
      "readMinutes": 5
    },
    {
      "id": "checkout",
      "title": "Төлем беті",
      "summary": "Төлем беті тұтынушыға не сатып алып жатқанын, қалай төлей алатынын және растау алдында төленетін соманы көрсетеді. Ол сатушы жұмыс кеңістігінен бөлек.",
      "group": "payments",
      "url": "/docs/checkout",
      "tags": [
        "төлем беті",
        "тұтынушы",
        "төлеу",
        "шот-фактура",
        "төлем қатесі"
      ],
      "sections": [
        {
          "id": "review",
          "title": "Тапсырысты қарап шығыңыз",
          "paragraphs": [
            "Дүкен атауын, сатып алуды, базалық бағаны және валютаны тексеріңіз. Егер олар сатушымен келісіміңізден ерекшеленсе, жалғастыру алдында түзетілген есепшотты сұраңыз.",
            "Жария есепшот тек оның мекенжайын талап етеді; сатушының тіркелгісіне қолжетімділік қажет емес. Демо беті анық белгіленген және нақты төлем үшін карта деректерін жинамайды."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "method",
          "title": "Әдісті таңдаңыз",
          "paragraphs": [
            "Жаңа жұмыс кеңістігі шоттары АҚШ доллары базалық бағасын пайдаланады, ал Any төрт әдістің барлығын ұсынады. SBP Ресей Банкінің мұздатылған анықтамалық бағамы бойынша рубльге айырбастайды; крипто айқын 1:1 АҚШ доллары/USDT шот ережесін пайдаланады. Мұрагерлік қолма-қол баға белгілеу ескі шоттар мен pricingMode=universal жоқ API сұраулары үшін қолжетімді болып қалады. Төмендегі бірнеше дүкен және АҚШ доллары бағасы бөлімін қараңыз.",
            "Карта: браузер төлем деректерін шлюз ашық кілтімен шифрлайды. Kevmi шифрланған конвертті жібереді; оның сервері ашық мәтіндегі карта нөмірлерін, CVV немесе бір реттік банк кодтарын қабылдамайды және сақтамайды. Сұралған банк коды формасы тек шлюздің шақыруы жарамды болғанда ғана пайда болады.",
            "Alipay: тұтынушы есім ұсынады және QR кодын алады. SBP банк төлем URL-ін ашады; шлюз ұсынған QR да пайдаланылуы мүмкін. Шлюз мерзімді ұсынғанда ол көрсетіледі.",
            "Крипто: монетаны, содан кейін ағымдағы каталогтан қолжетімді желіні таңдаңыз. Операция жасалғаннан кейін төлем беті нақты ондық соманы, алушы мекенжайын және екі QR режимін көрсетеді: тек мекенжай немесе мекенжай мен сома. Әмиян желісі таңдалған желіге сәйкес келуі керек. USDT есепшот бағасы басқа монетаның айырбас бағамын бекітпейді: шлюз ұсынған соманы пайдаланыңыз. Мерзімі өткен нұсқаулар сол төлем үшін есептестіру жалғасқанда жасырылады.",
            "Жаңа тірі карта немесе Alipay төлемі үшін ағымдағы шлюз тек feeCustomerPercent=0 және vatCustomerPercent=100 мәндерін қолдайды: сатушы барлық өңдеу комиссиясын жабады, ал ҚҚС клиент үшін толық қосылады. Басқа үлестер шотта сақталып, есептелуі мүмкін, бірақ орындау unsupported_allocation кодымен бұғатталған. Сервер үнсіз сақталған шарттарды өзгертпейді. SBP және USDT крипто төлемдері кез келген өңдеу комиссиясы үлесін қолдайды және ҚҚС жоқ."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "states",
          "title": "Төлем бетінің күйлері",
          "paragraphs": [],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Күйі",
              "Мағынасы",
              "Келесі қадам"
            ],
            "rows": [
              [
                "Белсенді",
                "Есепшот қарау үшін қолжетімді",
                "Жалпы соманы және таңдалған әдістің қолжетімділігін тексеріңіз"
              ],
              [
                "Тоқтата тұрылған / мерзімі өткен / болдырмалған",
                "Сілтеме арқылы жаңа төлем бастала алмайды",
                "Сатушыға хабарласыңыз; бастапқы операция бөлек тексеріледі"
              ],
              [
                "Табылмады",
                "Мекенжай жарамсыз немесе қолжетімсіз",
                "Толық мекенжайды тексеріңіз"
              ],
              [
                "Төлем қолжетімсіз",
                "Жаңа операция конфигурация, әдіс, лимит, бөлу немесе сатушы тексеруімен бұғатталған",
                "Көрсетілген хабарламаны орындаңыз; сақталған есепшот шарттары өзгермейді"
              ],
              [
                "Күтілуде / әрекет қажет",
                "Бастапқы операция бар немесе растауды қажет етеді",
                "Ағымдағы қадамды аяқтаңыз немесе оның күйін тексеріңіз"
              ],
              [
                "Нәтиже тексерілуде",
                "Расталған нәтиже әлі қолжетімді емес",
                "Бастапқы операцияны тексеріңіз; екінші төлем жасамаңыз"
              ]
            ]
          },
          "code": null,
          "note": "Желі қатесі немесе жауаптың болмауы төлемнің болмағанын дәлелдемейді. Жіберілген операция сілтеме жаңа төлемдерді қабылдамаса да оқылатын болып қалады.",
          "links": []
        },
        {
          "id": "confirmation",
          "title": "Төлемді не растайды",
          "paragraphs": [
            "Төлем нақты шлюз операциясын сервердің есептестіруімен расталады. Сәттілік fulfillment_ready=true, verification=provider_confirmed, дау-дамайдың болмауы және төленген сома мен бекітілген жалпы соманың нақты сәйкестігін талап етеді. Крипто қосымша расталған есеп айырысу дәлелін талап етеді.",
            "Қайта бағыттау, виджет хабарламасы, қабылданған банк коды немесе браузер бақылауы ақшаны растамайды. Уақыт аяқталғаннан кейін бастапқы операцияның күйін оқыңыз; алмастыру талпынысы ешқашан автоматты түрде жасалмайды.",
            "Жаңа төлем және карта ниеті сатушының соңғы веб-сайт шолу өтінімінің мақұлдануын талап етеді. Мақұлдау ғана төлем шлюзін қоспайды. Егер шолу жөнелтілгеннен кейін өзгерсе, бар операция мәртебе оқуы, есеп айырысу және сұралған банк коды үшін қолжетімді болып қалады."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "help",
          "title": "Көмек алу",
          "paragraphs": [
            "Сатушыға есепшот сілтемесін немесе мекенжайын, талпыныс уақытын және көрсетілген қатені жіберіңіз. Қолдауға CVV, банкинг құпия сөзін, растау кодын немесе seed фразасын жібермеңіз. Құжаттама көмекшісі шарттарды түсіндіре алады, бірақ несиені өз бетінше растай алмайды."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Төлем бойынша көмек",
              "href": "/?support=open"
            },
            {
              "label": "ҚҚС есептеу",
              "href": "/docs/vat"
            }
          ]
        }
      ],
      "body": "Тапсырысты қарап шығыңыз\n\nДүкен атауын, сатып алуды, базалық бағаны және валютаны тексеріңіз. Егер олар сатушымен келісіміңізден ерекшеленсе, жалғастыру алдында түзетілген есепшотты сұраңыз.\n\nЖария есепшот тек оның мекенжайын талап етеді; сатушының тіркелгісіне қолжетімділік қажет емес. Демо беті анық белгіленген және нақты төлем үшін карта деректерін жинамайды.\n\nӘдісті таңдаңыз\n\nЖаңа жұмыс кеңістігі шоттары АҚШ доллары базалық бағасын пайдаланады, ал Any төрт әдістің барлығын ұсынады. SBP Ресей Банкінің мұздатылған анықтамалық бағамы бойынша рубльге айырбастайды; крипто айқын 1:1 АҚШ доллары/USDT шот ережесін пайдаланады. Мұрагерлік қолма-қол баға белгілеу ескі шоттар мен pricingMode=universal жоқ API сұраулары үшін қолжетімді болып қалады. Төмендегі бірнеше дүкен және АҚШ доллары бағасы бөлімін қараңыз.\n\nКарта: браузер төлем деректерін шлюз ашық кілтімен шифрлайды. Kevmi шифрланған конвертті жібереді; оның сервері ашық мәтіндегі карта нөмірлерін, CVV немесе бір реттік банк кодтарын қабылдамайды және сақтамайды. Сұралған банк коды формасы тек шлюздің шақыруы жарамды болғанда ғана пайда болады.\n\nAlipay: тұтынушы есім ұсынады және QR кодын алады. SBP банк төлем URL-ін ашады; шлюз ұсынған QR да пайдаланылуы мүмкін. Шлюз мерзімді ұсынғанда ол көрсетіледі.\n\nКрипто: монетаны, содан кейін ағымдағы каталогтан қолжетімді желіні таңдаңыз. Операция жасалғаннан кейін төлем беті нақты ондық соманы, алушы мекенжайын және екі QR режимін көрсетеді: тек мекенжай немесе мекенжай мен сома. Әмиян желісі таңдалған желіге сәйкес келуі керек. USDT есепшот бағасы басқа монетаның айырбас бағамын бекітпейді: шлюз ұсынған соманы пайдаланыңыз. Мерзімі өткен нұсқаулар сол төлем үшін есептестіру жалғасқанда жасырылады.\n\nЖаңа тірі карта немесе Alipay төлемі үшін ағымдағы шлюз тек feeCustomerPercent=0 және vatCustomerPercent=100 мәндерін қолдайды: сатушы барлық өңдеу комиссиясын жабады, ал ҚҚС клиент үшін толық қосылады. Басқа үлестер шотта сақталып, есептелуі мүмкін, бірақ орындау unsupported_allocation кодымен бұғатталған. Сервер үнсіз сақталған шарттарды өзгертпейді. SBP және USDT крипто төлемдері кез келген өңдеу комиссиясы үлесін қолдайды және ҚҚС жоқ.\n\nТөлем бетінің күйлері\n\nКүйі · Мағынасы · Келесі қадам\nБелсенді · Есепшот қарау үшін қолжетімді · Жалпы соманы және таңдалған әдістің қолжетімділігін тексеріңіз\nТоқтата тұрылған / мерзімі өткен / болдырмалған · Сілтеме арқылы жаңа төлем бастала алмайды · Сатушыға хабарласыңыз; бастапқы операция бөлек тексеріледі\nТабылмады · Мекенжай жарамсыз немесе қолжетімсіз · Толық мекенжайды тексеріңіз\nТөлем қолжетімсіз · Жаңа операция конфигурация, әдіс, лимит, бөлу немесе сатушы тексеруімен бұғатталған · Көрсетілген хабарламаны орындаңыз; сақталған есепшот шарттары өзгермейді\nКүтілуде / әрекет қажет · Бастапқы операция бар немесе растауды қажет етеді · Ағымдағы қадамды аяқтаңыз немесе оның күйін тексеріңіз\nНәтиже тексерілуде · Расталған нәтиже әлі қолжетімді емес · Бастапқы операцияны тексеріңіз; екінші төлем жасамаңыз\n\nЖелі қатесі немесе жауаптың болмауы төлемнің болмағанын дәлелдемейді. Жіберілген операция сілтеме жаңа төлемдерді қабылдамаса да оқылатын болып қалады.\n\nТөлемді не растайды\n\nТөлем нақты шлюз операциясын сервердің есептестіруімен расталады. Сәттілік fulfillment_ready=true, verification=provider_confirmed, дау-дамайдың болмауы және төленген сома мен бекітілген жалпы соманың нақты сәйкестігін талап етеді. Крипто қосымша расталған есеп айырысу дәлелін талап етеді.\n\nҚайта бағыттау, виджет хабарламасы, қабылданған банк коды немесе браузер бақылауы ақшаны растамайды. Уақыт аяқталғаннан кейін бастапқы операцияның күйін оқыңыз; алмастыру талпынысы ешқашан автоматты түрде жасалмайды.\n\nЖаңа төлем және карта ниеті сатушының соңғы веб-сайт шолу өтінімінің мақұлдануын талап етеді. Мақұлдау ғана төлем шлюзін қоспайды. Егер шолу жөнелтілгеннен кейін өзгерсе, бар операция мәртебе оқуы, есеп айырысу және сұралған банк коды үшін қолжетімді болып қалады.\n\nКөмек алу\n\nСатушыға есепшот сілтемесін немесе мекенжайын, талпыныс уақытын және көрсетілген қатені жіберіңіз. Қолдауға CVV, банкинг құпия сөзін, растау кодын немесе seed фразасын жібермеңіз. Құжаттама көмекшісі шарттарды түсіндіре алады, бірақ несиені өз бетінше растай алмайды.\n\nТөлем бойынша көмек\n\nҚҚС есептеу",
      "readMinutes": 5
    },
    {
      "id": "payments",
      "title": "Төлемдер мен күйлер",
      "summary": "Шот-фактура тапсырысты сипаттайды. Төлем — оны төлеуге жасалған нақты әрекет. Төлем әрекеті және оның сілтемесінің қолжетімділігі — бөлек күйлер.",
      "group": "payments",
      "url": "/docs/payments",
      "tags": [
        "төлем",
        "мәртебе",
        "күтілуде",
        "сәтті аяқталды",
        "сәтсіз"
      ],
      "sections": [
        {
          "id": "record",
          "title": "Төлем жазбасы",
          "paragraphs": [
            "Шот-фактура тапсырыс шарттарын сақтайды; төлем оның шлюз операциясын анықтайды. Алғашқы іске қосу бір тұрақты байланысты және сервердің Идемпотенттік-Кілтін резервтейді. Жіберу басталғаннан кейін басқа әдіс сол шот-фактура бойынша екінші төлем жасай алмайды.",
            "GET /api/payment-links және GET /api/v1/payments иесіне link.payment қайтарады. Сілтеменің белсенді/тоқтатылған/болдырылған/мерзімі өткен күйі төлем күйінен бөлек. Клиент өз операциясын тек кездейсоқ checkout токені арқылы оқи алады."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Деректер",
              "Мақсат"
            ],
            "rows": [
              [
                "Сәйкестендіргіш және тапсырыс",
                "Әрекетті сатып алумен байланыстыру"
              ],
              [
                "Базалық сома және валюта",
                "Есептеу базасы"
              ],
              [
                "Төлем әдісі",
                "Қолданылатын комиссия және салық"
              ],
              [
                "ҚҚС төлеуші",
                "Салықты кім жабады"
              ],
              [
                "Комиссия, ҚҚС және жиынтықтар",
                "Сақталған есептеу"
              ],
              [
                "Мәртебе және уақыт",
                "Ағымдағы транзакция күйі"
              ],
              [
                "Шлюз оқиғасына сілтеме",
                "Сервер растау көзі"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "statuses",
          "title": "Тірі операция күйлері",
          "paragraphs": [
            "Демо-нұсқа бөлек тест жазбаларын пайдаланады. Демо-күйді өзгерту нақты төлемді растамайды және қаржылық жазбаларды өзгертпейді."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Мәртебе",
              "Мағынасы"
            ],
            "rows": [
              [
                "күтілуде",
                "Операция жасалды; әрекет немесе нәтиже күтілуде"
              ],
              [
                "requires_action",
                "Банк коды немесе клиентті растау қажет"
              ],
              [
                "processing",
                "Провайдер әлі де нәтижені растауда"
              ],
              [
                "сәтті аяқталды",
                "Сервер нақты төлемді тексерді"
              ],
              [
                "сәтсіз",
                "Әрекет расталған төлемсіз аяқталды"
              ],
              [
                "expired",
                "Нұсқаулықтар мерзімі өтті; салыстыру әлі қолжетімді"
              ],
              [
                "review_required",
                "Қосымша қарау қажет; қайта төлемеңіз"
              ],
              [
                "partially_paid",
                "Соманың тек бір бөлігі алынды; басқа төлем жасамаңыз"
              ],
              [
                "partially_refunded",
                "Төлемнің бір бөлігі қайтарылды"
              ],
              [
                "refunded",
                "Қайтару расталды"
              ],
              [
                "disputed",
                "Операция даулы"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "authority",
          "title": "Ақиқат көзі",
          "paragraphs": [
            "Қол қойылған webhook нақты шлюз операциясының аутентификацияланған оқылуын іске қосады. ID, тапсырыс, валюта, әдіс, базалық және соңғы сомалар, тірі режим және монотонды нұсқа тексеріледі. Кіріс оқиға атауының өзі ақшаның дәлелі емес.",
            "Күй, түбіртек және мерчант оқиғасы атомдық түрде коммит жасалады. Ескі жауаптар жаңа нұсқаны қайта жаза алмайды; қайталанғандар екі рет орындалмайды, ал күтілуде расталған төлемді алмастыра алмайды. Бұл жазбалар автоматты түрде шығарылатын баланс немесе төлем жасамайды."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "uncertain",
          "title": "Нәтиже белгісіз болғанда",
          "paragraphs": [],
          "bullets": [],
          "steps": [
            "Түпнұсқа шот-фактураны және операция сәйкестендіргішін сақтаңыз.",
            "GET /api/checkout/{token}/status оқыңыз; ол төлем жасамайды.",
            "Айқын салыстыру қажет болғанда POST /api/checkout/{token}/reconcile пайдаланыңыз.",
            "Белгісіз нәтижеден кейін әдісті, соманы немесе идемпотенттік кілтті өзгертпеңіз."
          ],
          "table": null,
          "code": null,
          "note": "Таймаут — бас тарту емес. Жоғалған жауап түпнұсқа сервер кілтімен қалпына келтіріледі; алмастыру әрекеті автоматты түрде жасалмайды.",
          "links": []
        },
        {
          "id": "stores-usd",
          "title": "Бірнеше дүкен және бір АҚШ доллары базалық бағасы",
          "paragraphs": [
            "Жиынтық аналитика мен операциялар үшін Барлық дүкендерді таңдаңыз немесе жеке жазбалары үшін дүкенді таңдаңыз. Әр дүкеннің жеке storeId, атауы, ҚҚС әдепкі мәні, шоттары, API кілттері, вебхук нүктелері, оқиғалар тарихы және веб-сайт қосымшасы бар. Хабарландырулар мен қолдау билеттері тіркелгіге тиесілі. Тіркелгі 100 дүкенге дейін құра алады. Бар жазбалар оның бірінші дүкенінде қалады.",
            "Жаңа жұмыс кеңістігі шоттары pricingMode=\"universal\" және АҚШ доллары базалық бағасын пайдаланады. Any карта, alipay, sbp және криптоны қамтиды; сатушы ішкі жиынтықты таңдай алады. Карталар мен Alipay АҚШ долларымен есептейді. SBP Ресей Банкінің АҚШ доллары/рубль анықтамалық бағамын пайдаланып рубльмен есептейді. Крипто айқын шот ережесі бойынша USDT-мен есептейді: 1 АҚШ доллары = 1 USDT. Бұл шот айырбастау ережесі, нарықтық USDT котировкасы емес. Шлюз таңдалған монетаның бағамын, нақты аударым сомасын және нұсқауларды аударымға дейін береді.",
            "Анықтамалық бағам және екі сома да құру кезінде мұздатылады. Рубльге айырбастауды қамтитын шоттар 24 сағат ішінде мерзімі аяқталады. Егер анықтамалық бағамды алу мүмкін болмаса, құру FX_UNAVAILABLE қатесімен сәтсіз аяқталады; ойдан шығарылған немесе ескірген қосалқы бағам пайдаланылмайды. Меншік иесінің жауабындағы amountMinor және quotes АҚШ доллары бухгалтерлік валютасын пайдаланады. quotes[method].settlement туынды валютадағы төлем котировкасын қамтиды. Қоғамдық төлем беті таңдалған төлем валютасын currency өрісінде, бастапқы бағаны baseAmountMinor/baseCurrency өрістерінде және анықтамалық бағамды fx өрісінде көрсетеді. Төлем жіберілгеннен кейін оның әдісін өзгерту мүмкін емес; шотта бір шлюз операциясы болады.",
            "Мақсатты дүкен ішінде API кілтін жасаңыз және серверіңізден Authorization: Bearer <key> жіберіңіз. Оның дүкенге байланыстыруы өзгермейді; X-Kevmi-Store оған басқа дүкенге қолжетімділік бере алмайды. Браузер сеанстары X-Kevmi-Store: <storeId> таңдайды; оны алып тастағанда бірінші дүкен таңдалады. all мәні тек GET /api/account/dashboard және GET /api/payment-links сұраулары арқылы қабылданады. Өзгертулер таңдалған дүкенді, Origin және X-CSRF-Token талап етеді. Тіркелгі идентификаторлары мен дүкен идентификаторлары әртүрлі идентификаторлар болып табылады.",
            "Үйлесімділік үшін pricingMode=\"universal\" жоқ API сұраулары қолма-қол баға белгілеуді және бастапқы валюта шектеулерін сақтайды. Бар шоттар ешқашан қайта есептелмейді. Аналитикадағы расталған түбіртектер тексерілген төлемдерден сақталған шот шығындарын шегергендегі соманы көрсетеді; олар шығарылатын баланс емес. Мұрагерлік шот валюталары бөлек қалады, ал төлемдер қолдау қызметімен келісіледі. Тапсырысты тек payment.fulfillmentReady=true және payment.status=\"succeeded\" сервер API, оқиғалар тарихы немесе қол қойылған вебхук арқылы тексергеннен кейін орындаңыз."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        }
      ],
      "body": "Төлем жазбасы\n\nШот-фактура тапсырыс шарттарын сақтайды; төлем оның шлюз операциясын анықтайды. Алғашқы іске қосу бір тұрақты байланысты және сервердің Идемпотенттік-Кілтін резервтейді. Жіберу басталғаннан кейін басқа әдіс сол шот-фактура бойынша екінші төлем жасай алмайды.\n\nGET /api/payment-links және GET /api/v1/payments иесіне link.payment қайтарады. Сілтеменің белсенді/тоқтатылған/болдырылған/мерзімі өткен күйі төлем күйінен бөлек. Клиент өз операциясын тек кездейсоқ checkout токені арқылы оқи алады.\n\nДеректер · Мақсат\nСәйкестендіргіш және тапсырыс · Әрекетті сатып алумен байланыстыру\nБазалық сома және валюта · Есептеу базасы\nТөлем әдісі · Қолданылатын комиссия және салық\nҚҚС төлеуші · Салықты кім жабады\nКомиссия, ҚҚС және жиынтықтар · Сақталған есептеу\nМәртебе және уақыт · Ағымдағы транзакция күйі\nШлюз оқиғасына сілтеме · Сервер растау көзі\n\nТірі операция күйлері\n\nДемо-нұсқа бөлек тест жазбаларын пайдаланады. Демо-күйді өзгерту нақты төлемді растамайды және қаржылық жазбаларды өзгертпейді.\n\nМәртебе · Мағынасы\nкүтілуде · Операция жасалды; әрекет немесе нәтиже күтілуде\nrequires_action · Банк коды немесе клиентті растау қажет\nprocessing · Провайдер әлі де нәтижені растауда\nсәтті аяқталды · Сервер нақты төлемді тексерді\nсәтсіз · Әрекет расталған төлемсіз аяқталды\nexpired · Нұсқаулықтар мерзімі өтті; салыстыру әлі қолжетімді\nreview_required · Қосымша қарау қажет; қайта төлемеңіз\npartially_paid · Соманың тек бір бөлігі алынды; басқа төлем жасамаңыз\npartially_refunded · Төлемнің бір бөлігі қайтарылды\nrefunded · Қайтару расталды\ndisputed · Операция даулы\n\nАқиқат көзі\n\nҚол қойылған webhook нақты шлюз операциясының аутентификацияланған оқылуын іске қосады. ID, тапсырыс, валюта, әдіс, базалық және соңғы сомалар, тірі режим және монотонды нұсқа тексеріледі. Кіріс оқиға атауының өзі ақшаның дәлелі емес.\n\nКүй, түбіртек және мерчант оқиғасы атомдық түрде коммит жасалады. Ескі жауаптар жаңа нұсқаны қайта жаза алмайды; қайталанғандар екі рет орындалмайды, ал күтілуде расталған төлемді алмастыра алмайды. Бұл жазбалар автоматты түрде шығарылатын баланс немесе төлем жасамайды.\n\nНәтиже белгісіз болғанда\n\nТүпнұсқа шот-фактураны және операция сәйкестендіргішін сақтаңыз.\n\nGET /api/checkout/{token}/status оқыңыз; ол төлем жасамайды.\n\nАйқын салыстыру қажет болғанда POST /api/checkout/{token}/reconcile пайдаланыңыз.\n\nБелгісіз нәтижеден кейін әдісті, соманы немесе идемпотенттік кілтті өзгертпеңіз.\n\nТаймаут — бас тарту емес. Жоғалған жауап түпнұсқа сервер кілтімен қалпына келтіріледі; алмастыру әрекеті автоматты түрде жасалмайды.\n\nБірнеше дүкен және бір АҚШ доллары базалық бағасы\n\nЖиынтық аналитика мен операциялар үшін Барлық дүкендерді таңдаңыз немесе жеке жазбалары үшін дүкенді таңдаңыз. Әр дүкеннің жеке storeId, атауы, ҚҚС әдепкі мәні, шоттары, API кілттері, вебхук нүктелері, оқиғалар тарихы және веб-сайт қосымшасы бар. Хабарландырулар мен қолдау билеттері тіркелгіге тиесілі. Тіркелгі 100 дүкенге дейін құра алады. Бар жазбалар оның бірінші дүкенінде қалады.\n\nЖаңа жұмыс кеңістігі шоттары pricingMode=\"universal\" және АҚШ доллары базалық бағасын пайдаланады. Any карта, alipay, sbp және криптоны қамтиды; сатушы ішкі жиынтықты таңдай алады. Карталар мен Alipay АҚШ долларымен есептейді. SBP Ресей Банкінің АҚШ доллары/рубль анықтамалық бағамын пайдаланып рубльмен есептейді. Крипто айқын шот ережесі бойынша USDT-мен есептейді: 1 АҚШ доллары = 1 USDT. Бұл шот айырбастау ережесі, нарықтық USDT котировкасы емес. Шлюз таңдалған монетаның бағамын, нақты аударым сомасын және нұсқауларды аударымға дейін береді.\n\nАнықтамалық бағам және екі сома да құру кезінде мұздатылады. Рубльге айырбастауды қамтитын шоттар 24 сағат ішінде мерзімі аяқталады. Егер анықтамалық бағамды алу мүмкін болмаса, құру FX_UNAVAILABLE қатесімен сәтсіз аяқталады; ойдан шығарылған немесе ескірген қосалқы бағам пайдаланылмайды. Меншік иесінің жауабындағы amountMinor және quotes АҚШ доллары бухгалтерлік валютасын пайдаланады. quotes[method].settlement туынды валютадағы төлем котировкасын қамтиды. Қоғамдық төлем беті таңдалған төлем валютасын currency өрісінде, бастапқы бағаны baseAmountMinor/baseCurrency өрістерінде және анықтамалық бағамды fx өрісінде көрсетеді. Төлем жіберілгеннен кейін оның әдісін өзгерту мүмкін емес; шотта бір шлюз операциясы болады.\n\nМақсатты дүкен ішінде API кілтін жасаңыз және серверіңізден Authorization: Bearer <key> жіберіңіз. Оның дүкенге байланыстыруы өзгермейді; X-Kevmi-Store оған басқа дүкенге қолжетімділік бере алмайды. Браузер сеанстары X-Kevmi-Store: <storeId> таңдайды; оны алып тастағанда бірінші дүкен таңдалады. all мәні тек GET /api/account/dashboard және GET /api/payment-links сұраулары арқылы қабылданады. Өзгертулер таңдалған дүкенді, Origin және X-CSRF-Token талап етеді. Тіркелгі идентификаторлары мен дүкен идентификаторлары әртүрлі идентификаторлар болып табылады.\n\nҮйлесімділік үшін pricingMode=\"universal\" жоқ API сұраулары қолма-қол баға белгілеуді және бастапқы валюта шектеулерін сақтайды. Бар шоттар ешқашан қайта есептелмейді. Аналитикадағы расталған түбіртектер тексерілген төлемдерден сақталған шот шығындарын шегергендегі соманы көрсетеді; олар шығарылатын баланс емес. Мұрагерлік шот валюталары бөлек қалады, ал төлемдер қолдау қызметімен келісіледі. Тапсырысты тек payment.fulfillmentReady=true және payment.status=\"succeeded\" сервер API, оқиғалар тарихы немесе қол қойылған вебхук арқылы тексергеннен кейін орындаңыз.",
      "readMinutes": 3
    },
    {
      "id": "payouts",
      "title": "USDT TRC20 төлемдері",
      "summary": "Төлем шарттары TRC20 желісіндегі USDT-ті анықтайды, қаражат көзіне негізделген комиссиялармен. Бұл нұсқаулық комиссияларды, баға ұсыныстарын және шектеулерді қамтиды: есепшот пен API арқылы төлем жасау қолжетімді емес.",
      "group": "payments",
      "url": "/docs/payouts",
      "tags": [
        "төлем шығару",
        "шығару",
        "USDT",
        "TRC20",
        "әмиян",
        "айырбас бағамы"
      ],
      "sections": [
        {
          "id": "tariffs",
          "title": "Дереккөз бойынша комиссиялар",
          "paragraphs": [
            "Қабылдау комиссиясы мерчант кредитіне қазірдің өзінде енгізілген. Төлем шығару — бұл жеке комиссиясы бар бөлек операция. Қабылдау комиссиясын балансқа екінші рет қолданбаңыз."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Дереккөз",
              "Комиссия"
            ],
            "rows": [
              [
                "Карталар және Alipay",
                "4%"
              ],
              [
                "SBP",
                "5% + RUB 400"
              ],
              [
                "Криптовалюта",
                "0% + $3"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "quote",
          "title": "Котировкалар және валюталар",
          "paragraphs": [
            "USD және RUB сомалары бөлек есепке алынуы керек. Оларды айырбас бағамынсыз қоспаңыз. USD — бұл фиаттық валюта, ал USDT — цифрлық актив; автоматты түрде 1:1 айырбас бағамы болжалмайды.",
            "Котировкада дереккөз валютасы мен сомасы, комиссия, USDT шығысы және мерзімі көрсетілуі керек. Сома немесе әмиян өзгерсе, шарттарды қайта тексеру қажет."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "address",
          "title": "Алушының мекенжайы",
          "paragraphs": [
            "Алушыға тиесілі TRC20 мекенжайын пайдаланыңыз. Мекенжай форматын тексеру кейбір қателіктерді анықтай алады, бірақ иесін растай алмайды немесе жеткізілуін кепілдей алмайды.",
            "Жіберу алдында толық мекенжайды және желіні тексеріңіз. Сервер соманы, қолжетімді балансты және котировканы клиент формасынан тәуелсіз растауы керек."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "flow",
          "title": "Төлем шығару процесі",
          "paragraphs": [
            "Демо-нұсқа есептеу үшін тек қолмен енгізілген котировканы пайдаланады. Тестік төлем шығару демо-қаражатты резервтейді және активтерді аудармайды."
          ],
          "bullets": [],
          "steps": [
            "Қаражат дереккөзін және дебет сомасын таңдаңыз.",
            "TRC20 мекенжайын енгізіңіз.",
            "Ағымдағы котировканы алып, комиссияны қарап шығыңыз.",
            "Нақты сұраныс шарттарын растаңыз.",
            "Сервер растаған нәтижені күтіңіз."
          ],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "availability",
          "title": "Төлем шығарудың қолжетімділігі",
          "paragraphs": [
            "Есептік жазба және /api/payouts арқылы төлем шығаруды құру қолжетімсіз. Жарияланған комиссиялар мен комиссияны есептеу аударым сұранысын жасамайды немесе оның орындалуын растамайды.",
            "Расталған төлемдер, түбіртектер және оқиғалар тарихта сақталады. Бұл жазбалар алуға болатын баланс емес. Төлем шығаруды орындау үшін бөлек қаражат бухгалтериясы, ағымдағы котировка, тағайындалған жерді тексеру және аударымды растау қажет."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Шлюз интеграциясы",
              "href": "/docs/gateway"
            }
          ]
        }
      ],
      "body": "Дереккөз бойынша комиссиялар\n\nҚабылдау комиссиясы мерчант кредитіне қазірдің өзінде енгізілген. Төлем шығару — бұл жеке комиссиясы бар бөлек операция. Қабылдау комиссиясын балансқа екінші рет қолданбаңыз.\n\nДереккөз · Комиссия\nКарталар және Alipay · 4%\nSBP · 5% + RUB 400\nКриптовалюта · 0% + $3\n\nКотировкалар және валюталар\n\nUSD және RUB сомалары бөлек есепке алынуы керек. Оларды айырбас бағамынсыз қоспаңыз. USD — бұл фиаттық валюта, ал USDT — цифрлық актив; автоматты түрде 1:1 айырбас бағамы болжалмайды.\n\nКотировкада дереккөз валютасы мен сомасы, комиссия, USDT шығысы және мерзімі көрсетілуі керек. Сома немесе әмиян өзгерсе, шарттарды қайта тексеру қажет.\n\nАлушының мекенжайы\n\nАлушыға тиесілі TRC20 мекенжайын пайдаланыңыз. Мекенжай форматын тексеру кейбір қателіктерді анықтай алады, бірақ иесін растай алмайды немесе жеткізілуін кепілдей алмайды.\n\nЖіберу алдында толық мекенжайды және желіні тексеріңіз. Сервер соманы, қолжетімді балансты және котировканы клиент формасынан тәуелсіз растауы керек.\n\nТөлем шығару процесі\n\nДемо-нұсқа есептеу үшін тек қолмен енгізілген котировканы пайдаланады. Тестік төлем шығару демо-қаражатты резервтейді және активтерді аудармайды.\n\nҚаражат дереккөзін және дебет сомасын таңдаңыз.\n\nTRC20 мекенжайын енгізіңіз.\n\nАғымдағы котировканы алып, комиссияны қарап шығыңыз.\n\nНақты сұраныс шарттарын растаңыз.\n\nСервер растаған нәтижені күтіңіз.\n\nТөлем шығарудың қолжетімділігі\n\nЕсептік жазба және /api/payouts арқылы төлем шығаруды құру қолжетімсіз. Жарияланған комиссиялар мен комиссияны есептеу аударым сұранысын жасамайды немесе оның орындалуын растамайды.\n\nРасталған төлемдер, түбіртектер және оқиғалар тарихта сақталады. Бұл жазбалар алуға болатын баланс емес. Төлем шығаруды орындау үшін бөлек қаражат бухгалтериясы, ағымдағы котировка, тағайындалған жерді тексеру және аударымды растау қажет.\n\nШлюз интеграциясы",
      "readMinutes": 3
    },
    {
      "id": "telegram-login",
      "title": "Кіру және Telegram арқылы тіркелу",
      "summary": "Telegram сіздің жеке басыңызды растайды. Kevmi алғашқы кіру кезінде сіздің есептік жазбаңызды жасайды және кейінгі кірулерде оны ашады. Бөлек Kevmi құпия сөзі қажет емес.",
      "group": "account",
      "url": "/docs/telegram-login",
      "tags": [
        "Telegram",
        "кіру",
        "кіру",
        "тіркелу",
        "есептік жазба",
        "бот"
      ],
      "sections": [
        {
          "id": "steps",
          "title": "Кіру процесі",
          "paragraphs": [
            "Сұраныс бес минутқа созылады. Мерзімі өтсе, жаңа сұраныс бастаңыз. Ескі сұраныс сеанс алу үшін қайта пайдаланыла алмайды."
          ],
          "bullets": [],
          "steps": [
            "«Кіру» немесе «Есептік жазба құру» бөлімін ашып, «Telegram арқылы жалғастыру» нұсқасын таңдаңыз.",
            "Осы браузер жасаған бот сілтемесіне өтіңіз.",
            "Веб-сайттағы және бот хабарламасындағы алты таңбалы кодты салыстырыңыз.",
            "Жеке чатта растаңыз.",
            "Бастапқы браузерге оралыңыз. Растаудан кейін есептік жазбаңыз ашылады."
          ],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "browser",
          "title": "Неліктен бастапқы браузер маңызды",
          "paragraphs": [
            "Telegram сілтемесі кіруді бастаған браузердегі қорғалған cookie-ге байланысты. challengeId немесе қайта жіберілген сілтеме жалғыз өзі басқа құрылғыда сеанс жасай алмайды.",
            "Сіз екінші құрылғыдағы Telegram-да растай аласыз, бірақ есептік жазба кіру басталған браузерде ашылады. Сіз бастамаған сұранысты растамаңыз."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "session",
          "title": "Сеанстар және жүйеден шығу",
          "paragraphs": [
            "Сеанс 24 сағатқа дейін созылады. Оның кездейсоқ белгісі Secure HttpOnly cookie-де сақталады және JavaScript арқылы оқыла алмайды. Веб-сайттан шығу ағымдағы сеансты аяқтайды.",
            "Боттың /logout командасы барлық есептік жазба сеанстарын аяқтайды және пайдаланылмаған растауларды болдырмайды. Жаңа кіру үшін жаңа сұраныс қажет."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "trouble",
          "title": "Кіру ақауларын жою",
          "paragraphs": [],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Жағдай",
              "Әрекет"
            ],
            "rows": [
              [
                "Сілтеменің мерзімі өтті",
                "Веб-сайтта жаңа сұраныс бастаңыз"
              ],
              [
                "Басқа браузер ашық",
                "Кіру басталған қойындыға оралыңыз"
              ],
              [
                "Кодтар сәйкес келмейді",
                "Растамаңыз; қайта бастаңыз"
              ],
              [
                "Кіру қолжетімсіз",
                "Кейінірек қайталап көріңіз немесе қолдау қызметіне хабарласыңыз"
              ],
              [
                "Уақытша желі қатесі",
                "Келесі тексеруді күтіңіз немесе кіруді қайталаңыз"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "privacy",
          "title": "Кіру үшін пайдаланылатын ақпарат",
          "paragraphs": [
            "Сервер есептік жазба құру үшін расталған Telegram идентификаторын және қолжетімді профиль өрістерін алады. Жария пайдаланушы аты жалғыз өзі жеке басты дәлелдеу емес.",
            "Бот сіздің Telegram құпия сөзіңізді, банк кодтарыңызды, CVV-ды, seed-фразаны немесе жеке кілттерді сұрамайды."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Аутентификация API",
              "href": "/docs/auth-api"
            },
            {
              "label": "Кіру",
              "href": "/login"
            }
          ]
        },
        {
          "id": "assistant-admin-v16",
          "title": "Көмекші, қолдау және жобаны басқару",
          "paragraphs": [
            "Жеке операцияларға көмек қажет болғанда, чатта менің деректеріме қолжетімділікті қосыңыз. includeAccount=true бар веб-сұраным жарамды сессияны, Origin және X-CSRF-Token-ді талап етеді; X-Kevmi-Store меншікті дүкенді немесе барлық меншікті дүкендерді таңдайды. Рұқсатсыз көмекші тек қоғамдық құжаттаманы пайдаланады. Telegram-да жіберуші анықталғаннан кейін жеке батырма қолжетімділікті қосады.",
            "read_account құралы меншікті дүкендерді, расталған төлем мәртебесі бар шот-фактураларды, оқиғаларды, өтінімдерді және маман жауаптары бар қолдау сұранымдарын оқиды. Ол 30 жазбаны және nextPage-ті қайтарады; ескі жазбалар пагинация арқылы қолжетімді. Әр жауаптағы оқулар шектеулі, сондықтан толық емес үлгі ашық көрсетілуі тиіс. API кілттері, вебхук құпиялары, карта деректері және сессиялар құралға берілмейді. Ол ақы ала алмайды, төлем жасай алмайды, қайтара алмайды немесе параметрлерді өзгерте алмайды.",
            "Жұмыс кеңістігінде немесе Telegram-да қолдау сұранымын жасау тұрақты кезекте бөлек әкімші ескертуін орналастырады. Ол /admin/tickets?ticket=<id> сілтемесімен байланысады; уақытша Telegram ақаулары қайта қайталанады. Қалпына келтіру ескертусіз ескі ашық сұранымдарды да қамтиды. Әкімшілер сұраным бетінде жауап береді; жауап пайдаланушы жұмыс кеңістігінде сақталады және қолдау хабарландыулары қосылғанда Telegram арқылы жіберіледі.",
            "Бот негізгі мәзір, дүкендер, хабарландырулар, қолдау, қауіпсіздік және тіл үшін ішкі батырмаларды пайдаланады. Навигация ағымдағы хабарламаны өңдейді; қолжетімсіз ескі мәзір ауыстырылады. Төлем және қауіпсіздік хабарландырулары бір реттік навигация ретінде қарастырылмайды. Мәзір арқылы жүйеден шығу растауды қажет етеді. Айқын /logout командасы әлі де әрбір аккаунт сессиясын аяқтайды.",
            "/admin/project панелі сервер жағындағы MODERATOR_TELEGRAM_IDS рұқсат тізіміндегі Telegram ID-лерімен шектелген. Ол пайдаланушыларды, дүкендерді, операцияларды, кілтті жоюды, вебхукті өшіруді, шот-фактураны тоқтата тұруды, қабылдау бақылауын және аудит журналын қамтиды. Өзгертулер CSRF және себепті талап етеді. Панель әкімшіні шектей алмайды немесе төлемді қолмен сәтті деп жариялай алмайды. Меншіктісін шектеу сессияларды аяқтайды және API кілтіне қолжетімділікті бұғаттайды; дүкенді шектеу жаңа операцияларды тоқтатады. Тарих сақталады.",
            "Қоғамдық ұсыныс /public-offer мекенжайында және құпиялық саясаты /privacy-policy мекенжайында әрбір қосылған тілде қолжетімді. Монеталарды аты немесе тикері бойынша іздеңіз. Желі таңдағышы тек бірнеше тірі желі болғанда ғана пайда болады. Бір желі автоматты түрде таңдалады және растауда атауы қалады. Тірі шлюз қолжетімділігі таңдалатын жұптарды анықтайды; анықтамалық каталог қызметті қоспайды.",
            "Күнделікті веб-қосымша шығарылымдары үшін update.sh пайдаланыңыз: үміткерді құрастырыңыз, миграция тарихын тексеріңіз, SQLite-ті онлайн резервтеңіз, екінші контейнерді іске қосыңыз, оны тексеріңіз және Caddy-ді бірқалыпты ауыстырыңыз. Gateway, PostgreSQL және пошта қайта іске қосылмайды. Алдыңғы статикалық ресурстар ашық қойындылар үшін қолжетімді болып қалады. Жаңа миграция айқын уәкілеттікпен қарауды қажет етеді; үйлесімсіз схема өзгерісі үздіксіз орналастыру емес."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Қоғамдық ұсыныс",
              "href": "/public-offer"
            },
            {
              "label": "Құпиялық саясаты",
              "href": "/privacy-policy"
            }
          ]
        }
      ],
      "body": "Кіру процесі\n\nСұраныс бес минутқа созылады. Мерзімі өтсе, жаңа сұраныс бастаңыз. Ескі сұраныс сеанс алу үшін қайта пайдаланыла алмайды.\n\n«Кіру» немесе «Есептік жазба құру» бөлімін ашып, «Telegram арқылы жалғастыру» нұсқасын таңдаңыз.\n\nОсы браузер жасаған бот сілтемесіне өтіңіз.\n\nВеб-сайттағы және бот хабарламасындағы алты таңбалы кодты салыстырыңыз.\n\nЖеке чатта растаңыз.\n\nБастапқы браузерге оралыңыз. Растаудан кейін есептік жазбаңыз ашылады.\n\nНеліктен бастапқы браузер маңызды\n\nTelegram сілтемесі кіруді бастаған браузердегі қорғалған cookie-ге байланысты. challengeId немесе қайта жіберілген сілтеме жалғыз өзі басқа құрылғыда сеанс жасай алмайды.\n\nСіз екінші құрылғыдағы Telegram-да растай аласыз, бірақ есептік жазба кіру басталған браузерде ашылады. Сіз бастамаған сұранысты растамаңыз.\n\nСеанстар және жүйеден шығу\n\nСеанс 24 сағатқа дейін созылады. Оның кездейсоқ белгісі Secure HttpOnly cookie-де сақталады және JavaScript арқылы оқыла алмайды. Веб-сайттан шығу ағымдағы сеансты аяқтайды.\n\nБоттың /logout командасы барлық есептік жазба сеанстарын аяқтайды және пайдаланылмаған растауларды болдырмайды. Жаңа кіру үшін жаңа сұраныс қажет.\n\nКіру ақауларын жою\n\nЖағдай · Әрекет\nСілтеменің мерзімі өтті · Веб-сайтта жаңа сұраныс бастаңыз\nБасқа браузер ашық · Кіру басталған қойындыға оралыңыз\nКодтар сәйкес келмейді · Растамаңыз; қайта бастаңыз\nКіру қолжетімсіз · Кейінірек қайталап көріңіз немесе қолдау қызметіне хабарласыңыз\nУақытша желі қатесі · Келесі тексеруді күтіңіз немесе кіруді қайталаңыз\n\nКіру үшін пайдаланылатын ақпарат\n\nСервер есептік жазба құру үшін расталған Telegram идентификаторын және қолжетімді профиль өрістерін алады. Жария пайдаланушы аты жалғыз өзі жеке басты дәлелдеу емес.\n\nБот сіздің Telegram құпия сөзіңізді, банк кодтарыңызды, CVV-ды, seed-фразаны немесе жеке кілттерді сұрамайды.\n\nАутентификация API\n\nКіру\n\nКөмекші, қолдау және жобаны басқару\n\nЖеке операцияларға көмек қажет болғанда, чатта менің деректеріме қолжетімділікті қосыңыз. includeAccount=true бар веб-сұраным жарамды сессияны, Origin және X-CSRF-Token-ді талап етеді; X-Kevmi-Store меншікті дүкенді немесе барлық меншікті дүкендерді таңдайды. Рұқсатсыз көмекші тек қоғамдық құжаттаманы пайдаланады. Telegram-да жіберуші анықталғаннан кейін жеке батырма қолжетімділікті қосады.\n\nread_account құралы меншікті дүкендерді, расталған төлем мәртебесі бар шот-фактураларды, оқиғаларды, өтінімдерді және маман жауаптары бар қолдау сұранымдарын оқиды. Ол 30 жазбаны және nextPage-ті қайтарады; ескі жазбалар пагинация арқылы қолжетімді. Әр жауаптағы оқулар шектеулі, сондықтан толық емес үлгі ашық көрсетілуі тиіс. API кілттері, вебхук құпиялары, карта деректері және сессиялар құралға берілмейді. Ол ақы ала алмайды, төлем жасай алмайды, қайтара алмайды немесе параметрлерді өзгерте алмайды.\n\nЖұмыс кеңістігінде немесе Telegram-да қолдау сұранымын жасау тұрақты кезекте бөлек әкімші ескертуін орналастырады. Ол /admin/tickets?ticket=<id> сілтемесімен байланысады; уақытша Telegram ақаулары қайта қайталанады. Қалпына келтіру ескертусіз ескі ашық сұранымдарды да қамтиды. Әкімшілер сұраным бетінде жауап береді; жауап пайдаланушы жұмыс кеңістігінде сақталады және қолдау хабарландыулары қосылғанда Telegram арқылы жіберіледі.\n\nБот негізгі мәзір, дүкендер, хабарландырулар, қолдау, қауіпсіздік және тіл үшін ішкі батырмаларды пайдаланады. Навигация ағымдағы хабарламаны өңдейді; қолжетімсіз ескі мәзір ауыстырылады. Төлем және қауіпсіздік хабарландырулары бір реттік навигация ретінде қарастырылмайды. Мәзір арқылы жүйеден шығу растауды қажет етеді. Айқын /logout командасы әлі де әрбір аккаунт сессиясын аяқтайды.\n\n/admin/project панелі сервер жағындағы MODERATOR_TELEGRAM_IDS рұқсат тізіміндегі Telegram ID-лерімен шектелген. Ол пайдаланушыларды, дүкендерді, операцияларды, кілтті жоюды, вебхукті өшіруді, шот-фактураны тоқтата тұруды, қабылдау бақылауын және аудит журналын қамтиды. Өзгертулер CSRF және себепті талап етеді. Панель әкімшіні шектей алмайды немесе төлемді қолмен сәтті деп жариялай алмайды. Меншіктісін шектеу сессияларды аяқтайды және API кілтіне қолжетімділікті бұғаттайды; дүкенді шектеу жаңа операцияларды тоқтатады. Тарих сақталады.\n\nҚоғамдық ұсыныс /public-offer мекенжайында және құпиялық саясаты /privacy-policy мекенжайында әрбір қосылған тілде қолжетімді. Монеталарды аты немесе тикері бойынша іздеңіз. Желі таңдағышы тек бірнеше тірі желі болғанда ғана пайда болады. Бір желі автоматты түрде таңдалады және растауда атауы қалады. Тірі шлюз қолжетімділігі таңдалатын жұптарды анықтайды; анықтамалық каталог қызметті қоспайды.\n\nКүнделікті веб-қосымша шығарылымдары үшін update.sh пайдаланыңыз: үміткерді құрастырыңыз, миграция тарихын тексеріңіз, SQLite-ті онлайн резервтеңіз, екінші контейнерді іске қосыңыз, оны тексеріңіз және Caddy-ді бірқалыпты ауыстырыңыз. Gateway, PostgreSQL және пошта қайта іске қосылмайды. Алдыңғы статикалық ресурстар ашық қойындылар үшін қолжетімді болып қалады. Жаңа миграция айқын уәкілеттікпен қарауды қажет етеді; үйлесімсіз схема өзгерісі үздіксіз орналастыру емес.\n\nҚоғамдық ұсыныс\n\nҚұпиялық саясаты",
      "readMinutes": 3
    },
    {
      "id": "settings",
      "title": "Дүкен баптаулары",
      "summary": "Параметрлер: дүкен атауын, ҚҚС ережесін және хабарландыруларды расталған тіркелгіңізге қосыңыз. Өзгерістер ағымдағы пайдаланушы үшін серверде сақталады.",
      "group": "account",
      "url": "/docs/settings",
      "tags": [
        "параметрлер",
        "дүкен",
        "ҚҚС төлеуші",
        "тақырып",
        "хабарландырулар"
      ],
      "sections": [
        {
          "id": "name",
          "title": "Дүкен атауы",
          "paragraphs": [
            "Тапсырыста клиентіңіз көруді күтетін қысқа, танымал атауды таңдаңыз. Атау бос орындарды кескеннен кейін 1–80 таңбадан тұруы керек.",
            "Көрсетілетін атау заңды мәліметтерді немесе клиенттік келісімді алмастырмайды. Құпия ақпаратты, төлем деректемелерін және басқа адамдардың жеке мәліметтерін осы өріске енгізбеңіз."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "vat",
          "title": "ҚҚС төлеуші",
          "paragraphs": [
            "Әдепкі төлеуші — клиент. ҚҚС тек карталар мен Alipay үшін қолданылады. Параметрді ауыстыру SBP немесе криптовалюта сомаларын өзгертпейді.",
            "Бар қолхаттар өздерінің сақталған шарттарын сақтайды. Қолхат жасау кезінде клиенттік ҚҚС және комиссия үлестері 0-ден 100% дейін әдепкі мәндерді алмастыра алады. Дүкен қалауы болашақ қолхаттар үшін тек әдепкі мәнді қамтамасыз етеді.",
            "Сақталған қалау шлюз мүмкіндіктерін кеңейтпейді. Ағымдағы тірі карта және Alipay арналары 100% клиенттік ҚҚС және 0% клиенттік өңдеу комиссиясын талап етеді; басқа сақталған бөлулер есептеулер болып қалады."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Мән",
              "Жаңа қолхат үшін ереже"
            ],
            "rows": [
              [
                "тұтынушы",
                "ҚҚС клиенттің базалық бағасына қосылады"
              ],
              [
                "сатушы",
                "Сатушы ҚҚС-ты базалық бағадан жабады"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "notifications",
          "title": "Telegram хабарландырулары",
          "paragraphs": [
            "Төлем, төлемді шығару, қолдау және қауіпсіздік санаттарын таңдаңыз. Санатты таңдау хабарландыруларды басқарады; ол төлем арнасын белсендірмейді немесе қаржылық оқиғаларды жасамайды.",
            "Сынақ хабарламасы байланыстырылған жеке чатқа жеткізілуін тексереді. Оның мәртебесі хабарландыру орталығында және GET /api/notifications ішінде көрсетіледі. Кезекте тұрған хабарлама әлі жеткізілмеген; Telegram-ды да тексеріңіз."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Хабарландыру нұсқаулығы",
              "href": "/docs/notifications"
            }
          ]
        },
        {
          "id": "saving",
          "title": "Сақтау және қателер",
          "paragraphs": [
            "Нысан аяқталған сақтауды растайды. Желі істен шықса, енгізген деректеріңіз қайта әрекеттену үшін қолжетімді болады; тек Сақтау түймесін басу өзгерістің сақталғанын дәлелдемейді.",
            "Сеанс мерзімі аяқталғанда қайта кіріңіз. Сервер тіркелгіні сеанстан анықтайды және браузерден басқа дүкен иесінің идентификаторын қабылдамайды."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "local",
          "title": "Тақырып және демо деректер",
          "paragraphs": [
            "Көрсету тақырыбы құрылғыда жергілікті түрде сақталады. Демо жұмыс кеңістігі бөлек браузер деректерін пайдаланады және сервер тіркелгісін өзгертпейді.",
            "Демоны қалпына келтіру сол браузерде тек сынақ жазбаларын жояды. Демо экспорты банк үзіндісі немесе төлем дәлелі емес."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "stores-usd",
          "title": "Бірнеше дүкен және бір АҚШ доллары базалық бағасы",
          "paragraphs": [
            "Жиынтық аналитика мен операциялар үшін Барлық дүкендерді таңдаңыз немесе жеке жазбалары үшін дүкенді таңдаңыз. Әр дүкеннің жеке storeId, атауы, ҚҚС әдепкі мәні, шоттары, API кілттері, вебхук нүктелері, оқиғалар тарихы және веб-сайт қосымшасы бар. Хабарландырулар мен қолдау билеттері тіркелгіге тиесілі. Тіркелгі 100 дүкенге дейін құра алады. Бар жазбалар оның бірінші дүкенінде қалады.",
            "Жаңа жұмыс кеңістігі шоттары pricingMode=\"universal\" және АҚШ доллары базалық бағасын пайдаланады. Any карта, alipay, sbp және криптоны қамтиды; сатушы ішкі жиынтықты таңдай алады. Карталар мен Alipay АҚШ долларымен есептейді. SBP Ресей Банкінің АҚШ доллары/рубль анықтамалық бағамын пайдаланып рубльмен есептейді. Крипто айқын шот ережесі бойынша USDT-мен есептейді: 1 АҚШ доллары = 1 USDT. Бұл шот айырбастау ережесі, нарықтық USDT котировкасы емес. Шлюз таңдалған монетаның бағамын, нақты аударым сомасын және нұсқауларды аударымға дейін береді.",
            "Анықтамалық бағам және екі сома да құру кезінде мұздатылады. Рубльге айырбастауды қамтитын шоттар 24 сағат ішінде мерзімі аяқталады. Егер анықтамалық бағамды алу мүмкін болмаса, құру FX_UNAVAILABLE қатесімен сәтсіз аяқталады; ойдан шығарылған немесе ескірген қосалқы бағам пайдаланылмайды. Меншік иесінің жауабындағы amountMinor және quotes АҚШ доллары бухгалтерлік валютасын пайдаланады. quotes[method].settlement туынды валютадағы төлем котировкасын қамтиды. Қоғамдық төлем беті таңдалған төлем валютасын currency өрісінде, бастапқы бағаны baseAmountMinor/baseCurrency өрістерінде және анықтамалық бағамды fx өрісінде көрсетеді. Төлем жіберілгеннен кейін оның әдісін өзгерту мүмкін емес; шотта бір шлюз операциясы болады.",
            "Мақсатты дүкен ішінде API кілтін жасаңыз және серверіңізден Authorization: Bearer <key> жіберіңіз. Оның дүкенге байланыстыруы өзгермейді; X-Kevmi-Store оған басқа дүкенге қолжетімділік бере алмайды. Браузер сеанстары X-Kevmi-Store: <storeId> таңдайды; оны алып тастағанда бірінші дүкен таңдалады. all мәні тек GET /api/account/dashboard және GET /api/payment-links сұраулары арқылы қабылданады. Өзгертулер таңдалған дүкенді, Origin және X-CSRF-Token талап етеді. Тіркелгі идентификаторлары мен дүкен идентификаторлары әртүрлі идентификаторлар болып табылады.",
            "Үйлесімділік үшін pricingMode=\"universal\" жоқ API сұраулары қолма-қол баға белгілеуді және бастапқы валюта шектеулерін сақтайды. Бар шоттар ешқашан қайта есептелмейді. Аналитикадағы расталған түбіртектер тексерілген төлемдерден сақталған шот шығындарын шегергендегі соманы көрсетеді; олар шығарылатын баланс емес. Мұрагерлік шот валюталары бөлек қалады, ал төлемдер қолдау қызметімен келісіледі. Тапсырысты тек payment.fulfillmentReady=true және payment.status=\"succeeded\" сервер API, оқиғалар тарихы немесе қол қойылған вебхук арқылы тексергеннен кейін орындаңыз."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "assistant-admin-v16",
          "title": "Көмекші, қолдау және жобаны басқару",
          "paragraphs": [
            "Жеке операцияларға көмек қажет болғанда, чатта менің деректеріме қолжетімділікті қосыңыз. includeAccount=true бар веб-сұраным жарамды сессияны, Origin және X-CSRF-Token-ді талап етеді; X-Kevmi-Store меншікті дүкенді немесе барлық меншікті дүкендерді таңдайды. Рұқсатсыз көмекші тек қоғамдық құжаттаманы пайдаланады. Telegram-да жіберуші анықталғаннан кейін жеке батырма қолжетімділікті қосады.",
            "read_account құралы меншікті дүкендерді, расталған төлем мәртебесі бар шот-фактураларды, оқиғаларды, өтінімдерді және маман жауаптары бар қолдау сұранымдарын оқиды. Ол 30 жазбаны және nextPage-ті қайтарады; ескі жазбалар пагинация арқылы қолжетімді. Әр жауаптағы оқулар шектеулі, сондықтан толық емес үлгі ашық көрсетілуі тиіс. API кілттері, вебхук құпиялары, карта деректері және сессиялар құралға берілмейді. Ол ақы ала алмайды, төлем жасай алмайды, қайтара алмайды немесе параметрлерді өзгерте алмайды.",
            "Жұмыс кеңістігінде немесе Telegram-да қолдау сұранымын жасау тұрақты кезекте бөлек әкімші ескертуін орналастырады. Ол /admin/tickets?ticket=<id> сілтемесімен байланысады; уақытша Telegram ақаулары қайта қайталанады. Қалпына келтіру ескертусіз ескі ашық сұранымдарды да қамтиды. Әкімшілер сұраным бетінде жауап береді; жауап пайдаланушы жұмыс кеңістігінде сақталады және қолдау хабарландыулары қосылғанда Telegram арқылы жіберіледі.",
            "Бот негізгі мәзір, дүкендер, хабарландырулар, қолдау, қауіпсіздік және тіл үшін ішкі батырмаларды пайдаланады. Навигация ағымдағы хабарламаны өңдейді; қолжетімсіз ескі мәзір ауыстырылады. Төлем және қауіпсіздік хабарландырулары бір реттік навигация ретінде қарастырылмайды. Мәзір арқылы жүйеден шығу растауды қажет етеді. Айқын /logout командасы әлі де әрбір аккаунт сессиясын аяқтайды.",
            "/admin/project панелі сервер жағындағы MODERATOR_TELEGRAM_IDS рұқсат тізіміндегі Telegram ID-лерімен шектелген. Ол пайдаланушыларды, дүкендерді, операцияларды, кілтті жоюды, вебхукті өшіруді, шот-фактураны тоқтата тұруды, қабылдау бақылауын және аудит журналын қамтиды. Өзгертулер CSRF және себепті талап етеді. Панель әкімшіні шектей алмайды немесе төлемді қолмен сәтті деп жариялай алмайды. Меншіктісін шектеу сессияларды аяқтайды және API кілтіне қолжетімділікті бұғаттайды; дүкенді шектеу жаңа операцияларды тоқтатады. Тарих сақталады.",
            "Қоғамдық ұсыныс /public-offer мекенжайында және құпиялық саясаты /privacy-policy мекенжайында әрбір қосылған тілде қолжетімді. Монеталарды аты немесе тикері бойынша іздеңіз. Желі таңдағышы тек бірнеше тірі желі болғанда ғана пайда болады. Бір желі автоматты түрде таңдалады және растауда атауы қалады. Тірі шлюз қолжетімділігі таңдалатын жұптарды анықтайды; анықтамалық каталог қызметті қоспайды.",
            "Күнделікті веб-қосымша шығарылымдары үшін update.sh пайдаланыңыз: үміткерді құрастырыңыз, миграция тарихын тексеріңіз, SQLite-ті онлайн резервтеңіз, екінші контейнерді іске қосыңыз, оны тексеріңіз және Caddy-ді бірқалыпты ауыстырыңыз. Gateway, PostgreSQL және пошта қайта іске қосылмайды. Алдыңғы статикалық ресурстар ашық қойындылар үшін қолжетімді болып қалады. Жаңа миграция айқын уәкілеттікпен қарауды қажет етеді; үйлесімсіз схема өзгерісі үздіксіз орналастыру емес."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Қоғамдық ұсыныс",
              "href": "/public-offer"
            },
            {
              "label": "Құпиялық саясаты",
              "href": "/privacy-policy"
            }
          ]
        }
      ],
      "body": "Дүкен атауы\n\nТапсырыста клиентіңіз көруді күтетін қысқа, танымал атауды таңдаңыз. Атау бос орындарды кескеннен кейін 1–80 таңбадан тұруы керек.\n\nКөрсетілетін атау заңды мәліметтерді немесе клиенттік келісімді алмастырмайды. Құпия ақпаратты, төлем деректемелерін және басқа адамдардың жеке мәліметтерін осы өріске енгізбеңіз.\n\nҚҚС төлеуші\n\nӘдепкі төлеуші — клиент. ҚҚС тек карталар мен Alipay үшін қолданылады. Параметрді ауыстыру SBP немесе криптовалюта сомаларын өзгертпейді.\n\nБар қолхаттар өздерінің сақталған шарттарын сақтайды. Қолхат жасау кезінде клиенттік ҚҚС және комиссия үлестері 0-ден 100% дейін әдепкі мәндерді алмастыра алады. Дүкен қалауы болашақ қолхаттар үшін тек әдепкі мәнді қамтамасыз етеді.\n\nСақталған қалау шлюз мүмкіндіктерін кеңейтпейді. Ағымдағы тірі карта және Alipay арналары 100% клиенттік ҚҚС және 0% клиенттік өңдеу комиссиясын талап етеді; басқа сақталған бөлулер есептеулер болып қалады.\n\nМән · Жаңа қолхат үшін ереже\nтұтынушы · ҚҚС клиенттің базалық бағасына қосылады\nсатушы · Сатушы ҚҚС-ты базалық бағадан жабады\n\nTelegram хабарландырулары\n\nТөлем, төлемді шығару, қолдау және қауіпсіздік санаттарын таңдаңыз. Санатты таңдау хабарландыруларды басқарады; ол төлем арнасын белсендірмейді немесе қаржылық оқиғаларды жасамайды.\n\nСынақ хабарламасы байланыстырылған жеке чатқа жеткізілуін тексереді. Оның мәртебесі хабарландыру орталығында және GET /api/notifications ішінде көрсетіледі. Кезекте тұрған хабарлама әлі жеткізілмеген; Telegram-ды да тексеріңіз.\n\nХабарландыру нұсқаулығы\n\nСақтау және қателер\n\nНысан аяқталған сақтауды растайды. Желі істен шықса, енгізген деректеріңіз қайта әрекеттену үшін қолжетімді болады; тек Сақтау түймесін басу өзгерістің сақталғанын дәлелдемейді.\n\nСеанс мерзімі аяқталғанда қайта кіріңіз. Сервер тіркелгіні сеанстан анықтайды және браузерден басқа дүкен иесінің идентификаторын қабылдамайды.\n\nТақырып және демо деректер\n\nКөрсету тақырыбы құрылғыда жергілікті түрде сақталады. Демо жұмыс кеңістігі бөлек браузер деректерін пайдаланады және сервер тіркелгісін өзгертпейді.\n\nДемоны қалпына келтіру сол браузерде тек сынақ жазбаларын жояды. Демо экспорты банк үзіндісі немесе төлем дәлелі емес.\n\nБірнеше дүкен және бір АҚШ доллары базалық бағасы\n\nЖиынтық аналитика мен операциялар үшін Барлық дүкендерді таңдаңыз немесе жеке жазбалары үшін дүкенді таңдаңыз. Әр дүкеннің жеке storeId, атауы, ҚҚС әдепкі мәні, шоттары, API кілттері, вебхук нүктелері, оқиғалар тарихы және веб-сайт қосымшасы бар. Хабарландырулар мен қолдау билеттері тіркелгіге тиесілі. Тіркелгі 100 дүкенге дейін құра алады. Бар жазбалар оның бірінші дүкенінде қалады.\n\nЖаңа жұмыс кеңістігі шоттары pricingMode=\"universal\" және АҚШ доллары базалық бағасын пайдаланады. Any карта, alipay, sbp және криптоны қамтиды; сатушы ішкі жиынтықты таңдай алады. Карталар мен Alipay АҚШ долларымен есептейді. SBP Ресей Банкінің АҚШ доллары/рубль анықтамалық бағамын пайдаланып рубльмен есептейді. Крипто айқын шот ережесі бойынша USDT-мен есептейді: 1 АҚШ доллары = 1 USDT. Бұл шот айырбастау ережесі, нарықтық USDT котировкасы емес. Шлюз таңдалған монетаның бағамын, нақты аударым сомасын және нұсқауларды аударымға дейін береді.\n\nАнықтамалық бағам және екі сома да құру кезінде мұздатылады. Рубльге айырбастауды қамтитын шоттар 24 сағат ішінде мерзімі аяқталады. Егер анықтамалық бағамды алу мүмкін болмаса, құру FX_UNAVAILABLE қатесімен сәтсіз аяқталады; ойдан шығарылған немесе ескірген қосалқы бағам пайдаланылмайды. Меншік иесінің жауабындағы amountMinor және quotes АҚШ доллары бухгалтерлік валютасын пайдаланады. quotes[method].settlement туынды валютадағы төлем котировкасын қамтиды. Қоғамдық төлем беті таңдалған төлем валютасын currency өрісінде, бастапқы бағаны baseAmountMinor/baseCurrency өрістерінде және анықтамалық бағамды fx өрісінде көрсетеді. Төлем жіберілгеннен кейін оның әдісін өзгерту мүмкін емес; шотта бір шлюз операциясы болады.\n\nМақсатты дүкен ішінде API кілтін жасаңыз және серверіңізден Authorization: Bearer <key> жіберіңіз. Оның дүкенге байланыстыруы өзгермейді; X-Kevmi-Store оған басқа дүкенге қолжетімділік бере алмайды. Браузер сеанстары X-Kevmi-Store: <storeId> таңдайды; оны алып тастағанда бірінші дүкен таңдалады. all мәні тек GET /api/account/dashboard және GET /api/payment-links сұраулары арқылы қабылданады. Өзгертулер таңдалған дүкенді, Origin және X-CSRF-Token талап етеді. Тіркелгі идентификаторлары мен дүкен идентификаторлары әртүрлі идентификаторлар болып табылады.\n\nҮйлесімділік үшін pricingMode=\"universal\" жоқ API сұраулары қолма-қол баға белгілеуді және бастапқы валюта шектеулерін сақтайды. Бар шоттар ешқашан қайта есептелмейді. Аналитикадағы расталған түбіртектер тексерілген төлемдерден сақталған шот шығындарын шегергендегі соманы көрсетеді; олар шығарылатын баланс емес. Мұрагерлік шот валюталары бөлек қалады, ал төлемдер қолдау қызметімен келісіледі. Тапсырысты тек payment.fulfillmentReady=true және payment.status=\"succeeded\" сервер API, оқиғалар тарихы немесе қол қойылған вебхук арқылы тексергеннен кейін орындаңыз.\n\nКөмекші, қолдау және жобаны басқару\n\nЖеке операцияларға көмек қажет болғанда, чатта менің деректеріме қолжетімділікті қосыңыз. includeAccount=true бар веб-сұраным жарамды сессияны, Origin және X-CSRF-Token-ді талап етеді; X-Kevmi-Store меншікті дүкенді немесе барлық меншікті дүкендерді таңдайды. Рұқсатсыз көмекші тек қоғамдық құжаттаманы пайдаланады. Telegram-да жіберуші анықталғаннан кейін жеке батырма қолжетімділікті қосады.\n\nread_account құралы меншікті дүкендерді, расталған төлем мәртебесі бар шот-фактураларды, оқиғаларды, өтінімдерді және маман жауаптары бар қолдау сұранымдарын оқиды. Ол 30 жазбаны және nextPage-ті қайтарады; ескі жазбалар пагинация арқылы қолжетімді. Әр жауаптағы оқулар шектеулі, сондықтан толық емес үлгі ашық көрсетілуі тиіс. API кілттері, вебхук құпиялары, карта деректері және сессиялар құралға берілмейді. Ол ақы ала алмайды, төлем жасай алмайды, қайтара алмайды немесе параметрлерді өзгерте алмайды.\n\nЖұмыс кеңістігінде немесе Telegram-да қолдау сұранымын жасау тұрақты кезекте бөлек әкімші ескертуін орналастырады. Ол /admin/tickets?ticket=<id> сілтемесімен байланысады; уақытша Telegram ақаулары қайта қайталанады. Қалпына келтіру ескертусіз ескі ашық сұранымдарды да қамтиды. Әкімшілер сұраным бетінде жауап береді; жауап пайдаланушы жұмыс кеңістігінде сақталады және қолдау хабарландыулары қосылғанда Telegram арқылы жіберіледі.\n\nБот негізгі мәзір, дүкендер, хабарландырулар, қолдау, қауіпсіздік және тіл үшін ішкі батырмаларды пайдаланады. Навигация ағымдағы хабарламаны өңдейді; қолжетімсіз ескі мәзір ауыстырылады. Төлем және қауіпсіздік хабарландырулары бір реттік навигация ретінде қарастырылмайды. Мәзір арқылы жүйеден шығу растауды қажет етеді. Айқын /logout командасы әлі де әрбір аккаунт сессиясын аяқтайды.\n\n/admin/project панелі сервер жағындағы MODERATOR_TELEGRAM_IDS рұқсат тізіміндегі Telegram ID-лерімен шектелген. Ол пайдаланушыларды, дүкендерді, операцияларды, кілтті жоюды, вебхукті өшіруді, шот-фактураны тоқтата тұруды, қабылдау бақылауын және аудит журналын қамтиды. Өзгертулер CSRF және себепті талап етеді. Панель әкімшіні шектей алмайды немесе төлемді қолмен сәтті деп жариялай алмайды. Меншіктісін шектеу сессияларды аяқтайды және API кілтіне қолжетімділікті бұғаттайды; дүкенді шектеу жаңа операцияларды тоқтатады. Тарих сақталады.\n\nҚоғамдық ұсыныс /public-offer мекенжайында және құпиялық саясаты /privacy-policy мекенжайында әрбір қосылған тілде қолжетімді. Монеталарды аты немесе тикері бойынша іздеңіз. Желі таңдағышы тек бірнеше тірі желі болғанда ғана пайда болады. Бір желі автоматты түрде таңдалады және растауда атауы қалады. Тірі шлюз қолжетімділігі таңдалатын жұптарды анықтайды; анықтамалық каталог қызметті қоспайды.\n\nКүнделікті веб-қосымша шығарылымдары үшін update.sh пайдаланыңыз: үміткерді құрастырыңыз, миграция тарихын тексеріңіз, SQLite-ті онлайн резервтеңіз, екінші контейнерді іске қосыңыз, оны тексеріңіз және Caddy-ді бірқалыпты ауыстырыңыз. Gateway, PostgreSQL және пошта қайта іске қосылмайды. Алдыңғы статикалық ресурстар ашық қойындылар үшін қолжетімді болып қалады. Жаңа миграция айқын уәкілеттікпен қарауды қажет етеді; үйлесімсіз схема өзгерісі үздіксіз орналастыру емес.\n\nҚоғамдық ұсыныс\n\nҚұпиялық саясаты",
      "readMinutes": 3
    },
    {
      "id": "notifications",
      "title": "Веб-сайт және Telegram хабарландырулары",
      "summary": "Тіркелгі оқиғалары жоғарғы жолақтағы қоңырау белгішесінің астында пайда болады. Хабарландыруларды оқыңыз, Telegram жеткізілуін тексеріңіз және жұмыс кеңістігіңіздің тиісті бөлігін ашыңыз.",
      "group": "account",
      "url": "/docs/notifications",
      "tags": [
        "хабарландырулар",
        "Telegram",
        "қоңырау",
        "оқу",
        "жеткізілу"
      ],
      "sections": [
        {
          "id": "inbox",
          "title": "Хабарландыру орталығы",
          "paragraphs": [
            "Белгіше оқылмаған тіркелгі оқиғаларын санайды. Хабарламалар күні бойынша топтастырылады; Көбірек жүктеу ескі жазбаларды алады. Келушілерден кіру сұралады.",
            "Оқылған күй серверде сақталады. Көрінетін беттер автоматты түрде жаңартылады және ашық қойындылар оқылған белгілерді синхрондайды. Соңғы көрсетілген хабарламадан жаңа оқиғалар ескілерімен бірге оқылған деп белгіленбейді."
          ],
          "bullets": [],
          "steps": [
            "Жоғарғы жолақтағы қоңырау белгішесін таңдаңыз.",
            "Барлық оқиғаларды немесе тек оқылмағандарды таңдаңыз.",
            "Тиісті бетті ашыңыз немесе хабарламаны оқылған деп белгілеңіз.",
            "Қазірдің өзінде жүктелген оқиғалар үшін Барлығын оқылған деп белгілеу қолданыңыз."
          ],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "types",
          "title": "Оқиға санаттары",
          "paragraphs": [
            "Қолдау және қауіпсіздік жаңа тіркелгі үшін қосылған; төлем санаттарын пайдаланушы таңдайды. Орталық қосылған санаттар үшін сақталған оқиғаларды көрсетеді. Браузер демо оқиғалары нақты қаржы хабарландырулары емес."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Санат",
              "Мазмұны"
            ],
            "rows": [
              [
                "Төлемдер",
                "Расталған төлем оқиғалары"
              ],
              [
                "Төлемді шығарулар",
                "Расталған төлемді шығару оқиғалары"
              ],
              [
                "Қолдау",
                "Қолдау сұраныстары және өтінім кезеңінің жаңартулары"
              ],
              [
                "Қауіпсіздік",
                "Жаңа расталған кіру"
              ],
              [
                "Сынақ",
                "Telegram-ға жеткізілу тексеруі"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "setup",
          "title": "Жеткізілуді конфигурациялау",
          "paragraphs": [
            "Сынақтар бір тіркелгі үшін сағатына үшеумен шектеледі. Сынақ балансты өзгертпейді немесе төлем жасамайды. Хабарламаны кезекке қою жеткізілуді дәлелдемейді."
          ],
          "bullets": [],
          "steps": [
            "Telegram арқылы кіріңіз және Тіркелгі → Хабарландырулар ашыңыз.",
            "Қажетті санаттарды қосыңыз және сақтаңыз.",
            "Сынақ жеткізілуін таңдаңыз.",
            "Орталық мәртебесін және боттың жеке чатын тексеріңіз."
          ],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Хабарландыру параметрлері",
              "href": "/account#notifications"
            }
          ]
        },
        {
          "id": "statuses",
          "title": "Жеткізу және оқу күйі бөлек",
          "paragraphs": [
            "Жеткізу Telegram қолжетімділігіне және пайдаланушы рұқсаттарына байланысты. Жоғалған жауап қайталанатын хабарламаға әкелуі мүмкін, бірақ қайталанатын қаржы операциясына емес.",
            "Жеткізу сәтсіз болса, боттың қолжетімді екенін және бұғатталмағанын тексеріңіз. Қолданбаның хабарландыруларын қайта жіберу де фондық жұмыстарда орындалады; қызметпен өзара әрекеттесу басқа кезектегі жеткізулерді іске қосуы мүмкін. Ағымдағы күйді хабарландыру орталығынан тексеріңіз."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Мәртебе",
              "Мағынасы"
            ],
            "rows": [
              [
                "күтілуде",
                "Өңдеу үшін кезекте тұр"
              ],
              [
                "жіберілуде",
                "Сервер жеткізуге тырысуда"
              ],
              [
                "жіберілді",
                "Telegram жіберуді растады"
              ],
              [
                "сәтсіз",
                "Жеткізу сәтсіз аяқталды"
              ]
            ]
          },
          "code": null,
          "note": "Хабарламаның жеткізу күйі Telegram-ға қатысты. Веб-сайтта хабарландыруды оқылған деп белгілеу оның Telegram-да оқылғанын білдірмейді және жеткізуді өзгертпейді.",
          "links": []
        },
        {
          "id": "feedback",
          "title": "Әрекеттерді растау",
          "paragraphs": [
            "Веб-сайт сақтау, жаңа сілтеме немесе ұқсас әрекет аяқталғаннан кейін қысқа хабарландыру көрсетеді. Ол автоматты түрде жабылады және меңзермен тұрғанда немесе фокус болғанда ұзағырақ тұрады.",
            "Бұл интерфейс әрекетін растайды. Ол расталған қаржы күйін алмастырмайды немесе төлем жазбасын жасамайды. Өріс қателері форманың жанында қалады."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "api",
          "title": "API арқылы оқу және белгілеу",
          "paragraphs": [
            "GET /api/notifications 30-ға дейін аккаунт оқиғасын, unreadCount және nextCursor мәндерін қайтарады. Келесі бетті жүктеу үшін nextCursor мәнін өзгертпей cursor ретінде жіберіңіз. unread=1 оқылмаған жазбаларды таңдайды. Сұрыптау реті createdAt кемуі бойынша, содан кейін id кемуі бойынша.",
            "PATCH /api/notifications/read 1–100 аралығындағы id мәндерін немесе all:true және before параметрін соңғы көрсетілген оқиғаның миллисекундтық уақыт белгісімен қабылдайды. Session, Origin және X-CSRF-Token қажет. Клиент жазба иесін орната алмайды.",
            "Жауапта updated, readAt және unreadCount болады. Қазірдің өзінде оқылған оқиғаны оқу оның бастапқы readAt мәнін сақтайды. Оқиғаларды тізімдеу оларды оқылған деп белгілемейді; Telegram күйі және sentAt өзгеріссіз қалады."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "JSON · mark selected",
            "code": "{\n  \"ids\": [\"ntf_46d94180-492e-4c28-b15f-a70049161a63\"]\n}"
          },
          "note": "",
          "links": [
            {
              "label": "API анықтамасы",
              "href": "/docs/api-reference"
            }
          ]
        },
        {
          "id": "commands",
          "title": "Бот командалары",
          "paragraphs": [],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Команда",
              "Әрекет"
            ],
            "rows": [
              [
                "/notifications",
                "Санаттарды басқару"
              ],
              [
                "/stop",
                "Хабарландыруларды өшіру"
              ],
              [
                "/help",
                "Қолжетімді командаларды тізімдеу"
              ],
              [
                "/logout",
                "Барлық аккаунт сеанстарын аяқтау"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "availability",
          "title": "Мүмкіндіктердің қолжетімділігі",
          "paragraphs": [
            "Хабарландыру орталығы жүйеге кіруді талап етеді. Telegram хабарламалары тексерілген жеке бот чатына жіберіледі. Жеткізу қолжетімсіз болса, бот рұқсаттарын және хабарлама күйін тексеріңіз.",
            "Төлем немесе төлемді шығару хабарландыруы расталған сервер оқиғасына негізделген. Санатты таңдау жеткізу параметрлерін өзгертеді, транзакция қолжетімділігін емес."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "assistant-admin-v16",
          "title": "Көмекші, қолдау және жобаны басқару",
          "paragraphs": [
            "Жеке операцияларға көмек қажет болғанда, чатта менің деректеріме қолжетімділікті қосыңыз. includeAccount=true бар веб-сұраным жарамды сессияны, Origin және X-CSRF-Token-ді талап етеді; X-Kevmi-Store меншікті дүкенді немесе барлық меншікті дүкендерді таңдайды. Рұқсатсыз көмекші тек қоғамдық құжаттаманы пайдаланады. Telegram-да жіберуші анықталғаннан кейін жеке батырма қолжетімділікті қосады.",
            "read_account құралы меншікті дүкендерді, расталған төлем мәртебесі бар шот-фактураларды, оқиғаларды, өтінімдерді және маман жауаптары бар қолдау сұранымдарын оқиды. Ол 30 жазбаны және nextPage-ті қайтарады; ескі жазбалар пагинация арқылы қолжетімді. Әр жауаптағы оқулар шектеулі, сондықтан толық емес үлгі ашық көрсетілуі тиіс. API кілттері, вебхук құпиялары, карта деректері және сессиялар құралға берілмейді. Ол ақы ала алмайды, төлем жасай алмайды, қайтара алмайды немесе параметрлерді өзгерте алмайды.",
            "Жұмыс кеңістігінде немесе Telegram-да қолдау сұранымын жасау тұрақты кезекте бөлек әкімші ескертуін орналастырады. Ол /admin/tickets?ticket=<id> сілтемесімен байланысады; уақытша Telegram ақаулары қайта қайталанады. Қалпына келтіру ескертусіз ескі ашық сұранымдарды да қамтиды. Әкімшілер сұраным бетінде жауап береді; жауап пайдаланушы жұмыс кеңістігінде сақталады және қолдау хабарландыулары қосылғанда Telegram арқылы жіберіледі.",
            "Бот негізгі мәзір, дүкендер, хабарландырулар, қолдау, қауіпсіздік және тіл үшін ішкі батырмаларды пайдаланады. Навигация ағымдағы хабарламаны өңдейді; қолжетімсіз ескі мәзір ауыстырылады. Төлем және қауіпсіздік хабарландырулары бір реттік навигация ретінде қарастырылмайды. Мәзір арқылы жүйеден шығу растауды қажет етеді. Айқын /logout командасы әлі де әрбір аккаунт сессиясын аяқтайды.",
            "/admin/project панелі сервер жағындағы MODERATOR_TELEGRAM_IDS рұқсат тізіміндегі Telegram ID-лерімен шектелген. Ол пайдаланушыларды, дүкендерді, операцияларды, кілтті жоюды, вебхукті өшіруді, шот-фактураны тоқтата тұруды, қабылдау бақылауын және аудит журналын қамтиды. Өзгертулер CSRF және себепті талап етеді. Панель әкімшіні шектей алмайды немесе төлемді қолмен сәтті деп жариялай алмайды. Меншіктісін шектеу сессияларды аяқтайды және API кілтіне қолжетімділікті бұғаттайды; дүкенді шектеу жаңа операцияларды тоқтатады. Тарих сақталады.",
            "Қоғамдық ұсыныс /public-offer мекенжайында және құпиялық саясаты /privacy-policy мекенжайында әрбір қосылған тілде қолжетімді. Монеталарды аты немесе тикері бойынша іздеңіз. Желі таңдағышы тек бірнеше тірі желі болғанда ғана пайда болады. Бір желі автоматты түрде таңдалады және растауда атауы қалады. Тірі шлюз қолжетімділігі таңдалатын жұптарды анықтайды; анықтамалық каталог қызметті қоспайды.",
            "Күнделікті веб-қосымша шығарылымдары үшін update.sh пайдаланыңыз: үміткерді құрастырыңыз, миграция тарихын тексеріңіз, SQLite-ті онлайн резервтеңіз, екінші контейнерді іске қосыңыз, оны тексеріңіз және Caddy-ді бірқалыпты ауыстырыңыз. Gateway, PostgreSQL және пошта қайта іске қосылмайды. Алдыңғы статикалық ресурстар ашық қойындылар үшін қолжетімді болып қалады. Жаңа миграция айқын уәкілеттікпен қарауды қажет етеді; үйлесімсіз схема өзгерісі үздіксіз орналастыру емес."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Қоғамдық ұсыныс",
              "href": "/public-offer"
            },
            {
              "label": "Құпиялық саясаты",
              "href": "/privacy-policy"
            }
          ]
        }
      ],
      "body": "Хабарландыру орталығы\n\nБелгіше оқылмаған тіркелгі оқиғаларын санайды. Хабарламалар күні бойынша топтастырылады; Көбірек жүктеу ескі жазбаларды алады. Келушілерден кіру сұралады.\n\nОқылған күй серверде сақталады. Көрінетін беттер автоматты түрде жаңартылады және ашық қойындылар оқылған белгілерді синхрондайды. Соңғы көрсетілген хабарламадан жаңа оқиғалар ескілерімен бірге оқылған деп белгіленбейді.\n\nЖоғарғы жолақтағы қоңырау белгішесін таңдаңыз.\n\nБарлық оқиғаларды немесе тек оқылмағандарды таңдаңыз.\n\nТиісті бетті ашыңыз немесе хабарламаны оқылған деп белгілеңіз.\n\nҚазірдің өзінде жүктелген оқиғалар үшін Барлығын оқылған деп белгілеу қолданыңыз.\n\nОқиға санаттары\n\nҚолдау және қауіпсіздік жаңа тіркелгі үшін қосылған; төлем санаттарын пайдаланушы таңдайды. Орталық қосылған санаттар үшін сақталған оқиғаларды көрсетеді. Браузер демо оқиғалары нақты қаржы хабарландырулары емес.\n\nСанат · Мазмұны\nТөлемдер · Расталған төлем оқиғалары\nТөлемді шығарулар · Расталған төлемді шығару оқиғалары\nҚолдау · Қолдау сұраныстары және өтінім кезеңінің жаңартулары\nҚауіпсіздік · Жаңа расталған кіру\nСынақ · Telegram-ға жеткізілу тексеруі\n\nЖеткізілуді конфигурациялау\n\nСынақтар бір тіркелгі үшін сағатына үшеумен шектеледі. Сынақ балансты өзгертпейді немесе төлем жасамайды. Хабарламаны кезекке қою жеткізілуді дәлелдемейді.\n\nTelegram арқылы кіріңіз және Тіркелгі → Хабарландырулар ашыңыз.\n\nҚажетті санаттарды қосыңыз және сақтаңыз.\n\nСынақ жеткізілуін таңдаңыз.\n\nОрталық мәртебесін және боттың жеке чатын тексеріңіз.\n\nХабарландыру параметрлері\n\nЖеткізу және оқу күйі бөлек\n\nЖеткізу Telegram қолжетімділігіне және пайдаланушы рұқсаттарына байланысты. Жоғалған жауап қайталанатын хабарламаға әкелуі мүмкін, бірақ қайталанатын қаржы операциясына емес.\n\nЖеткізу сәтсіз болса, боттың қолжетімді екенін және бұғатталмағанын тексеріңіз. Қолданбаның хабарландыруларын қайта жіберу де фондық жұмыстарда орындалады; қызметпен өзара әрекеттесу басқа кезектегі жеткізулерді іске қосуы мүмкін. Ағымдағы күйді хабарландыру орталығынан тексеріңіз.\n\nМәртебе · Мағынасы\nкүтілуде · Өңдеу үшін кезекте тұр\nжіберілуде · Сервер жеткізуге тырысуда\nжіберілді · Telegram жіберуді растады\nсәтсіз · Жеткізу сәтсіз аяқталды\n\nХабарламаның жеткізу күйі Telegram-ға қатысты. Веб-сайтта хабарландыруды оқылған деп белгілеу оның Telegram-да оқылғанын білдірмейді және жеткізуді өзгертпейді.\n\nӘрекеттерді растау\n\nВеб-сайт сақтау, жаңа сілтеме немесе ұқсас әрекет аяқталғаннан кейін қысқа хабарландыру көрсетеді. Ол автоматты түрде жабылады және меңзермен тұрғанда немесе фокус болғанда ұзағырақ тұрады.\n\nБұл интерфейс әрекетін растайды. Ол расталған қаржы күйін алмастырмайды немесе төлем жазбасын жасамайды. Өріс қателері форманың жанында қалады.\n\nAPI арқылы оқу және белгілеу\n\nGET /api/notifications 30-ға дейін аккаунт оқиғасын, unreadCount және nextCursor мәндерін қайтарады. Келесі бетті жүктеу үшін nextCursor мәнін өзгертпей cursor ретінде жіберіңіз. unread=1 оқылмаған жазбаларды таңдайды. Сұрыптау реті createdAt кемуі бойынша, содан кейін id кемуі бойынша.\n\nPATCH /api/notifications/read 1–100 аралығындағы id мәндерін немесе all:true және before параметрін соңғы көрсетілген оқиғаның миллисекундтық уақыт белгісімен қабылдайды. Session, Origin және X-CSRF-Token қажет. Клиент жазба иесін орната алмайды.\n\nЖауапта updated, readAt және unreadCount болады. Қазірдің өзінде оқылған оқиғаны оқу оның бастапқы readAt мәнін сақтайды. Оқиғаларды тізімдеу оларды оқылған деп белгілемейді; Telegram күйі және sentAt өзгеріссіз қалады.\n\n{\n  \"ids\": [\"ntf_46d94180-492e-4c28-b15f-a70049161a63\"]\n}\n\nAPI анықтамасы\n\nБот командалары\n\nКоманда · Әрекет\n/notifications · Санаттарды басқару\n/stop · Хабарландыруларды өшіру\n/help · Қолжетімді командаларды тізімдеу\n/logout · Барлық аккаунт сеанстарын аяқтау\n\nМүмкіндіктердің қолжетімділігі\n\nХабарландыру орталығы жүйеге кіруді талап етеді. Telegram хабарламалары тексерілген жеке бот чатына жіберіледі. Жеткізу қолжетімсіз болса, бот рұқсаттарын және хабарлама күйін тексеріңіз.\n\nТөлем немесе төлемді шығару хабарландыруы расталған сервер оқиғасына негізделген. Санатты таңдау жеткізу параметрлерін өзгертеді, транзакция қолжетімділігін емес.\n\nКөмекші, қолдау және жобаны басқару\n\nЖеке операцияларға көмек қажет болғанда, чатта менің деректеріме қолжетімділікті қосыңыз. includeAccount=true бар веб-сұраным жарамды сессияны, Origin және X-CSRF-Token-ді талап етеді; X-Kevmi-Store меншікті дүкенді немесе барлық меншікті дүкендерді таңдайды. Рұқсатсыз көмекші тек қоғамдық құжаттаманы пайдаланады. Telegram-да жіберуші анықталғаннан кейін жеке батырма қолжетімділікті қосады.\n\nread_account құралы меншікті дүкендерді, расталған төлем мәртебесі бар шот-фактураларды, оқиғаларды, өтінімдерді және маман жауаптары бар қолдау сұранымдарын оқиды. Ол 30 жазбаны және nextPage-ті қайтарады; ескі жазбалар пагинация арқылы қолжетімді. Әр жауаптағы оқулар шектеулі, сондықтан толық емес үлгі ашық көрсетілуі тиіс. API кілттері, вебхук құпиялары, карта деректері және сессиялар құралға берілмейді. Ол ақы ала алмайды, төлем жасай алмайды, қайтара алмайды немесе параметрлерді өзгерте алмайды.\n\nЖұмыс кеңістігінде немесе Telegram-да қолдау сұранымын жасау тұрақты кезекте бөлек әкімші ескертуін орналастырады. Ол /admin/tickets?ticket=<id> сілтемесімен байланысады; уақытша Telegram ақаулары қайта қайталанады. Қалпына келтіру ескертусіз ескі ашық сұранымдарды да қамтиды. Әкімшілер сұраным бетінде жауап береді; жауап пайдаланушы жұмыс кеңістігінде сақталады және қолдау хабарландыулары қосылғанда Telegram арқылы жіберіледі.\n\nБот негізгі мәзір, дүкендер, хабарландырулар, қолдау, қауіпсіздік және тіл үшін ішкі батырмаларды пайдаланады. Навигация ағымдағы хабарламаны өңдейді; қолжетімсіз ескі мәзір ауыстырылады. Төлем және қауіпсіздік хабарландырулары бір реттік навигация ретінде қарастырылмайды. Мәзір арқылы жүйеден шығу растауды қажет етеді. Айқын /logout командасы әлі де әрбір аккаунт сессиясын аяқтайды.\n\n/admin/project панелі сервер жағындағы MODERATOR_TELEGRAM_IDS рұқсат тізіміндегі Telegram ID-лерімен шектелген. Ол пайдаланушыларды, дүкендерді, операцияларды, кілтті жоюды, вебхукті өшіруді, шот-фактураны тоқтата тұруды, қабылдау бақылауын және аудит журналын қамтиды. Өзгертулер CSRF және себепті талап етеді. Панель әкімшіні шектей алмайды немесе төлемді қолмен сәтті деп жариялай алмайды. Меншіктісін шектеу сессияларды аяқтайды және API кілтіне қолжетімділікті бұғаттайды; дүкенді шектеу жаңа операцияларды тоқтатады. Тарих сақталады.\n\nҚоғамдық ұсыныс /public-offer мекенжайында және құпиялық саясаты /privacy-policy мекенжайында әрбір қосылған тілде қолжетімді. Монеталарды аты немесе тикері бойынша іздеңіз. Желі таңдағышы тек бірнеше тірі желі болғанда ғана пайда болады. Бір желі автоматты түрде таңдалады және растауда атауы қалады. Тірі шлюз қолжетімділігі таңдалатын жұптарды анықтайды; анықтамалық каталог қызметті қоспайды.\n\nКүнделікті веб-қосымша шығарылымдары үшін update.sh пайдаланыңыз: үміткерді құрастырыңыз, миграция тарихын тексеріңіз, SQLite-ті онлайн резервтеңіз, екінші контейнерді іске қосыңыз, оны тексеріңіз және Caddy-ді бірқалыпты ауыстырыңыз. Gateway, PostgreSQL және пошта қайта іске қосылмайды. Алдыңғы статикалық ресурстар ашық қойындылар үшін қолжетімді болып қалады. Жаңа миграция айқын уәкілеттікпен қарауды қажет етеді; үйлесімсіз схема өзгерісі үздіксіз орналастыру емес.\n\nҚоғамдық ұсыныс\n\nҚұпиялық саясаты",
      "readMinutes": 4
    },
    {
      "id": "support",
      "title": "Қолдау чаты және сұраныстар",
      "summary": "Көмекші Kevmi шарттарын түсіндіреді, дұрыс бетті табады және параметрлерді орнатуға көмектеседі. Төменгі оң жақтағы дөңгелек түймені пайдаланып чатты ашыңыз. Аккаунтқа қатысты сұрақ үшін жеке сұранысты пайдаланыңыз.",
      "group": "account",
      "url": "/docs/support",
      "tags": [
        "қолдау",
        "көмек",
        "AI",
        "көмекші",
        "құжаттама",
        "сұраныс",
        "чат"
      ],
      "sections": [
        {
          "id": "chat",
          "title": "Ағымдағы бет бойынша көмек",
          "paragraphs": [
            "Телефондарда чат ықшам панельде ашылады. Оны азайтып, қайта ашуға болады; ол жабық тұрғанда жауап келсе, белгіше пайда болады.",
            "Қолдау ағымдағы бетте ашылады. Бұрынғы /help мекенжайы чат ашық күйде басты бетке қайта бағыттайды."
          ],
          "bullets": [],
          "steps": [
            "Төменгі оң жақтағы дөңгелек қолдау түймесін таңдаңыз немесе Сұрағыңызды қойыңыз.",
            "Бар қарым-қатынасты ашыңыз немесе жаңасын бастаңыз. Ұсынысты таңдаңыз немесе сұрақ теріңіз: Enter жібереді; Shift + Enter жаңа жол қосады.",
            "Жауапты оқып, оның құжаттама көздеріне сүйеніңіз.",
            "Жұмысты жалғастыру үшін чатты азайтыңыз. Хабарламалар мен жоба осы браузерде сақталады."
          ],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Қолдау чатын ашу",
              "href": "/?support=open"
            }
          ]
        },
        {
          "id": "history",
          "title": "Әңгімелер, жобалар және тарих",
          "paragraphs": [
            "Әр тақырыпты бөлек әңгімеде сақтаңыз. Тарихты атауы немесе мәтіні бойынша іздеңіз, әңгімені қайта атаңыз және маңыздыларын бекітіңіз. Жаңа әңгіме бұрынғы чаттарды сақтайды, және әрқайсысы өз жобасын сақтайды.",
            "Әңгімені Жойылғандар қалтасынан қалпына келтіріңіз немесе растаудан кейін мәңгілікке жойыңыз. Тарих осы құрылғының браузерінде сақталады, бетті қайта жүктеуде сақталады және құрылғылар, аккаунт немесе Telegram арасында синхрондалмайды. Браузерде сайт деректерін тазалау жергілікті тарихты жояды.",
            "Браузер сақтауы қолжетімсіз болса, чат ашық беттің жадында жалғасады. Жергілікті әңгімелер жеке қолдау сұраныстарынан бөлек, олар жүйеге кіргеннен кейін серверде сақталады."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "knowledge",
          "title": "Жауаптар ненің негізінде құрылады",
          "paragraphs": [
            "Веб-сайт пен бот бір нұсқаланған білім базасын пайдаланады. Сервер жарияланған нұсқаулықтарды, құрылымдық бағаларды, бөлу және ел фактілерін, бет каталогын және нақты мүмкіндік дайындығын генеративті көмекшіге ұсынады. База қолданбаларды, API кілттерін, виджеттерді және вебхуктарды қамтиды.",
            "Жауап көздері тек сол базадағы мақалаларға сілтеме жасайды. Расталған ақпарат жеткіліксіз болғанда, көмекші бұл туралы айтады және нақтырақ сұрақ немесе қолдау сұранысын ұсынады. Ол елдерді, төлем мерзімдерін, шектеулерді немесе салық міндеттемелерін ойлап шығармайды."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "context",
          "title": "Қосымша сұрақтар және контекст",
          "paragraphs": [
            "Келесі сұрақ таңдалған әңгіменің соңғы үш сұрақ-жауап жұбын қамтиды, бұл «Сатушы ҚҚС төлейтін болса ше?» сияқты қосымша сұрақтарға көмектеседі. Басқа жергілікті тарих сұранысқа автоматты түрде қосылмайды.",
            "Қысқа бөлім белгісі, мысалы Бағалар немесе Касса, да жіберіледі. URL, сұраныс параметрлері және инвойс токені алынып тасталады. Алдыңғы хабарламалар сенімсіз контекст болып табылады және білім базасына қарсы тексеріледі."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "modes",
          "title": "Жасанды интеллект және құжаттаманы іздеу",
          "paragraphs": [
            "AI режимі конфигурацияланған провайдерді, сервер сақтауын және қолжетімді квотаны пайдаланады. /api/config конфигурация дайындығын хабарлайды; модель қосылымы сұраныс кезінде тексеріледі. Қолжетімсіз генерация, таусылған квота немесе жарамсыз жауап белгіленген құжаттаманы іздеуге қайта бағыттайды.",
            "Іздеу сыртқы модельсіз де жұмыс істейді. Жеке жазбалар иесінің анық рұқсатын талап етеді және тек оқу режимінде қолжетімді. Рұқсатсыз тек қоғамдық ақпарат қолжетімді. Ол қаражат есептей алмайды, төлем жасай алмайды немесе параметрлерді өзгерте алмайды."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Режим",
              "Мінез-құлық"
            ],
            "rows": [
              [
                "ai",
                "Толық жарияланған білімнен жауап жазады және тиісті нұсқаулықтарға сілтеме жасайды"
              ],
              [
                "іздеу",
                "Сәйкес келетін жарияланған құжаттаманы қайтарады"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "question",
          "title": "Пайдалы сұрақ қою",
          "paragraphs": [
            "Мысалы: «5$ карта тапсырысы, ҚҚС сатушы төлейді. Сатушы қанша алады?» Жарияланған калькулятордағы нақты сандарды тексеріңіз.",
            "Чат өрісі 1 800 таңбаға дейін қабылдайды. Қосылым сәтсіз болса, сұрақ өрісте тағы бір әрекет үшін қалады."
          ],
          "bullets": [
            "Әдісті атаңыз: карта, SBP, Alipay немесе криптовалюта.",
            "Есептеу үшін базалық соманы және тұтынушы шығынының екі бөлігін көрсетіңіз: комиссия және ҚҚС.",
            "Қате үшін бетті, әрекетті және көрсетілген хабарламаны атаңыз.",
            "Құпия сөздерді, кіру кодтарын, токендерді, CVV немесе seed-фразаларды жібермеңіз."
          ],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "request",
          "title": "API арқылы сұрақ қою",
          "paragraphs": [
            "POST /api/support/ask сұрақты 2–2 000 таңба (trim-нан кейін) қабылдайды. Қосымша history рөлі=user немесе рөлі=assistant болатын алты хабарламаға дейін қамтиды. Пайдаланушы хабарламалары 1–1 800 таңбаны, ал ассистент хабарламалары 1–3 000 таңбаны қабылдайды.",
            "Қосымша pageContext — 1–80 таңбадан тұратын бөлім белгісі, URL, токендер, сұраныс параметрлері немесе жол тасымалдары жоқ. Қосымша locale — ru, en, es, de немесе fr және жауап тілін таңдайды. Ағылшын тілі әдепкі болып табылады; толық техникалық дереккөздер орыс және ағылшын тілдерінде қолжетімді. API жүйелік хабарламаларды, құралдарды немесе ерікті провайдер нұсқауларын қабылдамайды.",
            "JSON денесінің шегі — 65 536 байт. Жауап mode, answer, sources, knowledgeVersion және needsHuman өрістерін қамтиды, aiUnavailable:true генерация қолжетімсіз болғанда көрсетіледі. Пайдаланушы сеансы қажет емес; берілген Origin қосымшамен сәйкес келуі тиіс."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "API келісімшарты",
              "href": "/docs/api-reference"
            }
          ]
        },
        {
          "id": "ticket",
          "title": "Жеке қолдау сұраныстары",
          "paragraphs": [
            "Кіруден кейін 1–120 таңбадан тұратын тақырыппен және 5–4 000 таңбадан тұратын хабарламамен сұраныс жасаңыз. Ол сіздің есептік жазбаңызда сақталады және басқа пайдаланушыға көрінбейді.",
            "Тізім соңғы 30 сұранысты көрсетеді. Сіз өз сұранысыңызды жаба аласыз. Мәртебе туралы сұрағанда оның сілтемесін сақтаңыз; шешім қабылдау уақыты мәселеге байланысты."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Менің қолдау сұраныстарым",
              "href": "/account#support"
            }
          ]
        },
        {
          "id": "assistant-admin-v16",
          "title": "Көмекші, қолдау және жобаны басқару",
          "paragraphs": [
            "Жеке операцияларға көмек қажет болғанда, чатта менің деректеріме қолжетімділікті қосыңыз. includeAccount=true бар веб-сұраным жарамды сессияны, Origin және X-CSRF-Token-ді талап етеді; X-Kevmi-Store меншікті дүкенді немесе барлық меншікті дүкендерді таңдайды. Рұқсатсыз көмекші тек қоғамдық құжаттаманы пайдаланады. Telegram-да жіберуші анықталғаннан кейін жеке батырма қолжетімділікті қосады.",
            "read_account құралы меншікті дүкендерді, расталған төлем мәртебесі бар шот-фактураларды, оқиғаларды, өтінімдерді және маман жауаптары бар қолдау сұранымдарын оқиды. Ол 30 жазбаны және nextPage-ті қайтарады; ескі жазбалар пагинация арқылы қолжетімді. Әр жауаптағы оқулар шектеулі, сондықтан толық емес үлгі ашық көрсетілуі тиіс. API кілттері, вебхук құпиялары, карта деректері және сессиялар құралға берілмейді. Ол ақы ала алмайды, төлем жасай алмайды, қайтара алмайды немесе параметрлерді өзгерте алмайды.",
            "Жұмыс кеңістігінде немесе Telegram-да қолдау сұранымын жасау тұрақты кезекте бөлек әкімші ескертуін орналастырады. Ол /admin/tickets?ticket=<id> сілтемесімен байланысады; уақытша Telegram ақаулары қайта қайталанады. Қалпына келтіру ескертусіз ескі ашық сұранымдарды да қамтиды. Әкімшілер сұраным бетінде жауап береді; жауап пайдаланушы жұмыс кеңістігінде сақталады және қолдау хабарландыулары қосылғанда Telegram арқылы жіберіледі.",
            "Бот негізгі мәзір, дүкендер, хабарландырулар, қолдау, қауіпсіздік және тіл үшін ішкі батырмаларды пайдаланады. Навигация ағымдағы хабарламаны өңдейді; қолжетімсіз ескі мәзір ауыстырылады. Төлем және қауіпсіздік хабарландырулары бір реттік навигация ретінде қарастырылмайды. Мәзір арқылы жүйеден шығу растауды қажет етеді. Айқын /logout командасы әлі де әрбір аккаунт сессиясын аяқтайды.",
            "/admin/project панелі сервер жағындағы MODERATOR_TELEGRAM_IDS рұқсат тізіміндегі Telegram ID-лерімен шектелген. Ол пайдаланушыларды, дүкендерді, операцияларды, кілтті жоюды, вебхукті өшіруді, шот-фактураны тоқтата тұруды, қабылдау бақылауын және аудит журналын қамтиды. Өзгертулер CSRF және себепті талап етеді. Панель әкімшіні шектей алмайды немесе төлемді қолмен сәтті деп жариялай алмайды. Меншіктісін шектеу сессияларды аяқтайды және API кілтіне қолжетімділікті бұғаттайды; дүкенді шектеу жаңа операцияларды тоқтатады. Тарих сақталады.",
            "Қоғамдық ұсыныс /public-offer мекенжайында және құпиялық саясаты /privacy-policy мекенжайында әрбір қосылған тілде қолжетімді. Монеталарды аты немесе тикері бойынша іздеңіз. Желі таңдағышы тек бірнеше тірі желі болғанда ғана пайда болады. Бір желі автоматты түрде таңдалады және растауда атауы қалады. Тірі шлюз қолжетімділігі таңдалатын жұптарды анықтайды; анықтамалық каталог қызметті қоспайды.",
            "Күнделікті веб-қосымша шығарылымдары үшін update.sh пайдаланыңыз: үміткерді құрастырыңыз, миграция тарихын тексеріңіз, SQLite-ті онлайн резервтеңіз, екінші контейнерді іске қосыңыз, оны тексеріңіз және Caddy-ді бірқалыпты ауыстырыңыз. Gateway, PostgreSQL және пошта қайта іске қосылмайды. Алдыңғы статикалық ресурстар ашық қойындылар үшін қолжетімді болып қалады. Жаңа миграция айқын уәкілеттікпен қарауды қажет етеді; үйлесімсіз схема өзгерісі үздіксіз орналастыру емес."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Қоғамдық ұсыныс",
              "href": "/public-offer"
            },
            {
              "label": "Құпиялық саясаты",
              "href": "/privacy-policy"
            }
          ]
        }
      ],
      "body": "Ағымдағы бет бойынша көмек\n\nТелефондарда чат ықшам панельде ашылады. Оны азайтып, қайта ашуға болады; ол жабық тұрғанда жауап келсе, белгіше пайда болады.\n\nҚолдау ағымдағы бетте ашылады. Бұрынғы /help мекенжайы чат ашық күйде басты бетке қайта бағыттайды.\n\nТөменгі оң жақтағы дөңгелек қолдау түймесін таңдаңыз немесе Сұрағыңызды қойыңыз.\n\nБар қарым-қатынасты ашыңыз немесе жаңасын бастаңыз. Ұсынысты таңдаңыз немесе сұрақ теріңіз: Enter жібереді; Shift + Enter жаңа жол қосады.\n\nЖауапты оқып, оның құжаттама көздеріне сүйеніңіз.\n\nЖұмысты жалғастыру үшін чатты азайтыңыз. Хабарламалар мен жоба осы браузерде сақталады.\n\nҚолдау чатын ашу\n\nӘңгімелер, жобалар және тарих\n\nӘр тақырыпты бөлек әңгімеде сақтаңыз. Тарихты атауы немесе мәтіні бойынша іздеңіз, әңгімені қайта атаңыз және маңыздыларын бекітіңіз. Жаңа әңгіме бұрынғы чаттарды сақтайды, және әрқайсысы өз жобасын сақтайды.\n\nӘңгімені Жойылғандар қалтасынан қалпына келтіріңіз немесе растаудан кейін мәңгілікке жойыңыз. Тарих осы құрылғының браузерінде сақталады, бетті қайта жүктеуде сақталады және құрылғылар, аккаунт немесе Telegram арасында синхрондалмайды. Браузерде сайт деректерін тазалау жергілікті тарихты жояды.\n\nБраузер сақтауы қолжетімсіз болса, чат ашық беттің жадында жалғасады. Жергілікті әңгімелер жеке қолдау сұраныстарынан бөлек, олар жүйеге кіргеннен кейін серверде сақталады.\n\nЖауаптар ненің негізінде құрылады\n\nВеб-сайт пен бот бір нұсқаланған білім базасын пайдаланады. Сервер жарияланған нұсқаулықтарды, құрылымдық бағаларды, бөлу және ел фактілерін, бет каталогын және нақты мүмкіндік дайындығын генеративті көмекшіге ұсынады. База қолданбаларды, API кілттерін, виджеттерді және вебхуктарды қамтиды.\n\nЖауап көздері тек сол базадағы мақалаларға сілтеме жасайды. Расталған ақпарат жеткіліксіз болғанда, көмекші бұл туралы айтады және нақтырақ сұрақ немесе қолдау сұранысын ұсынады. Ол елдерді, төлем мерзімдерін, шектеулерді немесе салық міндеттемелерін ойлап шығармайды.\n\nҚосымша сұрақтар және контекст\n\nКелесі сұрақ таңдалған әңгіменің соңғы үш сұрақ-жауап жұбын қамтиды, бұл «Сатушы ҚҚС төлейтін болса ше?» сияқты қосымша сұрақтарға көмектеседі. Басқа жергілікті тарих сұранысқа автоматты түрде қосылмайды.\n\nҚысқа бөлім белгісі, мысалы Бағалар немесе Касса, да жіберіледі. URL, сұраныс параметрлері және инвойс токені алынып тасталады. Алдыңғы хабарламалар сенімсіз контекст болып табылады және білім базасына қарсы тексеріледі.\n\nЖасанды интеллект және құжаттаманы іздеу\n\nAI режимі конфигурацияланған провайдерді, сервер сақтауын және қолжетімді квотаны пайдаланады. /api/config конфигурация дайындығын хабарлайды; модель қосылымы сұраныс кезінде тексеріледі. Қолжетімсіз генерация, таусылған квота немесе жарамсыз жауап белгіленген құжаттаманы іздеуге қайта бағыттайды.\n\nІздеу сыртқы модельсіз де жұмыс істейді. Жеке жазбалар иесінің анық рұқсатын талап етеді және тек оқу режимінде қолжетімді. Рұқсатсыз тек қоғамдық ақпарат қолжетімді. Ол қаражат есептей алмайды, төлем жасай алмайды немесе параметрлерді өзгерте алмайды.\n\nРежим · Мінез-құлық\nai · Толық жарияланған білімнен жауап жазады және тиісті нұсқаулықтарға сілтеме жасайды\nіздеу · Сәйкес келетін жарияланған құжаттаманы қайтарады\n\nПайдалы сұрақ қою\n\nМысалы: «5$ карта тапсырысы, ҚҚС сатушы төлейді. Сатушы қанша алады?» Жарияланған калькулятордағы нақты сандарды тексеріңіз.\n\nЧат өрісі 1 800 таңбаға дейін қабылдайды. Қосылым сәтсіз болса, сұрақ өрісте тағы бір әрекет үшін қалады.\n\nӘдісті атаңыз: карта, SBP, Alipay немесе криптовалюта.\n\nЕсептеу үшін базалық соманы және тұтынушы шығынының екі бөлігін көрсетіңіз: комиссия және ҚҚС.\n\nҚате үшін бетті, әрекетті және көрсетілген хабарламаны атаңыз.\n\nҚұпия сөздерді, кіру кодтарын, токендерді, CVV немесе seed-фразаларды жібермеңіз.\n\nAPI арқылы сұрақ қою\n\nPOST /api/support/ask сұрақты 2–2 000 таңба (trim-нан кейін) қабылдайды. Қосымша history рөлі=user немесе рөлі=assistant болатын алты хабарламаға дейін қамтиды. Пайдаланушы хабарламалары 1–1 800 таңбаны, ал ассистент хабарламалары 1–3 000 таңбаны қабылдайды.\n\nҚосымша pageContext — 1–80 таңбадан тұратын бөлім белгісі, URL, токендер, сұраныс параметрлері немесе жол тасымалдары жоқ. Қосымша locale — ru, en, es, de немесе fr және жауап тілін таңдайды. Ағылшын тілі әдепкі болып табылады; толық техникалық дереккөздер орыс және ағылшын тілдерінде қолжетімді. API жүйелік хабарламаларды, құралдарды немесе ерікті провайдер нұсқауларын қабылдамайды.\n\nJSON денесінің шегі — 65 536 байт. Жауап mode, answer, sources, knowledgeVersion және needsHuman өрістерін қамтиды, aiUnavailable:true генерация қолжетімсіз болғанда көрсетіледі. Пайдаланушы сеансы қажет емес; берілген Origin қосымшамен сәйкес келуі тиіс.\n\nAPI келісімшарты\n\nЖеке қолдау сұраныстары\n\nКіруден кейін 1–120 таңбадан тұратын тақырыппен және 5–4 000 таңбадан тұратын хабарламамен сұраныс жасаңыз. Ол сіздің есептік жазбаңызда сақталады және басқа пайдаланушыға көрінбейді.\n\nТізім соңғы 30 сұранысты көрсетеді. Сіз өз сұранысыңызды жаба аласыз. Мәртебе туралы сұрағанда оның сілтемесін сақтаңыз; шешім қабылдау уақыты мәселеге байланысты.\n\nМенің қолдау сұраныстарым\n\nКөмекші, қолдау және жобаны басқару\n\nЖеке операцияларға көмек қажет болғанда, чатта менің деректеріме қолжетімділікті қосыңыз. includeAccount=true бар веб-сұраным жарамды сессияны, Origin және X-CSRF-Token-ді талап етеді; X-Kevmi-Store меншікті дүкенді немесе барлық меншікті дүкендерді таңдайды. Рұқсатсыз көмекші тек қоғамдық құжаттаманы пайдаланады. Telegram-да жіберуші анықталғаннан кейін жеке батырма қолжетімділікті қосады.\n\nread_account құралы меншікті дүкендерді, расталған төлем мәртебесі бар шот-фактураларды, оқиғаларды, өтінімдерді және маман жауаптары бар қолдау сұранымдарын оқиды. Ол 30 жазбаны және nextPage-ті қайтарады; ескі жазбалар пагинация арқылы қолжетімді. Әр жауаптағы оқулар шектеулі, сондықтан толық емес үлгі ашық көрсетілуі тиіс. API кілттері, вебхук құпиялары, карта деректері және сессиялар құралға берілмейді. Ол ақы ала алмайды, төлем жасай алмайды, қайтара алмайды немесе параметрлерді өзгерте алмайды.\n\nЖұмыс кеңістігінде немесе Telegram-да қолдау сұранымын жасау тұрақты кезекте бөлек әкімші ескертуін орналастырады. Ол /admin/tickets?ticket=<id> сілтемесімен байланысады; уақытша Telegram ақаулары қайта қайталанады. Қалпына келтіру ескертусіз ескі ашық сұранымдарды да қамтиды. Әкімшілер сұраным бетінде жауап береді; жауап пайдаланушы жұмыс кеңістігінде сақталады және қолдау хабарландыулары қосылғанда Telegram арқылы жіберіледі.\n\nБот негізгі мәзір, дүкендер, хабарландырулар, қолдау, қауіпсіздік және тіл үшін ішкі батырмаларды пайдаланады. Навигация ағымдағы хабарламаны өңдейді; қолжетімсіз ескі мәзір ауыстырылады. Төлем және қауіпсіздік хабарландырулары бір реттік навигация ретінде қарастырылмайды. Мәзір арқылы жүйеден шығу растауды қажет етеді. Айқын /logout командасы әлі де әрбір аккаунт сессиясын аяқтайды.\n\n/admin/project панелі сервер жағындағы MODERATOR_TELEGRAM_IDS рұқсат тізіміндегі Telegram ID-лерімен шектелген. Ол пайдаланушыларды, дүкендерді, операцияларды, кілтті жоюды, вебхукті өшіруді, шот-фактураны тоқтата тұруды, қабылдау бақылауын және аудит журналын қамтиды. Өзгертулер CSRF және себепті талап етеді. Панель әкімшіні шектей алмайды немесе төлемді қолмен сәтті деп жариялай алмайды. Меншіктісін шектеу сессияларды аяқтайды және API кілтіне қолжетімділікті бұғаттайды; дүкенді шектеу жаңа операцияларды тоқтатады. Тарих сақталады.\n\nҚоғамдық ұсыныс /public-offer мекенжайында және құпиялық саясаты /privacy-policy мекенжайында әрбір қосылған тілде қолжетімді. Монеталарды аты немесе тикері бойынша іздеңіз. Желі таңдағышы тек бірнеше тірі желі болғанда ғана пайда болады. Бір желі автоматты түрде таңдалады және растауда атауы қалады. Тірі шлюз қолжетімділігі таңдалатын жұптарды анықтайды; анықтамалық каталог қызметті қоспайды.\n\nКүнделікті веб-қосымша шығарылымдары үшін update.sh пайдаланыңыз: үміткерді құрастырыңыз, миграция тарихын тексеріңіз, SQLite-ті онлайн резервтеңіз, екінші контейнерді іске қосыңыз, оны тексеріңіз және Caddy-ді бірқалыпты ауыстырыңыз. Gateway, PostgreSQL және пошта қайта іске қосылмайды. Алдыңғы статикалық ресурстар ашық қойындылар үшін қолжетімді болып қалады. Жаңа миграция айқын уәкілеттікпен қарауды қажет етеді; үйлесімсіз схема өзгерісі үздіксіз орналастыру емес.\n\nҚоғамдық ұсыныс\n\nҚұпиялық саясаты",
      "readMinutes": 6
    },
    {
      "id": "api-reference",
      "title": "API анықтамасы",
      "summary": "Сервер API есептік жазбаларды, шот-фактураларды, қауіпсіз төлемді, мәртебелерді және webhook-тарды қолдайды. OpenAPI маршруттарды, өрістерді және қателерді сипаттайды. Төлемді бастау конфигурацияланған шлюзді, мақұлданған сатушыны және қолдау көрсетілетін шот-фактура шарттарын талап етеді.",
      "group": "developers",
      "url": "/docs/api-reference",
      "tags": [
        "API",
        "OpenAPI",
        "endpoint",
        "reference",
        "JSON"
      ],
      "sections": [
        {
          "id": "base",
          "title": "Базалық URL және формат",
          "paragraphs": [
            "The base URL is https://kevmi.one. Request and response bodies use JSON. Money values are integer minor units. Account and support dates are Unix timestamps in milliseconds.",
            "API жауаптары Cache-Control: no-store қолданады. Жария /openapi.json бес минут бойы кэштелуі мүмкін. Cookie немесе құпияларды URL-ге орналастырмаңыз."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "cURL",
            "code": "curl 'https://kevmi.one/api/config'\n\ncurl 'https://kevmi.one/openapi.json'"
          },
          "note": "",
          "links": []
        },
        {
          "id": "session",
          "title": "Сұраныс авторизациясы",
          "paragraphs": [
            "Веб-есептік жазба HttpOnly сеанс cookie пайдаланады. GET /api/auth/me ағымдағы пайдаланушыны және csrfToken қайтарады. Өзгертулер X-CSRF-Token және сол шығу тегі бар сұранысты талап етеді.",
            "Аумақты Kevmi сатушы кілттері /api/v1/payments, /api/v1/payment-links және /api/v1/events авторизациялайды. Олар есептік жазба параметрлері немесе әкімшілік маршруттар үшін сеанс cookie ауыстырмайды."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "JavaScript · website browser",
            "code": "const me = await fetch('/api/auth/me').then(r => r.json());\nif (!me.authenticated) throw new Error('Sign in required');\nconst response = await fetch('/api/account/settings', {\n  method: 'PATCH',\n  headers: { 'Content-Type': 'application/json', 'X-CSRF-Token': me.csrfToken },\n  body: JSON.stringify({ vatPayer: 'merchant' })\n});\nif (!response.ok) throw new Error('Settings were not saved');\nconst updated = await response.json();"
          },
          "note": "",
          "links": []
        },
        {
          "id": "groups",
          "title": "Endpoint топтары",
          "paragraphs": [
            "GET /api/config сервер конфигурациясының бар екенін хабарлайды. GET /api/checkout/{token} таңдалған әдіс үшін invoice.availability қайтарады, соның ішінде сатушының мақұлдауы және сақталған шарттар. Бұл тексерулер провайдер қосылымын немесе төлем табысын анықтамайды: нәтиже тексерілген шлюз операциясынан алынады."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Топ",
              "Мақсат"
            ],
            "rows": [
              [
                "Конфигурация және денсаулық",
                "Жария қызмет және сақтау дайындығы"
              ],
              [
                "Аутентификация",
                "Telegram шақыртулары және сеанстары"
              ],
              [
                "Есептік жазба",
                "Параметрлер және жеке сатушы қосымшасы"
              ],
              [
                "/api/v1/payments",
                "Аумақты сервер шот-фактурасын құру және оқу; төлемді бастамайды"
              ],
              [
                "/api/v1/events",
                "Сервер оқиғалар журналы events:read рұқсатымен"
              ],
              [
                "Интеграциялар",
                "Сеанспен аутентификацияланған кілт және webhook endpoint әкімшілендіру"
              ],
              [
                "Қосымшалар және модерация",
                "Меншікті жіберулер, мәртебе бақылау және бөлек модератор рұқсаттары"
              ],
              [
                "Төлем беті",
                "Жария шот-фактура, шифрланған карта сұранысы, нақты операция, банк коды, мәртебе және өзара есеп айырысу"
              ],
              [
                "Шлюз кіруі",
                "Қол қойылған v3 хабарландырулары және аутентификацияланған операцияны тексеру"
              ],
              [
                "Қолдау және хабарландырулар",
                "Сұрақтар, жеке сұраныстар, оқиғалар және оқу күйі"
              ],
              [
                "Telegram",
                "Тексерілген бот webhook"
              ],
              [
                "Қолдау көрсетілмейтін ақша маршруттары",
                "Ескірген тікелей /api/payments және /api/payouts төлем немесе төлем төлеуді жасамайды"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "support-example",
          "title": "Жария білім сұранысы",
          "paragraphs": [
            "Жауап mode, answer, sources, knowledgeVersion және needsHuman қамтиды. Берілген Origin қосымша шығу тегімен сәйкес келуі тиіс. Сервер жағындағы құжаттама агенті Origin-ды алып тастай алады."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "cURL",
            "code": "curl 'https://kevmi.one/api/support/ask' \\\n  -H 'Content-Type: application/json' \\\n  --data '{\"question\":\"Who pays VAT?\",\"locale\":\"en\"}'"
          },
          "note": "",
          "links": []
        },
        {
          "id": "errors",
          "title": "Қателер және шектеулер",
          "paragraphs": [
            "Қате машинамен оқылатын кодты және хабарламаны қамтиды. Белгісіз сұраныс өрістері қабылданбайды. Стандартты JSON денелері 16 384 байтқа мүмкіндік береді; /api/support/ask және Telegram webhook 65 536 байтқа мүмкіндік береді.",
            "429 жылдамдық шегі көрсетеді. 503 қолжетімсіз интеграцияны көрсетуі мүмкін, бірақ бас тартылған төлемді емес. error.code-ды оқыңыз және қаржылық мәртебені тек HTTP мәртебесі бойынша өзгертпеңіз."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Қате кодтары",
              "href": "/docs/errors"
            },
            {
              "label": "Толық OpenAPI спецификациясы",
              "href": "/openapi.json"
            }
          ]
        },
        {
          "id": "stores-usd",
          "title": "Бірнеше дүкен және бір АҚШ доллары базалық бағасы",
          "paragraphs": [
            "Жиынтық аналитика мен операциялар үшін Барлық дүкендерді таңдаңыз немесе жеке жазбалары үшін дүкенді таңдаңыз. Әр дүкеннің жеке storeId, атауы, ҚҚС әдепкі мәні, шоттары, API кілттері, вебхук нүктелері, оқиғалар тарихы және веб-сайт қосымшасы бар. Хабарландырулар мен қолдау билеттері тіркелгіге тиесілі. Тіркелгі 100 дүкенге дейін құра алады. Бар жазбалар оның бірінші дүкенінде қалады.",
            "Жаңа жұмыс кеңістігі шоттары pricingMode=\"universal\" және АҚШ доллары базалық бағасын пайдаланады. Any карта, alipay, sbp және криптоны қамтиды; сатушы ішкі жиынтықты таңдай алады. Карталар мен Alipay АҚШ долларымен есептейді. SBP Ресей Банкінің АҚШ доллары/рубль анықтамалық бағамын пайдаланып рубльмен есептейді. Крипто айқын шот ережесі бойынша USDT-мен есептейді: 1 АҚШ доллары = 1 USDT. Бұл шот айырбастау ережесі, нарықтық USDT котировкасы емес. Шлюз таңдалған монетаның бағамын, нақты аударым сомасын және нұсқауларды аударымға дейін береді.",
            "Анықтамалық бағам және екі сома да құру кезінде мұздатылады. Рубльге айырбастауды қамтитын шоттар 24 сағат ішінде мерзімі аяқталады. Егер анықтамалық бағамды алу мүмкін болмаса, құру FX_UNAVAILABLE қатесімен сәтсіз аяқталады; ойдан шығарылған немесе ескірген қосалқы бағам пайдаланылмайды. Меншік иесінің жауабындағы amountMinor және quotes АҚШ доллары бухгалтерлік валютасын пайдаланады. quotes[method].settlement туынды валютадағы төлем котировкасын қамтиды. Қоғамдық төлем беті таңдалған төлем валютасын currency өрісінде, бастапқы бағаны baseAmountMinor/baseCurrency өрістерінде және анықтамалық бағамды fx өрісінде көрсетеді. Төлем жіберілгеннен кейін оның әдісін өзгерту мүмкін емес; шотта бір шлюз операциясы болады.",
            "Мақсатты дүкен ішінде API кілтін жасаңыз және серверіңізден Authorization: Bearer <key> жіберіңіз. Оның дүкенге байланыстыруы өзгермейді; X-Kevmi-Store оған басқа дүкенге қолжетімділік бере алмайды. Браузер сеанстары X-Kevmi-Store: <storeId> таңдайды; оны алып тастағанда бірінші дүкен таңдалады. all мәні тек GET /api/account/dashboard және GET /api/payment-links сұраулары арқылы қабылданады. Өзгертулер таңдалған дүкенді, Origin және X-CSRF-Token талап етеді. Тіркелгі идентификаторлары мен дүкен идентификаторлары әртүрлі идентификаторлар болып табылады.",
            "Үйлесімділік үшін pricingMode=\"universal\" жоқ API сұраулары қолма-қол баға белгілеуді және бастапқы валюта шектеулерін сақтайды. Бар шоттар ешқашан қайта есептелмейді. Аналитикадағы расталған түбіртектер тексерілген төлемдерден сақталған шот шығындарын шегергендегі соманы көрсетеді; олар шығарылатын баланс емес. Мұрагерлік шот валюталары бөлек қалады, ал төлемдер қолдау қызметімен келісіледі. Тапсырысты тек payment.fulfillmentReady=true және payment.status=\"succeeded\" сервер API, оқиғалар тарихы немесе қол қойылған вебхук арқылы тексергеннен кейін орындаңыз."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "json",
            "code": "{\n  \"pricingMode\": \"universal\",\n  \"title\": \"Order 1042\",\n  \"amountMinor\": 1000,\n  \"currency\": \"USD\",\n  \"methods\": [\n    \"card\",\n    \"alipay\",\n    \"sbp\",\n    \"crypto\"\n  ],\n  \"vatCustomerPercent\": 100,\n  \"feeCustomerPercent\": 0\n}"
          },
          "note": "",
          "links": []
        },
        {
          "id": "assistant-admin-v16",
          "title": "Көмекші, қолдау және жобаны басқару",
          "paragraphs": [
            "Жеке операцияларға көмек қажет болғанда, чатта менің деректеріме қолжетімділікті қосыңыз. includeAccount=true бар веб-сұраным жарамды сессияны, Origin және X-CSRF-Token-ді талап етеді; X-Kevmi-Store меншікті дүкенді немесе барлық меншікті дүкендерді таңдайды. Рұқсатсыз көмекші тек қоғамдық құжаттаманы пайдаланады. Telegram-да жіберуші анықталғаннан кейін жеке батырма қолжетімділікті қосады.",
            "read_account құралы меншікті дүкендерді, расталған төлем мәртебесі бар шот-фактураларды, оқиғаларды, өтінімдерді және маман жауаптары бар қолдау сұранымдарын оқиды. Ол 30 жазбаны және nextPage-ті қайтарады; ескі жазбалар пагинация арқылы қолжетімді. Әр жауаптағы оқулар шектеулі, сондықтан толық емес үлгі ашық көрсетілуі тиіс. API кілттері, вебхук құпиялары, карта деректері және сессиялар құралға берілмейді. Ол ақы ала алмайды, төлем жасай алмайды, қайтара алмайды немесе параметрлерді өзгерте алмайды.",
            "Жұмыс кеңістігінде немесе Telegram-да қолдау сұранымын жасау тұрақты кезекте бөлек әкімші ескертуін орналастырады. Ол /admin/tickets?ticket=<id> сілтемесімен байланысады; уақытша Telegram ақаулары қайта қайталанады. Қалпына келтіру ескертусіз ескі ашық сұранымдарды да қамтиды. Әкімшілер сұраным бетінде жауап береді; жауап пайдаланушы жұмыс кеңістігінде сақталады және қолдау хабарландыулары қосылғанда Telegram арқылы жіберіледі.",
            "Бот негізгі мәзір, дүкендер, хабарландырулар, қолдау, қауіпсіздік және тіл үшін ішкі батырмаларды пайдаланады. Навигация ағымдағы хабарламаны өңдейді; қолжетімсіз ескі мәзір ауыстырылады. Төлем және қауіпсіздік хабарландырулары бір реттік навигация ретінде қарастырылмайды. Мәзір арқылы жүйеден шығу растауды қажет етеді. Айқын /logout командасы әлі де әрбір аккаунт сессиясын аяқтайды.",
            "/admin/project панелі сервер жағындағы MODERATOR_TELEGRAM_IDS рұқсат тізіміндегі Telegram ID-лерімен шектелген. Ол пайдаланушыларды, дүкендерді, операцияларды, кілтті жоюды, вебхукті өшіруді, шот-фактураны тоқтата тұруды, қабылдау бақылауын және аудит журналын қамтиды. Өзгертулер CSRF және себепті талап етеді. Панель әкімшіні шектей алмайды немесе төлемді қолмен сәтті деп жариялай алмайды. Меншіктісін шектеу сессияларды аяқтайды және API кілтіне қолжетімділікті бұғаттайды; дүкенді шектеу жаңа операцияларды тоқтатады. Тарих сақталады.",
            "Қоғамдық ұсыныс /public-offer мекенжайында және құпиялық саясаты /privacy-policy мекенжайында әрбір қосылған тілде қолжетімді. Монеталарды аты немесе тикері бойынша іздеңіз. Желі таңдағышы тек бірнеше тірі желі болғанда ғана пайда болады. Бір желі автоматты түрде таңдалады және растауда атауы қалады. Тірі шлюз қолжетімділігі таңдалатын жұптарды анықтайды; анықтамалық каталог қызметті қоспайды.",
            "Күнделікті веб-қосымша шығарылымдары үшін update.sh пайдаланыңыз: үміткерді құрастырыңыз, миграция тарихын тексеріңіз, SQLite-ті онлайн резервтеңіз, екінші контейнерді іске қосыңыз, оны тексеріңіз және Caddy-ді бірқалыпты ауыстырыңыз. Gateway, PostgreSQL және пошта қайта іске қосылмайды. Алдыңғы статикалық ресурстар ашық қойындылар үшін қолжетімді болып қалады. Жаңа миграция айқын уәкілеттікпен қарауды қажет етеді; үйлесімсіз схема өзгерісі үздіксіз орналастыру емес."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Қоғамдық ұсыныс",
              "href": "/public-offer"
            },
            {
              "label": "Құпиялық саясаты",
              "href": "/privacy-policy"
            }
          ]
        }
      ],
      "body": "Базалық URL және формат\n\nThe base URL is https://kevmi.one. Request and response bodies use JSON. Money values are integer minor units. Account and support dates are Unix timestamps in milliseconds.\n\nAPI жауаптары Cache-Control: no-store қолданады. Жария /openapi.json бес минут бойы кэштелуі мүмкін. Cookie немесе құпияларды URL-ге орналастырмаңыз.\n\ncurl 'https://kevmi.one/api/config'\n\ncurl 'https://kevmi.one/openapi.json'\n\nСұраныс авторизациясы\n\nВеб-есептік жазба HttpOnly сеанс cookie пайдаланады. GET /api/auth/me ағымдағы пайдаланушыны және csrfToken қайтарады. Өзгертулер X-CSRF-Token және сол шығу тегі бар сұранысты талап етеді.\n\nАумақты Kevmi сатушы кілттері /api/v1/payments, /api/v1/payment-links және /api/v1/events авторизациялайды. Олар есептік жазба параметрлері немесе әкімшілік маршруттар үшін сеанс cookie ауыстырмайды.\n\nconst me = await fetch('/api/auth/me').then(r => r.json());\nif (!me.authenticated) throw new Error('Sign in required');\nconst response = await fetch('/api/account/settings', {\n  method: 'PATCH',\n  headers: { 'Content-Type': 'application/json', 'X-CSRF-Token': me.csrfToken },\n  body: JSON.stringify({ vatPayer: 'merchant' })\n});\nif (!response.ok) throw new Error('Settings were not saved');\nconst updated = await response.json();\n\nEndpoint топтары\n\nGET /api/config сервер конфигурациясының бар екенін хабарлайды. GET /api/checkout/{token} таңдалған әдіс үшін invoice.availability қайтарады, соның ішінде сатушының мақұлдауы және сақталған шарттар. Бұл тексерулер провайдер қосылымын немесе төлем табысын анықтамайды: нәтиже тексерілген шлюз операциясынан алынады.\n\nТоп · Мақсат\nКонфигурация және денсаулық · Жария қызмет және сақтау дайындығы\nАутентификация · Telegram шақыртулары және сеанстары\nЕсептік жазба · Параметрлер және жеке сатушы қосымшасы\n/api/v1/payments · Аумақты сервер шот-фактурасын құру және оқу; төлемді бастамайды\n/api/v1/events · Сервер оқиғалар журналы events:read рұқсатымен\nИнтеграциялар · Сеанспен аутентификацияланған кілт және webhook endpoint әкімшілендіру\nҚосымшалар және модерация · Меншікті жіберулер, мәртебе бақылау және бөлек модератор рұқсаттары\nТөлем беті · Жария шот-фактура, шифрланған карта сұранысы, нақты операция, банк коды, мәртебе және өзара есеп айырысу\nШлюз кіруі · Қол қойылған v3 хабарландырулары және аутентификацияланған операцияны тексеру\nҚолдау және хабарландырулар · Сұрақтар, жеке сұраныстар, оқиғалар және оқу күйі\nTelegram · Тексерілген бот webhook\nҚолдау көрсетілмейтін ақша маршруттары · Ескірген тікелей /api/payments және /api/payouts төлем немесе төлем төлеуді жасамайды\n\nЖария білім сұранысы\n\nЖауап mode, answer, sources, knowledgeVersion және needsHuman қамтиды. Берілген Origin қосымша шығу тегімен сәйкес келуі тиіс. Сервер жағындағы құжаттама агенті Origin-ды алып тастай алады.\n\ncurl 'https://kevmi.one/api/support/ask' \\\n  -H 'Content-Type: application/json' \\\n  --data '{\"question\":\"Who pays VAT?\",\"locale\":\"en\"}'\n\nҚателер және шектеулер\n\nҚате машинамен оқылатын кодты және хабарламаны қамтиды. Белгісіз сұраныс өрістері қабылданбайды. Стандартты JSON денелері 16 384 байтқа мүмкіндік береді; /api/support/ask және Telegram webhook 65 536 байтқа мүмкіндік береді.\n\n429 жылдамдық шегі көрсетеді. 503 қолжетімсіз интеграцияны көрсетуі мүмкін, бірақ бас тартылған төлемді емес. error.code-ды оқыңыз және қаржылық мәртебені тек HTTP мәртебесі бойынша өзгертпеңіз.\n\nҚате кодтары\n\nТолық OpenAPI спецификациясы\n\nБірнеше дүкен және бір АҚШ доллары базалық бағасы\n\nЖиынтық аналитика мен операциялар үшін Барлық дүкендерді таңдаңыз немесе жеке жазбалары үшін дүкенді таңдаңыз. Әр дүкеннің жеке storeId, атауы, ҚҚС әдепкі мәні, шоттары, API кілттері, вебхук нүктелері, оқиғалар тарихы және веб-сайт қосымшасы бар. Хабарландырулар мен қолдау билеттері тіркелгіге тиесілі. Тіркелгі 100 дүкенге дейін құра алады. Бар жазбалар оның бірінші дүкенінде қалады.\n\nЖаңа жұмыс кеңістігі шоттары pricingMode=\"universal\" және АҚШ доллары базалық бағасын пайдаланады. Any карта, alipay, sbp және криптоны қамтиды; сатушы ішкі жиынтықты таңдай алады. Карталар мен Alipay АҚШ долларымен есептейді. SBP Ресей Банкінің АҚШ доллары/рубль анықтамалық бағамын пайдаланып рубльмен есептейді. Крипто айқын шот ережесі бойынша USDT-мен есептейді: 1 АҚШ доллары = 1 USDT. Бұл шот айырбастау ережесі, нарықтық USDT котировкасы емес. Шлюз таңдалған монетаның бағамын, нақты аударым сомасын және нұсқауларды аударымға дейін береді.\n\nАнықтамалық бағам және екі сома да құру кезінде мұздатылады. Рубльге айырбастауды қамтитын шоттар 24 сағат ішінде мерзімі аяқталады. Егер анықтамалық бағамды алу мүмкін болмаса, құру FX_UNAVAILABLE қатесімен сәтсіз аяқталады; ойдан шығарылған немесе ескірген қосалқы бағам пайдаланылмайды. Меншік иесінің жауабындағы amountMinor және quotes АҚШ доллары бухгалтерлік валютасын пайдаланады. quotes[method].settlement туынды валютадағы төлем котировкасын қамтиды. Қоғамдық төлем беті таңдалған төлем валютасын currency өрісінде, бастапқы бағаны baseAmountMinor/baseCurrency өрістерінде және анықтамалық бағамды fx өрісінде көрсетеді. Төлем жіберілгеннен кейін оның әдісін өзгерту мүмкін емес; шотта бір шлюз операциясы болады.\n\nМақсатты дүкен ішінде API кілтін жасаңыз және серверіңізден Authorization: Bearer <key> жіберіңіз. Оның дүкенге байланыстыруы өзгермейді; X-Kevmi-Store оған басқа дүкенге қолжетімділік бере алмайды. Браузер сеанстары X-Kevmi-Store: <storeId> таңдайды; оны алып тастағанда бірінші дүкен таңдалады. all мәні тек GET /api/account/dashboard және GET /api/payment-links сұраулары арқылы қабылданады. Өзгертулер таңдалған дүкенді, Origin және X-CSRF-Token талап етеді. Тіркелгі идентификаторлары мен дүкен идентификаторлары әртүрлі идентификаторлар болып табылады.\n\nҮйлесімділік үшін pricingMode=\"universal\" жоқ API сұраулары қолма-қол баға белгілеуді және бастапқы валюта шектеулерін сақтайды. Бар шоттар ешқашан қайта есептелмейді. Аналитикадағы расталған түбіртектер тексерілген төлемдерден сақталған шот шығындарын шегергендегі соманы көрсетеді; олар шығарылатын баланс емес. Мұрагерлік шот валюталары бөлек қалады, ал төлемдер қолдау қызметімен келісіледі. Тапсырысты тек payment.fulfillmentReady=true және payment.status=\"succeeded\" сервер API, оқиғалар тарихы немесе қол қойылған вебхук арқылы тексергеннен кейін орындаңыз.\n\n{\n  \"pricingMode\": \"universal\",\n  \"title\": \"Order 1042\",\n  \"amountMinor\": 1000,\n  \"currency\": \"USD\",\n  \"methods\": [\n    \"card\",\n    \"alipay\",\n    \"sbp\",\n    \"crypto\"\n  ],\n  \"vatCustomerPercent\": 100,\n  \"feeCustomerPercent\": 0\n}\n\nКөмекші, қолдау және жобаны басқару\n\nЖеке операцияларға көмек қажет болғанда, чатта менің деректеріме қолжетімділікті қосыңыз. includeAccount=true бар веб-сұраным жарамды сессияны, Origin және X-CSRF-Token-ді талап етеді; X-Kevmi-Store меншікті дүкенді немесе барлық меншікті дүкендерді таңдайды. Рұқсатсыз көмекші тек қоғамдық құжаттаманы пайдаланады. Telegram-да жіберуші анықталғаннан кейін жеке батырма қолжетімділікті қосады.\n\nread_account құралы меншікті дүкендерді, расталған төлем мәртебесі бар шот-фактураларды, оқиғаларды, өтінімдерді және маман жауаптары бар қолдау сұранымдарын оқиды. Ол 30 жазбаны және nextPage-ті қайтарады; ескі жазбалар пагинация арқылы қолжетімді. Әр жауаптағы оқулар шектеулі, сондықтан толық емес үлгі ашық көрсетілуі тиіс. API кілттері, вебхук құпиялары, карта деректері және сессиялар құралға берілмейді. Ол ақы ала алмайды, төлем жасай алмайды, қайтара алмайды немесе параметрлерді өзгерте алмайды.\n\nЖұмыс кеңістігінде немесе Telegram-да қолдау сұранымын жасау тұрақты кезекте бөлек әкімші ескертуін орналастырады. Ол /admin/tickets?ticket=<id> сілтемесімен байланысады; уақытша Telegram ақаулары қайта қайталанады. Қалпына келтіру ескертусіз ескі ашық сұранымдарды да қамтиды. Әкімшілер сұраным бетінде жауап береді; жауап пайдаланушы жұмыс кеңістігінде сақталады және қолдау хабарландыулары қосылғанда Telegram арқылы жіберіледі.\n\nБот негізгі мәзір, дүкендер, хабарландырулар, қолдау, қауіпсіздік және тіл үшін ішкі батырмаларды пайдаланады. Навигация ағымдағы хабарламаны өңдейді; қолжетімсіз ескі мәзір ауыстырылады. Төлем және қауіпсіздік хабарландырулары бір реттік навигация ретінде қарастырылмайды. Мәзір арқылы жүйеден шығу растауды қажет етеді. Айқын /logout командасы әлі де әрбір аккаунт сессиясын аяқтайды.\n\n/admin/project панелі сервер жағындағы MODERATOR_TELEGRAM_IDS рұқсат тізіміндегі Telegram ID-лерімен шектелген. Ол пайдаланушыларды, дүкендерді, операцияларды, кілтті жоюды, вебхукті өшіруді, шот-фактураны тоқтата тұруды, қабылдау бақылауын және аудит журналын қамтиды. Өзгертулер CSRF және себепті талап етеді. Панель әкімшіні шектей алмайды немесе төлемді қолмен сәтті деп жариялай алмайды. Меншіктісін шектеу сессияларды аяқтайды және API кілтіне қолжетімділікті бұғаттайды; дүкенді шектеу жаңа операцияларды тоқтатады. Тарих сақталады.\n\nҚоғамдық ұсыныс /public-offer мекенжайында және құпиялық саясаты /privacy-policy мекенжайында әрбір қосылған тілде қолжетімді. Монеталарды аты немесе тикері бойынша іздеңіз. Желі таңдағышы тек бірнеше тірі желі болғанда ғана пайда болады. Бір желі автоматты түрде таңдалады және растауда атауы қалады. Тірі шлюз қолжетімділігі таңдалатын жұптарды анықтайды; анықтамалық каталог қызметті қоспайды.\n\nКүнделікті веб-қосымша шығарылымдары үшін update.sh пайдаланыңыз: үміткерді құрастырыңыз, миграция тарихын тексеріңіз, SQLite-ті онлайн резервтеңіз, екінші контейнерді іске қосыңыз, оны тексеріңіз және Caddy-ді бірқалыпты ауыстырыңыз. Gateway, PostgreSQL және пошта қайта іске қосылмайды. Алдыңғы статикалық ресурстар ашық қойындылар үшін қолжетімді болып қалады. Жаңа миграция айқын уәкілеттікпен қарауды қажет етеді; үйлесімсіз схема өзгерісі үздіксіз орналастыру емес.\n\nҚоғамдық ұсыныс\n\nҚұпиялық саясаты",
      "readMinutes": 4
    },
    {
      "id": "payment-links-api",
      "title": "Төлем сілтемелері API және API кілттері",
      "summary": "Өз backend-іңізден шот-фактура жасаңыз және checkoutUrl бірден алыңыз. API аумақты кілттерді, идемпотентті қайта әрекеттерді, тәуелсіз комиссия және ҚҚС үлестерін, тапсырыс сілтемесін және жеке метадеректерді қолдайды.",
      "tags": [
        "API",
        "төлем сілтемесі",
        "идемпотенттілік",
        "төлем беті",
        "беттеу",
        "API кілті",
        "аумақ",
        "метадеректер"
      ],
      "sections": [
        {
          "id": "create",
          "title": "Сервер сұрауы дайын сілтемені қайтарады",
          "paragraphs": [
            "POST /api/v1/payments және /api/v1/payment-links бірдей шот түрін жасайды. payments маршрутының атауы төлемді білдірмейді: нәтиже — сақталған шот шарттары және тұтынушыға арналған checkoutUrl.",
            "Authorization: Bearer <key>, Content-Type: application/json және Idempotency-Key жіберіңіз. Идемпотенттік кілттер 16–100 әріптен, цифрдан, дефис немесе астыңғы сызықтан тұрады. Әр логикалық тапсырыс жасау үшін бір кілтті сақтаңыз."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "cURL · server only",
            "code": "curl 'https://kevmi.maxeevmax1.chatgpt.site/api/v1/payments' \\\n  -H \"Authorization: Bearer $KEVMI_API_KEY\" \\\n  -H 'Content-Type: application/json' \\\n  -H 'Idempotency-Key: order-1042-create-v1' \\\n  --data '{\"title\":\"Design project · order 1042\",\"description\":\"One-time payment for the agreed design work\",\"amountMinor\":500,\"currency\":\"USD\",\"methods\":[\"card\",\"alipay\"],\"vatCustomerPercent\":100,\"feeCustomerPercent\":0,\"orderId\":\"order-1042\",\"metadata\":{\"campaign\":\"autumn\"}}'"
          },
          "note": "Жауап link, checkoutUrl және replayed өрістерін қамтиды. checkoutUrl мәнін тұтынушыға немесе виджетке беріңіз; API кілтін серверіңізде сақтаңыз.",
          "links": []
        },
        {
          "id": "keys",
          "title": "API кілтінің аумақтары және мерзімі",
          "paragraphs": [
            "Расталған мерчант аккаунтыңыздағы /account#keys мекенжайында кілт жасаңыз. Оның толық мәні бір рет көрсетіледі; тек хэш сақталады. Кілттер әдепкі бойынша 90 күн жарамды, рұқсат етілген қызмет мерзімі 1–365 күн және аккаунтқа он белсенді кілтке дейін.",
            "Тек қажетті аумақтарды беріңіз. Қайтарып алу немесе мерзімнің аяқталуы қолжетімділікті тоқтатады. Кілт аккаунт параметрлері, конечный нүктелерін басқару, қосымшалар немесе модерация үшін браузер сеансын алмастырмайды. Оны виджеттерден, URL мекенжайларынан, жалпыға қолжетімді репозиторийлерден және қолдау хабарламаларынан алыс ұстаңыз.",
            "Веб-сайт /api/payment-links мекенжайын өзінің сеанс cookie, нақты Origin және X-CSRF-Token арқылы пайдаланады. Бұл маршруттар бірдей меншікті шоттармен жұмыс істейді."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Аумақ",
              "Мақсат"
            ],
            "rows": [
              [
                "invoices:read",
                "Меншікті шоттарды және олардың тізімін оқу"
              ],
              [
                "invoices:write",
                "Шоттар жасау және сілтеменің қолжетімділігін өзгерту"
              ],
              [
                "events:read",
                "Сервер оқиғалары журналын оқу"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Аккаунтыңыздағы API кілттері",
              "href": "/account#keys"
            }
          ]
        },
        {
          "id": "methods",
          "title": "Any және нақты API әдістері",
          "paragraphs": [
            "Any — интерфейсті таңдау режимі. Жаңа шоттар әдістерді қабылдайды: USD үшін [\"card\", \"alipay\"] немесе бос емес ішкі жиын; RUB үшін [\"sbp\"]; USDT үшін [\"crypto\"]. any мәні API төлем әдісі емес.",
            "Интерфейстегі жаңа шот үшін USD карталар мен Alipay ұсынады; RUB SBP ұсынады; USDT криптоны ұсынады. API сондай-ақ үйлесімділік үшін USD + криптоны сақтай алады, бірақ оның тірі крипто төлемі crypto_requires_usdt кодымен бұғатталған. USD және USDT бөлек, автоматты айырбастау немесе болжалған 1:1 бағам жоқ. Крипто төлемі бөлек USDT шотын талап етеді.",
            "Жаңа тірі карта немесе Alipay төлемі үшін ағымдағы шлюз тек feeCustomerPercent=0 және vatCustomerPercent=100 мәндерін қолдайды: сатушы барлық өңдеу комиссиясын жабады, ал ҚҚС клиент үшін толық қосылады. Басқа үлестер шотта сақталып, есептелуі мүмкін, бірақ орындау unsupported_allocation кодымен бұғатталған. Сервер үнсіз сақталған шарттарды өзгертпейді. SBP және USDT крипто төлемдері кез келген өңдеу комиссиясы үлесін қолдайды және ҚҚС жоқ."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Аккаунт интерфейсіндегі Any",
              "href": "/docs/payment-links#any"
            },
            {
              "label": "Төлем беті",
              "href": "/docs/checkout"
            }
          ]
        },
        {
          "id": "snapshot",
          "title": "Өрістер және сақталған шарттар",
          "paragraphs": [
            "Шот мерчант атауын, бағаны, валютаны, әдістерді, екі шығын үлесін және есептелген котировкаларды сақтайды. Метадеректер иеленушіге және сервер оқиғаларында қайтарылады, бірақ жалпыға қолжетімді checkout арқылы емес. Онда төлем құпияларын сақтамаңыз.",
            "Егер үлестер көрсетілмесе, мерчант комиссияны жабады; ҚҚС vatPayer мәнінен немесе аккаунт параметрінен мұрагерлік алады. Ішінара бөлу vatPayer=shared қайтара алады. Атау, orderId және сипаттама жалпыға қолжетімді."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Өріс",
              "Ереже"
            ],
            "rows": [
              [
                "атау / сипаттама",
                "1–120 / 0–500 таңба"
              ],
              [
                "amountMinor",
                "Бүтін сан 1–10,000,000,000; 500 дегеніміз USD-та $5.00"
              ],
              [
                "валюта / әдістер",
                "USD: card, alipay; RUB: sbp; USDT: crypto. Бос емес бірегей тізім."
              ],
              [
                "vatCustomerPercent / feeCustomerPercent",
                "Тәуелсіз бүтін сандық тұтынушы үлестері 0-ден 100-ге дейін"
              ],
              [
                "vatPayer",
                "Ескірген customer немесе merchant; ҚҚС үлесімен қайшылыққа түсе алмайды"
              ],
              [
                "orderId",
                "Қосымша, 100 таңбаға дейін; тұтынушыға көрінеді"
              ],
              [
                "метадеректер",
                "Он жолдық жазбаға дейін; кілт 1–40 әріп/цифр/_/-; мән 500 таңбаға дейін; жалпы 3000 UTF-8 байтқа дейін"
              ],
              [
                "expiresAt",
                "90 күн ішіндегі болашақ Unix мс; әдепкі бойынша жеті күн"
              ]
            ]
          },
          "code": null,
          "note": "Үйлесімділік үшін API USD + crypto мәнін де сақтайды, бірақ тірі крипто орындауы crypto_requires_usdt қатесімен бұғатталған. Жаңа крипто шоттары үшін USDT пайдаланыңыз; автоматты конвертациялау орындалмайды.",
          "links": [
            {
              "label": "Шығынды бөлу формулалары",
              "href": "/docs/cost-sharing"
            }
          ]
        },
        {
          "id": "idempotency",
          "title": "Желі қатесінен кейін қайта әрекеттену",
          "paragraphs": [
            "Бастапқы жасау 201 кодын replayed=false мәнімен қайтарады. Бірдей кілт және канондық дене 200, бастапқы checkoutUrl және replayed=true қайтарады. Бұл кілт астындағы басқа сұрау 409 IDEMPOTENCY_CONFLICT қайтарады.",
            "Таймауттан кейін басқа кілт жасамаңыз. Бастапқы сұрауды бірдей өрістермен қайталаңыз. Алынып тасталған мәндер өзгертілген параметрлерді қайта мұрагерлік алмайды. orderId тапсырысты корреляциялауға көмектеседі, бірақ Idempotency-Key орнын баспайды және сақтауда бірегей болуы талап етілмейді."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "read",
          "title": "Оқу және беттеу",
          "paragraphs": [
            "GET /api/v1/payments сілтемелер мен nextCursor қайтарады; GET /api/v1/payments/{id} бір меншікті сілтемені қайтарады. invoices:read қажет. Әдепкі бет өлшемі — 30; limit 1–100 қабылдайды.",
            "GET тізімі мен толық сипаттама жауаптары link.payment өрісін қамтиды: байланысты операцияның қысқаша сипаттамасы немесе операция жоқ кезде null. POST/PATCH жауаптары оны алып тастауы мүмкін; қысқаша сипаттама қажет болса шотты қайта оқыңыз. Сілтеме күйі жаңа төлемнің басталу мүмкіндігін бөлек сипаттайды. Карта өрістері мен жеке кілттер ешқашан қосылмайды.",
            "nextCursor мәнін өзгеріссіз URLSearchParams арқылы өткізіңіз. null соңын белгілейді; белгісіз және басқа мерчанттардың ID мәндері 404 қайтарады."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "HTTP",
            "code": "GET /api/v1/payments?limit=30\nAuthorization: Bearer <server-side key>"
          },
          "note": "",
          "links": []
        },
        {
          "id": "status",
          "title": "Кідірту, жалғастыру және болдырмау",
          "paragraphs": [
            "PATCH /api/v1/payments/{id} invoices:write кілтімен тек {\"status\":\"active\"}, {\"status\":\"paused\"} немесе {\"status\":\"cancelled\"} қабылдайды. Болдырмау түпкілікті. expired мерзімінің аяқталу уақытынан шығарылады; мерзімі аяқталған шотты ұзарту мүмкін емес.",
            "Баға, шығын үлестері, сипаттама, orderId, метадеректер және мерзім өзгермейді. Әртүрлі шарттар үшін басқа шот жасаңыз. Қолжетімділікті өзгерту invoice.updated оқиғасын шығарады, сәтті төлем оқиғасын емес."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "buyer",
          "title": "Тұтынушы жауабы",
          "paragraphs": [
            "GET /api/checkout/{token}?method=card жалпыға қолжетімді шотты, котировканы, әдістің қолжетімділігін және бар операцияны қайтарады. Иеленуші метадеректері, құпиялар және баланстар көрсетілмейді.",
            "POST /api/checkout/{token}/pay сайт Origin және нақты әдісті талап етеді. Карта деректері тек жабық күйде қабылданады: {intent,jwe}, браузер /card-intent алғаннан кейін. Банк кодтары шифрланып /code арқылы жіберіледі. Крипто сақталған USDT шотын және қолжетімді монета/желі жұбын пайдаланады.",
            "Жаңа төлем және карта ниеті сатушының соңғы веб-сайт шолу өтінімінің мақұлдануын талап етеді. Мақұлдау ғана төлем шлюзін қоспайды. Егер шолу жөнелтілгеннен кейін өзгерсе, бар операция мәртебе оқуы, есеп айырысу және сұралған банк коды үшін қолжетімді болып қалады.",
            "Тірі қосылымның жоқтығы GATEWAY_NOT_CONNECTED қайтарады; үйлесімсіз бөлу ешқашан басқа есептеумен алмастырылмайды. Күй және reconcile қайталанатын төлемсіз бастапқы операцияны оқиды."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Checkout виджеті",
              "href": "/docs/widgets"
            },
            {
              "label": "Вебхуктар арқылы төлемді растау",
              "href": "/docs/webhooks"
            }
          ]
        },
        {
          "id": "stores-usd",
          "title": "Бірнеше дүкен және бір АҚШ доллары базалық бағасы",
          "paragraphs": [
            "Жиынтық аналитика мен операциялар үшін Барлық дүкендерді таңдаңыз немесе жеке жазбалары үшін дүкенді таңдаңыз. Әр дүкеннің жеке storeId, атауы, ҚҚС әдепкі мәні, шоттары, API кілттері, вебхук нүктелері, оқиғалар тарихы және веб-сайт қосымшасы бар. Хабарландырулар мен қолдау билеттері тіркелгіге тиесілі. Тіркелгі 100 дүкенге дейін құра алады. Бар жазбалар оның бірінші дүкенінде қалады.",
            "Жаңа жұмыс кеңістігі шоттары pricingMode=\"universal\" және АҚШ доллары базалық бағасын пайдаланады. Any карта, alipay, sbp және криптоны қамтиды; сатушы ішкі жиынтықты таңдай алады. Карталар мен Alipay АҚШ долларымен есептейді. SBP Ресей Банкінің АҚШ доллары/рубль анықтамалық бағамын пайдаланып рубльмен есептейді. Крипто айқын шот ережесі бойынша USDT-мен есептейді: 1 АҚШ доллары = 1 USDT. Бұл шот айырбастау ережесі, нарықтық USDT котировкасы емес. Шлюз таңдалған монетаның бағамын, нақты аударым сомасын және нұсқауларды аударымға дейін береді.",
            "Анықтамалық бағам және екі сома да құру кезінде мұздатылады. Рубльге айырбастауды қамтитын шоттар 24 сағат ішінде мерзімі аяқталады. Егер анықтамалық бағамды алу мүмкін болмаса, құру FX_UNAVAILABLE қатесімен сәтсіз аяқталады; ойдан шығарылған немесе ескірген қосалқы бағам пайдаланылмайды. Меншік иесінің жауабындағы amountMinor және quotes АҚШ доллары бухгалтерлік валютасын пайдаланады. quotes[method].settlement туынды валютадағы төлем котировкасын қамтиды. Қоғамдық төлем беті таңдалған төлем валютасын currency өрісінде, бастапқы бағаны baseAmountMinor/baseCurrency өрістерінде және анықтамалық бағамды fx өрісінде көрсетеді. Төлем жіберілгеннен кейін оның әдісін өзгерту мүмкін емес; шотта бір шлюз операциясы болады.",
            "Мақсатты дүкен ішінде API кілтін жасаңыз және серверіңізден Authorization: Bearer <key> жіберіңіз. Оның дүкенге байланыстыруы өзгермейді; X-Kevmi-Store оған басқа дүкенге қолжетімділік бере алмайды. Браузер сеанстары X-Kevmi-Store: <storeId> таңдайды; оны алып тастағанда бірінші дүкен таңдалады. all мәні тек GET /api/account/dashboard және GET /api/payment-links сұраулары арқылы қабылданады. Өзгертулер таңдалған дүкенді, Origin және X-CSRF-Token талап етеді. Тіркелгі идентификаторлары мен дүкен идентификаторлары әртүрлі идентификаторлар болып табылады.",
            "Үйлесімділік үшін pricingMode=\"universal\" жоқ API сұраулары қолма-қол баға белгілеуді және бастапқы валюта шектеулерін сақтайды. Бар шоттар ешқашан қайта есептелмейді. Аналитикадағы расталған түбіртектер тексерілген төлемдерден сақталған шот шығындарын шегергендегі соманы көрсетеді; олар шығарылатын баланс емес. Мұрагерлік шот валюталары бөлек қалады, ал төлемдер қолдау қызметімен келісіледі. Тапсырысты тек payment.fulfillmentReady=true және payment.status=\"succeeded\" сервер API, оқиғалар тарихы немесе қол қойылған вебхук арқылы тексергеннен кейін орындаңыз."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        }
      ],
      "group": "developers",
      "url": "/docs/payment-links-api",
      "body": "Сервер сұрауы дайын сілтемені қайтарады\n\nPOST /api/v1/payments және /api/v1/payment-links бірдей шот түрін жасайды. payments маршрутының атауы төлемді білдірмейді: нәтиже — сақталған шот шарттары және тұтынушыға арналған checkoutUrl.\n\nAuthorization: Bearer <key>, Content-Type: application/json және Idempotency-Key жіберіңіз. Идемпотенттік кілттер 16–100 әріптен, цифрдан, дефис немесе астыңғы сызықтан тұрады. Әр логикалық тапсырыс жасау үшін бір кілтті сақтаңыз.\n\ncurl 'https://kevmi.maxeevmax1.chatgpt.site/api/v1/payments' \\\n  -H \"Authorization: Bearer $KEVMI_API_KEY\" \\\n  -H 'Content-Type: application/json' \\\n  -H 'Idempotency-Key: order-1042-create-v1' \\\n  --data '{\"title\":\"Design project · order 1042\",\"description\":\"One-time payment for the agreed design work\",\"amountMinor\":500,\"currency\":\"USD\",\"methods\":[\"card\",\"alipay\"],\"vatCustomerPercent\":100,\"feeCustomerPercent\":0,\"orderId\":\"order-1042\",\"metadata\":{\"campaign\":\"autumn\"}}'\n\nЖауап link, checkoutUrl және replayed өрістерін қамтиды. checkoutUrl мәнін тұтынушыға немесе виджетке беріңіз; API кілтін серверіңізде сақтаңыз.\n\nAPI кілтінің аумақтары және мерзімі\n\nРасталған мерчант аккаунтыңыздағы /account#keys мекенжайында кілт жасаңыз. Оның толық мәні бір рет көрсетіледі; тек хэш сақталады. Кілттер әдепкі бойынша 90 күн жарамды, рұқсат етілген қызмет мерзімі 1–365 күн және аккаунтқа он белсенді кілтке дейін.\n\nТек қажетті аумақтарды беріңіз. Қайтарып алу немесе мерзімнің аяқталуы қолжетімділікті тоқтатады. Кілт аккаунт параметрлері, конечный нүктелерін басқару, қосымшалар немесе модерация үшін браузер сеансын алмастырмайды. Оны виджеттерден, URL мекенжайларынан, жалпыға қолжетімді репозиторийлерден және қолдау хабарламаларынан алыс ұстаңыз.\n\nВеб-сайт /api/payment-links мекенжайын өзінің сеанс cookie, нақты Origin және X-CSRF-Token арқылы пайдаланады. Бұл маршруттар бірдей меншікті шоттармен жұмыс істейді.\n\nАумақ · Мақсат\ninvoices:read · Меншікті шоттарды және олардың тізімін оқу\ninvoices:write · Шоттар жасау және сілтеменің қолжетімділігін өзгерту\nevents:read · Сервер оқиғалары журналын оқу\n\nАккаунтыңыздағы API кілттері\n\nAny және нақты API әдістері\n\nAny — интерфейсті таңдау режимі. Жаңа шоттар әдістерді қабылдайды: USD үшін [\"card\", \"alipay\"] немесе бос емес ішкі жиын; RUB үшін [\"sbp\"]; USDT үшін [\"crypto\"]. any мәні API төлем әдісі емес.\n\nИнтерфейстегі жаңа шот үшін USD карталар мен Alipay ұсынады; RUB SBP ұсынады; USDT криптоны ұсынады. API сондай-ақ үйлесімділік үшін USD + криптоны сақтай алады, бірақ оның тірі крипто төлемі crypto_requires_usdt кодымен бұғатталған. USD және USDT бөлек, автоматты айырбастау немесе болжалған 1:1 бағам жоқ. Крипто төлемі бөлек USDT шотын талап етеді.\n\nЖаңа тірі карта немесе Alipay төлемі үшін ағымдағы шлюз тек feeCustomerPercent=0 және vatCustomerPercent=100 мәндерін қолдайды: сатушы барлық өңдеу комиссиясын жабады, ал ҚҚС клиент үшін толық қосылады. Басқа үлестер шотта сақталып, есептелуі мүмкін, бірақ орындау unsupported_allocation кодымен бұғатталған. Сервер үнсіз сақталған шарттарды өзгертпейді. SBP және USDT крипто төлемдері кез келген өңдеу комиссиясы үлесін қолдайды және ҚҚС жоқ.\n\nАккаунт интерфейсіндегі Any\n\nТөлем беті\n\nӨрістер және сақталған шарттар\n\nШот мерчант атауын, бағаны, валютаны, әдістерді, екі шығын үлесін және есептелген котировкаларды сақтайды. Метадеректер иеленушіге және сервер оқиғаларында қайтарылады, бірақ жалпыға қолжетімді checkout арқылы емес. Онда төлем құпияларын сақтамаңыз.\n\nЕгер үлестер көрсетілмесе, мерчант комиссияны жабады; ҚҚС vatPayer мәнінен немесе аккаунт параметрінен мұрагерлік алады. Ішінара бөлу vatPayer=shared қайтара алады. Атау, orderId және сипаттама жалпыға қолжетімді.\n\nӨріс · Ереже\nатау / сипаттама · 1–120 / 0–500 таңба\namountMinor · Бүтін сан 1–10,000,000,000; 500 дегеніміз USD-та $5.00\nвалюта / әдістер · USD: card, alipay; RUB: sbp; USDT: crypto. Бос емес бірегей тізім.\nvatCustomerPercent / feeCustomerPercent · Тәуелсіз бүтін сандық тұтынушы үлестері 0-ден 100-ге дейін\nvatPayer · Ескірген customer немесе merchant; ҚҚС үлесімен қайшылыққа түсе алмайды\norderId · Қосымша, 100 таңбаға дейін; тұтынушыға көрінеді\nметадеректер · Он жолдық жазбаға дейін; кілт 1–40 әріп/цифр/_/-; мән 500 таңбаға дейін; жалпы 3000 UTF-8 байтқа дейін\nexpiresAt · 90 күн ішіндегі болашақ Unix мс; әдепкі бойынша жеті күн\n\nҮйлесімділік үшін API USD + crypto мәнін де сақтайды, бірақ тірі крипто орындауы crypto_requires_usdt қатесімен бұғатталған. Жаңа крипто шоттары үшін USDT пайдаланыңыз; автоматты конвертациялау орындалмайды.\n\nШығынды бөлу формулалары\n\nЖелі қатесінен кейін қайта әрекеттену\n\nБастапқы жасау 201 кодын replayed=false мәнімен қайтарады. Бірдей кілт және канондық дене 200, бастапқы checkoutUrl және replayed=true қайтарады. Бұл кілт астындағы басқа сұрау 409 IDEMPOTENCY_CONFLICT қайтарады.\n\nТаймауттан кейін басқа кілт жасамаңыз. Бастапқы сұрауды бірдей өрістермен қайталаңыз. Алынып тасталған мәндер өзгертілген параметрлерді қайта мұрагерлік алмайды. orderId тапсырысты корреляциялауға көмектеседі, бірақ Idempotency-Key орнын баспайды және сақтауда бірегей болуы талап етілмейді.\n\nОқу және беттеу\n\nGET /api/v1/payments сілтемелер мен nextCursor қайтарады; GET /api/v1/payments/{id} бір меншікті сілтемені қайтарады. invoices:read қажет. Әдепкі бет өлшемі — 30; limit 1–100 қабылдайды.\n\nGET тізімі мен толық сипаттама жауаптары link.payment өрісін қамтиды: байланысты операцияның қысқаша сипаттамасы немесе операция жоқ кезде null. POST/PATCH жауаптары оны алып тастауы мүмкін; қысқаша сипаттама қажет болса шотты қайта оқыңыз. Сілтеме күйі жаңа төлемнің басталу мүмкіндігін бөлек сипаттайды. Карта өрістері мен жеке кілттер ешқашан қосылмайды.\n\nnextCursor мәнін өзгеріссіз URLSearchParams арқылы өткізіңіз. null соңын белгілейді; белгісіз және басқа мерчанттардың ID мәндері 404 қайтарады.\n\nGET /api/v1/payments?limit=30\nAuthorization: Bearer <server-side key>\n\nКідірту, жалғастыру және болдырмау\n\nPATCH /api/v1/payments/{id} invoices:write кілтімен тек {\"status\":\"active\"}, {\"status\":\"paused\"} немесе {\"status\":\"cancelled\"} қабылдайды. Болдырмау түпкілікті. expired мерзімінің аяқталу уақытынан шығарылады; мерзімі аяқталған шотты ұзарту мүмкін емес.\n\nБаға, шығын үлестері, сипаттама, orderId, метадеректер және мерзім өзгермейді. Әртүрлі шарттар үшін басқа шот жасаңыз. Қолжетімділікті өзгерту invoice.updated оқиғасын шығарады, сәтті төлем оқиғасын емес.\n\nТұтынушы жауабы\n\nGET /api/checkout/{token}?method=card жалпыға қолжетімді шотты, котировканы, әдістің қолжетімділігін және бар операцияны қайтарады. Иеленуші метадеректері, құпиялар және баланстар көрсетілмейді.\n\nPOST /api/checkout/{token}/pay сайт Origin және нақты әдісті талап етеді. Карта деректері тек жабық күйде қабылданады: {intent,jwe}, браузер /card-intent алғаннан кейін. Банк кодтары шифрланып /code арқылы жіберіледі. Крипто сақталған USDT шотын және қолжетімді монета/желі жұбын пайдаланады.\n\nЖаңа төлем және карта ниеті сатушының соңғы веб-сайт шолу өтінімінің мақұлдануын талап етеді. Мақұлдау ғана төлем шлюзін қоспайды. Егер шолу жөнелтілгеннен кейін өзгерсе, бар операция мәртебе оқуы, есеп айырысу және сұралған банк коды үшін қолжетімді болып қалады.\n\nТірі қосылымның жоқтығы GATEWAY_NOT_CONNECTED қайтарады; үйлесімсіз бөлу ешқашан басқа есептеумен алмастырылмайды. Күй және reconcile қайталанатын төлемсіз бастапқы операцияны оқиды.\n\nCheckout виджеті\n\nВебхуктар арқылы төлемді растау\n\nБірнеше дүкен және бір АҚШ доллары базалық бағасы\n\nЖиынтық аналитика мен операциялар үшін Барлық дүкендерді таңдаңыз немесе жеке жазбалары үшін дүкенді таңдаңыз. Әр дүкеннің жеке storeId, атауы, ҚҚС әдепкі мәні, шоттары, API кілттері, вебхук нүктелері, оқиғалар тарихы және веб-сайт қосымшасы бар. Хабарландырулар мен қолдау билеттері тіркелгіге тиесілі. Тіркелгі 100 дүкенге дейін құра алады. Бар жазбалар оның бірінші дүкенінде қалады.\n\nЖаңа жұмыс кеңістігі шоттары pricingMode=\"universal\" және АҚШ доллары базалық бағасын пайдаланады. Any карта, alipay, sbp және криптоны қамтиды; сатушы ішкі жиынтықты таңдай алады. Карталар мен Alipay АҚШ долларымен есептейді. SBP Ресей Банкінің АҚШ доллары/рубль анықтамалық бағамын пайдаланып рубльмен есептейді. Крипто айқын шот ережесі бойынша USDT-мен есептейді: 1 АҚШ доллары = 1 USDT. Бұл шот айырбастау ережесі, нарықтық USDT котировкасы емес. Шлюз таңдалған монетаның бағамын, нақты аударым сомасын және нұсқауларды аударымға дейін береді.\n\nАнықтамалық бағам және екі сома да құру кезінде мұздатылады. Рубльге айырбастауды қамтитын шоттар 24 сағат ішінде мерзімі аяқталады. Егер анықтамалық бағамды алу мүмкін болмаса, құру FX_UNAVAILABLE қатесімен сәтсіз аяқталады; ойдан шығарылған немесе ескірген қосалқы бағам пайдаланылмайды. Меншік иесінің жауабындағы amountMinor және quotes АҚШ доллары бухгалтерлік валютасын пайдаланады. quotes[method].settlement туынды валютадағы төлем котировкасын қамтиды. Қоғамдық төлем беті таңдалған төлем валютасын currency өрісінде, бастапқы бағаны baseAmountMinor/baseCurrency өрістерінде және анықтамалық бағамды fx өрісінде көрсетеді. Төлем жіберілгеннен кейін оның әдісін өзгерту мүмкін емес; шотта бір шлюз операциясы болады.\n\nМақсатты дүкен ішінде API кілтін жасаңыз және серверіңізден Authorization: Bearer <key> жіберіңіз. Оның дүкенге байланыстыруы өзгермейді; X-Kevmi-Store оған басқа дүкенге қолжетімділік бере алмайды. Браузер сеанстары X-Kevmi-Store: <storeId> таңдайды; оны алып тастағанда бірінші дүкен таңдалады. all мәні тек GET /api/account/dashboard және GET /api/payment-links сұраулары арқылы қабылданады. Өзгертулер таңдалған дүкенді, Origin және X-CSRF-Token талап етеді. Тіркелгі идентификаторлары мен дүкен идентификаторлары әртүрлі идентификаторлар болып табылады.\n\nҮйлесімділік үшін pricingMode=\"universal\" жоқ API сұраулары қолма-қол баға белгілеуді және бастапқы валюта шектеулерін сақтайды. Бар шоттар ешқашан қайта есептелмейді. Аналитикадағы расталған түбіртектер тексерілген төлемдерден сақталған шот шығындарын шегергендегі соманы көрсетеді; олар шығарылатын баланс емес. Мұрагерлік шот валюталары бөлек қалады, ал төлемдер қолдау қызметімен келісіледі. Тапсырысты тек payment.fulfillmentReady=true және payment.status=\"succeeded\" сервер API, оқиғалар тарихы немесе қол қойылған вебхук арқылы тексергеннен кейін орындаңыз.",
      "readMinutes": 7
    },
    {
      "id": "auth-api",
      "title": "Аутентификация және сессия API",
      "summary": "Кіру қысқа мерзімді челлендж, Telegram растау және түпнұсқа браузерді басқарудың дәлелін қажет етеді. Клиент ұсынған Telegram ID тұлғаның дәлелі емес.",
      "group": "developers",
      "url": "/docs/auth-api",
      "tags": [
        "аутентификация",
        "сессия",
        "CSRF",
        "челлендж",
        "API"
      ],
      "sections": [
        {
          "id": "start",
          "title": "Кіруді бастау",
          "paragraphs": [
            "POST /api/auth/telegram/start бос JSON объектісін {} қабылдайды. Ол нақты қолданба Origin және қолжетімді ботты талап етеді. Сервер 300 секундқа созылатын челлендж және қорғалған браузер-дәлел cookie файлын жасайды.",
            "201 жауабы challengeId, code, expiresAt және telegramUrl қамтиды. Дәлел cookie терең сілтемеден алынып тасталады және JavaScript үшін қолжетімсіз. Шектеу — хэштелген мекенжайға минутына алты бастау."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "JavaScript",
            "code": "const response = await fetch('/api/auth/telegram/start', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: '{}'\n});\nconst challenge = await response.json();\n// Show code and telegramUrl to the user."
          },
          "note": "",
          "links": []
        },
        {
          "id": "complete",
          "title": "Растауды күту",
          "paragraphs": [
            "POST /api/auth/telegram/complete {challengeId} қабылдайды. Ол Origin және түпнұсқа браузер-дәлел cookie файлын талап етеді. Растауға дейін жауап 202 {status: \"pending\"} болады.",
            "Растаудан кейін 200 status=authenticated, user, csrfToken және expiresAt қайтарады. Сессия бір рет беріледі. Мерзімі өткен челленджтер 410; пайдаланылған немесе жойылған челленджтер 409 қайтарады."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "JavaScript",
            "code": "const response = await fetch('/api/auth/telegram/complete', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({ challengeId: challenge.challengeId })\n});\nif (response.status === 202) {\n  // Poll again after a delay; do not create a new challenge.\n}"
          },
          "note": "",
          "links": []
        },
        {
          "id": "me",
          "title": "Сессияны оқу",
          "paragraphs": [
            "GET /api/auth/me жарамды сессия болмағанда 200 {authenticated:false} қайтарады. Кіру жауабы user, CSRF токені және мерзімді қамтиды.",
            "__Host-kevmi-session cookie файлы Secure, HttpOnly, SameSite=Lax және Path=/ параметрлерімен 24 сағатқа дейін сақталады. Дерекқор оның токенінің SHA-256 хэшін сақтайды. Профиль формасы cookie файлын оқи да, ауыстыра да алмайды."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "write",
          "title": "Есептік жазба өзгерістері",
          "paragraphs": [
            "Мутациялар сессияны, нақты Origin және ағымдағы X-CSRF-Token талап етеді. Sec-Fetch-Site: cross-site қабылданбайды. Сервер ерікті CORS қолжетімділігін ұсынбайды.",
            "Есептік жазба ID-і сұраныс енгізуінен емес, сессиядан алынады. Жетіспейтін және басқа пайдаланушының жазбалары иеленушілік туралы нақты мәліметтерді ашпайды."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "logout",
          "title": "Шығу",
          "paragraphs": [
            "POST /api/auth/logout ағымдағы сессияны аяқтайды және cookie файлын тазартады. Origin және CSRF қажет; дене оқылмайды. Telegram /logout барлық есептік жазба сессияларын да аяқтайды.",
            "Cookie файлдары басқа доменге автоматты түрде ауыспайды. Қызмет доменін өзгерткенде APP_ORIGIN және бот вебхукын жаңартыңыз, содан кейін қайта кіріңіз."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "assistant-admin-v16",
          "title": "Көмекші, қолдау және жобаны басқару",
          "paragraphs": [
            "Жеке операцияларға көмек қажет болғанда, чатта менің деректеріме қолжетімділікті қосыңыз. includeAccount=true бар веб-сұраным жарамды сессияны, Origin және X-CSRF-Token-ді талап етеді; X-Kevmi-Store меншікті дүкенді немесе барлық меншікті дүкендерді таңдайды. Рұқсатсыз көмекші тек қоғамдық құжаттаманы пайдаланады. Telegram-да жіберуші анықталғаннан кейін жеке батырма қолжетімділікті қосады.",
            "read_account құралы меншікті дүкендерді, расталған төлем мәртебесі бар шот-фактураларды, оқиғаларды, өтінімдерді және маман жауаптары бар қолдау сұранымдарын оқиды. Ол 30 жазбаны және nextPage-ті қайтарады; ескі жазбалар пагинация арқылы қолжетімді. Әр жауаптағы оқулар шектеулі, сондықтан толық емес үлгі ашық көрсетілуі тиіс. API кілттері, вебхук құпиялары, карта деректері және сессиялар құралға берілмейді. Ол ақы ала алмайды, төлем жасай алмайды, қайтара алмайды немесе параметрлерді өзгерте алмайды.",
            "Жұмыс кеңістігінде немесе Telegram-да қолдау сұранымын жасау тұрақты кезекте бөлек әкімші ескертуін орналастырады. Ол /admin/tickets?ticket=<id> сілтемесімен байланысады; уақытша Telegram ақаулары қайта қайталанады. Қалпына келтіру ескертусіз ескі ашық сұранымдарды да қамтиды. Әкімшілер сұраным бетінде жауап береді; жауап пайдаланушы жұмыс кеңістігінде сақталады және қолдау хабарландыулары қосылғанда Telegram арқылы жіберіледі.",
            "Бот негізгі мәзір, дүкендер, хабарландырулар, қолдау, қауіпсіздік және тіл үшін ішкі батырмаларды пайдаланады. Навигация ағымдағы хабарламаны өңдейді; қолжетімсіз ескі мәзір ауыстырылады. Төлем және қауіпсіздік хабарландырулары бір реттік навигация ретінде қарастырылмайды. Мәзір арқылы жүйеден шығу растауды қажет етеді. Айқын /logout командасы әлі де әрбір аккаунт сессиясын аяқтайды.",
            "/admin/project панелі сервер жағындағы MODERATOR_TELEGRAM_IDS рұқсат тізіміндегі Telegram ID-лерімен шектелген. Ол пайдаланушыларды, дүкендерді, операцияларды, кілтті жоюды, вебхукті өшіруді, шот-фактураны тоқтата тұруды, қабылдау бақылауын және аудит журналын қамтиды. Өзгертулер CSRF және себепті талап етеді. Панель әкімшіні шектей алмайды немесе төлемді қолмен сәтті деп жариялай алмайды. Меншіктісін шектеу сессияларды аяқтайды және API кілтіне қолжетімділікті бұғаттайды; дүкенді шектеу жаңа операцияларды тоқтатады. Тарих сақталады.",
            "Қоғамдық ұсыныс /public-offer мекенжайында және құпиялық саясаты /privacy-policy мекенжайында әрбір қосылған тілде қолжетімді. Монеталарды аты немесе тикері бойынша іздеңіз. Желі таңдағышы тек бірнеше тірі желі болғанда ғана пайда болады. Бір желі автоматты түрде таңдалады және растауда атауы қалады. Тірі шлюз қолжетімділігі таңдалатын жұптарды анықтайды; анықтамалық каталог қызметті қоспайды.",
            "Күнделікті веб-қосымша шығарылымдары үшін update.sh пайдаланыңыз: үміткерді құрастырыңыз, миграция тарихын тексеріңіз, SQLite-ті онлайн резервтеңіз, екінші контейнерді іске қосыңыз, оны тексеріңіз және Caddy-ді бірқалыпты ауыстырыңыз. Gateway, PostgreSQL және пошта қайта іске қосылмайды. Алдыңғы статикалық ресурстар ашық қойындылар үшін қолжетімді болып қалады. Жаңа миграция айқын уәкілеттікпен қарауды қажет етеді; үйлесімсіз схема өзгерісі үздіксіз орналастыру емес."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Қоғамдық ұсыныс",
              "href": "/public-offer"
            },
            {
              "label": "Құпиялық саясаты",
              "href": "/privacy-policy"
            }
          ]
        }
      ],
      "body": "Кіруді бастау\n\nPOST /api/auth/telegram/start бос JSON объектісін {} қабылдайды. Ол нақты қолданба Origin және қолжетімді ботты талап етеді. Сервер 300 секундқа созылатын челлендж және қорғалған браузер-дәлел cookie файлын жасайды.\n\n201 жауабы challengeId, code, expiresAt және telegramUrl қамтиды. Дәлел cookie терең сілтемеден алынып тасталады және JavaScript үшін қолжетімсіз. Шектеу — хэштелген мекенжайға минутына алты бастау.\n\nconst response = await fetch('/api/auth/telegram/start', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: '{}'\n});\nconst challenge = await response.json();\n// Show code and telegramUrl to the user.\n\nРастауды күту\n\nPOST /api/auth/telegram/complete {challengeId} қабылдайды. Ол Origin және түпнұсқа браузер-дәлел cookie файлын талап етеді. Растауға дейін жауап 202 {status: \"pending\"} болады.\n\nРастаудан кейін 200 status=authenticated, user, csrfToken және expiresAt қайтарады. Сессия бір рет беріледі. Мерзімі өткен челленджтер 410; пайдаланылған немесе жойылған челленджтер 409 қайтарады.\n\nconst response = await fetch('/api/auth/telegram/complete', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({ challengeId: challenge.challengeId })\n});\nif (response.status === 202) {\n  // Poll again after a delay; do not create a new challenge.\n}\n\nСессияны оқу\n\nGET /api/auth/me жарамды сессия болмағанда 200 {authenticated:false} қайтарады. Кіру жауабы user, CSRF токені және мерзімді қамтиды.\n\n__Host-kevmi-session cookie файлы Secure, HttpOnly, SameSite=Lax және Path=/ параметрлерімен 24 сағатқа дейін сақталады. Дерекқор оның токенінің SHA-256 хэшін сақтайды. Профиль формасы cookie файлын оқи да, ауыстыра да алмайды.\n\nЕсептік жазба өзгерістері\n\nМутациялар сессияны, нақты Origin және ағымдағы X-CSRF-Token талап етеді. Sec-Fetch-Site: cross-site қабылданбайды. Сервер ерікті CORS қолжетімділігін ұсынбайды.\n\nЕсептік жазба ID-і сұраныс енгізуінен емес, сессиядан алынады. Жетіспейтін және басқа пайдаланушының жазбалары иеленушілік туралы нақты мәліметтерді ашпайды.\n\nШығу\n\nPOST /api/auth/logout ағымдағы сессияны аяқтайды және cookie файлын тазартады. Origin және CSRF қажет; дене оқылмайды. Telegram /logout барлық есептік жазба сессияларын да аяқтайды.\n\nCookie файлдары басқа доменге автоматты түрде ауыспайды. Қызмет доменін өзгерткенде APP_ORIGIN және бот вебхукын жаңартыңыз, содан кейін қайта кіріңіз.\n\nКөмекші, қолдау және жобаны басқару\n\nЖеке операцияларға көмек қажет болғанда, чатта менің деректеріме қолжетімділікті қосыңыз. includeAccount=true бар веб-сұраным жарамды сессияны, Origin және X-CSRF-Token-ді талап етеді; X-Kevmi-Store меншікті дүкенді немесе барлық меншікті дүкендерді таңдайды. Рұқсатсыз көмекші тек қоғамдық құжаттаманы пайдаланады. Telegram-да жіберуші анықталғаннан кейін жеке батырма қолжетімділікті қосады.\n\nread_account құралы меншікті дүкендерді, расталған төлем мәртебесі бар шот-фактураларды, оқиғаларды, өтінімдерді және маман жауаптары бар қолдау сұранымдарын оқиды. Ол 30 жазбаны және nextPage-ті қайтарады; ескі жазбалар пагинация арқылы қолжетімді. Әр жауаптағы оқулар шектеулі, сондықтан толық емес үлгі ашық көрсетілуі тиіс. API кілттері, вебхук құпиялары, карта деректері және сессиялар құралға берілмейді. Ол ақы ала алмайды, төлем жасай алмайды, қайтара алмайды немесе параметрлерді өзгерте алмайды.\n\nЖұмыс кеңістігінде немесе Telegram-да қолдау сұранымын жасау тұрақты кезекте бөлек әкімші ескертуін орналастырады. Ол /admin/tickets?ticket=<id> сілтемесімен байланысады; уақытша Telegram ақаулары қайта қайталанады. Қалпына келтіру ескертусіз ескі ашық сұранымдарды да қамтиды. Әкімшілер сұраным бетінде жауап береді; жауап пайдаланушы жұмыс кеңістігінде сақталады және қолдау хабарландыулары қосылғанда Telegram арқылы жіберіледі.\n\nБот негізгі мәзір, дүкендер, хабарландырулар, қолдау, қауіпсіздік және тіл үшін ішкі батырмаларды пайдаланады. Навигация ағымдағы хабарламаны өңдейді; қолжетімсіз ескі мәзір ауыстырылады. Төлем және қауіпсіздік хабарландырулары бір реттік навигация ретінде қарастырылмайды. Мәзір арқылы жүйеден шығу растауды қажет етеді. Айқын /logout командасы әлі де әрбір аккаунт сессиясын аяқтайды.\n\n/admin/project панелі сервер жағындағы MODERATOR_TELEGRAM_IDS рұқсат тізіміндегі Telegram ID-лерімен шектелген. Ол пайдаланушыларды, дүкендерді, операцияларды, кілтті жоюды, вебхукті өшіруді, шот-фактураны тоқтата тұруды, қабылдау бақылауын және аудит журналын қамтиды. Өзгертулер CSRF және себепті талап етеді. Панель әкімшіні шектей алмайды немесе төлемді қолмен сәтті деп жариялай алмайды. Меншіктісін шектеу сессияларды аяқтайды және API кілтіне қолжетімділікті бұғаттайды; дүкенді шектеу жаңа операцияларды тоқтатады. Тарих сақталады.\n\nҚоғамдық ұсыныс /public-offer мекенжайында және құпиялық саясаты /privacy-policy мекенжайында әрбір қосылған тілде қолжетімді. Монеталарды аты немесе тикері бойынша іздеңіз. Желі таңдағышы тек бірнеше тірі желі болғанда ғана пайда болады. Бір желі автоматты түрде таңдалады және растауда атауы қалады. Тірі шлюз қолжетімділігі таңдалатын жұптарды анықтайды; анықтамалық каталог қызметті қоспайды.\n\nКүнделікті веб-қосымша шығарылымдары үшін update.sh пайдаланыңыз: үміткерді құрастырыңыз, миграция тарихын тексеріңіз, SQLite-ті онлайн резервтеңіз, екінші контейнерді іске қосыңыз, оны тексеріңіз және Caddy-ді бірқалыпты ауыстырыңыз. Gateway, PostgreSQL және пошта қайта іске қосылмайды. Алдыңғы статикалық ресурстар ашық қойындылар үшін қолжетімді болып қалады. Жаңа миграция айқын уәкілеттікпен қарауды қажет етеді; үйлесімсіз схема өзгерісі үздіксіз орналастыру емес.\n\nҚоғамдық ұсыныс\n\nҚұпиялық саясаты",
      "readMinutes": 3
    },
    {
      "id": "errors",
      "title": "Қателер және қайта әрекеттер",
      "summary": "API қателері біркелкі форматты пайдаланады. Код қолданба логикасына арналған; хабарлама мәселені түсіндіреді. Пайдаланушы енгізуін сақтаңыз және анық келесі қадамды ұсыныңыз.",
      "group": "developers",
      "url": "/docs/errors",
      "tags": [
        "қате",
        "429",
        "503",
        "қайта әрекет",
        "мәртебе"
      ],
      "sections": [
        {
          "id": "format",
          "title": "Бір қате форматы",
          "paragraphs": [
            "Жауаптар стек трейстерін, SQL-ді, токендерді немесе толық сыртқы провайдер жауабын қамтымайды. Ішкі шикі журналдарды клиентке көрсетпеңіз."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "JSON",
            "code": "{\n  \"error\": {\n    \"code\": \"GATEWAY_NOT_CONNECTED\",\n    \"message\": \"Financial operations are temporarily unavailable. Try later or contact support.\"\n  }\n}"
          },
          "note": "",
          "links": []
        },
        {
          "id": "codes",
          "title": "Жалпы қате топтары",
          "paragraphs": [],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "HTTP",
              "Мысалдар",
              "Келесі қадам"
            ],
            "rows": [
              [
                "400",
                "INVALID_JSON, UNKNOWN_FIELD, INVALID_INPUT",
                "Енгізуді және рұқсат етілген өрістерді тексеріңіз"
              ],
              [
                "401",
                "AUTH_REQUIRED, SESSION_EXPIRED",
                "Қайта кіріңіз"
              ],
              [
                "403",
                "INVALID_ORIGIN, CSRF_REQUIRED",
                "Origin және ағымдағы сессияны тексеріңіз"
              ],
              [
                "404",
                "NOT_FOUND, TICKET_NOT_FOUND",
                "Мекенжайды және иеленушілікті тексеріңіз"
              ],
              [
                "409",
                "CHALLENGE_UNAVAILABLE",
                "Жаңа кіруді бастаңыз"
              ],
              [
                "410",
                "CHALLENGE_EXPIRED",
                "Жаңа кіру сілтемесін жасаңыз"
              ],
              [
                "413",
                "REQUEST_TOO_LARGE",
                "Сұраныс денесін азайтыңыз"
              ],
              [
                "415",
                "JSON_REQUIRED",
                "application/json жіберіңіз"
              ],
              [
                "429",
                "RATE_LIMITED",
                "Жиілікті азайтыңыз және күтіңіз"
              ],
              [
                "503",
                "GATEWAY_NOT_CONNECTED, SERVICE_UNAVAILABLE",
                "Қолжетімділікті тексеріңіз немесе кейінірек әрекет етіңіз"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "rate",
          "title": "Жылдамдық шектеулері",
          "paragraphs": [],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Әрекет",
              "Шектеу"
            ],
            "rows": [
              [
                "Кіруді бастау",
                "Хэштелген мекенжайға минутына 6"
              ],
              [
                "Челленджді тексеру",
                "Челленджге минутына 90"
              ],
              [
                "Білім сұрағы",
                "D1 бар хэштелген мекенжайға минутына 12"
              ],
              [
                "Сервер сілтемесін жасау",
                "Пайдаланушыға минутына 20"
              ],
              [
                "Мерчант API",
                "Кілтке минутына 90 сұраныс"
              ],
              [
                "Жаңа қолданба",
                "Пайдаланушыға күніне бес"
              ],
              [
                "Қолданбаны жалғастыру / модератор шешімі",
                "Әр әрекет үшін пайдаланушыға минутына 30"
              ],
              [
                "Жасанды интеллект сайтқа шолу",
                "Сервис бойынша сағатына 30"
              ],
              [
                "Төлемді оқу немесе төлем жасауға әрекеттену",
                "Хэштелген мекенжай бойынша минутына 90"
              ],
              [
                "Қолдау сұранысын жасау",
                "Пайдаланушыға сағатына 6"
              ],
              [
                "Хабарландыруды тексеру",
                "Пайдаланушыға сағатына 3"
              ],
              [
                "Жасанды интеллект генерациясы",
                "Әдепкі бойынша сервис бойынша сағатына 60"
              ]
            ]
          },
          "code": null,
          "note": "Retry-After: 60 кідірісті білдіреді, сағаттық квота қалпына келгеніне кепілдік емес.",
          "links": []
        },
        {
          "id": "retry",
          "title": "Нені қайталап көруге болады",
          "paragraphs": [
            "Уақытша желі ақауы кезінде кідірістен кейін оқуды қайталап көруге болады. Мутацияны қайталап көрер алдында, түпнұсқа орындалғанын тексеріңіз; жоғалған жауап сәтсіздікті дәлелдемейді.",
            "Қаржылық операциялар идемпотенттілікті және сервер статусын тексеруді талап етеді. Клиенттің нәтиже бетіне қайта бағытталуы растаудың орнын баспайды."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "report",
          "title": "Сұранысқа нені қосу керек",
          "paragraphs": [],
          "bullets": [
            "Қатеге дейінгі бет және әрекет.",
            "Уақыт, уақыт белдеуі және көрінетін қате коды.",
            "Егер бар болса, сіздің шотыңыз немесе қолдау сұранысының нөмірі.",
            "Сіз күткен нәтиженің қысқаша сипаттамасы."
          ],
          "steps": [],
          "table": null,
          "code": null,
          "note": "Cookie, токен, авторизация заголовоктары, CVV немесе банктік кодтарды тіркемеңіз.",
          "links": []
        }
      ],
      "body": "Бір қате форматы\n\nЖауаптар стек трейстерін, SQL-ді, токендерді немесе толық сыртқы провайдер жауабын қамтымайды. Ішкі шикі журналдарды клиентке көрсетпеңіз.\n\n{\n  \"error\": {\n    \"code\": \"GATEWAY_NOT_CONNECTED\",\n    \"message\": \"Financial operations are temporarily unavailable. Try later or contact support.\"\n  }\n}\n\nЖалпы қате топтары\n\nHTTP · Мысалдар · Келесі қадам\n400 · INVALID_JSON, UNKNOWN_FIELD, INVALID_INPUT · Енгізуді және рұқсат етілген өрістерді тексеріңіз\n401 · AUTH_REQUIRED, SESSION_EXPIRED · Қайта кіріңіз\n403 · INVALID_ORIGIN, CSRF_REQUIRED · Origin және ағымдағы сессияны тексеріңіз\n404 · NOT_FOUND, TICKET_NOT_FOUND · Мекенжайды және иеленушілікті тексеріңіз\n409 · CHALLENGE_UNAVAILABLE · Жаңа кіруді бастаңыз\n410 · CHALLENGE_EXPIRED · Жаңа кіру сілтемесін жасаңыз\n413 · REQUEST_TOO_LARGE · Сұраныс денесін азайтыңыз\n415 · JSON_REQUIRED · application/json жіберіңіз\n429 · RATE_LIMITED · Жиілікті азайтыңыз және күтіңіз\n503 · GATEWAY_NOT_CONNECTED, SERVICE_UNAVAILABLE · Қолжетімділікті тексеріңіз немесе кейінірек әрекет етіңіз\n\nЖылдамдық шектеулері\n\nӘрекет · Шектеу\nКіруді бастау · Хэштелген мекенжайға минутына 6\nЧелленджді тексеру · Челленджге минутына 90\nБілім сұрағы · D1 бар хэштелген мекенжайға минутына 12\nСервер сілтемесін жасау · Пайдаланушыға минутына 20\nМерчант API · Кілтке минутына 90 сұраныс\nЖаңа қолданба · Пайдаланушыға күніне бес\nҚолданбаны жалғастыру / модератор шешімі · Әр әрекет үшін пайдаланушыға минутына 30\nЖасанды интеллект сайтқа шолу · Сервис бойынша сағатына 30\nТөлемді оқу немесе төлем жасауға әрекеттену · Хэштелген мекенжай бойынша минутына 90\nҚолдау сұранысын жасау · Пайдаланушыға сағатына 6\nХабарландыруды тексеру · Пайдаланушыға сағатына 3\nЖасанды интеллект генерациясы · Әдепкі бойынша сервис бойынша сағатына 60\n\nRetry-After: 60 кідірісті білдіреді, сағаттық квота қалпына келгеніне кепілдік емес.\n\nНені қайталап көруге болады\n\nУақытша желі ақауы кезінде кідірістен кейін оқуды қайталап көруге болады. Мутацияны қайталап көрер алдында, түпнұсқа орындалғанын тексеріңіз; жоғалған жауап сәтсіздікті дәлелдемейді.\n\nҚаржылық операциялар идемпотенттілікті және сервер статусын тексеруді талап етеді. Клиенттің нәтиже бетіне қайта бағытталуы растаудың орнын баспайды.\n\nСұранысқа нені қосу керек\n\nҚатеге дейінгі бет және әрекет.\n\nУақыт, уақыт белдеуі және көрінетін қате коды.\n\nЕгер бар болса, сіздің шотыңыз немесе қолдау сұранысының нөмірі.\n\nСіз күткен нәтиженің қысқаша сипаттамасы.\n\nCookie, токен, авторизация заголовоктары, CVV немесе банктік кодтарды тіркемеңіз.",
      "readMinutes": 3
    },
    {
      "id": "security",
      "title": "Интеграция қауіпсіздігі",
      "summary": "Сенімді тексерулер серверде жүргізіледі. Браузер интерфейсті басқарады, бірақ тұлғаны, қаржылық мәртебені немесе соңғы сомаларды анықтай алмайды.",
      "group": "developers",
      "url": "/docs/security",
      "tags": [
        "қауіпсіздік",
        "CSRF",
        "cookie",
        "меншік",
        "құпия",
        "идемпотенттілік"
      ],
      "sections": [
        {
          "id": "identity",
          "title": "Сессиялар және меншік",
          "paragraphs": [
            "Жарамды сервер сессиясы аккаунтты анықтайды. Параметрлер, сұраныстар, хабарландырулар және сілтемелер иесі бойынша сүзіледі. Формадан жіберілген userId бұл сүзгіні алмастыра алмайды.",
            "Мутациялар қосымша Origin және CSRF тексереді. Жария шот URL-і тек сол шотты көрсетеді және аккаунтқа қолжетімділік бермейді."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "secrets",
          "title": "Құпиялар серверде қалады",
          "paragraphs": [
            "Құпиялар Git, HTML, клиент JavaScript, OpenAPI мысалдары, llms файлдары немесе қолдау хабарламаларында пайда болмауы керек. Жария бот пайдаланушы аты құпия емес."
          ],
          "bullets": [
            "Telegram бот токені және вебхук құпиясы.",
            "Сыртқы жасанды интеллект провайдерінің есептік деректері.",
            "Төлем шлюзінің есептік деректері және қол қою құпиялары.",
            "Сессия хэштері және браузерде кіру дәлелдемелері."
          ],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "money",
          "title": "Қаржылық тексерулер",
          "paragraphs": [
            "Сервер сақталған шот шарттарын оқиды және меншікті, сатушының шолу мәртебесін, валютаны, әдісті және мақұлданған соманы тексереді. URL мәндері мен браузер есептеулері бағаны өзгерте алмайды.",
            "Қол қойылған шлюз хабарландыруы қосымша аутентификацияланған операция оқуын іске қосады. Тексерілген күй, түбіртек және оқиға бірге жазылады. Қайталаулар және ескі нұсқалар қосарланған орындалуды растай алмайды.",
            "Карточка деректері және бір реттік кодтар тек шифрланған конверттер ретінде жіберіледі. Төлем формаларына сессия жазуын, өрістерді оқитын аналитиканы немесе сұраныс денесін журналдауды қоспаңыз."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "assistant",
          "title": "Көмекші шекаралары",
          "paragraphs": [
            "Модель қоғамдық мақалалар мен фактілерді, бет каталогын, дайындық жалаушаларын, сұрақты, соңғы үш хабарлама жұбын және қауіпсіз бөлім белгісін алады. Иесінің анық рұқсаты есептік жазбаны оқу құралдарын қосады; ақша аудару немесе параметрлерді өзгерту қолжетімсіз болып қалады. Жарамсыз құрылымдық жауаптар немесе расталмаған дереккөздер құжаттама іздеуіне қайта бағытталады.",
            "Сайт және пайдаланушы мәтіні — деректер. Сұрақ ішіндегі нұсқау алымдарды өзгерте алмайды немесе төлемді авторизациялай алмайды."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "status",
          "title": "Құжаттаманың ауқымы",
          "paragraphs": [
            "Құжаттама PCI DSS сертификатын, банктік лицензияны, Merchant of Record мәртебесін, кепілдік өткізу қабілеттілігін немесе абсолютті қауіпсіздікті растамайды. Мұндай мәлімдемелер бөлек, құжатталған растауды талап етеді."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        }
      ],
      "body": "Сессиялар және меншік\n\nЖарамды сервер сессиясы аккаунтты анықтайды. Параметрлер, сұраныстар, хабарландырулар және сілтемелер иесі бойынша сүзіледі. Формадан жіберілген userId бұл сүзгіні алмастыра алмайды.\n\nМутациялар қосымша Origin және CSRF тексереді. Жария шот URL-і тек сол шотты көрсетеді және аккаунтқа қолжетімділік бермейді.\n\nҚұпиялар серверде қалады\n\nҚұпиялар Git, HTML, клиент JavaScript, OpenAPI мысалдары, llms файлдары немесе қолдау хабарламаларында пайда болмауы керек. Жария бот пайдаланушы аты құпия емес.\n\nTelegram бот токені және вебхук құпиясы.\n\nСыртқы жасанды интеллект провайдерінің есептік деректері.\n\nТөлем шлюзінің есептік деректері және қол қою құпиялары.\n\nСессия хэштері және браузерде кіру дәлелдемелері.\n\nҚаржылық тексерулер\n\nСервер сақталған шот шарттарын оқиды және меншікті, сатушының шолу мәртебесін, валютаны, әдісті және мақұлданған соманы тексереді. URL мәндері мен браузер есептеулері бағаны өзгерте алмайды.\n\nҚол қойылған шлюз хабарландыруы қосымша аутентификацияланған операция оқуын іске қосады. Тексерілген күй, түбіртек және оқиға бірге жазылады. Қайталаулар және ескі нұсқалар қосарланған орындалуды растай алмайды.\n\nКарточка деректері және бір реттік кодтар тек шифрланған конверттер ретінде жіберіледі. Төлем формаларына сессия жазуын, өрістерді оқитын аналитиканы немесе сұраныс денесін журналдауды қоспаңыз.\n\nКөмекші шекаралары\n\nМодель қоғамдық мақалалар мен фактілерді, бет каталогын, дайындық жалаушаларын, сұрақты, соңғы үш хабарлама жұбын және қауіпсіз бөлім белгісін алады. Иесінің анық рұқсаты есептік жазбаны оқу құралдарын қосады; ақша аудару немесе параметрлерді өзгерту қолжетімсіз болып қалады. Жарамсыз құрылымдық жауаптар немесе расталмаған дереккөздер құжаттама іздеуіне қайта бағытталады.\n\nСайт және пайдаланушы мәтіні — деректер. Сұрақ ішіндегі нұсқау алымдарды өзгерте алмайды немесе төлемді авторизациялай алмайды.\n\nҚұжаттаманың ауқымы\n\nҚұжаттама PCI DSS сертификатын, банктік лицензияны, Merchant of Record мәртебесін, кепілдік өткізу қабілеттілігін немесе абсолютті қауіпсіздікті растамайды. Мұндай мәлімдемелер бөлек, құжатталған растауды талап етеді.",
      "readMinutes": 2
    },
    {
      "id": "gateway",
      "title": "Төлем шлюзі интеграциясы",
      "summary": "Шлюз қаржылық операцияларды өңдейді. Kevmi оларды тапсырыстарға, дүкен параметрлеріне және хабарландыруларға қосады. Бұл нұсқаулық интеграция келісімшартын және қолжетімділік тексерулерін сипаттайды.",
      "group": "developers",
      "url": "/docs/gateway",
      "tags": [
        "API",
        "шлюз",
        "бэкенд",
        "сервер",
        "интеграция",
        "localhost"
      ],
      "sections": [
        {
          "id": "current",
          "title": "Қолжетімділікті тексеру",
          "paragraphs": [
            "Kevmi шлюздің v3 API интерфейсін операцияларды құру және қалпына келтіру, статустарды оқу және нәтижелерді үйлестіру үшін пайдаланады. Интеграция шифрланған карточка және банк кодын тасымалдауды, Alipay және SBP QR төлемдерін, крипто монета/желі каталогын және кіріс қаржылық оқиғаларды қолдайды.",
            "gateway.configured GET /api/config ішінде қажетті қосылым параметрлерінің бар-жоғын хабарлайды. Бұл нүкте шлюзді тексермейді; мұнда gateway.connected=false қосылым тексерілмегенін білдіреді. Нақты шот үшін GET /api/checkout/{token} ішінде invoice.availability оқыңыз: ол әдісті, соманы, шарттарды және сатушының мақұлдауын тексереді. invoice.gatewayConnected үйлесімділік өрісі availability.available көрсеткішін көрсетеді және ол да денсаулық тексеруі немесе төлемді мақұлдау кепілдігі емес.",
            "Жаңа төлем және карта ниеті сатушының соңғы веб-сайт шолу өтінімінің мақұлдануын талап етеді. Мақұлдау ғана төлем шлюзін қоспайды. Егер шолу жөнелтілгеннен кейін өзгерсе, бар операция мәртебе оқуы, есеп айырысу және сұралған банк коды үшін қолжетімді болып қалады."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "required",
          "title": "Клиенттің төлем келісімшарты",
          "paragraphs": [
            "Құпия деректер браузерде RSA-OAEP-256 және A256GCM көмегімен шифрланады. Жеке кілт шлюзде қалады. Kevmi ниеттің осы шотқа және мақсатқа тиесілі екенін тексереді, конвертті жібереді және ашық мәтіндегі карточка нөмірлерін, CVV, сатып алушының атын, email, банк кодтарын немесе конверттің өзін сақтамайды.",
            "Карточкаларды қосу алдында шлюз хастына шифрланған тасымалдау кеңейтілімін орнатыңыз. Ол ниет қолтаңбасын, мерзімін, қайталануды, тапсырысты және сомаларды тексереді. Ашық мәтінге ауысу жоқ. Бұл қорғау механизмін сипаттайды, PCI сертификатын емес."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Kevmi маршруты",
              "Мақсат"
            ],
            "rows": [
              [
                "GET /api/checkout/{token}",
                "Шот, ұсыныс, әдістің қолжетімділігі және бар төлем"
              ],
              [
                "POST /api/checkout/{token}/card-intent",
                "Төлем немесе код үшін бір реттік intent және ашық кілт"
              ],
              [
                "POST /api/checkout/{token}/pay",
                "Операцияны бастау; карта мәліметтері шифрланған: {intent,jwe}"
              ],
              [
                "POST /api/checkout/{token}/code",
                "Ағымдағы банктендіру үшін шифрланған бір реттік код"
              ],
              [
                "GET /api/checkout/{token}/status",
                "Қосымша төлемсіз бастапқы операцияны оқу"
              ],
              [
                "POST /api/checkout/{token}/reconcile",
                "Бастапқы операцияны анық келістіру"
              ],
              [
                "GET /api/checkout/{token}/crypto-services",
                "USDT шоты-фан ағымдағы монеталар, желілер және шектеулер"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "network",
          "title": "Хостинг және шлюз қосылымы",
          "paragraphs": [
            "Kevmi Cloudflare Workers-те D1 арқылы Sites хостингін және Node.js-те SQLite арқылы өз-өзі хостингті қолдайды. SQLite тұрақты көлем мен резервтік көшірмелерді қажет етеді. Төлем шлюзі жеке қызмет ретінде өзінің тұрақты сақтау орнымен жұмыс істейді.",
            "Сыртқы шлюз серверге қолжетімді HTTPS origin талап етеді. Өз-өзі хостингті жинақта сервер жеке контейнер желісіндегі бекітілген шлюз қызметіне қосылады; шлюз қызметінің API интернетке ашық емес. Қоғамдық сайт пен қайта қоңыраулар HTTPS пайдаланады. Браузер сонымен қатар карта мәліметтерін және банк кодтарын Kevmi-ге жеткенге дейін шифрлайды.",
            "localhost ағымдағы серверді немесе контейнерді білдіреді; ол шлюз иесінің компьютерін ашпайды. Қосылу кілттері мен құпиялар тек сервер конфигурациясында болады.",
            "Теңшелетін домен үшін құру алдында NEXT_PUBLIC_SITE_URL ішінде қоғамдық HTTPS origin орнатыңыз. Құжаттама, канондық сілтемелер және индекстеу ресурстары осы мәнді пайдаланады. Ол тек схеманы және хостты, қосымша портпен қабылдайды, жолсыз, сұраныссыз, фрагментсіз немесе тіркелгі деректерінсіз. Оны сервер конфигурациясындағы APP_ORIGIN мәнімен сәйкестендіріңіз."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "adapter",
          "title": "Есептеу және қолдау көрсетілетін шарттар",
          "paragraphs": [
            "Жаңа жұмыс кеңістігі шоттары АҚШ доллары базалық бағасын пайдаланады, ал Any төрт әдістің барлығын ұсынады. SBP Ресей Банкінің мұздатылған анықтамалық бағамы бойынша рубльге айырбастайды; крипто айқын 1:1 АҚШ доллары/USDT шот ережесін пайдаланады. Мұрагерлік қолма-қол баға белгілеу ескі шоттар мен pricingMode=universal жоқ API сұраулары үшін қолжетімді болып қалады. Төмендегі бірнеше дүкен және АҚШ доллары бағасы бөлімін қараңыз.",
            "Жаңа тірі карта немесе Alipay төлемі үшін ағымдағы шлюз тек feeCustomerPercent=0 және vatCustomerPercent=100 мәндерін қолдайды: сатушы барлық өңдеу комиссиясын жабады, ал ҚҚС клиент үшін толық қосылады. Басқа үлестер шотта сақталып, есептелуі мүмкін, бірақ орындау unsupported_allocation кодымен бұғатталған. Сервер үнсіз сақталған шарттарды өзгертпейді. SBP және USDT крипто төлемдері кез келген өңдеу комиссиясы үлесін қолдайды және ҚҚС жоқ.",
            "Ерікті total_cents жіберу провайдердің салық есептеуін өзгертпейді. Сақталған сомадан ерекшеленетін нақты сома тексеруге түседі және орындалуды растай алмайды. Шлюздің business_balance өрістері есеп айырысу дәлелі ретінде сақталады, Kevmi саудагер балансы ретінде қарастырылмайды."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "activation",
          "title": "Тірі шлюзді қосу",
          "paragraphs": [
            "Шлюзді қосу сервер конфигурациясын, таңдалған арналарды тексеруді және расталған қаржылық оқиғаларды өңдеуді қамтиды. Конфигурацияның дайындығы провайдер қосылымынан бөлек тексеріледі. Сәтті төлем операция мәртебесі мен сомасын тексергеннен кейін қабылданады. Орналастыру нұсқаулықтары ops/gateway-integration.md ішінде."
          ],
          "bullets": [],
          "steps": [
            "Kevmi серверін және шлюзді жеке қызметтер ретінде орналастырыңыз. Тұрақты сақтауды, резервтік көшірмелерді және қажетті фондық процестерді конфигурациялаңыз.",
            "Сыртқы қосылым үшін GATEWAY_BASE_URL ішінде HTTPS origin орнатыңыз. Өз-өзі хостингті жинақта өзінің конфигурацияланған ішкі қызметін пайдаланады. Екеуі де тек серверге арналған GATEWAY_API_KEY және бөлек GATEWAY_WEBHOOK_SECRET талап етеді; құпиялар ешқашан браузерге жетпейді.",
            "Шлюздің BACKEND_WEBHOOK_URL мәнін Kevmi-де /api/gateway/webhook деп және сәйкес BACKEND_WEBHOOK_SECRET мәнін орнатыңыз.",
            "Шифрланған карта тасымалын қосыңыз және оның жеке кілтін тек шлюз хостында сақтаңыз. Ашық кілттің қолжетімділігін және сәйкес intent қол қою параметрлерін тексеріңіз.",
            "Іске қосу алдында арна дайындығын, шектеулерді және саудагер веб-сайтының мақұлдауын тексеріңіз."
          ],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Вебхуктар және қайталанатын оқиғалар",
              "href": "/docs/webhooks"
            },
            {
              "label": "Қауіпсіздік",
              "href": "/docs/security"
            }
          ]
        },
        {
          "id": "stores-usd",
          "title": "Бірнеше дүкен және бір АҚШ доллары базалық бағасы",
          "paragraphs": [
            "Жиынтық аналитика мен операциялар үшін Барлық дүкендерді таңдаңыз немесе жеке жазбалары үшін дүкенді таңдаңыз. Әр дүкеннің жеке storeId, атауы, ҚҚС әдепкі мәні, шоттары, API кілттері, вебхук нүктелері, оқиғалар тарихы және веб-сайт қосымшасы бар. Хабарландырулар мен қолдау билеттері тіркелгіге тиесілі. Тіркелгі 100 дүкенге дейін құра алады. Бар жазбалар оның бірінші дүкенінде қалады.",
            "Жаңа жұмыс кеңістігі шоттары pricingMode=\"universal\" және АҚШ доллары базалық бағасын пайдаланады. Any карта, alipay, sbp және криптоны қамтиды; сатушы ішкі жиынтықты таңдай алады. Карталар мен Alipay АҚШ долларымен есептейді. SBP Ресей Банкінің АҚШ доллары/рубль анықтамалық бағамын пайдаланып рубльмен есептейді. Крипто айқын шот ережесі бойынша USDT-мен есептейді: 1 АҚШ доллары = 1 USDT. Бұл шот айырбастау ережесі, нарықтық USDT котировкасы емес. Шлюз таңдалған монетаның бағамын, нақты аударым сомасын және нұсқауларды аударымға дейін береді.",
            "Анықтамалық бағам және екі сома да құру кезінде мұздатылады. Рубльге айырбастауды қамтитын шоттар 24 сағат ішінде мерзімі аяқталады. Егер анықтамалық бағамды алу мүмкін болмаса, құру FX_UNAVAILABLE қатесімен сәтсіз аяқталады; ойдан шығарылған немесе ескірген қосалқы бағам пайдаланылмайды. Меншік иесінің жауабындағы amountMinor және quotes АҚШ доллары бухгалтерлік валютасын пайдаланады. quotes[method].settlement туынды валютадағы төлем котировкасын қамтиды. Қоғамдық төлем беті таңдалған төлем валютасын currency өрісінде, бастапқы бағаны baseAmountMinor/baseCurrency өрістерінде және анықтамалық бағамды fx өрісінде көрсетеді. Төлем жіберілгеннен кейін оның әдісін өзгерту мүмкін емес; шотта бір шлюз операциясы болады.",
            "Мақсатты дүкен ішінде API кілтін жасаңыз және серверіңізден Authorization: Bearer <key> жіберіңіз. Оның дүкенге байланыстыруы өзгермейді; X-Kevmi-Store оған басқа дүкенге қолжетімділік бере алмайды. Браузер сеанстары X-Kevmi-Store: <storeId> таңдайды; оны алып тастағанда бірінші дүкен таңдалады. all мәні тек GET /api/account/dashboard және GET /api/payment-links сұраулары арқылы қабылданады. Өзгертулер таңдалған дүкенді, Origin және X-CSRF-Token талап етеді. Тіркелгі идентификаторлары мен дүкен идентификаторлары әртүрлі идентификаторлар болып табылады.",
            "Үйлесімділік үшін pricingMode=\"universal\" жоқ API сұраулары қолма-қол баға белгілеуді және бастапқы валюта шектеулерін сақтайды. Бар шоттар ешқашан қайта есептелмейді. Аналитикадағы расталған түбіртектер тексерілген төлемдерден сақталған шот шығындарын шегергендегі соманы көрсетеді; олар шығарылатын баланс емес. Мұрагерлік шот валюталары бөлек қалады, ал төлемдер қолдау қызметімен келісіледі. Тапсырысты тек payment.fulfillmentReady=true және payment.status=\"succeeded\" сервер API, оқиғалар тарихы немесе қол қойылған вебхук арқылы тексергеннен кейін орындаңыз."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "assistant-admin-v16",
          "title": "Көмекші, қолдау және жобаны басқару",
          "paragraphs": [
            "Жеке операцияларға көмек қажет болғанда, чатта менің деректеріме қолжетімділікті қосыңыз. includeAccount=true бар веб-сұраным жарамды сессияны, Origin және X-CSRF-Token-ді талап етеді; X-Kevmi-Store меншікті дүкенді немесе барлық меншікті дүкендерді таңдайды. Рұқсатсыз көмекші тек қоғамдық құжаттаманы пайдаланады. Telegram-да жіберуші анықталғаннан кейін жеке батырма қолжетімділікті қосады.",
            "read_account құралы меншікті дүкендерді, расталған төлем мәртебесі бар шот-фактураларды, оқиғаларды, өтінімдерді және маман жауаптары бар қолдау сұранымдарын оқиды. Ол 30 жазбаны және nextPage-ті қайтарады; ескі жазбалар пагинация арқылы қолжетімді. Әр жауаптағы оқулар шектеулі, сондықтан толық емес үлгі ашық көрсетілуі тиіс. API кілттері, вебхук құпиялары, карта деректері және сессиялар құралға берілмейді. Ол ақы ала алмайды, төлем жасай алмайды, қайтара алмайды немесе параметрлерді өзгерте алмайды.",
            "Жұмыс кеңістігінде немесе Telegram-да қолдау сұранымын жасау тұрақты кезекте бөлек әкімші ескертуін орналастырады. Ол /admin/tickets?ticket=<id> сілтемесімен байланысады; уақытша Telegram ақаулары қайта қайталанады. Қалпына келтіру ескертусіз ескі ашық сұранымдарды да қамтиды. Әкімшілер сұраным бетінде жауап береді; жауап пайдаланушы жұмыс кеңістігінде сақталады және қолдау хабарландыулары қосылғанда Telegram арқылы жіберіледі.",
            "Бот негізгі мәзір, дүкендер, хабарландырулар, қолдау, қауіпсіздік және тіл үшін ішкі батырмаларды пайдаланады. Навигация ағымдағы хабарламаны өңдейді; қолжетімсіз ескі мәзір ауыстырылады. Төлем және қауіпсіздік хабарландырулары бір реттік навигация ретінде қарастырылмайды. Мәзір арқылы жүйеден шығу растауды қажет етеді. Айқын /logout командасы әлі де әрбір аккаунт сессиясын аяқтайды.",
            "/admin/project панелі сервер жағындағы MODERATOR_TELEGRAM_IDS рұқсат тізіміндегі Telegram ID-лерімен шектелген. Ол пайдаланушыларды, дүкендерді, операцияларды, кілтті жоюды, вебхукті өшіруді, шот-фактураны тоқтата тұруды, қабылдау бақылауын және аудит журналын қамтиды. Өзгертулер CSRF және себепті талап етеді. Панель әкімшіні шектей алмайды немесе төлемді қолмен сәтті деп жариялай алмайды. Меншіктісін шектеу сессияларды аяқтайды және API кілтіне қолжетімділікті бұғаттайды; дүкенді шектеу жаңа операцияларды тоқтатады. Тарих сақталады.",
            "Қоғамдық ұсыныс /public-offer мекенжайында және құпиялық саясаты /privacy-policy мекенжайында әрбір қосылған тілде қолжетімді. Монеталарды аты немесе тикері бойынша іздеңіз. Желі таңдағышы тек бірнеше тірі желі болғанда ғана пайда болады. Бір желі автоматты түрде таңдалады және растауда атауы қалады. Тірі шлюз қолжетімділігі таңдалатын жұптарды анықтайды; анықтамалық каталог қызметті қоспайды.",
            "Күнделікті веб-қосымша шығарылымдары үшін update.sh пайдаланыңыз: үміткерді құрастырыңыз, миграция тарихын тексеріңіз, SQLite-ті онлайн резервтеңіз, екінші контейнерді іске қосыңыз, оны тексеріңіз және Caddy-ді бірқалыпты ауыстырыңыз. Gateway, PostgreSQL және пошта қайта іске қосылмайды. Алдыңғы статикалық ресурстар ашық қойындылар үшін қолжетімді болып қалады. Жаңа миграция айқын уәкілеттікпен қарауды қажет етеді; үйлесімсіз схема өзгерісі үздіксіз орналастыру емес."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Қоғамдық ұсыныс",
              "href": "/public-offer"
            },
            {
              "label": "Құпиялық саясаты",
              "href": "/privacy-policy"
            }
          ]
        }
      ],
      "body": "Қолжетімділікті тексеру\n\nKevmi шлюздің v3 API интерфейсін операцияларды құру және қалпына келтіру, статустарды оқу және нәтижелерді үйлестіру үшін пайдаланады. Интеграция шифрланған карточка және банк кодын тасымалдауды, Alipay және SBP QR төлемдерін, крипто монета/желі каталогын және кіріс қаржылық оқиғаларды қолдайды.\n\ngateway.configured GET /api/config ішінде қажетті қосылым параметрлерінің бар-жоғын хабарлайды. Бұл нүкте шлюзді тексермейді; мұнда gateway.connected=false қосылым тексерілмегенін білдіреді. Нақты шот үшін GET /api/checkout/{token} ішінде invoice.availability оқыңыз: ол әдісті, соманы, шарттарды және сатушының мақұлдауын тексереді. invoice.gatewayConnected үйлесімділік өрісі availability.available көрсеткішін көрсетеді және ол да денсаулық тексеруі немесе төлемді мақұлдау кепілдігі емес.\n\nЖаңа төлем және карта ниеті сатушының соңғы веб-сайт шолу өтінімінің мақұлдануын талап етеді. Мақұлдау ғана төлем шлюзін қоспайды. Егер шолу жөнелтілгеннен кейін өзгерсе, бар операция мәртебе оқуы, есеп айырысу және сұралған банк коды үшін қолжетімді болып қалады.\n\nКлиенттің төлем келісімшарты\n\nҚұпия деректер браузерде RSA-OAEP-256 және A256GCM көмегімен шифрланады. Жеке кілт шлюзде қалады. Kevmi ниеттің осы шотқа және мақсатқа тиесілі екенін тексереді, конвертті жібереді және ашық мәтіндегі карточка нөмірлерін, CVV, сатып алушының атын, email, банк кодтарын немесе конверттің өзін сақтамайды.\n\nКарточкаларды қосу алдында шлюз хастына шифрланған тасымалдау кеңейтілімін орнатыңыз. Ол ниет қолтаңбасын, мерзімін, қайталануды, тапсырысты және сомаларды тексереді. Ашық мәтінге ауысу жоқ. Бұл қорғау механизмін сипаттайды, PCI сертификатын емес.\n\nKevmi маршруты · Мақсат\nGET /api/checkout/{token} · Шот, ұсыныс, әдістің қолжетімділігі және бар төлем\nPOST /api/checkout/{token}/card-intent · Төлем немесе код үшін бір реттік intent және ашық кілт\nPOST /api/checkout/{token}/pay · Операцияны бастау; карта мәліметтері шифрланған: {intent,jwe}\nPOST /api/checkout/{token}/code · Ағымдағы банктендіру үшін шифрланған бір реттік код\nGET /api/checkout/{token}/status · Қосымша төлемсіз бастапқы операцияны оқу\nPOST /api/checkout/{token}/reconcile · Бастапқы операцияны анық келістіру\nGET /api/checkout/{token}/crypto-services · USDT шоты-фан ағымдағы монеталар, желілер және шектеулер\n\nХостинг және шлюз қосылымы\n\nKevmi Cloudflare Workers-те D1 арқылы Sites хостингін және Node.js-те SQLite арқылы өз-өзі хостингті қолдайды. SQLite тұрақты көлем мен резервтік көшірмелерді қажет етеді. Төлем шлюзі жеке қызмет ретінде өзінің тұрақты сақтау орнымен жұмыс істейді.\n\nСыртқы шлюз серверге қолжетімді HTTPS origin талап етеді. Өз-өзі хостингті жинақта сервер жеке контейнер желісіндегі бекітілген шлюз қызметіне қосылады; шлюз қызметінің API интернетке ашық емес. Қоғамдық сайт пен қайта қоңыраулар HTTPS пайдаланады. Браузер сонымен қатар карта мәліметтерін және банк кодтарын Kevmi-ге жеткенге дейін шифрлайды.\n\nlocalhost ағымдағы серверді немесе контейнерді білдіреді; ол шлюз иесінің компьютерін ашпайды. Қосылу кілттері мен құпиялар тек сервер конфигурациясында болады.\n\nТеңшелетін домен үшін құру алдында NEXT_PUBLIC_SITE_URL ішінде қоғамдық HTTPS origin орнатыңыз. Құжаттама, канондық сілтемелер және индекстеу ресурстары осы мәнді пайдаланады. Ол тек схеманы және хостты, қосымша портпен қабылдайды, жолсыз, сұраныссыз, фрагментсіз немесе тіркелгі деректерінсіз. Оны сервер конфигурациясындағы APP_ORIGIN мәнімен сәйкестендіріңіз.\n\nЕсептеу және қолдау көрсетілетін шарттар\n\nЖаңа жұмыс кеңістігі шоттары АҚШ доллары базалық бағасын пайдаланады, ал Any төрт әдістің барлығын ұсынады. SBP Ресей Банкінің мұздатылған анықтамалық бағамы бойынша рубльге айырбастайды; крипто айқын 1:1 АҚШ доллары/USDT шот ережесін пайдаланады. Мұрагерлік қолма-қол баға белгілеу ескі шоттар мен pricingMode=universal жоқ API сұраулары үшін қолжетімді болып қалады. Төмендегі бірнеше дүкен және АҚШ доллары бағасы бөлімін қараңыз.\n\nЖаңа тірі карта немесе Alipay төлемі үшін ағымдағы шлюз тек feeCustomerPercent=0 және vatCustomerPercent=100 мәндерін қолдайды: сатушы барлық өңдеу комиссиясын жабады, ал ҚҚС клиент үшін толық қосылады. Басқа үлестер шотта сақталып, есептелуі мүмкін, бірақ орындау unsupported_allocation кодымен бұғатталған. Сервер үнсіз сақталған шарттарды өзгертпейді. SBP және USDT крипто төлемдері кез келген өңдеу комиссиясы үлесін қолдайды және ҚҚС жоқ.\n\nЕрікті total_cents жіберу провайдердің салық есептеуін өзгертпейді. Сақталған сомадан ерекшеленетін нақты сома тексеруге түседі және орындалуды растай алмайды. Шлюздің business_balance өрістері есеп айырысу дәлелі ретінде сақталады, Kevmi саудагер балансы ретінде қарастырылмайды.\n\nТірі шлюзді қосу\n\nШлюзді қосу сервер конфигурациясын, таңдалған арналарды тексеруді және расталған қаржылық оқиғаларды өңдеуді қамтиды. Конфигурацияның дайындығы провайдер қосылымынан бөлек тексеріледі. Сәтті төлем операция мәртебесі мен сомасын тексергеннен кейін қабылданады. Орналастыру нұсқаулықтары ops/gateway-integration.md ішінде.\n\nKevmi серверін және шлюзді жеке қызметтер ретінде орналастырыңыз. Тұрақты сақтауды, резервтік көшірмелерді және қажетті фондық процестерді конфигурациялаңыз.\n\nСыртқы қосылым үшін GATEWAY_BASE_URL ішінде HTTPS origin орнатыңыз. Өз-өзі хостингті жинақта өзінің конфигурацияланған ішкі қызметін пайдаланады. Екеуі де тек серверге арналған GATEWAY_API_KEY және бөлек GATEWAY_WEBHOOK_SECRET талап етеді; құпиялар ешқашан браузерге жетпейді.\n\nШлюздің BACKEND_WEBHOOK_URL мәнін Kevmi-де /api/gateway/webhook деп және сәйкес BACKEND_WEBHOOK_SECRET мәнін орнатыңыз.\n\nШифрланған карта тасымалын қосыңыз және оның жеке кілтін тек шлюз хостында сақтаңыз. Ашық кілттің қолжетімділігін және сәйкес intent қол қою параметрлерін тексеріңіз.\n\nІске қосу алдында арна дайындығын, шектеулерді және саудагер веб-сайтының мақұлдауын тексеріңіз.\n\nВебхуктар және қайталанатын оқиғалар\n\nҚауіпсіздік\n\nБірнеше дүкен және бір АҚШ доллары базалық бағасы\n\nЖиынтық аналитика мен операциялар үшін Барлық дүкендерді таңдаңыз немесе жеке жазбалары үшін дүкенді таңдаңыз. Әр дүкеннің жеке storeId, атауы, ҚҚС әдепкі мәні, шоттары, API кілттері, вебхук нүктелері, оқиғалар тарихы және веб-сайт қосымшасы бар. Хабарландырулар мен қолдау билеттері тіркелгіге тиесілі. Тіркелгі 100 дүкенге дейін құра алады. Бар жазбалар оның бірінші дүкенінде қалады.\n\nЖаңа жұмыс кеңістігі шоттары pricingMode=\"universal\" және АҚШ доллары базалық бағасын пайдаланады. Any карта, alipay, sbp және криптоны қамтиды; сатушы ішкі жиынтықты таңдай алады. Карталар мен Alipay АҚШ долларымен есептейді. SBP Ресей Банкінің АҚШ доллары/рубль анықтамалық бағамын пайдаланып рубльмен есептейді. Крипто айқын шот ережесі бойынша USDT-мен есептейді: 1 АҚШ доллары = 1 USDT. Бұл шот айырбастау ережесі, нарықтық USDT котировкасы емес. Шлюз таңдалған монетаның бағамын, нақты аударым сомасын және нұсқауларды аударымға дейін береді.\n\nАнықтамалық бағам және екі сома да құру кезінде мұздатылады. Рубльге айырбастауды қамтитын шоттар 24 сағат ішінде мерзімі аяқталады. Егер анықтамалық бағамды алу мүмкін болмаса, құру FX_UNAVAILABLE қатесімен сәтсіз аяқталады; ойдан шығарылған немесе ескірген қосалқы бағам пайдаланылмайды. Меншік иесінің жауабындағы amountMinor және quotes АҚШ доллары бухгалтерлік валютасын пайдаланады. quotes[method].settlement туынды валютадағы төлем котировкасын қамтиды. Қоғамдық төлем беті таңдалған төлем валютасын currency өрісінде, бастапқы бағаны baseAmountMinor/baseCurrency өрістерінде және анықтамалық бағамды fx өрісінде көрсетеді. Төлем жіберілгеннен кейін оның әдісін өзгерту мүмкін емес; шотта бір шлюз операциясы болады.\n\nМақсатты дүкен ішінде API кілтін жасаңыз және серверіңізден Authorization: Bearer <key> жіберіңіз. Оның дүкенге байланыстыруы өзгермейді; X-Kevmi-Store оған басқа дүкенге қолжетімділік бере алмайды. Браузер сеанстары X-Kevmi-Store: <storeId> таңдайды; оны алып тастағанда бірінші дүкен таңдалады. all мәні тек GET /api/account/dashboard және GET /api/payment-links сұраулары арқылы қабылданады. Өзгертулер таңдалған дүкенді, Origin және X-CSRF-Token талап етеді. Тіркелгі идентификаторлары мен дүкен идентификаторлары әртүрлі идентификаторлар болып табылады.\n\nҮйлесімділік үшін pricingMode=\"universal\" жоқ API сұраулары қолма-қол баға белгілеуді және бастапқы валюта шектеулерін сақтайды. Бар шоттар ешқашан қайта есептелмейді. Аналитикадағы расталған түбіртектер тексерілген төлемдерден сақталған шот шығындарын шегергендегі соманы көрсетеді; олар шығарылатын баланс емес. Мұрагерлік шот валюталары бөлек қалады, ал төлемдер қолдау қызметімен келісіледі. Тапсырысты тек payment.fulfillmentReady=true және payment.status=\"succeeded\" сервер API, оқиғалар тарихы немесе қол қойылған вебхук арқылы тексергеннен кейін орындаңыз.\n\nКөмекші, қолдау және жобаны басқару\n\nЖеке операцияларға көмек қажет болғанда, чатта менің деректеріме қолжетімділікті қосыңыз. includeAccount=true бар веб-сұраным жарамды сессияны, Origin және X-CSRF-Token-ді талап етеді; X-Kevmi-Store меншікті дүкенді немесе барлық меншікті дүкендерді таңдайды. Рұқсатсыз көмекші тек қоғамдық құжаттаманы пайдаланады. Telegram-да жіберуші анықталғаннан кейін жеке батырма қолжетімділікті қосады.\n\nread_account құралы меншікті дүкендерді, расталған төлем мәртебесі бар шот-фактураларды, оқиғаларды, өтінімдерді және маман жауаптары бар қолдау сұранымдарын оқиды. Ол 30 жазбаны және nextPage-ті қайтарады; ескі жазбалар пагинация арқылы қолжетімді. Әр жауаптағы оқулар шектеулі, сондықтан толық емес үлгі ашық көрсетілуі тиіс. API кілттері, вебхук құпиялары, карта деректері және сессиялар құралға берілмейді. Ол ақы ала алмайды, төлем жасай алмайды, қайтара алмайды немесе параметрлерді өзгерте алмайды.\n\nЖұмыс кеңістігінде немесе Telegram-да қолдау сұранымын жасау тұрақты кезекте бөлек әкімші ескертуін орналастырады. Ол /admin/tickets?ticket=<id> сілтемесімен байланысады; уақытша Telegram ақаулары қайта қайталанады. Қалпына келтіру ескертусіз ескі ашық сұранымдарды да қамтиды. Әкімшілер сұраным бетінде жауап береді; жауап пайдаланушы жұмыс кеңістігінде сақталады және қолдау хабарландыулары қосылғанда Telegram арқылы жіберіледі.\n\nБот негізгі мәзір, дүкендер, хабарландырулар, қолдау, қауіпсіздік және тіл үшін ішкі батырмаларды пайдаланады. Навигация ағымдағы хабарламаны өңдейді; қолжетімсіз ескі мәзір ауыстырылады. Төлем және қауіпсіздік хабарландырулары бір реттік навигация ретінде қарастырылмайды. Мәзір арқылы жүйеден шығу растауды қажет етеді. Айқын /logout командасы әлі де әрбір аккаунт сессиясын аяқтайды.\n\n/admin/project панелі сервер жағындағы MODERATOR_TELEGRAM_IDS рұқсат тізіміндегі Telegram ID-лерімен шектелген. Ол пайдаланушыларды, дүкендерді, операцияларды, кілтті жоюды, вебхукті өшіруді, шот-фактураны тоқтата тұруды, қабылдау бақылауын және аудит журналын қамтиды. Өзгертулер CSRF және себепті талап етеді. Панель әкімшіні шектей алмайды немесе төлемді қолмен сәтті деп жариялай алмайды. Меншіктісін шектеу сессияларды аяқтайды және API кілтіне қолжетімділікті бұғаттайды; дүкенді шектеу жаңа операцияларды тоқтатады. Тарих сақталады.\n\nҚоғамдық ұсыныс /public-offer мекенжайында және құпиялық саясаты /privacy-policy мекенжайында әрбір қосылған тілде қолжетімді. Монеталарды аты немесе тикері бойынша іздеңіз. Желі таңдағышы тек бірнеше тірі желі болғанда ғана пайда болады. Бір желі автоматты түрде таңдалады және растауда атауы қалады. Тірі шлюз қолжетімділігі таңдалатын жұптарды анықтайды; анықтамалық каталог қызметті қоспайды.\n\nКүнделікті веб-қосымша шығарылымдары үшін update.sh пайдаланыңыз: үміткерді құрастырыңыз, миграция тарихын тексеріңіз, SQLite-ті онлайн резервтеңіз, екінші контейнерді іске қосыңыз, оны тексеріңіз және Caddy-ді бірқалыпты ауыстырыңыз. Gateway, PostgreSQL және пошта қайта іске қосылмайды. Алдыңғы статикалық ресурстар ашық қойындылар үшін қолжетімді болып қалады. Жаңа миграция айқын уәкілеттікпен қарауды қажет етеді; үйлесімсіз схема өзгерісі үздіксіз орналастыру емес.\n\nҚоғамдық ұсыныс\n\nҚұпиялық саясаты",
      "readMinutes": 6
    },
    {
      "id": "webhooks",
      "title": "Вебхуктар: оқиғалар, қолтаңбалар және жеткізу",
      "summary": "Қоғамдық HTTPS нүктесін тіркеңіз, бақылауды дәлелдеңіз және қол қойылған шот және төлем оқиғаларын қабылдаңыз. Жеткізу тұрақты түрде кезекке қойылады; сол оқиғаны қайта өңдеу сіздің тапсырысыңыз үшін қауіпсіз болуы тиіс.",
      "tags": [
        "вебхук",
        "қолтаңба",
        "HMAC",
        "идемпотенттілік",
        "оқиға",
        "қайта әрекет"
      ],
      "sections": [
        {
          "id": "sources",
          "title": "Оқиғалар қайдан келеді",
          "paragraphs": [
            "invoice.created төленді дегенді білдірмейді. Төлем оқиғалары ағымдағы шлюз оқуынан кейін расталған сервер операциясынан келеді; кірген оқиға атауы жалғыз өзі жеткіліксіз.",
            "Шлюз → Kevmi кіруі және Kevmi → саудагер жеткізуі жеке құпиялармен әртүрлі кезеңдер болып табылады. Браузер, қайта бағыттау және виджет хабарламалары қаржылық күйді орнатпайды."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Оқиға",
              "Дереккөз"
            ],
            "rows": [
              [
                "invoice.created",
                "Шот сақталды"
              ],
              [
                "invoice.updated",
                "Сілтеме қолжетімділігі өзгерді"
              ],
              [
                "payment.succeeded",
                "Нақты төлем сервер арқылы расталды"
              ],
              [
                "payment.failed",
                "Сәтсіз операция расталды"
              ],
              [
                "payment.refunded",
                "Толық қайтару расталды"
              ],
              [
                "payment.partially_refunded",
                "Ішінара қайтару расталды"
              ],
              [
                "payment.disputed",
                "Дау расталды"
              ],
              [
                "payment.review_required",
                "Операция қосымша тексеруді талап етеді"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "setup",
          "title": "Нүктені тіркеу және растау",
          "paragraphs": [
            "URL мекенжайлары IP мекенжайларға, localhost-қа, жеке желілерге, стандартты емес порттарға бағытталмауы немесе тіркелгі деректерін қамтымауы керек. DNS жеткізу алдында тексеріледі; шығыс POST сұраныстары қайта бағыттауларды қадағаламайды. Тіркелгі бес нүктеге дейін тіркей алады.",
            "Растау оқиғасында livemode=false болады. Сәтті HTTP мәртебесі жалғыз өзі жеткіліксіз: шақырту нақты сәйкес келуі керек. Құпияны айналдыру қайта растауды талап етеді."
          ],
          "bullets": [],
          "steps": [
            "Саудагер тіркелгіңіздегі /account#webhooks мекенжайында қоғамдық HTTPS URL, сипаттама және сізге қажет оқиға түрлерін енгізіңіз.",
            "Берілген құпияны сервер жағындағы сақтауда сақтаңыз. Оның толық мәні бір рет көрсетіледі.",
            "Қолтаңбаларды бастапқы сұраныс байттары бойынша тексеріңіз.",
            "Нүкте растауын іске қосыңыз. endpoint.verification үшін data.challenge мәнін қайтаратын JSON қайтарыңыз: {\"challenge\":\"the received value\"}.",
            "Расталған нүктені қосыңыз және жеткізу тарихын тексеріңіз."
          ],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Тіркелгіңіздегі вебхуктар",
              "href": "/account#webhooks"
            }
          ]
        },
        {
          "id": "envelope",
          "title": "Оқиға конверті",
          "paragraphs": [
            "id оқиғаның әрбір жеткізу әрекетінде бірдей қалады. createdAt — миллисекундтағы Unix уақыт белгісі, ал apiVersion келісімшарт нұсқасын анықтайды. data сақталған сервер нысанын қамтиды; мысал қысқартылған.",
            "livemode=true нақты сервер оқиғасын конечная нүктесін тексеруден ажыратады. Бұл шоттың төленгенін білдірмейді: type және төлем деректерін тексеріңіз. Белгілі оқиға түрлерін өңдеңіз және схеманы растаңыз."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "JSON · shortened example",
            "code": "{\n  \"id\": \"evt_example\",\n  \"type\": \"invoice.created\",\n  \"apiVersion\": \"2026-10-21\",\n  \"createdAt\": 1792540800000,\n  \"livemode\": true,\n  \"data\": {\n    \"invoice\": {\n      \"id\": \"lnk_example\",\n      \"orderId\": \"order-1042\",\n      \"currency\": \"USD\",\n      \"amountMinor\": 500,\n      \"vatCustomerPercent\": 100,\n      \"feeCustomerPercent\": 0\n    }\n  }\n}"
          },
          "note": "",
          "links": []
        },
        {
          "id": "signature",
          "title": "HMAC-SHA256 растаңыз",
          "paragraphs": [
            "Kevmi-Signature құрамында t=секунд,v1=hex бар. Қолтаңба — уақыт белгісі жолы, нүкте және түпнұсқа дене үстінен HMAC-SHA256: уақыт белгісі + \".\" + rawBody. Арнайы конечная нүктесі құпиясын және тұрақты уақыт салыстыруын қолданыңыз.",
            "Уақыт белгісі сервер уақытынан 300 секундтан артық екі бағытта айырмашылығы бар қолтаңбаларды қабылдамаңыз. Сағаттарды синхрондаңыз. Растау алдында JSON-ды талдап қайта сериализацияламаңыз: бос орындар мен қасиет тәртібі қол қойылған байттарға әсер етеді."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "Node.js · verification core",
            "code": "import { createHmac, timingSafeEqual } from 'node:crypto';\n\nfunction verifyKevmi(rawBody, header, secret, nowSeconds) {\n  const match = /^t=(\\d{10}),v1=([a-f0-9]{64})$/.exec(header || '');\n  if (!match || Math.abs(nowSeconds - Number(match[1])) > 300) {\n    return false;\n  }\n  const expected = createHmac('sha256', secret)\n    .update(match[1] + '.')\n    .update(rawBody)\n    .digest();\n  const received = Buffer.from(match[2], 'hex');\n  return expected.length === received.length\n    && timingSafeEqual(expected, received);\n}\n\n// Read bytes before JSON parsing; cap the request body.\n// secret comes from your server secret store.\nconst valid = verifyKevmi(rawBody, signature, secret,\n  Math.floor(Date.now() / 1000));\nif (!valid) throw new Error('Invalid webhook signature');\nconst event = JSON.parse(rawBody.toString('utf8'));\n// Validate the event schema and persist its ID together\n// with your order update in one database transaction.\n// Return a 2xx response after durable acceptance."
          },
          "note": "Бұл мысал қолтаңбаны растауды қамтиды. Сіздің HTTP серверіңізге сондай-ақ дене көлемі шегі, схема растауы және транзакциялық оқиға сақтауы қажет.",
          "links": []
        },
        {
          "id": "delivery",
          "title": "Қайта әрекеттер және растау",
          "paragraphs": [
            "Кез келген 2xx жауабы қарапайым оқиғаны растайды. Жауап беру алдында оқиғаны сенімді түрде сақтаңыз; ауыр жұмыс сіздің өз кезегіңіз арқылы жалғасуы мүмкін. Жауап уақыты — сегіз секунд. Желі қатесі немесе 2xx емес жауап қайта әрекетті жоспарлайды.",
            "Ең көбі алты әрекет бар: бастапқы жеткізу плюс бір минут, бес минут, 30 минут, екі сағат және 12 сағат кідірістері қатарынан сәтсіздіктерден кейін. Бұлар кезек кестелері, нақты жеткізу уақытының кепілдігі емес. Әрекеттерді тауысу жеткізуді сәтсіз деп белгілейді.",
            "Жеткізу кемінде бір рет жүзеге асырылады және қатаң реттілікті уәде етпейді. Бірегей оқиға идентификаторын тапсырыс жаңартуыңызбен бір транзакцияда сақтаңыз. Бұрын қолданылған қайталанған жазба тапсырысты қайта орындамай 2xx алуы керек.",
            "Қолмен қайта әрекет жеткізу әрекеттерін қайта бастайды, түпнұсқа оқиға ID, жеткізу ID және нақты денені сақтай отырып. Әрбір әрекет жаңа қолтаңба уақыт белгісін алады. Конечная нүктесін кідірту оның кезегін сақтайды; жою күтіп тұрған және сәтсіз жеткізулерді болдырмайды."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "reconcile",
          "title": "Жеткізу тарихы және келістіру",
          "paragraphs": [
            "Интерфейс конечная нүктесі күйін, жақындағы жеткізулерді, әрекет санын, соңғы HTTP жауабын, қатені және келесі әрекет уақытын көрсетеді. Бұл диагностикалар сіздің өз тапсырыс жазбаларыңызды толықтырады.",
            "GET /api/v1/events events:read арқылы 50-ге дейін оқиғаны және nextCursor қайтарады. Мөлдір емес nextCursor мәнін cursor ретінде өзгеріссіз беріңіз; null соңын белгілейді. Реттеу createdAt және id екеуін де қолданады. Ескі before Unix-миллисекунд шекарасы бөлек қолжетімді және cursor-мен біріктірілмейді. Расталған конечная нүктелері тіркелуінен ерте емес оқиғаларды алады; кідіртілген конечная нүктелері қайта жалғастырудан кейін жеткізу үшін кезектегі оқиғаларды жинауды жалғастырады. Бұл конечная нүктесін құру алдындағы тарихты уәде етпейді."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "API кілттері және шот құру",
              "href": "/docs/payment-links-api"
            }
          ]
        },
        {
          "id": "gateway",
          "title": "Кіріс шлюз түбіртегін тексеру",
          "paragraphs": [
            "Gateway v3 /api/gateway/webhook адресіне X-Gateway-Event-Id, X-Gateway-Timestamp және X-Gateway-Signature: v1=<hex> жібереді. HMAC-SHA256 уақыт белгісі + \".\" + rawBody мәніне GATEWAY_WEBHOOK_SECRET кілтімен қол қояды; сағат терезесі — 300 секунд. Тақырып/дене ID теңдігі, API нұсқасы, тірі режим және дене хэші тексеріледі.",
            "Әртүрлі дене байттарымен қайта қолданылған оқиға ID қабылданбайды. Қол қойылған хабарландыру нақты операцияның аутентификацияланған GET сұрауын іске қосады. Тапсырыс, әдіс, валюта, база, мақұлданған сома және нұсқа тексеріледі. Сәттілік fulfillment_ready=true, verification=provider_confirmed, нақты төленген сома және дау-дамайдың болмауын талап етеді; крипто сондай-ақ расталған есеп айырысу дәлелін қажет етеді.",
            "Кіріс өңдеу, түбіртектер және сатушы оқиғалары қайталанудан қорғалған. Ескі тек шолғыштағы хабарландыру форматтары сәтті төлемді белгілей алмайды. Сатушы вебхуктері ешқашан карта өрістерін, банк кодтарын, QR деректерін, провайдер тіркелгі деректерін немесе шлюз құпиясын қамтымайды."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "telegram",
          "title": "Telegram жеке келісімшартқа ие",
          "paragraphs": [
            "POST /api/telegram/webhook X-Telegram-Bot-Api-Secret-Token, жаңарту құрылымын және жіберушіні тексереді. update_id қайталап өңдеуден қорғайды. Бұл маршрут кіру, командалар, қолдау және модерация әрекеттерін өңдейді; ол қаржылық түбіртектерді қабылдамайды.",
            "Орналастыру иесі бот токенін, вебхук құпиясын, setWebhook тіркелуін және қолжетімді HTTPS мекенжайын конфигурациялайды. Олар сатушы конечная нүктесі қолтаңба құпиясынан бөлек."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "stores-usd",
          "title": "Бірнеше дүкен және бір АҚШ доллары базалық бағасы",
          "paragraphs": [
            "Жиынтық аналитика мен операциялар үшін Барлық дүкендерді таңдаңыз немесе жеке жазбалары үшін дүкенді таңдаңыз. Әр дүкеннің жеке storeId, атауы, ҚҚС әдепкі мәні, шоттары, API кілттері, вебхук нүктелері, оқиғалар тарихы және веб-сайт қосымшасы бар. Хабарландырулар мен қолдау билеттері тіркелгіге тиесілі. Тіркелгі 100 дүкенге дейін құра алады. Бар жазбалар оның бірінші дүкенінде қалады.",
            "Жаңа жұмыс кеңістігі шоттары pricingMode=\"universal\" және АҚШ доллары базалық бағасын пайдаланады. Any карта, alipay, sbp және криптоны қамтиды; сатушы ішкі жиынтықты таңдай алады. Карталар мен Alipay АҚШ долларымен есептейді. SBP Ресей Банкінің АҚШ доллары/рубль анықтамалық бағамын пайдаланып рубльмен есептейді. Крипто айқын шот ережесі бойынша USDT-мен есептейді: 1 АҚШ доллары = 1 USDT. Бұл шот айырбастау ережесі, нарықтық USDT котировкасы емес. Шлюз таңдалған монетаның бағамын, нақты аударым сомасын және нұсқауларды аударымға дейін береді.",
            "Анықтамалық бағам және екі сома да құру кезінде мұздатылады. Рубльге айырбастауды қамтитын шоттар 24 сағат ішінде мерзімі аяқталады. Егер анықтамалық бағамды алу мүмкін болмаса, құру FX_UNAVAILABLE қатесімен сәтсіз аяқталады; ойдан шығарылған немесе ескірген қосалқы бағам пайдаланылмайды. Меншік иесінің жауабындағы amountMinor және quotes АҚШ доллары бухгалтерлік валютасын пайдаланады. quotes[method].settlement туынды валютадағы төлем котировкасын қамтиды. Қоғамдық төлем беті таңдалған төлем валютасын currency өрісінде, бастапқы бағаны baseAmountMinor/baseCurrency өрістерінде және анықтамалық бағамды fx өрісінде көрсетеді. Төлем жіберілгеннен кейін оның әдісін өзгерту мүмкін емес; шотта бір шлюз операциясы болады.",
            "Мақсатты дүкен ішінде API кілтін жасаңыз және серверіңізден Authorization: Bearer <key> жіберіңіз. Оның дүкенге байланыстыруы өзгермейді; X-Kevmi-Store оған басқа дүкенге қолжетімділік бере алмайды. Браузер сеанстары X-Kevmi-Store: <storeId> таңдайды; оны алып тастағанда бірінші дүкен таңдалады. all мәні тек GET /api/account/dashboard және GET /api/payment-links сұраулары арқылы қабылданады. Өзгертулер таңдалған дүкенді, Origin және X-CSRF-Token талап етеді. Тіркелгі идентификаторлары мен дүкен идентификаторлары әртүрлі идентификаторлар болып табылады.",
            "Үйлесімділік үшін pricingMode=\"universal\" жоқ API сұраулары қолма-қол баға белгілеуді және бастапқы валюта шектеулерін сақтайды. Бар шоттар ешқашан қайта есептелмейді. Аналитикадағы расталған түбіртектер тексерілген төлемдерден сақталған шот шығындарын шегергендегі соманы көрсетеді; олар шығарылатын баланс емес. Мұрагерлік шот валюталары бөлек қалады, ал төлемдер қолдау қызметімен келісіледі. Тапсырысты тек payment.fulfillmentReady=true және payment.status=\"succeeded\" сервер API, оқиғалар тарихы немесе қол қойылған вебхук арқылы тексергеннен кейін орындаңыз."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        }
      ],
      "group": "developers",
      "url": "/docs/webhooks",
      "body": "Оқиғалар қайдан келеді\n\ninvoice.created төленді дегенді білдірмейді. Төлем оқиғалары ағымдағы шлюз оқуынан кейін расталған сервер операциясынан келеді; кірген оқиға атауы жалғыз өзі жеткіліксіз.\n\nШлюз → Kevmi кіруі және Kevmi → саудагер жеткізуі жеке құпиялармен әртүрлі кезеңдер болып табылады. Браузер, қайта бағыттау және виджет хабарламалары қаржылық күйді орнатпайды.\n\nОқиға · Дереккөз\ninvoice.created · Шот сақталды\ninvoice.updated · Сілтеме қолжетімділігі өзгерді\npayment.succeeded · Нақты төлем сервер арқылы расталды\npayment.failed · Сәтсіз операция расталды\npayment.refunded · Толық қайтару расталды\npayment.partially_refunded · Ішінара қайтару расталды\npayment.disputed · Дау расталды\npayment.review_required · Операция қосымша тексеруді талап етеді\n\nНүктені тіркеу және растау\n\nURL мекенжайлары IP мекенжайларға, localhost-қа, жеке желілерге, стандартты емес порттарға бағытталмауы немесе тіркелгі деректерін қамтымауы керек. DNS жеткізу алдында тексеріледі; шығыс POST сұраныстары қайта бағыттауларды қадағаламайды. Тіркелгі бес нүктеге дейін тіркей алады.\n\nРастау оқиғасында livemode=false болады. Сәтті HTTP мәртебесі жалғыз өзі жеткіліксіз: шақырту нақты сәйкес келуі керек. Құпияны айналдыру қайта растауды талап етеді.\n\nСаудагер тіркелгіңіздегі /account#webhooks мекенжайында қоғамдық HTTPS URL, сипаттама және сізге қажет оқиға түрлерін енгізіңіз.\n\nБерілген құпияны сервер жағындағы сақтауда сақтаңыз. Оның толық мәні бір рет көрсетіледі.\n\nҚолтаңбаларды бастапқы сұраныс байттары бойынша тексеріңіз.\n\nНүкте растауын іске қосыңыз. endpoint.verification үшін data.challenge мәнін қайтаратын JSON қайтарыңыз: {\"challenge\":\"the received value\"}.\n\nРасталған нүктені қосыңыз және жеткізу тарихын тексеріңіз.\n\nТіркелгіңіздегі вебхуктар\n\nОқиға конверті\n\nid оқиғаның әрбір жеткізу әрекетінде бірдей қалады. createdAt — миллисекундтағы Unix уақыт белгісі, ал apiVersion келісімшарт нұсқасын анықтайды. data сақталған сервер нысанын қамтиды; мысал қысқартылған.\n\nlivemode=true нақты сервер оқиғасын конечная нүктесін тексеруден ажыратады. Бұл шоттың төленгенін білдірмейді: type және төлем деректерін тексеріңіз. Белгілі оқиға түрлерін өңдеңіз және схеманы растаңыз.\n\n{\n  \"id\": \"evt_example\",\n  \"type\": \"invoice.created\",\n  \"apiVersion\": \"2026-10-21\",\n  \"createdAt\": 1792540800000,\n  \"livemode\": true,\n  \"data\": {\n    \"invoice\": {\n      \"id\": \"lnk_example\",\n      \"orderId\": \"order-1042\",\n      \"currency\": \"USD\",\n      \"amountMinor\": 500,\n      \"vatCustomerPercent\": 100,\n      \"feeCustomerPercent\": 0\n    }\n  }\n}\n\nHMAC-SHA256 растаңыз\n\nKevmi-Signature құрамында t=секунд,v1=hex бар. Қолтаңба — уақыт белгісі жолы, нүкте және түпнұсқа дене үстінен HMAC-SHA256: уақыт белгісі + \".\" + rawBody. Арнайы конечная нүктесі құпиясын және тұрақты уақыт салыстыруын қолданыңыз.\n\nУақыт белгісі сервер уақытынан 300 секундтан артық екі бағытта айырмашылығы бар қолтаңбаларды қабылдамаңыз. Сағаттарды синхрондаңыз. Растау алдында JSON-ды талдап қайта сериализацияламаңыз: бос орындар мен қасиет тәртібі қол қойылған байттарға әсер етеді.\n\nimport { createHmac, timingSafeEqual } from 'node:crypto';\n\nfunction verifyKevmi(rawBody, header, secret, nowSeconds) {\n  const match = /^t=(\\d{10}),v1=([a-f0-9]{64})$/.exec(header || '');\n  if (!match || Math.abs(nowSeconds - Number(match[1])) > 300) {\n    return false;\n  }\n  const expected = createHmac('sha256', secret)\n    .update(match[1] + '.')\n    .update(rawBody)\n    .digest();\n  const received = Buffer.from(match[2], 'hex');\n  return expected.length === received.length\n    && timingSafeEqual(expected, received);\n}\n\n// Read bytes before JSON parsing; cap the request body.\n// secret comes from your server secret store.\nconst valid = verifyKevmi(rawBody, signature, secret,\n  Math.floor(Date.now() / 1000));\nif (!valid) throw new Error('Invalid webhook signature');\nconst event = JSON.parse(rawBody.toString('utf8'));\n// Validate the event schema and persist its ID together\n// with your order update in one database transaction.\n// Return a 2xx response after durable acceptance.\n\nБұл мысал қолтаңбаны растауды қамтиды. Сіздің HTTP серверіңізге сондай-ақ дене көлемі шегі, схема растауы және транзакциялық оқиға сақтауы қажет.\n\nҚайта әрекеттер және растау\n\nКез келген 2xx жауабы қарапайым оқиғаны растайды. Жауап беру алдында оқиғаны сенімді түрде сақтаңыз; ауыр жұмыс сіздің өз кезегіңіз арқылы жалғасуы мүмкін. Жауап уақыты — сегіз секунд. Желі қатесі немесе 2xx емес жауап қайта әрекетті жоспарлайды.\n\nЕң көбі алты әрекет бар: бастапқы жеткізу плюс бір минут, бес минут, 30 минут, екі сағат және 12 сағат кідірістері қатарынан сәтсіздіктерден кейін. Бұлар кезек кестелері, нақты жеткізу уақытының кепілдігі емес. Әрекеттерді тауысу жеткізуді сәтсіз деп белгілейді.\n\nЖеткізу кемінде бір рет жүзеге асырылады және қатаң реттілікті уәде етпейді. Бірегей оқиға идентификаторын тапсырыс жаңартуыңызбен бір транзакцияда сақтаңыз. Бұрын қолданылған қайталанған жазба тапсырысты қайта орындамай 2xx алуы керек.\n\nҚолмен қайта әрекет жеткізу әрекеттерін қайта бастайды, түпнұсқа оқиға ID, жеткізу ID және нақты денені сақтай отырып. Әрбір әрекет жаңа қолтаңба уақыт белгісін алады. Конечная нүктесін кідірту оның кезегін сақтайды; жою күтіп тұрған және сәтсіз жеткізулерді болдырмайды.\n\nЖеткізу тарихы және келістіру\n\nИнтерфейс конечная нүктесі күйін, жақындағы жеткізулерді, әрекет санын, соңғы HTTP жауабын, қатені және келесі әрекет уақытын көрсетеді. Бұл диагностикалар сіздің өз тапсырыс жазбаларыңызды толықтырады.\n\nGET /api/v1/events events:read арқылы 50-ге дейін оқиғаны және nextCursor қайтарады. Мөлдір емес nextCursor мәнін cursor ретінде өзгеріссіз беріңіз; null соңын белгілейді. Реттеу createdAt және id екеуін де қолданады. Ескі before Unix-миллисекунд шекарасы бөлек қолжетімді және cursor-мен біріктірілмейді. Расталған конечная нүктелері тіркелуінен ерте емес оқиғаларды алады; кідіртілген конечная нүктелері қайта жалғастырудан кейін жеткізу үшін кезектегі оқиғаларды жинауды жалғастырады. Бұл конечная нүктесін құру алдындағы тарихты уәде етпейді.\n\nAPI кілттері және шот құру\n\nКіріс шлюз түбіртегін тексеру\n\nGateway v3 /api/gateway/webhook адресіне X-Gateway-Event-Id, X-Gateway-Timestamp және X-Gateway-Signature: v1=<hex> жібереді. HMAC-SHA256 уақыт белгісі + \".\" + rawBody мәніне GATEWAY_WEBHOOK_SECRET кілтімен қол қояды; сағат терезесі — 300 секунд. Тақырып/дене ID теңдігі, API нұсқасы, тірі режим және дене хэші тексеріледі.\n\nӘртүрлі дене байттарымен қайта қолданылған оқиға ID қабылданбайды. Қол қойылған хабарландыру нақты операцияның аутентификацияланған GET сұрауын іске қосады. Тапсырыс, әдіс, валюта, база, мақұлданған сома және нұсқа тексеріледі. Сәттілік fulfillment_ready=true, verification=provider_confirmed, нақты төленген сома және дау-дамайдың болмауын талап етеді; крипто сондай-ақ расталған есеп айырысу дәлелін қажет етеді.\n\nКіріс өңдеу, түбіртектер және сатушы оқиғалары қайталанудан қорғалған. Ескі тек шолғыштағы хабарландыру форматтары сәтті төлемді белгілей алмайды. Сатушы вебхуктері ешқашан карта өрістерін, банк кодтарын, QR деректерін, провайдер тіркелгі деректерін немесе шлюз құпиясын қамтымайды.\n\nTelegram жеке келісімшартқа ие\n\nPOST /api/telegram/webhook X-Telegram-Bot-Api-Secret-Token, жаңарту құрылымын және жіберушіні тексереді. update_id қайталап өңдеуден қорғайды. Бұл маршрут кіру, командалар, қолдау және модерация әрекеттерін өңдейді; ол қаржылық түбіртектерді қабылдамайды.\n\nОрналастыру иесі бот токенін, вебхук құпиясын, setWebhook тіркелуін және қолжетімді HTTPS мекенжайын конфигурациялайды. Олар сатушы конечная нүктесі қолтаңба құпиясынан бөлек.\n\nБірнеше дүкен және бір АҚШ доллары базалық бағасы\n\nЖиынтық аналитика мен операциялар үшін Барлық дүкендерді таңдаңыз немесе жеке жазбалары үшін дүкенді таңдаңыз. Әр дүкеннің жеке storeId, атауы, ҚҚС әдепкі мәні, шоттары, API кілттері, вебхук нүктелері, оқиғалар тарихы және веб-сайт қосымшасы бар. Хабарландырулар мен қолдау билеттері тіркелгіге тиесілі. Тіркелгі 100 дүкенге дейін құра алады. Бар жазбалар оның бірінші дүкенінде қалады.\n\nЖаңа жұмыс кеңістігі шоттары pricingMode=\"universal\" және АҚШ доллары базалық бағасын пайдаланады. Any карта, alipay, sbp және криптоны қамтиды; сатушы ішкі жиынтықты таңдай алады. Карталар мен Alipay АҚШ долларымен есептейді. SBP Ресей Банкінің АҚШ доллары/рубль анықтамалық бағамын пайдаланып рубльмен есептейді. Крипто айқын шот ережесі бойынша USDT-мен есептейді: 1 АҚШ доллары = 1 USDT. Бұл шот айырбастау ережесі, нарықтық USDT котировкасы емес. Шлюз таңдалған монетаның бағамын, нақты аударым сомасын және нұсқауларды аударымға дейін береді.\n\nАнықтамалық бағам және екі сома да құру кезінде мұздатылады. Рубльге айырбастауды қамтитын шоттар 24 сағат ішінде мерзімі аяқталады. Егер анықтамалық бағамды алу мүмкін болмаса, құру FX_UNAVAILABLE қатесімен сәтсіз аяқталады; ойдан шығарылған немесе ескірген қосалқы бағам пайдаланылмайды. Меншік иесінің жауабындағы amountMinor және quotes АҚШ доллары бухгалтерлік валютасын пайдаланады. quotes[method].settlement туынды валютадағы төлем котировкасын қамтиды. Қоғамдық төлем беті таңдалған төлем валютасын currency өрісінде, бастапқы бағаны baseAmountMinor/baseCurrency өрістерінде және анықтамалық бағамды fx өрісінде көрсетеді. Төлем жіберілгеннен кейін оның әдісін өзгерту мүмкін емес; шотта бір шлюз операциясы болады.\n\nМақсатты дүкен ішінде API кілтін жасаңыз және серверіңізден Authorization: Bearer <key> жіберіңіз. Оның дүкенге байланыстыруы өзгермейді; X-Kevmi-Store оған басқа дүкенге қолжетімділік бере алмайды. Браузер сеанстары X-Kevmi-Store: <storeId> таңдайды; оны алып тастағанда бірінші дүкен таңдалады. all мәні тек GET /api/account/dashboard және GET /api/payment-links сұраулары арқылы қабылданады. Өзгертулер таңдалған дүкенді, Origin және X-CSRF-Token талап етеді. Тіркелгі идентификаторлары мен дүкен идентификаторлары әртүрлі идентификаторлар болып табылады.\n\nҮйлесімділік үшін pricingMode=\"universal\" жоқ API сұраулары қолма-қол баға белгілеуді және бастапқы валюта шектеулерін сақтайды. Бар шоттар ешқашан қайта есептелмейді. Аналитикадағы расталған түбіртектер тексерілген төлемдерден сақталған шот шығындарын шегергендегі соманы көрсетеді; олар шығарылатын баланс емес. Мұрагерлік шот валюталары бөлек қалады, ал төлемдер қолдау қызметімен келісіледі. Тапсырысты тек payment.fulfillmentReady=true және payment.status=\"succeeded\" сервер API, оқиғалар тарихы немесе қол қойылған вебхук арқылы тексергеннен кейін орындаңыз.",
      "readMinutes": 7
    },
    {
      "id": "limits",
      "title": "Шектеулер және қолжетімділік",
      "summary": "Төлем қолжетімділігі әдіске, сомаға, елге және белгілі бір шоттың талаптарына байланысты. Растау алдында жалпы соманы, шектеулерді және қолданылатын өңдеу уақытын тексеріңіз.",
      "group": "payments",
      "url": "/docs/limits",
      "tags": [
        "шектеу",
        "өңдеу уақыты",
        "ұстап қалу",
        "қайтару",
        "кері жазба",
        "шектеу"
      ],
      "sections": [
        {
          "id": "pending",
          "title": "Адаптер және арна шектеулері",
          "paragraphs": [
            "Kevmi операция құру алдында төмендегі диапазондарды тексереді. Төлем арнасы қосымша шектеулер енгізуі мүмкін; диапазон ішіндегі сома мақұлдауды кепілдік етпейді. Шлюз конфигурациясын өзгерту Kevmi шектеулерін автоматты түрде өзгертпейді.",
            "Жаңа төлем және карта ниеті сатушының соңғы веб-сайт шолу өтінімінің мақұлдануын талап етеді. Мақұлдау ғана төлем шлюзін қоспайды. Егер шолу жөнелтілгеннен кейін өзгерсе, бар операция мәртебе оқуы, есеп айырысу және сұралған банк коды үшін қолжетімді болып қалады."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Әдіс",
              "Тексерілген сома",
              "Kevmi диапазоны"
            ],
            "rows": [
              [
                "Карта / Alipay",
                "USD базалық бағасы",
                "$1–$1,000"
              ],
              [
                "SBP",
                "RUB тұтынушы жалпы сомасы",
                "₽1–₽100,000"
              ],
              [
                "Крипто",
                "USDT тұтынушы жалпы сомасы",
                "1–1,000,000 USDT + таңдалған желі шектеулері"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "validation",
          "title": "Растау коммерциялық шектеу емес",
          "paragraphs": [
            "Калькулятор және API теріс сомаларды, жарамсыз валюталарды және сатушының бөлінген комиссиясы мен ҚҚС базалық сомадан асатын есептеулерді қабылдамайды. Бұл тексерулер деректер дұрыстығын қорғайды.",
            "Арифметикалық растаудан өту провайдердің төлемді қабылдай алатынына кепілдік бермейді. Коммерциялық және тәуекел шектеулері төлем арнасымен бөлек тексеріледі."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "refunds",
          "title": "Қайтарулар және даулы транзакциялар",
          "paragraphs": [
            "Расталған қайтарулар, ішінара қайтарулар, даулар және шолу күйлері операция мен сатушы оқиғаларында пайда болады. Бұл тіркелгіде қайтару немесе төлем жасаудың енгізілгенін білдірмейді.",
            "payment.partially_refunded, payment.refunded, payment.disputed немесе payment.review_required үшін қайта орындамаңыз. Түпнұсқа тапсырыс/төлем байланысын сақтаңыз және даулы жағдайларды уәкілетті операторға бағыттаңыз."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "subscriptions",
          "title": "Қайталанатын төлемдер",
          "paragraphs": [
            "Kevmi-де жазылымдар немесе қайталанатын төлемдер жоқ. Тапсырыс сілтемесін сақтау автоматты болашақ төлемді уәкілеттік етпейді. Әрбір жаңа тапсырыс бөлек төленеді."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "ready",
          "title": "Дайындық тексерулері",
          "paragraphs": [
            "gateway.configured /api/config ішінде қажетті шлюз параметрлерін хабарлайды, ал /api/health сервер сақтауын тексереді. Екеуі де төлем провайдеріне қосылымды белгілемейді. Белгілі бір шоттың талаптары үшін GET /api/checkout/{token} ішінде invoice.availability қолданыңыз; төлем сәттілігі шлюз операциясына қарсы бөлек тексеріледі."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Интеграция талаптары",
              "href": "/docs/gateway"
            },
            {
              "label": "Өз қолдану жағдайыңыз туралы сұраңыз",
              "href": "/?support=open"
            }
          ]
        }
      ],
      "body": "Адаптер және арна шектеулері\n\nKevmi операция құру алдында төмендегі диапазондарды тексереді. Төлем арнасы қосымша шектеулер енгізуі мүмкін; диапазон ішіндегі сома мақұлдауды кепілдік етпейді. Шлюз конфигурациясын өзгерту Kevmi шектеулерін автоматты түрде өзгертпейді.\n\nЖаңа төлем және карта ниеті сатушының соңғы веб-сайт шолу өтінімінің мақұлдануын талап етеді. Мақұлдау ғана төлем шлюзін қоспайды. Егер шолу жөнелтілгеннен кейін өзгерсе, бар операция мәртебе оқуы, есеп айырысу және сұралған банк коды үшін қолжетімді болып қалады.\n\nӘдіс · Тексерілген сома · Kevmi диапазоны\nКарта / Alipay · USD базалық бағасы · $1–$1,000\nSBP · RUB тұтынушы жалпы сомасы · ₽1–₽100,000\nКрипто · USDT тұтынушы жалпы сомасы · 1–1,000,000 USDT + таңдалған желі шектеулері\n\nРастау коммерциялық шектеу емес\n\nКалькулятор және API теріс сомаларды, жарамсыз валюталарды және сатушының бөлінген комиссиясы мен ҚҚС базалық сомадан асатын есептеулерді қабылдамайды. Бұл тексерулер деректер дұрыстығын қорғайды.\n\nАрифметикалық растаудан өту провайдердің төлемді қабылдай алатынына кепілдік бермейді. Коммерциялық және тәуекел шектеулері төлем арнасымен бөлек тексеріледі.\n\nҚайтарулар және даулы транзакциялар\n\nРасталған қайтарулар, ішінара қайтарулар, даулар және шолу күйлері операция мен сатушы оқиғаларында пайда болады. Бұл тіркелгіде қайтару немесе төлем жасаудың енгізілгенін білдірмейді.\n\npayment.partially_refunded, payment.refunded, payment.disputed немесе payment.review_required үшін қайта орындамаңыз. Түпнұсқа тапсырыс/төлем байланысын сақтаңыз және даулы жағдайларды уәкілетті операторға бағыттаңыз.\n\nҚайталанатын төлемдер\n\nKevmi-де жазылымдар немесе қайталанатын төлемдер жоқ. Тапсырыс сілтемесін сақтау автоматты болашақ төлемді уәкілеттік етпейді. Әрбір жаңа тапсырыс бөлек төленеді.\n\nДайындық тексерулері\n\ngateway.configured /api/config ішінде қажетті шлюз параметрлерін хабарлайды, ал /api/health сервер сақтауын тексереді. Екеуі де төлем провайдеріне қосылымды белгілемейді. Белгілі бір шоттың талаптары үшін GET /api/checkout/{token} ішінде invoice.availability қолданыңыз; төлем сәттілігі шлюз операциясына қарсы бөлек тексеріледі.\n\nИнтеграция талаптары\n\nӨз қолдану жағдайыңыз туралы сұраңыз",
      "readMinutes": 3
    },
    {
      "id": "agent-access",
      "title": "Іздеу жүйелері мен AI үшін ресурстар",
      "summary": "Жария Kevmi ақпараты серверде көрсетілген HTML, қарапайым мәтін және құрылымдық форматтарда қолжетімді. Бұл форматтар бір білім нұсқасын және бірдей коммерциялық фактілерді бөліседі.",
      "group": "developers",
      "url": "/docs/agent-access",
      "tags": [
        "SEO",
        "индекстеу",
        "llms",
        "robots",
        "sitemap",
        "агент",
        "JSON"
      ],
      "sections": [
        {
          "id": "files",
          "title": "Жалпыға қолжетімді ресурстар",
          "paragraphs": [],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Мекенжай",
              "Мазмұны"
            ],
            "rows": [
              [
                "/docs and /en/docs",
                "Толық орыс және ағылшын нұсқаларының нұсқаулықтары"
              ],
              [
                "/llms.txt",
                "Ағылшын индексі және негізгі фактілер"
              ],
              [
                "/llms-full.txt",
                "Толық ағылшын білім мәтіні"
              ],
              [
                "/knowledge.json",
                "Фактілер, комиссиялар, мақалалар және нұсқа"
              ],
              [
                "/openapi.json",
                "Іске асырылған сервер API келісімшарты"
              ],
              [
                "/sitemap.xml",
                "Жарияланған жалпыға қолжетімді беттер"
              ],
              [
                "/robots.txt",
                "Кроулер нұсқаулары"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "facts",
          "title": "Құрылымдалған фактілерді оқу",
          "paragraphs": [
            "knowledge.facts.countries.card әлем бойынша қамтуды нақты шектеулермен сипаттайды. countryCount каталог жазбаларын санайды, coverageLabel 190+ деп көрсетіледі, ал exactList қолдау көрсетілетін ISO жазбаларын қамтиды. restrictions провайдердің алып тастау тізімін сақтайды.",
            "source=owner_provided және status=owner_list_received тізімнің шығу тегін жазады. independentlyVerified=false және verifiedCountryCount=null тізімнің тірі шлюзге қарсы дербес тексерілмегенін білдіреді; ол әлі де алынған және жарияланған тізім болып қалады.",
            "partialCoverage орналасқан жері толық қамтылмаған елдерді қамтиды. unresolvedFootnotes Қытай үшін бөлек * белгісін сақтайды. coverage=listed тізімге енгізілгенді білдіреді; partial_locations орналасқан жер шектеулерін білдіреді; footnote_pending белгінің бөлек расталмаған мағынасын білдіреді. None әр картаның мақұлдануын кепілдік бермейді.",
            "gatewayConnected=null және gatewayIntegration.liveConfigurationProvided=null статикалық білім базасының орналастырудың ағымдағы күйін қамтымайтынын білдіреді. gatewayIntegration.availability ағымдағы тексерулерге арналған нүктелерді анықтайды. gateway.configured /api/config ішінде баптауларды хабарлайды, провайдер қосылымын емес. invoice.availability чек-аут жауабында жарамды шот шарттарын сипаттайды, ал үйлесімділік өрісі invoice.gatewayConnected мүмкіндік.available мәнін көрсетеді. Екеуі де операцияны растауды алмастырмайды. gatewayIntegration.adapterImplemented=true v3 протоколын қолдауды сипаттайды; subscriptionsSupported=false мерзімді төлемдерді алып тастайды."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "JSON · fact excerpt",
            "code": "{\n  \"subscriptionsSupported\": false,\n  \"gatewayConnected\": null,\n  \"countries\": {\n    \"card\": {\n      \"coverageLabel\": \"190+\",\n      \"policy\": \"worldwide_except_restrictions\",\n      \"restrictions\": [\n        {\n          \"code\": \"AF\",\n          \"name\": \"Afghanistan\"\n        },\n        {\n          \"code\": \"AQ\",\n          \"name\": \"Antarctica\"\n        },\n        {\n          \"code\": \"BY\",\n          \"name\": \"Belarus\"\n        },\n        {\n          \"code\": \"MM\",\n          \"name\": \"Burma (Myanmar)\"\n        },\n        {\n          \"code\": \"BI\",\n          \"name\": \"Burundi\"\n        },\n        {\n          \"code\": \"CF\",\n          \"name\": \"Central African Republic\"\n        },\n        {\n          \"code\": \"TD\",\n          \"name\": \"Chad\"\n        },\n        {\n          \"code\": \"CU\",\n          \"name\": \"Cuba\"\n        },\n        {\n          \"code\": \"CD\",\n          \"name\": \"Democratic Republic of Congo\"\n        },\n        {\n          \"code\": \"CG\",\n          \"name\": \"Republic of Congo\"\n        },\n        {\n          \"code\": \"ER\",\n          \"name\": \"Eritrea\"\n        },\n        {\n          \"code\": \"HT\",\n          \"name\": \"Haiti\"\n        },\n        {\n          \"code\": \"IR\",\n          \"name\": \"Iran\"\n        },\n        {\n          \"code\": \"IQ\",\n          \"name\": \"Iraq\"\n        },\n        {\n          \"code\": \"LY\",\n          \"name\": \"Libya\"\n        },\n        {\n          \"code\": \"ML\",\n          \"name\": \"Mali\"\n        },\n        {\n          \"code\": \"NI\",\n          \"name\": \"Nicaragua\"\n        },\n        {\n          \"code\": \"KP\",\n          \"name\": \"North Korea\"\n        },\n        {\n          \"code\": \"RU\",\n          \"name\": \"Russia\"\n        },\n        {\n          \"code\": \"SO\",\n          \"name\": \"Somalia\"\n        },\n        {\n          \"code\": \"SS\",\n          \"name\": \"South Sudan\"\n        },\n        {\n          \"code\": \"SD\",\n          \"name\": \"Sudan\"\n        },\n        {\n          \"code\": \"SY\",\n          \"name\": \"Syria\"\n        },\n        {\n          \"code\": \"VE\",\n          \"name\": \"Venezuela\"\n        },\n        {\n          \"code\": \"YE\",\n          \"name\": \"Yemen\"\n        },\n        {\n          \"code\": \"ZW\",\n          \"name\": \"Zimbabwe\"\n        },\n        {\n          \"code\": \"UA-43\",\n          \"name\": \"Crimea (Region of Ukraine)\"\n        },\n        {\n          \"code\": \"UA-14\",\n          \"name\": \"Donetsk (Region of Ukraine)\"\n        },\n        {\n          \"code\": \"UA-65\",\n          \"name\": \"Kherson (Region of Ukraine)\"\n        },\n        {\n          \"code\": \"UA-09\",\n          \"name\": \"Luhansk (Region of Ukraine)\"\n        },\n        {\n          \"code\": \"UA-23\",\n          \"name\": \"Zaporizhzhia (Region of Ukraine)\"\n        },\n        {\n          \"code\": \"AN\",\n          \"name\": \"Netherlands Antilles\"\n        }\n      ],\n      \"independentlyVerified\": false,\n      \"approvalGuaranteed\": false\n    }\n  },\n  \"gatewayIntegration\": {\n    \"adapterImplemented\": true,\n    \"contract\": \"v3\",\n    \"liveConfigurationProvided\": null,\n    \"availability\": {\n      \"source\": \"runtime\",\n      \"configurationEndpoint\": \"/api/config\",\n      \"configurationIncludesHealthCheck\": false,\n      \"checkoutEndpoint\": \"/api/checkout/{token}\",\n      \"checkoutIncludesProviderApproval\": false\n    }\n  }\n}"
          },
          "note": "",
          "links": []
        },
        {
          "id": "privacy",
          "title": "Жалпыға қолжетімді ақпарат шекаралары",
          "paragraphs": [
            "Қарапайым мәтін мен JSON сеанстарды, токендерді, жеке қолдау сұрауларын, пайдаланушы төлем жазбаларын немесе интеграция құпияларын қамтымайды. Кіру, аккаунт және чек-аут беттері іздеу индекстеуінен алып тасталған.",
            "Жалпыға қолжетімді құжаттаманы оқу дүкенді басқару рұқсаттарын бермейді. Жеке жазбалар жарамды сеансты талап етеді, ал өзгертулер қосымша сервер тексерулерін талап етеді."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "updates",
          "title": "Жаңартулар мен сілтемелер",
          "paragraphs": [
            "Мақалалардың тұрақты идентификаторлары, URL мекенжайлары, атаулары және жаңарту күні бар. Жауап келтіру кезінде тиісті нұсқаулыққа сілтеме жасаңыз және транзакция шарттары туралы ескертулерді сақтаңыз.",
            "Sitemap-тер, llms ресурстары және серверде көрсетілген HTML мазмұнды алуды жеңілдетеді. Олар индекстеуді, іздеу орнын немесе сыртқы AI жүйесінің қолдануын кепілдік бермейді.",
            "Тек жарияланған аудармалар ғана канондық URL, hreflang баламалары және sitemap жазбаларына ие. Болашақ аударма үшін конфигурацияланған тіл жарияланған тіл нұсқасы емес."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "assistant-admin-v16",
          "title": "Көмекші, қолдау және жобаны басқару",
          "paragraphs": [
            "Жеке операцияларға көмек қажет болғанда, чатта менің деректеріме қолжетімділікті қосыңыз. includeAccount=true бар веб-сұраным жарамды сессияны, Origin және X-CSRF-Token-ді талап етеді; X-Kevmi-Store меншікті дүкенді немесе барлық меншікті дүкендерді таңдайды. Рұқсатсыз көмекші тек қоғамдық құжаттаманы пайдаланады. Telegram-да жіберуші анықталғаннан кейін жеке батырма қолжетімділікті қосады.",
            "read_account құралы меншікті дүкендерді, расталған төлем мәртебесі бар шот-фактураларды, оқиғаларды, өтінімдерді және маман жауаптары бар қолдау сұранымдарын оқиды. Ол 30 жазбаны және nextPage-ті қайтарады; ескі жазбалар пагинация арқылы қолжетімді. Әр жауаптағы оқулар шектеулі, сондықтан толық емес үлгі ашық көрсетілуі тиіс. API кілттері, вебхук құпиялары, карта деректері және сессиялар құралға берілмейді. Ол ақы ала алмайды, төлем жасай алмайды, қайтара алмайды немесе параметрлерді өзгерте алмайды.",
            "Жұмыс кеңістігінде немесе Telegram-да қолдау сұранымын жасау тұрақты кезекте бөлек әкімші ескертуін орналастырады. Ол /admin/tickets?ticket=<id> сілтемесімен байланысады; уақытша Telegram ақаулары қайта қайталанады. Қалпына келтіру ескертусіз ескі ашық сұранымдарды да қамтиды. Әкімшілер сұраным бетінде жауап береді; жауап пайдаланушы жұмыс кеңістігінде сақталады және қолдау хабарландыулары қосылғанда Telegram арқылы жіберіледі.",
            "Бот негізгі мәзір, дүкендер, хабарландырулар, қолдау, қауіпсіздік және тіл үшін ішкі батырмаларды пайдаланады. Навигация ағымдағы хабарламаны өңдейді; қолжетімсіз ескі мәзір ауыстырылады. Төлем және қауіпсіздік хабарландырулары бір реттік навигация ретінде қарастырылмайды. Мәзір арқылы жүйеден шығу растауды қажет етеді. Айқын /logout командасы әлі де әрбір аккаунт сессиясын аяқтайды.",
            "/admin/project панелі сервер жағындағы MODERATOR_TELEGRAM_IDS рұқсат тізіміндегі Telegram ID-лерімен шектелген. Ол пайдаланушыларды, дүкендерді, операцияларды, кілтті жоюды, вебхукті өшіруді, шот-фактураны тоқтата тұруды, қабылдау бақылауын және аудит журналын қамтиды. Өзгертулер CSRF және себепті талап етеді. Панель әкімшіні шектей алмайды немесе төлемді қолмен сәтті деп жариялай алмайды. Меншіктісін шектеу сессияларды аяқтайды және API кілтіне қолжетімділікті бұғаттайды; дүкенді шектеу жаңа операцияларды тоқтатады. Тарих сақталады.",
            "Қоғамдық ұсыныс /public-offer мекенжайында және құпиялық саясаты /privacy-policy мекенжайында әрбір қосылған тілде қолжетімді. Монеталарды аты немесе тикері бойынша іздеңіз. Желі таңдағышы тек бірнеше тірі желі болғанда ғана пайда болады. Бір желі автоматты түрде таңдалады және растауда атауы қалады. Тірі шлюз қолжетімділігі таңдалатын жұптарды анықтайды; анықтамалық каталог қызметті қоспайды.",
            "Күнделікті веб-қосымша шығарылымдары үшін update.sh пайдаланыңыз: үміткерді құрастырыңыз, миграция тарихын тексеріңіз, SQLite-ті онлайн резервтеңіз, екінші контейнерді іске қосыңыз, оны тексеріңіз және Caddy-ді бірқалыпты ауыстырыңыз. Gateway, PostgreSQL және пошта қайта іске қосылмайды. Алдыңғы статикалық ресурстар ашық қойындылар үшін қолжетімді болып қалады. Жаңа миграция айқын уәкілеттікпен қарауды қажет етеді; үйлесімсіз схема өзгерісі үздіксіз орналастыру емес."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Қоғамдық ұсыныс",
              "href": "/public-offer"
            },
            {
              "label": "Құпиялық саясаты",
              "href": "/privacy-policy"
            }
          ]
        }
      ],
      "body": "Жалпыға қолжетімді ресурстар\n\nМекенжай · Мазмұны\n/docs and /en/docs · Толық орыс және ағылшын нұсқаларының нұсқаулықтары\n/llms.txt · Ағылшын индексі және негізгі фактілер\n/llms-full.txt · Толық ағылшын білім мәтіні\n/knowledge.json · Фактілер, комиссиялар, мақалалар және нұсқа\n/openapi.json · Іске асырылған сервер API келісімшарты\n/sitemap.xml · Жарияланған жалпыға қолжетімді беттер\n/robots.txt · Кроулер нұсқаулары\n\nҚұрылымдалған фактілерді оқу\n\nknowledge.facts.countries.card әлем бойынша қамтуды нақты шектеулермен сипаттайды. countryCount каталог жазбаларын санайды, coverageLabel 190+ деп көрсетіледі, ал exactList қолдау көрсетілетін ISO жазбаларын қамтиды. restrictions провайдердің алып тастау тізімін сақтайды.\n\nsource=owner_provided және status=owner_list_received тізімнің шығу тегін жазады. independentlyVerified=false және verifiedCountryCount=null тізімнің тірі шлюзге қарсы дербес тексерілмегенін білдіреді; ол әлі де алынған және жарияланған тізім болып қалады.\n\npartialCoverage орналасқан жері толық қамтылмаған елдерді қамтиды. unresolvedFootnotes Қытай үшін бөлек * белгісін сақтайды. coverage=listed тізімге енгізілгенді білдіреді; partial_locations орналасқан жер шектеулерін білдіреді; footnote_pending белгінің бөлек расталмаған мағынасын білдіреді. None әр картаның мақұлдануын кепілдік бермейді.\n\ngatewayConnected=null және gatewayIntegration.liveConfigurationProvided=null статикалық білім базасының орналастырудың ағымдағы күйін қамтымайтынын білдіреді. gatewayIntegration.availability ағымдағы тексерулерге арналған нүктелерді анықтайды. gateway.configured /api/config ішінде баптауларды хабарлайды, провайдер қосылымын емес. invoice.availability чек-аут жауабында жарамды шот шарттарын сипаттайды, ал үйлесімділік өрісі invoice.gatewayConnected мүмкіндік.available мәнін көрсетеді. Екеуі де операцияны растауды алмастырмайды. gatewayIntegration.adapterImplemented=true v3 протоколын қолдауды сипаттайды; subscriptionsSupported=false мерзімді төлемдерді алып тастайды.\n\n{\n  \"subscriptionsSupported\": false,\n  \"gatewayConnected\": null,\n  \"countries\": {\n    \"card\": {\n      \"coverageLabel\": \"190+\",\n      \"policy\": \"worldwide_except_restrictions\",\n      \"restrictions\": [\n        {\n          \"code\": \"AF\",\n          \"name\": \"Afghanistan\"\n        },\n        {\n          \"code\": \"AQ\",\n          \"name\": \"Antarctica\"\n        },\n        {\n          \"code\": \"BY\",\n          \"name\": \"Belarus\"\n        },\n        {\n          \"code\": \"MM\",\n          \"name\": \"Burma (Myanmar)\"\n        },\n        {\n          \"code\": \"BI\",\n          \"name\": \"Burundi\"\n        },\n        {\n          \"code\": \"CF\",\n          \"name\": \"Central African Republic\"\n        },\n        {\n          \"code\": \"TD\",\n          \"name\": \"Chad\"\n        },\n        {\n          \"code\": \"CU\",\n          \"name\": \"Cuba\"\n        },\n        {\n          \"code\": \"CD\",\n          \"name\": \"Democratic Republic of Congo\"\n        },\n        {\n          \"code\": \"CG\",\n          \"name\": \"Republic of Congo\"\n        },\n        {\n          \"code\": \"ER\",\n          \"name\": \"Eritrea\"\n        },\n        {\n          \"code\": \"HT\",\n          \"name\": \"Haiti\"\n        },\n        {\n          \"code\": \"IR\",\n          \"name\": \"Iran\"\n        },\n        {\n          \"code\": \"IQ\",\n          \"name\": \"Iraq\"\n        },\n        {\n          \"code\": \"LY\",\n          \"name\": \"Libya\"\n        },\n        {\n          \"code\": \"ML\",\n          \"name\": \"Mali\"\n        },\n        {\n          \"code\": \"NI\",\n          \"name\": \"Nicaragua\"\n        },\n        {\n          \"code\": \"KP\",\n          \"name\": \"North Korea\"\n        },\n        {\n          \"code\": \"RU\",\n          \"name\": \"Russia\"\n        },\n        {\n          \"code\": \"SO\",\n          \"name\": \"Somalia\"\n        },\n        {\n          \"code\": \"SS\",\n          \"name\": \"South Sudan\"\n        },\n        {\n          \"code\": \"SD\",\n          \"name\": \"Sudan\"\n        },\n        {\n          \"code\": \"SY\",\n          \"name\": \"Syria\"\n        },\n        {\n          \"code\": \"VE\",\n          \"name\": \"Venezuela\"\n        },\n        {\n          \"code\": \"YE\",\n          \"name\": \"Yemen\"\n        },\n        {\n          \"code\": \"ZW\",\n          \"name\": \"Zimbabwe\"\n        },\n        {\n          \"code\": \"UA-43\",\n          \"name\": \"Crimea (Region of Ukraine)\"\n        },\n        {\n          \"code\": \"UA-14\",\n          \"name\": \"Donetsk (Region of Ukraine)\"\n        },\n        {\n          \"code\": \"UA-65\",\n          \"name\": \"Kherson (Region of Ukraine)\"\n        },\n        {\n          \"code\": \"UA-09\",\n          \"name\": \"Luhansk (Region of Ukraine)\"\n        },\n        {\n          \"code\": \"UA-23\",\n          \"name\": \"Zaporizhzhia (Region of Ukraine)\"\n        },\n        {\n          \"code\": \"AN\",\n          \"name\": \"Netherlands Antilles\"\n        }\n      ],\n      \"independentlyVerified\": false,\n      \"approvalGuaranteed\": false\n    }\n  },\n  \"gatewayIntegration\": {\n    \"adapterImplemented\": true,\n    \"contract\": \"v3\",\n    \"liveConfigurationProvided\": null,\n    \"availability\": {\n      \"source\": \"runtime\",\n      \"configurationEndpoint\": \"/api/config\",\n      \"configurationIncludesHealthCheck\": false,\n      \"checkoutEndpoint\": \"/api/checkout/{token}\",\n      \"checkoutIncludesProviderApproval\": false\n    }\n  }\n}\n\nЖалпыға қолжетімді ақпарат шекаралары\n\nҚарапайым мәтін мен JSON сеанстарды, токендерді, жеке қолдау сұрауларын, пайдаланушы төлем жазбаларын немесе интеграция құпияларын қамтымайды. Кіру, аккаунт және чек-аут беттері іздеу индекстеуінен алып тасталған.\n\nЖалпыға қолжетімді құжаттаманы оқу дүкенді басқару рұқсаттарын бермейді. Жеке жазбалар жарамды сеансты талап етеді, ал өзгертулер қосымша сервер тексерулерін талап етеді.\n\nЖаңартулар мен сілтемелер\n\nМақалалардың тұрақты идентификаторлары, URL мекенжайлары, атаулары және жаңарту күні бар. Жауап келтіру кезінде тиісті нұсқаулыққа сілтеме жасаңыз және транзакция шарттары туралы ескертулерді сақтаңыз.\n\nSitemap-тер, llms ресурстары және серверде көрсетілген HTML мазмұнды алуды жеңілдетеді. Олар индекстеуді, іздеу орнын немесе сыртқы AI жүйесінің қолдануын кепілдік бермейді.\n\nТек жарияланған аудармалар ғана канондық URL, hreflang баламалары және sitemap жазбаларына ие. Болашақ аударма үшін конфигурацияланған тіл жарияланған тіл нұсқасы емес.\n\nКөмекші, қолдау және жобаны басқару\n\nЖеке операцияларға көмек қажет болғанда, чатта менің деректеріме қолжетімділікті қосыңыз. includeAccount=true бар веб-сұраным жарамды сессияны, Origin және X-CSRF-Token-ді талап етеді; X-Kevmi-Store меншікті дүкенді немесе барлық меншікті дүкендерді таңдайды. Рұқсатсыз көмекші тек қоғамдық құжаттаманы пайдаланады. Telegram-да жіберуші анықталғаннан кейін жеке батырма қолжетімділікті қосады.\n\nread_account құралы меншікті дүкендерді, расталған төлем мәртебесі бар шот-фактураларды, оқиғаларды, өтінімдерді және маман жауаптары бар қолдау сұранымдарын оқиды. Ол 30 жазбаны және nextPage-ті қайтарады; ескі жазбалар пагинация арқылы қолжетімді. Әр жауаптағы оқулар шектеулі, сондықтан толық емес үлгі ашық көрсетілуі тиіс. API кілттері, вебхук құпиялары, карта деректері және сессиялар құралға берілмейді. Ол ақы ала алмайды, төлем жасай алмайды, қайтара алмайды немесе параметрлерді өзгерте алмайды.\n\nЖұмыс кеңістігінде немесе Telegram-да қолдау сұранымын жасау тұрақты кезекте бөлек әкімші ескертуін орналастырады. Ол /admin/tickets?ticket=<id> сілтемесімен байланысады; уақытша Telegram ақаулары қайта қайталанады. Қалпына келтіру ескертусіз ескі ашық сұранымдарды да қамтиды. Әкімшілер сұраным бетінде жауап береді; жауап пайдаланушы жұмыс кеңістігінде сақталады және қолдау хабарландыулары қосылғанда Telegram арқылы жіберіледі.\n\nБот негізгі мәзір, дүкендер, хабарландырулар, қолдау, қауіпсіздік және тіл үшін ішкі батырмаларды пайдаланады. Навигация ағымдағы хабарламаны өңдейді; қолжетімсіз ескі мәзір ауыстырылады. Төлем және қауіпсіздік хабарландырулары бір реттік навигация ретінде қарастырылмайды. Мәзір арқылы жүйеден шығу растауды қажет етеді. Айқын /logout командасы әлі де әрбір аккаунт сессиясын аяқтайды.\n\n/admin/project панелі сервер жағындағы MODERATOR_TELEGRAM_IDS рұқсат тізіміндегі Telegram ID-лерімен шектелген. Ол пайдаланушыларды, дүкендерді, операцияларды, кілтті жоюды, вебхукті өшіруді, шот-фактураны тоқтата тұруды, қабылдау бақылауын және аудит журналын қамтиды. Өзгертулер CSRF және себепті талап етеді. Панель әкімшіні шектей алмайды немесе төлемді қолмен сәтті деп жариялай алмайды. Меншіктісін шектеу сессияларды аяқтайды және API кілтіне қолжетімділікті бұғаттайды; дүкенді шектеу жаңа операцияларды тоқтатады. Тарих сақталады.\n\nҚоғамдық ұсыныс /public-offer мекенжайында және құпиялық саясаты /privacy-policy мекенжайында әрбір қосылған тілде қолжетімді. Монеталарды аты немесе тикері бойынша іздеңіз. Желі таңдағышы тек бірнеше тірі желі болғанда ғана пайда болады. Бір желі автоматты түрде таңдалады және растауда атауы қалады. Тірі шлюз қолжетімділігі таңдалатын жұптарды анықтайды; анықтамалық каталог қызметті қоспайды.\n\nКүнделікті веб-қосымша шығарылымдары үшін update.sh пайдаланыңыз: үміткерді құрастырыңыз, миграция тарихын тексеріңіз, SQLite-ті онлайн резервтеңіз, екінші контейнерді іске қосыңыз, оны тексеріңіз және Caddy-ді бірқалыпты ауыстырыңыз. Gateway, PostgreSQL және пошта қайта іске қосылмайды. Алдыңғы статикалық ресурстар ашық қойындылар үшін қолжетімді болып қалады. Жаңа миграция айқын уәкілеттікпен қарауды қажет етеді; үйлесімсіз схема өзгерісі үздіксіз орналастыру емес.\n\nҚоғамдық ұсыныс\n\nҚұпиялық саясаты",
      "readMinutes": 5
    },
    {
      "id": "cost-sharing",
      "title": "Өңдеу ақысы мен ҚҚС бөлу",
      "summary": "Әр шотта төлемді өңдеу комиссиясы мен ҚҚС-тың қанша бөлігін тұтынушыңіз төлейтінін дербес таңдаңыз. Екі сырғытпа әр шығынды 0-ден 100%-ға дейін бір пайыздық қадамдармен бөледі, нәтиже сілтемені жасамас бұрын көрінеді.",
      "tags": [
        "шығынды бөлу",
        "төлемді өңдеу комиссиясы",
        "ҚҚС",
        "пайыз",
        "сырғытпа",
        "feeCustomerPercent",
        "vatCustomerPercent"
      ],
      "sections": [
        {
          "id": "controls",
          "title": "Бір тапсырыс үшін екі басқару элементі",
          "paragraphs": [
            "Төлемді өңдеу комиссиясын басқару элементі барлық қабылдау комиссиясын, оның пайыздық және тұрақты құрамдас бөліктерін қоса алғанда, бөледі. ҚҚС басқару элементі тек салықты бөледі. Ешбір басқару элементі тарифті, салық мөлшерлемесін немесе өнімнің базалық бағасын өзгертпейді.",
            "Толық солға жылжыту шығынды тұтынушыға тағайындайды; толық оңға жылжыту сатушыға тағайындайды. Белгілер екі тараптың да нақты пайыздарын және ақшалай сомаларын көрсетеді. Тұтынушы, Тең бөлу және Сатушы алдын ала орнатылған таңдаулары жылдам таңдауды қамтамасыз етеді."
          ],
          "bullets": [
            "Тұтынушы үлесі чек-аут жалпы сомасына қосылады.",
            "Сатушы үлесі тапсырыстың базалық бағасынан шегеріледі.",
            "SBP және криптовалютада ҚҚС нөлге тең, сондықтан ҚҚС басқару элементі олардың жалпы сомасына әсер етпейді.",
            "Түймелер мен сырғытпалар пернетақтамен жұмыс істейді; нәтижені түсіну үшін анимация қажет емес."
          ],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Калькуляторды ашыңыз",
              "href": "/pricing"
            }
          ]
        },
        {
          "id": "base",
          "title": "Бір базалық баға, екі бөлек шығын",
          "paragraphs": [
            "Халықаралық карталар мен Alipay базалық бағаның 10%-ын және $0.50 қосымша төлейді, ҚҚС базалық бағаның 16%-ын құрайды. SBP 8% төлейді, ал криптовалюта 4% төлейді; жарияланған баға моделі бойынша екеуінде де ҚҚС жоқ.",
            "ҚҚС базалық бағадан қосылады, 16/116 пайдаланып алынбайды. Комиссия ҚҚС немесе тұтынушы комиссия үлесін қамтитын жалпы сомаға қайта есептелмейді. Kevmi-дің комиссиясы жарияланған тарифке қазірдің өзінде енгізілген; тағы 5% қосылмайды."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "Formula · integer minor units",
            "code": "fee = roundHalfUp(base × rate / 100) + fixed\nvat = vatApplies ? roundHalfUp(base × 16 / 100) : 0\ncustomerFee = roundHalfUp(fee × feeCustomerPercent / 100)\ncustomerVat = roundHalfUp(vat × vatCustomerPercent / 100)\nmerchantFee = fee − customerFee\nmerchantVat = vat − customerVat\ncustomerTotal = base + customerFee + customerVat\nmerchantNet = base − merchantFee − merchantVat"
          },
          "note": "",
          "links": []
        },
        {
          "id": "example",
          "title": "$5 карта тапсырысын бөлу",
          "paragraphs": [
            "Төмендегі әр мысал $5.00 базалық бағаны, $1.00 жалпы карта комиссиясын және $0.80 ҚҚС-ты пайдаланады. Пайыздар тек осы шығындарды кім жабатынын өзгертеді."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Тұтынушы үлестері: ҚҚС / комиссия",
              "Төлемді төлейді",
              "Сатушы шегерімдерден кейін"
            ],
            "rows": [
              [
                "100% / 0% · түпнұсқа әдепкі",
                "$5.80",
                "$4.00"
              ],
              [
                "0% / 0% · сатушы бәрін жабады",
                "$5.00",
                "$3.20"
              ],
              [
                "100% / 100% · тұтынушы бәрін жабады",
                "$6.80",
                "$5.00"
              ],
              [
                "50% / 23% · теңшелетін бөлу",
                "$5.63",
                "$3.83"
              ]
            ]
          },
          "code": null,
          "note": "Кесте бөлу арифметикасын көрсетеді. Осы карта конфигурацияларының ішінен ағымдағы шлюз тек 100% тұтынушы ҚҚС / 0% тұтынушы комиссиясын орындай алады. Бұл есептеу төлемді бастамайды; USD-тан USDT-ге автоматты айырбастау жоқ.",
          "links": []
        },
        {
          "id": "rounding",
          "title": "Тиын жоғалтпай дөңгелектеу",
          "paragraphs": [
            "Сомалар бүтін ұсақ валюта бірліктерінде көрсетіледі. Жалпы комиссия мен жалпы ҚҚС алдымен бөлек дөңгелектенеді. Содан кейін әр тұтынушы үлесі жартысынан жоғары дөңгелектеуді пайдаланады, ал сатушы сол шығынның нақты қалдығын алады. Сондықтан екі үлес әрқашан бастапқы сомаға қосылады.",
            "Бір тиындық шығынды 50/50 бөлгенде, тұтынушыға бір тиын, ал сатушыға нөл бөлінеді. Пайыз 50% болып қалады, ал ақшалай сомалар валютаның қолжетімді дәлдігін көрсетеді. Сервер теріс сатушы түсімі бар есептеулерді қабылдамайды."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "api",
          "title": "Бөлуді API арқылы орнатыңыз",
          "paragraphs": [
            "vatCustomerPercent және feeCustomerPercent мәндерін 0-ден 100-ге дейінгі бүтін сандар ретінде жіберіңіз. Әрқайсысы жасалып жатқан шотқа қолданылады. Бос жолдар, бөлшек пайыздар және диапазоннан тыс сандар қабылданбайды.",
            "feeCustomerPercent өрісін алып тастау бүкіл комиссияны сатушыға тағайындайды. vatCustomerPercent өрісін алып тастау ескірген vatPayer өрісін немесе аккаунт әдепкі мәнін пайдаланады. Ескірген тұтынушы және сатушы мәндері 100% және 0% тұтынушы ҚҚС-ына сәйкес келеді. Қайшылықты vatPayer және vatCustomerPercent мәндерін жібермеңіз.",
            "Жауаптар аралық ҚҚС үлесін vatPayer=shared ретінде сипаттайды. Жаңа сұраулар үшін сандық пайызды пайдаланыңыз; shared ескірген vatPayer кіріс мәні ретінде қабылданбайды."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "JSON",
            "code": "{\n  \"title\": \"Design project · order 1042\",\n  \"description\": \"One-time payment for the agreed design work\",\n  \"amountMinor\": 500,\n  \"currency\": \"USD\",\n  \"methods\": [\n    \"card\",\n    \"alipay\"\n  ],\n  \"vatCustomerPercent\": 100,\n  \"feeCustomerPercent\": 0,\n  \"orderId\": \"order-1042\",\n  \"metadata\": {\n    \"campaign\": \"autumn\"\n  }\n}"
          },
          "note": "Мысал карта арнасының қолдау көрсетілетін бөлуін пайдаланады: барлық ҚҚС тұтынушыға және толық өңдеу комиссиясы сатушыға. Басқа пайыздарды сақтау оларды орындалатын етпейді.",
          "links": [
            {
              "label": "API арқылы шот жасаңыз",
              "href": "/docs/payment-links-api"
            }
          ]
        },
        {
          "id": "snapshot",
          "title": "Шарттар есепшотпен бірге қалады",
          "paragraphs": [
            "Шот соманы, валютаны, әдістерді және екі үлесті де бекітеді. Дүкен баптауларын өзгерту шығарылған сілтемелерді өзгертпейді. Сырғытпалар бөлуді есептейді; тірі орындау қосылған арнаның мүмкіндіктеріне байланысты.",
            "Жаңа тірі карта немесе Alipay төлемі үшін ағымдағы шлюз тек feeCustomerPercent=0 және vatCustomerPercent=100 мәндерін қолдайды: сатушы барлық өңдеу комиссиясын жабады, ал ҚҚС клиент үшін толық қосылады. Басқа үлестер шотта сақталып, есептелуі мүмкін, бірақ орындау unsupported_allocation кодымен бұғатталған. Сервер үнсіз сақталған шарттарды өзгертпейді. SBP және USDT крипто төлемдері кез келген өңдеу комиссиясы үлесін қолдайды және ҚҚС жоқ."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        }
      ],
      "group": "payments",
      "url": "/docs/cost-sharing",
      "body": "Бір тапсырыс үшін екі басқару элементі\n\nТөлемді өңдеу комиссиясын басқару элементі барлық қабылдау комиссиясын, оның пайыздық және тұрақты құрамдас бөліктерін қоса алғанда, бөледі. ҚҚС басқару элементі тек салықты бөледі. Ешбір басқару элементі тарифті, салық мөлшерлемесін немесе өнімнің базалық бағасын өзгертпейді.\n\nТолық солға жылжыту шығынды тұтынушыға тағайындайды; толық оңға жылжыту сатушыға тағайындайды. Белгілер екі тараптың да нақты пайыздарын және ақшалай сомаларын көрсетеді. Тұтынушы, Тең бөлу және Сатушы алдын ала орнатылған таңдаулары жылдам таңдауды қамтамасыз етеді.\n\nТұтынушы үлесі чек-аут жалпы сомасына қосылады.\n\nСатушы үлесі тапсырыстың базалық бағасынан шегеріледі.\n\nSBP және криптовалютада ҚҚС нөлге тең, сондықтан ҚҚС басқару элементі олардың жалпы сомасына әсер етпейді.\n\nТүймелер мен сырғытпалар пернетақтамен жұмыс істейді; нәтижені түсіну үшін анимация қажет емес.\n\nКалькуляторды ашыңыз\n\nБір базалық баға, екі бөлек шығын\n\nХалықаралық карталар мен Alipay базалық бағаның 10%-ын және $0.50 қосымша төлейді, ҚҚС базалық бағаның 16%-ын құрайды. SBP 8% төлейді, ал криптовалюта 4% төлейді; жарияланған баға моделі бойынша екеуінде де ҚҚС жоқ.\n\nҚҚС базалық бағадан қосылады, 16/116 пайдаланып алынбайды. Комиссия ҚҚС немесе тұтынушы комиссия үлесін қамтитын жалпы сомаға қайта есептелмейді. Kevmi-дің комиссиясы жарияланған тарифке қазірдің өзінде енгізілген; тағы 5% қосылмайды.\n\nfee = roundHalfUp(base × rate / 100) + fixed\nvat = vatApplies ? roundHalfUp(base × 16 / 100) : 0\ncustomerFee = roundHalfUp(fee × feeCustomerPercent / 100)\ncustomerVat = roundHalfUp(vat × vatCustomerPercent / 100)\nmerchantFee = fee − customerFee\nmerchantVat = vat − customerVat\ncustomerTotal = base + customerFee + customerVat\nmerchantNet = base − merchantFee − merchantVat\n\n$5 карта тапсырысын бөлу\n\nТөмендегі әр мысал $5.00 базалық бағаны, $1.00 жалпы карта комиссиясын және $0.80 ҚҚС-ты пайдаланады. Пайыздар тек осы шығындарды кім жабатынын өзгертеді.\n\nТұтынушы үлестері: ҚҚС / комиссия · Төлемді төлейді · Сатушы шегерімдерден кейін\n100% / 0% · түпнұсқа әдепкі · $5.80 · $4.00\n0% / 0% · сатушы бәрін жабады · $5.00 · $3.20\n100% / 100% · тұтынушы бәрін жабады · $6.80 · $5.00\n50% / 23% · теңшелетін бөлу · $5.63 · $3.83\n\nКесте бөлу арифметикасын көрсетеді. Осы карта конфигурацияларының ішінен ағымдағы шлюз тек 100% тұтынушы ҚҚС / 0% тұтынушы комиссиясын орындай алады. Бұл есептеу төлемді бастамайды; USD-тан USDT-ге автоматты айырбастау жоқ.\n\nТиын жоғалтпай дөңгелектеу\n\nСомалар бүтін ұсақ валюта бірліктерінде көрсетіледі. Жалпы комиссия мен жалпы ҚҚС алдымен бөлек дөңгелектенеді. Содан кейін әр тұтынушы үлесі жартысынан жоғары дөңгелектеуді пайдаланады, ал сатушы сол шығынның нақты қалдығын алады. Сондықтан екі үлес әрқашан бастапқы сомаға қосылады.\n\nБір тиындық шығынды 50/50 бөлгенде, тұтынушыға бір тиын, ал сатушыға нөл бөлінеді. Пайыз 50% болып қалады, ал ақшалай сомалар валютаның қолжетімді дәлдігін көрсетеді. Сервер теріс сатушы түсімі бар есептеулерді қабылдамайды.\n\nБөлуді API арқылы орнатыңыз\n\nvatCustomerPercent және feeCustomerPercent мәндерін 0-ден 100-ге дейінгі бүтін сандар ретінде жіберіңіз. Әрқайсысы жасалып жатқан шотқа қолданылады. Бос жолдар, бөлшек пайыздар және диапазоннан тыс сандар қабылданбайды.\n\nfeeCustomerPercent өрісін алып тастау бүкіл комиссияны сатушыға тағайындайды. vatCustomerPercent өрісін алып тастау ескірген vatPayer өрісін немесе аккаунт әдепкі мәнін пайдаланады. Ескірген тұтынушы және сатушы мәндері 100% және 0% тұтынушы ҚҚС-ына сәйкес келеді. Қайшылықты vatPayer және vatCustomerPercent мәндерін жібермеңіз.\n\nЖауаптар аралық ҚҚС үлесін vatPayer=shared ретінде сипаттайды. Жаңа сұраулар үшін сандық пайызды пайдаланыңыз; shared ескірген vatPayer кіріс мәні ретінде қабылданбайды.\n\n{\n  \"title\": \"Design project · order 1042\",\n  \"description\": \"One-time payment for the agreed design work\",\n  \"amountMinor\": 500,\n  \"currency\": \"USD\",\n  \"methods\": [\n    \"card\",\n    \"alipay\"\n  ],\n  \"vatCustomerPercent\": 100,\n  \"feeCustomerPercent\": 0,\n  \"orderId\": \"order-1042\",\n  \"metadata\": {\n    \"campaign\": \"autumn\"\n  }\n}\n\nМысал карта арнасының қолдау көрсетілетін бөлуін пайдаланады: барлық ҚҚС тұтынушыға және толық өңдеу комиссиясы сатушыға. Басқа пайыздарды сақтау оларды орындалатын етпейді.\n\nAPI арқылы шот жасаңыз\n\nШарттар есепшотпен бірге қалады\n\nШот соманы, валютаны, әдістерді және екі үлесті де бекітеді. Дүкен баптауларын өзгерту шығарылған сілтемелерді өзгертпейді. Сырғытпалар бөлуді есептейді; тірі орындау қосылған арнаның мүмкіндіктеріне байланысты.\n\nЖаңа тірі карта немесе Alipay төлемі үшін ағымдағы шлюз тек feeCustomerPercent=0 және vatCustomerPercent=100 мәндерін қолдайды: сатушы барлық өңдеу комиссиясын жабады, ал ҚҚС клиент үшін толық қосылады. Басқа үлестер шотта сақталып, есептелуі мүмкін, бірақ орындау unsupported_allocation кодымен бұғатталған. Сервер үнсіз сақталған шарттарды өзгертпейді. SBP және USDT крипто төлемдері кез келген өңдеу комиссиясы үлесін қолдайды және ҚҚС жоқ.",
      "readMinutes": 6
    },
    {
      "id": "widgets",
      "title": "Чек-аутты веб-сайтыңызға ендіріңіз",
      "summary": "Төлемді модальды терезеде ашу, оны бетке енгізу немесе тұтынушыны арнайы төлем бетіне жіберу. Виджет жалпыға қолжетімді төлем URL мекенжайын пайдаланады және браузерде сатушының API кілті қажет емес.",
      "tags": [
        "виджетет",
        "iframe",
        "енгізу",
        "HTML",
        "интеграция",
        "модаль",
        "төлем беті"
      ],
      "sections": [
        {
          "id": "flow",
          "title": "Шот-фактурадан төлемге дейін",
          "paragraphs": [
            "/account#links мекенжайында шот-фактура жасаңыз және дереу checkoutUrl алыңыз. /account#widget ашып, сілтемені қойыңыз және модальды, инлайн блокты немесе қайта бағыттауды таңдаңыз. Кілттер мен вебхуктар көршілес аккаунт бөлімдерінде қолжетімді.",
            "Құрастырушы алдын ала қарау әрқашан ақша алусыз демо тапсырысты пайдаланады. Жасалған виджет коды сіздің тірі сілтемеңізді сақтайды, оның шарттары сақталған серверлік шот-фактурадан келеді.",
            "Интерфейстегі жаңа шот үшін USD карталар мен Alipay ұсынады; RUB SBP ұсынады; USDT криптоны ұсынады. API сондай-ақ үйлесімділік үшін USD + криптоны сақтай алады, бірақ оның тірі крипто төлемі crypto_requires_usdt кодымен бұғатталған. USD және USDT бөлек, автоматты айырбастау немесе болжалған 1:1 бағам жоқ. Крипто төлемі бөлек USDT шотын талап етеді."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Интеграция құрастырушысы",
              "href": "/account#widget"
            },
            {
              "label": "Төлем сілтемелері API",
              "href": "/docs/payment-links-api"
            }
          ]
        },
        {
          "id": "markup",
          "title": "Қалыпты сілтеме резерві бар түйме",
          "paragraphs": [
            "Бұл мысал ақша алусыз демо ашады. Екі URL мәнін шот-фактура жауабыңыздағы checkoutUrl-мен ауыстырыңыз. Скриптті төлем URL-мен бірдей Kevmi доменінен жүктеңіз.",
            "href JavaScript қолжетімсіз болғанда төлемді ашады. data-kevmi-label iframe-ге қолжетімді атау береді. Скриптті әр бетке бір рет қосыңыз."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "HTML",
            "code": "<script src=\"https://kevmi.maxeevmax1.chatgpt.site/widgets/kevmi.js\" defer></script>\n<a href=\"https://kevmi.maxeevmax1.chatgpt.site/en/pay/demo\"\n   data-kevmi-checkout=\"https://kevmi.maxeevmax1.chatgpt.site/en/pay/demo\"\n   data-kevmi-mode=\"modal\"\n   data-kevmi-label=\"Order checkout\">Pay securely</a>"
          },
          "note": "",
          "links": []
        },
        {
          "id": "modes",
          "title": "Төлемді ашудың үш жолы",
          "paragraphs": [
            "Инлайн режим үшін div сияқты контейнерді пайдаланыңыз және CHECKOUT_URL_FROM_API мәнін нақты URL-мен ауыстырыңыз. Кадр өз контейнерінің еніне бейімделеді; төлем хабарламалары оның биіктігін шектелген ауқымда өзгерте алады.",
            "Модаль оның түймесімен, Escape пернесімен немесе фонды басу арқылы жабылады. Фокус жабылғаннан кейін бастапқы триггерге оралады. Қозғалысты азайту параметрлері ауысуды қысқартады."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "data-kevmi-mode",
              "Мінез-құлық",
              "Не үшін қолайлы"
            ],
            "rows": [
              [
                "модаль",
                "Қабаттасатын диалог; әдепкі режим",
                "Тапсырыс деңгейіндегі төлем түймесі"
              ],
              [
                "инлайн",
                "Таңдалған контейнер ішіндегі iframe",
                "Сайтыңыздағы төлем қадамы"
              ],
              [
                "қайта бағыттау",
                "Ағымдағы қойындыда Kevmi-ге навигация",
                "Толық төлем беті"
              ]
            ]
          },
          "code": {
            "language": "HTML",
            "code": "<div data-kevmi-checkout=\"CHECKOUT_URL_FROM_API\"\n     data-kevmi-mode=\"inline\"\n     data-kevmi-label=\"Order checkout\"></div>"
          },
          "note": "",
          "links": []
        },
        {
          "id": "javascript",
          "title": "Интерфейсіңізден төлемді ашу",
          "paragraphs": [
            "kevmi:opened және kevmi:closed құжат оқиғалары интерфейсіңізге ашылу мен жабылуға реакция жасауға мүмкіндік береді. Триггердегі kevmi:error оқиғасы жарамсыз төлем URL-ін хабарлайды. Ешқайсысы төлемді дәлелдемейді. JavaScript API-ді виджет скрипті жүктелгеннен кейін шақырыңыз."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "JavaScript",
            "code": "window.Kevmi.open(checkoutUrl, {\n  mode: 'modal',\n  label: 'Order checkout',\n  closeLabel: 'Close checkout'\n});\n\n// Inline blocks added after page load are detected automatically.\n// You may also request mounting explicitly:\nwindow.Kevmi.mount(document);"
          },
          "note": "",
          "links": []
        },
        {
          "id": "security",
          "title": "Сәтті төлемді не дәлелдейді",
          "paragraphs": [
            "API кілттерін немесе қол қою құпияларын HTML-ге салмаңыз. Виджет тек бір шот-фактураға жалпыға қолжетімді сілтеме алады. Checkout карта деректерін және банк кодтарын шлюз кілтімен шифрлайды; Kevmi сервері оларды ашық мәтінде қабылдамайды.",
            "postMessage интерфейс күйін жаңартады, тапсырысты орындауды емес. Өңдеу алдында хабарлама доменін және бастапқы терезені тексеріңіз. Соңғы нәтиже үшін тексерілген payment.succeeded оқиғасын немесе сервердің GET link.payment қорытындысындағы succeeded күйін пайдаланыңыз."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "Төлемді ашу, виджетті жабу немесе сатушы сайтына қайта оралу ақша алынғанын дәлелдемейді.",
          "links": [
            {
              "label": "Вебхук қолтаңбалары мен жеткізілімі",
              "href": "/docs/webhooks"
            }
          ]
        },
        {
          "id": "deployment",
          "title": "Виджетті өндіріске қосу алдында",
          "paragraphs": [],
          "bullets": [
            "Kevmi доменін Content Security Policy script-src және frame-src нұсқауларында басқа саясаттарды кеңейтпей рұқсат етіңіз.",
            "Тар экрандарды, пернетақта қолжетімділігін және жарық пен қараңғы тақырыптарды тексеріңіз.",
            "Шот-фактураның белсенді, мерзімі өтпеген және дұрыс бағасы мен шығын үлестері бар екенін растаңыз.",
            "Резерв ретінде қарапайым төлем сілтемесін сақтаңыз.",
            "Сәтсіз жеткізілімдер мен қайталанатын вебхук оқиғаларын тапсырысты екі рет шығармай сынаңыз."
          ],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        }
      ],
      "group": "developers",
      "url": "/docs/widgets",
      "body": "Шот-фактурадан төлемге дейін\n\n/account#links мекенжайында шот-фактура жасаңыз және дереу checkoutUrl алыңыз. /account#widget ашып, сілтемені қойыңыз және модальды, инлайн блокты немесе қайта бағыттауды таңдаңыз. Кілттер мен вебхуктар көршілес аккаунт бөлімдерінде қолжетімді.\n\nҚұрастырушы алдын ала қарау әрқашан ақша алусыз демо тапсырысты пайдаланады. Жасалған виджет коды сіздің тірі сілтемеңізді сақтайды, оның шарттары сақталған серверлік шот-фактурадан келеді.\n\nИнтерфейстегі жаңа шот үшін USD карталар мен Alipay ұсынады; RUB SBP ұсынады; USDT криптоны ұсынады. API сондай-ақ үйлесімділік үшін USD + криптоны сақтай алады, бірақ оның тірі крипто төлемі crypto_requires_usdt кодымен бұғатталған. USD және USDT бөлек, автоматты айырбастау немесе болжалған 1:1 бағам жоқ. Крипто төлемі бөлек USDT шотын талап етеді.\n\nИнтеграция құрастырушысы\n\nТөлем сілтемелері API\n\nҚалыпты сілтеме резерві бар түйме\n\nБұл мысал ақша алусыз демо ашады. Екі URL мәнін шот-фактура жауабыңыздағы checkoutUrl-мен ауыстырыңыз. Скриптті төлем URL-мен бірдей Kevmi доменінен жүктеңіз.\n\nhref JavaScript қолжетімсіз болғанда төлемді ашады. data-kevmi-label iframe-ге қолжетімді атау береді. Скриптті әр бетке бір рет қосыңыз.\n\n<script src=\"https://kevmi.maxeevmax1.chatgpt.site/widgets/kevmi.js\" defer></script>\n<a href=\"https://kevmi.maxeevmax1.chatgpt.site/en/pay/demo\"\n   data-kevmi-checkout=\"https://kevmi.maxeevmax1.chatgpt.site/en/pay/demo\"\n   data-kevmi-mode=\"modal\"\n   data-kevmi-label=\"Order checkout\">Pay securely</a>\n\nТөлемді ашудың үш жолы\n\nИнлайн режим үшін div сияқты контейнерді пайдаланыңыз және CHECKOUT_URL_FROM_API мәнін нақты URL-мен ауыстырыңыз. Кадр өз контейнерінің еніне бейімделеді; төлем хабарламалары оның биіктігін шектелген ауқымда өзгерте алады.\n\nМодаль оның түймесімен, Escape пернесімен немесе фонды басу арқылы жабылады. Фокус жабылғаннан кейін бастапқы триггерге оралады. Қозғалысты азайту параметрлері ауысуды қысқартады.\n\ndata-kevmi-mode · Мінез-құлық · Не үшін қолайлы\nмодаль · Қабаттасатын диалог; әдепкі режим · Тапсырыс деңгейіндегі төлем түймесі\nинлайн · Таңдалған контейнер ішіндегі iframe · Сайтыңыздағы төлем қадамы\nқайта бағыттау · Ағымдағы қойындыда Kevmi-ге навигация · Толық төлем беті\n\n<div data-kevmi-checkout=\"CHECKOUT_URL_FROM_API\"\n     data-kevmi-mode=\"inline\"\n     data-kevmi-label=\"Order checkout\"></div>\n\nИнтерфейсіңізден төлемді ашу\n\nkevmi:opened және kevmi:closed құжат оқиғалары интерфейсіңізге ашылу мен жабылуға реакция жасауға мүмкіндік береді. Триггердегі kevmi:error оқиғасы жарамсыз төлем URL-ін хабарлайды. Ешқайсысы төлемді дәлелдемейді. JavaScript API-ді виджет скрипті жүктелгеннен кейін шақырыңыз.\n\nwindow.Kevmi.open(checkoutUrl, {\n  mode: 'modal',\n  label: 'Order checkout',\n  closeLabel: 'Close checkout'\n});\n\n// Inline blocks added after page load are detected automatically.\n// You may also request mounting explicitly:\nwindow.Kevmi.mount(document);\n\nСәтті төлемді не дәлелдейді\n\nAPI кілттерін немесе қол қою құпияларын HTML-ге салмаңыз. Виджет тек бір шот-фактураға жалпыға қолжетімді сілтеме алады. Checkout карта деректерін және банк кодтарын шлюз кілтімен шифрлайды; Kevmi сервері оларды ашық мәтінде қабылдамайды.\n\npostMessage интерфейс күйін жаңартады, тапсырысты орындауды емес. Өңдеу алдында хабарлама доменін және бастапқы терезені тексеріңіз. Соңғы нәтиже үшін тексерілген payment.succeeded оқиғасын немесе сервердің GET link.payment қорытындысындағы succeeded күйін пайдаланыңыз.\n\nТөлемді ашу, виджетті жабу немесе сатушы сайтына қайта оралу ақша алынғанын дәлелдемейді.\n\nВебхук қолтаңбалары мен жеткізілімі\n\nВиджетті өндіріске қосу алдында\n\nKevmi доменін Content Security Policy script-src және frame-src нұсқауларында басқа саясаттарды кеңейтпей рұқсат етіңіз.\n\nТар экрандарды, пернетақта қолжетімділігін және жарық пен қараңғы тақырыптарды тексеріңіз.\n\nШот-фактураның белсенді, мерзімі өтпеген және дұрыс бағасы мен шығын үлестері бар екенін растаңыз.\n\nРезерв ретінде қарапайым төлем сілтемесін сақтаңыз.\n\nСәтсіз жеткізілімдер мен қайталанатын вебхук оқиғаларын тапсырысты екі рет шығармай сынаңыз.",
      "readMinutes": 4
    },
    {
      "id": "applications",
      "title": "Дүкеніңізді қосуға өтінім беріңіз",
      "summary": "Telegram-мен кіргеннен кейін веб-сайтыңызды жіберіңіз және әр қарау кезеңін жеке URL мекенжайында өтіңіз. Автоматтандырылған тексерулер рецензентке көмектеседі; модератор әрқашан түпкілікті шешім қабылдайды.",
      "tags": [
        "өтінім",
        "онбординг",
        "модерация",
        "веб-сайт қарауы",
        "мәртебе",
        "Telegram",
        "AI"
      ],
      "sections": [
        {
          "id": "submit",
          "title": "Өтінім жіберу",
          "paragraphs": [
            "Сипаттамалар 40–3000 таңбаны қажет етеді; жоба атаулары 100-ге дейін рұқсат етіледі. Веб-сайт кірусіз қолжетімді болуы керек. Тіркелгі деректерін, жеке хосттарды, стандартты емес порттарды немесе сұраныс параметрлерін қамтитын URL мекенжайлары қабылданбайды.",
            "Тексерілген аккаунт өтінімге иелік етеді. Енгізілген Telegram байланысы байланыс үшін және иелікті өзгертпейді. Бақылау URL-ін алға жіберу басқа аккаунтқа қолжетімділік бермейді."
          ],
          "bullets": [],
          "steps": [
            "Telegram-мен кіріңіз немесе тіркеліңіз, содан кейін /account#applications ашыңыз.",
            "Жалпыға қолжетімді HTTPS веб-сайт мекенжайын, жоба атауын, санатын және өнімдеріңіз бен қызметтеріңіздің сипаттамасын енгізіңіз.",
            "Telegram байланысын қосыңыз. Тұтынушылардың не алатынын және тапсырыстардың қалай орындалатынын түсіндіріңіз.",
            "Сайтты жіберуге өкілеттігіңізді растаңыз және форманы жіберіңіз.",
            "Жібергеннен кейін бірден ашылатын /account#applications/{id} мекенжайын сақтаңыз."
          ],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Веб-сайтыңызды жіберу",
              "href": "/account#applications"
            }
          ]
        },
        {
          "id": "stages",
          "title": "Төрт қарау кезеңі",
          "paragraphs": [
            "Байланыстырушы сызық пен кезең белгілері сақталған сервер күйлерін көрсетеді. Бетті қайта ашу сол процесті жалғастырады. Қойындыны жабу өтініміңізді болдырмайды; фондық жұмыстар жалғасады және үзілген кезеңдерді қалпына келтіреді."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Кезең",
              "Не болады",
              "Көрсетілетін күй"
            ],
            "rows": [
              [
                "Өтінім алынды",
                "Өтінім деректері және жеке URL сақталды",
                "Бірінші кезең аяқталды"
              ],
              [
                "Мазмұнды қарау",
                "AI сипаттаманы қоғамдық веб-сайт мазмұнымен салыстырады",
                "Орындалуда, аяқталды немесе маманды күтуде"
              ],
              [
                "Техникалық тексерулер",
                "Қолжетімділік және сілтемелердің шектеулі жиынтығы қарастырылады",
                "Бөлек нәтиже және кезеңнің уақыт белгісі"
              ],
              [
                "Маманның қарауы",
                "Модератор өтінімді және нәтижелерді қарайды",
                "Шешімді күту, мақұлдау немесе бас тарту себебі"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "attention",
          "title": "Сары кезең маманды қажет етеді",
          "paragraphs": [
            "Сары белгі кезеңнің назар аударуды қажет ететінін білдіреді, мысалы ақпарат жеткіліксіз болғандықтан, сілтеме қолжетімсіз немесе автоматтандырылған нәтиже сенімді қабылдана алмайды. Бұл түпкілікті бас тарту емес. Мәртебе беті келесі қадамды түсіндіреді.",
            "Модератор ағымдағы кезеңді тазалай алады, сондықтан келесі тексеру жалғасады. Бас тартылған кезең кресті және модератор жіберу алдында өңдей алатын пайдаланушыға көрсетілетін себепті көрсетеді. Аралық кезеңді тазалау қорытынды қолмен қарауды ешқашан жоймайды."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "scope",
          "title": "Автоматтандырылған тексерулер не қамтиды",
          "paragraphs": [
            "Тексерулер қоғамдық басты бетті қарайды: HTTPS, HTTP жауабы, тақырып, мәтін және күдікті сілтеме үлгілері. Олар сондай-ақ сол веб-сайттағы кемінде үш сілтеме үшін заголовоктарды сұрайды. Қайта бағыттау саны, жауап өлшемі және сұраныс уақыты шектелген.",
            "Тексерулер жүйеге кірген аймақтарға қол жеткізбейді, жүктелген файлдарды орындамайды немесе қауіпсіздік аудитін немесе зиянды бағдарлама сканерін алмастырмайды. Кезеңді аяқтау әр беттің зиянды мазмұннан таза екеніне кепілдік бермейді.",
            "Веб-сайт мазмұны сенімсіз деректер болып табылады. Веб-сайттағы нұсқаулар әкімшіні тағайындай алмайды, Kevmi шарттарын өзгерте алмайды немесе өтінімді мақұлдай алмайды. Қолжетімсіз AI және қате қалыптасқан модель нәтижелері кезеңді үнсіз өткізудің орнына маманның қарауын қажет етеді."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "updates",
          "title": "Telegram хабарламалары",
          "paragraphs": [
            "Өтінімді қабылдау, кезеңді аяқтау, маманның назарын сұрау және қорытынды шешім қабылдау жеке бақылау сілтемесі бар хабарламаларды жасайды. Бұлар есептік жазба орнатуларындағы Қолдау санатын пайдаланады. Бұл санатты өшіру хабарламаларды тоқтатады.",
            "Өтінім оқиғасы және хабарлама жіберу кезегіндегі жазба бірге жасалады. Telegram жеткізу қайта әрекеттену кезегін пайдаланады және қосылған ботты қажет етеді. Бақылау беті ағымдағы мәртебенің көзі болып қалады, егер Telegram қолжетімсіз болса немесе бот бұғатталған болса.",
            "Модерация бөлек ескертулер алады. Тек сервер модераторы рұқсат тізіміндегі пайдаланушылар кезеңді Telegram арқылы тазалай алады; ескі батырма қайталанатын шешімді қолдана алмайды. Бас тарту себептері модерация жұмыс кеңістігінде өңделеді."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Хабарландыру параметрлері",
              "href": "/docs/notifications"
            }
          ]
        },
        {
          "id": "api",
          "title": "Өтінім және шешім келісімшарты",
          "paragraphs": [
            "Меншік сеанстан келеді. Өтінім берушілер userId, мәртебе, рөлдер немесе қарау нәтижелерін жібере алмайды. Бірдей Idempotency-Key және денемен қайталап жасау бар өтінімді қайтарады; сол кілтпен денені өзгерту қайшылық тудырады.",
            "Модератордың шешімі тек күтілетін өтінім нұсқасына қолданылады. Қатарлас шешімдер бір рет сақталады; басқа сұраныс 409 қатесін алады. Бас тарту себебі — 10–1500 таңбадан тұратын қарапайым мәтін. Ішкі қарау дәлелдері тек модераторларға шектелген."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Маршрут",
              "Қолжетімділік және мінез-құлық"
            ],
            "rows": [
              [
                "POST /api/applications",
                "Сеанс + CSRF + Idempotency-Key; 202 жеке url мекенжайымен"
              ],
              [
                "GET /api/applications",
                "Ағымдағы есептік жазбаның өтінімдері"
              ],
              [
                "GET /api/applications/{id}",
                "Меншікті өтінім, кезеңдер және қоғамдық тарих"
              ],
              [
                "POST /api/applications/{id}/resume",
                "Сеанс + CSRF; тек өңдеудегі өтінімдерді жалғастырады"
              ],
              [
                "GET /api/moderation/applications",
                "Тек тексерілген модераторлар"
              ],
              [
                "POST /api/moderation/applications/{id}/decision",
                "approve_step немесе reject, expectedVersion және бас тарту себебі"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "outcome",
          "title": "Шешімнен кейін",
          "paragraphs": [
            "Жаңа төлем және карта ниеті сатушының соңғы веб-сайт шолу өтінімінің мақұлдануын талап етеді. Мақұлдау ғана төлем шлюзін қоспайды. Егер шолу жөнелтілгеннен кейін өзгерсе, бар операция мәртебе оқуы, есеп айырысу және сұралған банк коды үшін қолжетімді болып қалады.",
            "Бас тартылған жағдайда, сатушы себепті көреді және қайта өтінім беру алдында материалдарды түзете алады. Сары кезең маманның әлі де шешім қабылдауы керек екенін білдіреді; бұл автоматты мақұлдау емес."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Қолдау",
              "href": "/?support=open"
            },
            {
              "label": "Төлем шлюзінің қолжетімділігі",
              "href": "/docs/gateway"
            }
          ]
        },
        {
          "id": "stores-usd",
          "title": "Бірнеше дүкен және бір АҚШ доллары базалық бағасы",
          "paragraphs": [
            "Жиынтық аналитика мен операциялар үшін Барлық дүкендерді таңдаңыз немесе жеке жазбалары үшін дүкенді таңдаңыз. Әр дүкеннің жеке storeId, атауы, ҚҚС әдепкі мәні, шоттары, API кілттері, вебхук нүктелері, оқиғалар тарихы және веб-сайт қосымшасы бар. Хабарландырулар мен қолдау билеттері тіркелгіге тиесілі. Тіркелгі 100 дүкенге дейін құра алады. Бар жазбалар оның бірінші дүкенінде қалады.",
            "Жаңа жұмыс кеңістігі шоттары pricingMode=\"universal\" және АҚШ доллары базалық бағасын пайдаланады. Any карта, alipay, sbp және криптоны қамтиды; сатушы ішкі жиынтықты таңдай алады. Карталар мен Alipay АҚШ долларымен есептейді. SBP Ресей Банкінің АҚШ доллары/рубль анықтамалық бағамын пайдаланып рубльмен есептейді. Крипто айқын шот ережесі бойынша USDT-мен есептейді: 1 АҚШ доллары = 1 USDT. Бұл шот айырбастау ережесі, нарықтық USDT котировкасы емес. Шлюз таңдалған монетаның бағамын, нақты аударым сомасын және нұсқауларды аударымға дейін береді.",
            "Анықтамалық бағам және екі сома да құру кезінде мұздатылады. Рубльге айырбастауды қамтитын шоттар 24 сағат ішінде мерзімі аяқталады. Егер анықтамалық бағамды алу мүмкін болмаса, құру FX_UNAVAILABLE қатесімен сәтсіз аяқталады; ойдан шығарылған немесе ескірген қосалқы бағам пайдаланылмайды. Меншік иесінің жауабындағы amountMinor және quotes АҚШ доллары бухгалтерлік валютасын пайдаланады. quotes[method].settlement туынды валютадағы төлем котировкасын қамтиды. Қоғамдық төлем беті таңдалған төлем валютасын currency өрісінде, бастапқы бағаны baseAmountMinor/baseCurrency өрістерінде және анықтамалық бағамды fx өрісінде көрсетеді. Төлем жіберілгеннен кейін оның әдісін өзгерту мүмкін емес; шотта бір шлюз операциясы болады.",
            "Мақсатты дүкен ішінде API кілтін жасаңыз және серверіңізден Authorization: Bearer <key> жіберіңіз. Оның дүкенге байланыстыруы өзгермейді; X-Kevmi-Store оған басқа дүкенге қолжетімділік бере алмайды. Браузер сеанстары X-Kevmi-Store: <storeId> таңдайды; оны алып тастағанда бірінші дүкен таңдалады. all мәні тек GET /api/account/dashboard және GET /api/payment-links сұраулары арқылы қабылданады. Өзгертулер таңдалған дүкенді, Origin және X-CSRF-Token талап етеді. Тіркелгі идентификаторлары мен дүкен идентификаторлары әртүрлі идентификаторлар болып табылады.",
            "Үйлесімділік үшін pricingMode=\"universal\" жоқ API сұраулары қолма-қол баға белгілеуді және бастапқы валюта шектеулерін сақтайды. Бар шоттар ешқашан қайта есептелмейді. Аналитикадағы расталған түбіртектер тексерілген төлемдерден сақталған шот шығындарын шегергендегі соманы көрсетеді; олар шығарылатын баланс емес. Мұрагерлік шот валюталары бөлек қалады, ал төлемдер қолдау қызметімен келісіледі. Тапсырысты тек payment.fulfillmentReady=true және payment.status=\"succeeded\" сервер API, оқиғалар тарихы немесе қол қойылған вебхук арқылы тексергеннен кейін орындаңыз."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        }
      ],
      "group": "start",
      "url": "/docs/applications",
      "body": "Өтінім жіберу\n\nСипаттамалар 40–3000 таңбаны қажет етеді; жоба атаулары 100-ге дейін рұқсат етіледі. Веб-сайт кірусіз қолжетімді болуы керек. Тіркелгі деректерін, жеке хосттарды, стандартты емес порттарды немесе сұраныс параметрлерін қамтитын URL мекенжайлары қабылданбайды.\n\nТексерілген аккаунт өтінімге иелік етеді. Енгізілген Telegram байланысы байланыс үшін және иелікті өзгертпейді. Бақылау URL-ін алға жіберу басқа аккаунтқа қолжетімділік бермейді.\n\nTelegram-мен кіріңіз немесе тіркеліңіз, содан кейін /account#applications ашыңыз.\n\nЖалпыға қолжетімді HTTPS веб-сайт мекенжайын, жоба атауын, санатын және өнімдеріңіз бен қызметтеріңіздің сипаттамасын енгізіңіз.\n\nTelegram байланысын қосыңыз. Тұтынушылардың не алатынын және тапсырыстардың қалай орындалатынын түсіндіріңіз.\n\nСайтты жіберуге өкілеттігіңізді растаңыз және форманы жіберіңіз.\n\nЖібергеннен кейін бірден ашылатын /account#applications/{id} мекенжайын сақтаңыз.\n\nВеб-сайтыңызды жіберу\n\nТөрт қарау кезеңі\n\nБайланыстырушы сызық пен кезең белгілері сақталған сервер күйлерін көрсетеді. Бетті қайта ашу сол процесті жалғастырады. Қойындыны жабу өтініміңізді болдырмайды; фондық жұмыстар жалғасады және үзілген кезеңдерді қалпына келтіреді.\n\nКезең · Не болады · Көрсетілетін күй\nӨтінім алынды · Өтінім деректері және жеке URL сақталды · Бірінші кезең аяқталды\nМазмұнды қарау · AI сипаттаманы қоғамдық веб-сайт мазмұнымен салыстырады · Орындалуда, аяқталды немесе маманды күтуде\nТехникалық тексерулер · Қолжетімділік және сілтемелердің шектеулі жиынтығы қарастырылады · Бөлек нәтиже және кезеңнің уақыт белгісі\nМаманның қарауы · Модератор өтінімді және нәтижелерді қарайды · Шешімді күту, мақұлдау немесе бас тарту себебі\n\nСары кезең маманды қажет етеді\n\nСары белгі кезеңнің назар аударуды қажет ететінін білдіреді, мысалы ақпарат жеткіліксіз болғандықтан, сілтеме қолжетімсіз немесе автоматтандырылған нәтиже сенімді қабылдана алмайды. Бұл түпкілікті бас тарту емес. Мәртебе беті келесі қадамды түсіндіреді.\n\nМодератор ағымдағы кезеңді тазалай алады, сондықтан келесі тексеру жалғасады. Бас тартылған кезең кресті және модератор жіберу алдында өңдей алатын пайдаланушыға көрсетілетін себепті көрсетеді. Аралық кезеңді тазалау қорытынды қолмен қарауды ешқашан жоймайды.\n\nАвтоматтандырылған тексерулер не қамтиды\n\nТексерулер қоғамдық басты бетті қарайды: HTTPS, HTTP жауабы, тақырып, мәтін және күдікті сілтеме үлгілері. Олар сондай-ақ сол веб-сайттағы кемінде үш сілтеме үшін заголовоктарды сұрайды. Қайта бағыттау саны, жауап өлшемі және сұраныс уақыты шектелген.\n\nТексерулер жүйеге кірген аймақтарға қол жеткізбейді, жүктелген файлдарды орындамайды немесе қауіпсіздік аудитін немесе зиянды бағдарлама сканерін алмастырмайды. Кезеңді аяқтау әр беттің зиянды мазмұннан таза екеніне кепілдік бермейді.\n\nВеб-сайт мазмұны сенімсіз деректер болып табылады. Веб-сайттағы нұсқаулар әкімшіні тағайындай алмайды, Kevmi шарттарын өзгерте алмайды немесе өтінімді мақұлдай алмайды. Қолжетімсіз AI және қате қалыптасқан модель нәтижелері кезеңді үнсіз өткізудің орнына маманның қарауын қажет етеді.\n\nTelegram хабарламалары\n\nӨтінімді қабылдау, кезеңді аяқтау, маманның назарын сұрау және қорытынды шешім қабылдау жеке бақылау сілтемесі бар хабарламаларды жасайды. Бұлар есептік жазба орнатуларындағы Қолдау санатын пайдаланады. Бұл санатты өшіру хабарламаларды тоқтатады.\n\nӨтінім оқиғасы және хабарлама жіберу кезегіндегі жазба бірге жасалады. Telegram жеткізу қайта әрекеттену кезегін пайдаланады және қосылған ботты қажет етеді. Бақылау беті ағымдағы мәртебенің көзі болып қалады, егер Telegram қолжетімсіз болса немесе бот бұғатталған болса.\n\nМодерация бөлек ескертулер алады. Тек сервер модераторы рұқсат тізіміндегі пайдаланушылар кезеңді Telegram арқылы тазалай алады; ескі батырма қайталанатын шешімді қолдана алмайды. Бас тарту себептері модерация жұмыс кеңістігінде өңделеді.\n\nХабарландыру параметрлері\n\nӨтінім және шешім келісімшарты\n\nМеншік сеанстан келеді. Өтінім берушілер userId, мәртебе, рөлдер немесе қарау нәтижелерін жібере алмайды. Бірдей Idempotency-Key және денемен қайталап жасау бар өтінімді қайтарады; сол кілтпен денені өзгерту қайшылық тудырады.\n\nМодератордың шешімі тек күтілетін өтінім нұсқасына қолданылады. Қатарлас шешімдер бір рет сақталады; басқа сұраныс 409 қатесін алады. Бас тарту себебі — 10–1500 таңбадан тұратын қарапайым мәтін. Ішкі қарау дәлелдері тек модераторларға шектелген.\n\nМаршрут · Қолжетімділік және мінез-құлық\nPOST /api/applications · Сеанс + CSRF + Idempotency-Key; 202 жеке url мекенжайымен\nGET /api/applications · Ағымдағы есептік жазбаның өтінімдері\nGET /api/applications/{id} · Меншікті өтінім, кезеңдер және қоғамдық тарих\nPOST /api/applications/{id}/resume · Сеанс + CSRF; тек өңдеудегі өтінімдерді жалғастырады\nGET /api/moderation/applications · Тек тексерілген модераторлар\nPOST /api/moderation/applications/{id}/decision · approve_step немесе reject, expectedVersion және бас тарту себебі\n\nШешімнен кейін\n\nЖаңа төлем және карта ниеті сатушының соңғы веб-сайт шолу өтінімінің мақұлдануын талап етеді. Мақұлдау ғана төлем шлюзін қоспайды. Егер шолу жөнелтілгеннен кейін өзгерсе, бар операция мәртебе оқуы, есеп айырысу және сұралған банк коды үшін қолжетімді болып қалады.\n\nБас тартылған жағдайда, сатушы себепті көреді және қайта өтінім беру алдында материалдарды түзете алады. Сары кезең маманның әлі де шешім қабылдауы керек екенін білдіреді; бұл автоматты мақұлдау емес.\n\nҚолдау\n\nТөлем шлюзінің қолжетімділігі\n\nБірнеше дүкен және бір АҚШ доллары базалық бағасы\n\nЖиынтық аналитика мен операциялар үшін Барлық дүкендерді таңдаңыз немесе жеке жазбалары үшін дүкенді таңдаңыз. Әр дүкеннің жеке storeId, атауы, ҚҚС әдепкі мәні, шоттары, API кілттері, вебхук нүктелері, оқиғалар тарихы және веб-сайт қосымшасы бар. Хабарландырулар мен қолдау билеттері тіркелгіге тиесілі. Тіркелгі 100 дүкенге дейін құра алады. Бар жазбалар оның бірінші дүкенінде қалады.\n\nЖаңа жұмыс кеңістігі шоттары pricingMode=\"universal\" және АҚШ доллары базалық бағасын пайдаланады. Any карта, alipay, sbp және криптоны қамтиды; сатушы ішкі жиынтықты таңдай алады. Карталар мен Alipay АҚШ долларымен есептейді. SBP Ресей Банкінің АҚШ доллары/рубль анықтамалық бағамын пайдаланып рубльмен есептейді. Крипто айқын шот ережесі бойынша USDT-мен есептейді: 1 АҚШ доллары = 1 USDT. Бұл шот айырбастау ережесі, нарықтық USDT котировкасы емес. Шлюз таңдалған монетаның бағамын, нақты аударым сомасын және нұсқауларды аударымға дейін береді.\n\nАнықтамалық бағам және екі сома да құру кезінде мұздатылады. Рубльге айырбастауды қамтитын шоттар 24 сағат ішінде мерзімі аяқталады. Егер анықтамалық бағамды алу мүмкін болмаса, құру FX_UNAVAILABLE қатесімен сәтсіз аяқталады; ойдан шығарылған немесе ескірген қосалқы бағам пайдаланылмайды. Меншік иесінің жауабындағы amountMinor және quotes АҚШ доллары бухгалтерлік валютасын пайдаланады. quotes[method].settlement туынды валютадағы төлем котировкасын қамтиды. Қоғамдық төлем беті таңдалған төлем валютасын currency өрісінде, бастапқы бағаны baseAmountMinor/baseCurrency өрістерінде және анықтамалық бағамды fx өрісінде көрсетеді. Төлем жіберілгеннен кейін оның әдісін өзгерту мүмкін емес; шотта бір шлюз операциясы болады.\n\nМақсатты дүкен ішінде API кілтін жасаңыз және серверіңізден Authorization: Bearer <key> жіберіңіз. Оның дүкенге байланыстыруы өзгермейді; X-Kevmi-Store оған басқа дүкенге қолжетімділік бере алмайды. Браузер сеанстары X-Kevmi-Store: <storeId> таңдайды; оны алып тастағанда бірінші дүкен таңдалады. all мәні тек GET /api/account/dashboard және GET /api/payment-links сұраулары арқылы қабылданады. Өзгертулер таңдалған дүкенді, Origin және X-CSRF-Token талап етеді. Тіркелгі идентификаторлары мен дүкен идентификаторлары әртүрлі идентификаторлар болып табылады.\n\nҮйлесімділік үшін pricingMode=\"universal\" жоқ API сұраулары қолма-қол баға белгілеуді және бастапқы валюта шектеулерін сақтайды. Бар шоттар ешқашан қайта есептелмейді. Аналитикадағы расталған түбіртектер тексерілген төлемдерден сақталған шот шығындарын шегергендегі соманы көрсетеді; олар шығарылатын баланс емес. Мұрагерлік шот валюталары бөлек қалады, ал төлемдер қолдау қызметімен келісіледі. Тапсырысты тек payment.fulfillmentReady=true және payment.status=\"succeeded\" сервер API, оқиғалар тарихы немесе қол қойылған вебхук арқылы тексергеннен кейін орындаңыз.",
      "readMinutes": 6
    }
  ],
  "facts": {
    "paymentType": "one_time",
    "subscriptionsSupported": false,
    "incomingFees": {
      "card": {
        "percent": 10,
        "fixedUsdMinor": 50,
        "vatApplies": true
      },
      "alipay": {
        "percent": 10,
        "fixedUsdMinor": 50,
        "vatApplies": true
      },
      "sbp": {
        "percent": 8,
        "fixedUsdMinor": 0,
        "vatApplies": false
      },
      "crypto": {
        "percent": 4,
        "fixedUsdMinor": 0,
        "vatApplies": false
      }
    },
    "vat": {
      "ratePercent": 16,
      "base": "order_base_amount",
      "defaultPayer": "customer",
      "payerOptions": [
        "customer",
        "merchant",
        "shared"
      ],
      "customerPercentRange": [
        0,
        100
      ],
      "customerPercentStep": 1,
      "feeBase": "order_base_amount",
      "source": "owner_confirmed",
      "example": {
        "baseUsdMinor": 500,
        "feeUsdMinor": 100,
        "vatUsdMinor": 80,
        "customerPayer": {
          "chargedUsdMinor": 580,
          "merchantNetUsdMinor": 400
        },
        "merchantPayer": {
          "chargedUsdMinor": 500,
          "merchantNetUsdMinor": 320
        }
      }
    },
    "payout": {
      "asset": "USDT",
      "network": "TRC20",
      "sourceFees": {
        "card": "4%",
        "alipay": "4%",
        "sbp": "5% + RUB 400",
        "crypto": "0% + $3"
      },
      "creationImplemented": false,
      "gatewayBalanceIsMerchantLedger": false,
      "fixedCryptoFeeCurrency": "USD"
    },
    "costSharing": {
      "pricingVersion": 2,
      "independent": [
        "vatCustomerPercent",
        "feeCustomerPercent"
      ],
      "range": [
        0,
        100
      ],
      "step": 1,
      "defaultVatCustomerPercent": 100,
      "defaultFeeCustomerPercent": 0,
      "customerSharesAddedToCharge": true,
      "merchantSharesDeductedFromBase": true,
      "rounding": "half_up_customer_share_then_exact_merchant_remainder",
      "invoiceTermsImmutable": true,
      "liveGatewayAllocation": {
        "card": {
          "vatCustomerPercent": 100,
          "feeCustomerPercent": 0
        },
        "alipay": {
          "vatCustomerPercent": 100,
          "feeCustomerPercent": 0
        },
        "sbp": {
          "feeCustomerPercent": [
            0,
            100
          ],
          "vatApplies": false
        },
        "crypto": {
          "feeCustomerPercent": [
            0,
            100
          ],
          "vatApplies": false
        },
        "otherSavedCardSplitsExecutable": false
      },
      "example": {
        "baseUsdMinor": 500,
        "vatCustomerPercent": 50,
        "feeCustomerPercent": 23,
        "customerVatMinor": 40,
        "customerFeeMinor": 23,
        "customerTotalMinor": 563,
        "merchantNetMinor": 383
      }
    },
    "paymentLinks": {
      "methodSelection": "customer_from_invoice_methods",
      "interfaceAnyMode": "all_methods_for_invoice_currency",
      "allowedMethodsByCurrency": {
        "USD": [
          "card",
          "alipay"
        ],
        "RUB": [
          "sbp"
        ],
        "USDT": [
          "crypto"
        ]
      },
      "apiCreateField": "methods",
      "legacyUsdCryptoApiSaveAccepted": true,
      "legacyUsdCryptoExecutable": false,
      "cryptoRequiresExplicitUsdt": true,
      "ownerGetPaymentField": "payment",
      "ownerGetPaymentNullable": true,
      "createAndPatchPaymentSummaryOptional": true,
      "apiAnyValueSupported": false,
      "quotesPerMethod": true,
      "automaticCurrencyConversion": false
    },
    "merchantAPI": {
      "basePath": "/api/v1",
      "createInvoicePath": "/api/v1/payments",
      "createsCharge": false,
      "returnsCheckoutUrl": true,
      "scopes": [
        "invoices:read",
        "invoices:write",
        "events:read"
      ],
      "defaultKeyLifetimeDays": 90,
      "maximumActiveKeys": 10,
      "keysStoredAsHashes": true
    },
    "widgets": {
      "script": "/widgets/kevmi.js",
      "modes": [
        "modal",
        "inline",
        "redirect"
      ],
      "publicCheckoutUrlOnly": true,
      "browserMessagesConfirmPayment": false
    },
    "webhooks": {
      "events": [
        "invoice.created",
        "invoice.updated",
        "payment.succeeded",
        "payment.failed",
        "payment.refunded",
        "payment.partially_refunded",
        "payment.disputed",
        "payment.review_required"
      ],
      "signatureHeader": "Kevmi-Signature",
      "signatureAlgorithm": "HMAC-SHA256",
      "signatureInput": "timestamp.rawBody",
      "timestampToleranceSeconds": 300,
      "delivery": "at_least_once",
      "maximumAttempts": 6,
      "retryDelaySeconds": [
        60,
        300,
        1800,
        7200,
        43200
      ],
      "endpointVerificationRequired": true,
      "paymentSource": "validated_gateway_receipt",
      "financialStatusFromBrowser": false
    },
    "applications": {
      "path": "/account#applications",
      "trackingPath": "/account#applications/{id}",
      "authentication": "telegram_session",
      "visibility": "owner_and_moderators",
      "stages": [
        "received",
        "ai_review",
        "technical_review",
        "manual_review"
      ],
      "manualFinalDecisionRequired": true,
      "businessTypes": [
        "digital_goods",
        "software",
        "services",
        "physical_goods",
        "education",
        "other"
      ],
      "submissionLimitPerDay": 5,
      "resumeLimitPerMinute": 30,
      "moderationLimitPerMinute": 30,
      "aiReviewsPerHour": 30,
      "unknownAutomatedResults": "needs_review",
      "checks": "bounded_public_content_and_same_origin_links",
      "safetyGuarantee": false,
      "notificationCategory": "support",
      "approvalActivatesGateway": false,
      "latestApprovalRequiredForNewPayment": true,
      "invoiceCreationBeforeApproval": true,
      "existingOperationReadableAfterApprovalChange": true
    },
    "countries": {
      "card": {
        "countryCount": 223,
        "ownerReportedCountryCount": null,
        "coverageLabel": "190+",
        "restrictions": [
          {
            "code": "AF",
            "name": "Afghanistan",
            "nameEn": "Afghanistan"
          },
          {
            "code": "AQ",
            "name": "Antarctica",
            "nameEn": "Antarctica"
          },
          {
            "code": "BY",
            "name": "Belarus",
            "nameEn": "Belarus"
          },
          {
            "code": "MM",
            "name": "Burma (Myanmar)",
            "nameEn": "Burma (Myanmar)"
          },
          {
            "code": "BI",
            "name": "Burundi",
            "nameEn": "Burundi"
          },
          {
            "code": "CF",
            "name": "Central African Republic",
            "nameEn": "Central African Republic"
          },
          {
            "code": "TD",
            "name": "Chad",
            "nameEn": "Chad"
          },
          {
            "code": "CU",
            "name": "Cuba",
            "nameEn": "Cuba"
          },
          {
            "code": "CD",
            "name": "Democratic Republic of Congo",
            "nameEn": "Democratic Republic of Congo"
          },
          {
            "code": "CG",
            "name": "Republic of Congo",
            "nameEn": "Republic of Congo"
          },
          {
            "code": "ER",
            "name": "Eritrea",
            "nameEn": "Eritrea"
          },
          {
            "code": "HT",
            "name": "Haiti",
            "nameEn": "Haiti"
          },
          {
            "code": "IR",
            "name": "Iran",
            "nameEn": "Iran"
          },
          {
            "code": "IQ",
            "name": "Iraq",
            "nameEn": "Iraq"
          },
          {
            "code": "LY",
            "name": "Libya",
            "nameEn": "Libya"
          },
          {
            "code": "ML",
            "name": "Mali",
            "nameEn": "Mali"
          },
          {
            "code": "NI",
            "name": "Nicaragua",
            "nameEn": "Nicaragua"
          },
          {
            "code": "KP",
            "name": "North Korea",
            "nameEn": "North Korea"
          },
          {
            "code": "RU",
            "name": "Russia",
            "nameEn": "Russia"
          },
          {
            "code": "SO",
            "name": "Somalia",
            "nameEn": "Somalia"
          },
          {
            "code": "SS",
            "name": "South Sudan",
            "nameEn": "South Sudan"
          },
          {
            "code": "SD",
            "name": "Sudan",
            "nameEn": "Sudan"
          },
          {
            "code": "SY",
            "name": "Syria",
            "nameEn": "Syria"
          },
          {
            "code": "VE",
            "name": "Venezuela",
            "nameEn": "Venezuela"
          },
          {
            "code": "YE",
            "name": "Yemen",
            "nameEn": "Yemen"
          },
          {
            "code": "ZW",
            "name": "Zimbabwe",
            "nameEn": "Zimbabwe"
          },
          {
            "code": "UA-43",
            "countryCode": "UA",
            "name": "Crimea (Region of Ukraine)",
            "nameEn": "Crimea (Region of Ukraine)"
          },
          {
            "code": "UA-14",
            "countryCode": "UA",
            "name": "Donetsk (Region of Ukraine)",
            "nameEn": "Donetsk (Region of Ukraine)"
          },
          {
            "code": "UA-65",
            "countryCode": "UA",
            "name": "Kherson (Region of Ukraine)",
            "nameEn": "Kherson (Region of Ukraine)"
          },
          {
            "code": "UA-09",
            "countryCode": "UA",
            "name": "Luhansk (Region of Ukraine)",
            "nameEn": "Luhansk (Region of Ukraine)"
          },
          {
            "code": "UA-23",
            "countryCode": "UA",
            "name": "Zaporizhzhia (Region of Ukraine)",
            "nameEn": "Zaporizhzhia (Region of Ukraine)"
          },
          {
            "code": "AN",
            "name": "Netherlands Antilles",
            "nameEn": "Netherlands Antilles"
          }
        ],
        "verifiedCountryCount": null,
        "exactList": [
          "AX",
          "AL",
          "DZ",
          "AS",
          "AD",
          "AO",
          "AI",
          "AG",
          "AR",
          "AM",
          "AW",
          "AU",
          "AT",
          "AZ",
          "BS",
          "BH",
          "BD",
          "BB",
          "BE",
          "BZ",
          "BJ",
          "BM",
          "BT",
          "BO",
          "BQ",
          "BA",
          "BW",
          "BV",
          "BR",
          "IO",
          "BN",
          "BG",
          "BF",
          "CV",
          "KH",
          "CM",
          "CA",
          "KY",
          "CL",
          "CN",
          "CX",
          "CC",
          "CO",
          "KM",
          "CK",
          "CR",
          "HR",
          "CW",
          "CY",
          "CZ",
          "CI",
          "DK",
          "DJ",
          "DM",
          "DO",
          "EC",
          "EG",
          "SV",
          "GQ",
          "EE",
          "SZ",
          "ET",
          "FK",
          "FO",
          "FM",
          "FJ",
          "FI",
          "FR",
          "GF",
          "PF",
          "TF",
          "GA",
          "GM",
          "GE",
          "DE",
          "GH",
          "GI",
          "GR",
          "GL",
          "GD",
          "GP",
          "GU",
          "GT",
          "GG",
          "GN",
          "GW",
          "GY",
          "HM",
          "VA",
          "HN",
          "HK",
          "HU",
          "IS",
          "IN",
          "ID",
          "IE",
          "IM",
          "IL",
          "IT",
          "JM",
          "JP",
          "JE",
          "JO",
          "KZ",
          "KE",
          "KI",
          "KW",
          "KG",
          "LA",
          "LV",
          "LB",
          "LS",
          "LR",
          "LI",
          "LT",
          "LU",
          "MO",
          "MG",
          "MW",
          "MY",
          "MV",
          "MT",
          "MH",
          "MQ",
          "MR",
          "MU",
          "YT",
          "MX",
          "MD",
          "MC",
          "MN",
          "ME",
          "MS",
          "MA",
          "MZ",
          "NA",
          "NR",
          "NP",
          "NL",
          "NC",
          "NZ",
          "NE",
          "NG",
          "NU",
          "NF",
          "MK",
          "MP",
          "NO",
          "OM",
          "PK",
          "PW",
          "PA",
          "PG",
          "PY",
          "PE",
          "PH",
          "PN",
          "PL",
          "PT",
          "PR",
          "QA",
          "RO",
          "RW",
          "RE",
          "BL",
          "SH",
          "KN",
          "LC",
          "MF",
          "PM",
          "VC",
          "WS",
          "SM",
          "ST",
          "SA",
          "SN",
          "RS",
          "SC",
          "SL",
          "SG",
          "SX",
          "SK",
          "SI",
          "SB",
          "ZA",
          "GS",
          "KR",
          "ES",
          "LK",
          "PS",
          "SR",
          "SJ",
          "SE",
          "CH",
          "TW",
          "TJ",
          "TZ",
          "TH",
          "TL",
          "TG",
          "TK",
          "TO",
          "TT",
          "TN",
          "TM",
          "TC",
          "TV",
          "TR",
          "UG",
          "UA",
          "AE",
          "GB",
          "UM",
          "US",
          "UY",
          "UZ",
          "VU",
          "VN",
          "VG",
          "VI",
          "WF",
          "EH",
          "ZM"
        ],
        "records": [
          {
            "code": "AX",
            "name": "Аланд аралдары",
            "nameEn": "Åland Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "AL",
            "name": "Албания",
            "nameEn": "Albania",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "DZ",
            "name": "Алжир",
            "nameEn": "Algeria",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "AS",
            "name": "Америкалық Самоа",
            "nameEn": "American Samoa",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "AD",
            "name": "Андорра",
            "nameEn": "Andorra",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "AO",
            "name": "Ангола",
            "nameEn": "Angola",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "AI",
            "name": "Ангилья",
            "nameEn": "Anguilla",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "AG",
            "name": "Антигуа және Барбуда",
            "nameEn": "Antigua & Barbuda",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "AR",
            "name": "Аргентина",
            "nameEn": "Argentina",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "AM",
            "name": "Армения",
            "nameEn": "Armenia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "AW",
            "name": "Аруба",
            "nameEn": "Aruba",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "AU",
            "name": "Аустралия",
            "nameEn": "Australia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "AT",
            "name": "Аустрия",
            "nameEn": "Austria",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "AZ",
            "name": "Әзірбайжан",
            "nameEn": "Azerbaijan",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BS",
            "name": "Багам аралдары",
            "nameEn": "Bahamas",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BH",
            "name": "Бахрейн",
            "nameEn": "Bahrain",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BD",
            "name": "Бангладеш",
            "nameEn": "Bangladesh",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BB",
            "name": "Барбадос",
            "nameEn": "Barbados",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BE",
            "name": "Бельгия",
            "nameEn": "Belgium",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BZ",
            "name": "Белиз",
            "nameEn": "Belize",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BJ",
            "name": "Бенин",
            "nameEn": "Benin",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BM",
            "name": "Бермуд аралдары",
            "nameEn": "Bermuda",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BT",
            "name": "Бутан",
            "nameEn": "Bhutan",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BO",
            "name": "Боливия",
            "nameEn": "Bolivia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BQ",
            "name": "Бонэйр, Синт-Эстатиус және Саба",
            "nameEn": "Caribbean Netherlands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BA",
            "name": "Босния және Герцеговина",
            "nameEn": "Bosnia & Herzegovina",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BW",
            "name": "Ботсвана",
            "nameEn": "Botswana",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BV",
            "name": "Буве аралы",
            "nameEn": "Bouvet Island",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BR",
            "name": "Бразилия",
            "nameEn": "Brazil",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "IO",
            "name": "Үнді мұхитындағы Британ аймағы",
            "nameEn": "British Indian Ocean Territory",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BN",
            "name": "Бруней",
            "nameEn": "Brunei",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BG",
            "name": "Болгария",
            "nameEn": "Bulgaria",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BF",
            "name": "Буркина-Фасо",
            "nameEn": "Burkina Faso",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CV",
            "name": "Кабо-Верде",
            "nameEn": "Cape Verde",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "KH",
            "name": "Камбоджа",
            "nameEn": "Cambodia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CM",
            "name": "Камерун",
            "nameEn": "Cameroon",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CA",
            "name": "Канада",
            "nameEn": "Canada",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "KY",
            "name": "Кайман аралдары",
            "nameEn": "Cayman Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CL",
            "name": "Чили",
            "nameEn": "Chile",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CN",
            "name": "Қытай",
            "nameEn": "China",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CX",
            "name": "Рождество аралы",
            "nameEn": "Christmas Island",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CC",
            "name": "Кокос (Килинг) аралдары",
            "nameEn": "Cocos (Keeling) Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CO",
            "name": "Колумбия",
            "nameEn": "Colombia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "KM",
            "name": "Комор аралдары",
            "nameEn": "Comoros",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CK",
            "name": "Кук аралдары",
            "nameEn": "Cook Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CR",
            "name": "Коста-Рика",
            "nameEn": "Costa Rica",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "HR",
            "name": "Хорватия",
            "nameEn": "Croatia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CW",
            "name": "Кюрасао",
            "nameEn": "Curaçao",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CY",
            "name": "Кипр",
            "nameEn": "Cyprus",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CZ",
            "name": "Чехия",
            "nameEn": "Czechia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CI",
            "name": "Кот-д’Ивуар",
            "nameEn": "Côte d’Ivoire",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "DK",
            "name": "Дания",
            "nameEn": "Denmark",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "DJ",
            "name": "Джибути",
            "nameEn": "Djibouti",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "DM",
            "name": "Доминика",
            "nameEn": "Dominica",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "DO",
            "name": "Доминикан Республикасы",
            "nameEn": "Dominican Republic",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "EC",
            "name": "Эквадор",
            "nameEn": "Ecuador",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "EG",
            "name": "Мысыр",
            "nameEn": "Egypt",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SV",
            "name": "Сальвадор",
            "nameEn": "El Salvador",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GQ",
            "name": "Экваторлық Гвинея",
            "nameEn": "Equatorial Guinea",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "EE",
            "name": "Эстония",
            "nameEn": "Estonia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SZ",
            "name": "Эсватини",
            "nameEn": "Eswatini",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "ET",
            "name": "Эфиопия",
            "nameEn": "Ethiopia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "FK",
            "name": "Фолкленд аралдары",
            "nameEn": "Falkland Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "FO",
            "name": "Фарер аралдары",
            "nameEn": "Faroe Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "FM",
            "name": "Микронезия",
            "nameEn": "Micronesia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "FJ",
            "name": "Фиджи",
            "nameEn": "Fiji",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "FI",
            "name": "Финляндия",
            "nameEn": "Finland",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "FR",
            "name": "Франция",
            "nameEn": "France",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GF",
            "name": "Француз Гвианасы",
            "nameEn": "French Guiana",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PF",
            "name": "Француз Полинезиясы",
            "nameEn": "French Polynesia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TF",
            "name": "Францияның оңтүстік аймақтары",
            "nameEn": "French Southern Territories",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GA",
            "name": "Габон",
            "nameEn": "Gabon",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GM",
            "name": "Гамбия",
            "nameEn": "Gambia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GE",
            "name": "Грузия",
            "nameEn": "Georgia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "DE",
            "name": "Германия",
            "nameEn": "Germany",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GH",
            "name": "Гана",
            "nameEn": "Ghana",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GI",
            "name": "Гибралтар",
            "nameEn": "Gibraltar",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GR",
            "name": "Грекия",
            "nameEn": "Greece",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GL",
            "name": "Гренландия",
            "nameEn": "Greenland",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GD",
            "name": "Гренада",
            "nameEn": "Grenada",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GP",
            "name": "Гваделупа",
            "nameEn": "Guadeloupe",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GU",
            "name": "Гуам",
            "nameEn": "Guam",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GT",
            "name": "Гватемала",
            "nameEn": "Guatemala",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GG",
            "name": "Гернси",
            "nameEn": "Guernsey",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GN",
            "name": "Гвинея",
            "nameEn": "Guinea",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GW",
            "name": "Гвинея-Бисау",
            "nameEn": "Guinea-Bissau",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GY",
            "name": "Гайана",
            "nameEn": "Guyana",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "HM",
            "name": "Херд аралы және Макдональд аралдары",
            "nameEn": "Heard & McDonald Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "VA",
            "name": "Ватикан",
            "nameEn": "Vatican City",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "HN",
            "name": "Гондурас",
            "nameEn": "Honduras",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "HK",
            "name": "Сянган АӘА",
            "nameEn": "Hong Kong SAR China",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "HU",
            "name": "Венгрия",
            "nameEn": "Hungary",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "IS",
            "name": "Исландия",
            "nameEn": "Iceland",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "IN",
            "name": "Үндістан",
            "nameEn": "India",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "ID",
            "name": "Индонезия",
            "nameEn": "Indonesia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "IE",
            "name": "Ирландия",
            "nameEn": "Ireland",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "IM",
            "name": "Мэн аралы",
            "nameEn": "Isle of Man",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "IL",
            "name": "Израиль",
            "nameEn": "Israel",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "IT",
            "name": "Италия",
            "nameEn": "Italy",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "JM",
            "name": "Ямайка",
            "nameEn": "Jamaica",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "JP",
            "name": "Жапония",
            "nameEn": "Japan",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "JE",
            "name": "Джерси",
            "nameEn": "Jersey",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "JO",
            "name": "Иордания",
            "nameEn": "Jordan",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "KZ",
            "name": "Қазақстан",
            "nameEn": "Kazakhstan",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "KE",
            "name": "Кения",
            "nameEn": "Kenya",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "KI",
            "name": "Кирибати",
            "nameEn": "Kiribati",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "KW",
            "name": "Кувейт",
            "nameEn": "Kuwait",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "KG",
            "name": "Қырғызстан",
            "nameEn": "Kyrgyzstan",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "LA",
            "name": "Лаос",
            "nameEn": "Laos",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "LV",
            "name": "Латвия",
            "nameEn": "Latvia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "LB",
            "name": "Ливан",
            "nameEn": "Lebanon",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "LS",
            "name": "Лесото",
            "nameEn": "Lesotho",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "LR",
            "name": "Либерия",
            "nameEn": "Liberia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "LI",
            "name": "Лихтенштейн",
            "nameEn": "Liechtenstein",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "LT",
            "name": "Литва",
            "nameEn": "Lithuania",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "LU",
            "name": "Люксембург",
            "nameEn": "Luxembourg",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MO",
            "name": "Макао АӘА",
            "nameEn": "Macao SAR China",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MG",
            "name": "Мадагаскар",
            "nameEn": "Madagascar",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MW",
            "name": "Малави",
            "nameEn": "Malawi",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MY",
            "name": "Малайзия",
            "nameEn": "Malaysia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MV",
            "name": "Мальдив аралдары",
            "nameEn": "Maldives",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MT",
            "name": "Мальта",
            "nameEn": "Malta",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MH",
            "name": "Маршалл аралдары",
            "nameEn": "Marshall Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MQ",
            "name": "Мартиника",
            "nameEn": "Martinique",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MR",
            "name": "Мавритания",
            "nameEn": "Mauritania",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MU",
            "name": "Маврикий",
            "nameEn": "Mauritius",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "YT",
            "name": "Майотта",
            "nameEn": "Mayotte",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MX",
            "name": "Мексика",
            "nameEn": "Mexico",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MD",
            "name": "Молдова",
            "nameEn": "Moldova",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MC",
            "name": "Монако",
            "nameEn": "Monaco",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MN",
            "name": "Моңғолия",
            "nameEn": "Mongolia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "ME",
            "name": "Черногория",
            "nameEn": "Montenegro",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MS",
            "name": "Монтсеррат",
            "nameEn": "Montserrat",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MA",
            "name": "Марокко",
            "nameEn": "Morocco",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MZ",
            "name": "Мозамбик",
            "nameEn": "Mozambique",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "NA",
            "name": "Намибия",
            "nameEn": "Namibia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "NR",
            "name": "Науру",
            "nameEn": "Nauru",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "NP",
            "name": "Непал",
            "nameEn": "Nepal",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "NL",
            "name": "Нидерланд",
            "nameEn": "Netherlands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "NC",
            "name": "Жаңа Каледония",
            "nameEn": "New Caledonia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "NZ",
            "name": "Жаңа Зеландия",
            "nameEn": "New Zealand",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "NE",
            "name": "Нигер",
            "nameEn": "Niger",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "NG",
            "name": "Нигерия",
            "nameEn": "Nigeria",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "NU",
            "name": "Ниуэ",
            "nameEn": "Niue",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "NF",
            "name": "Норфолк аралы",
            "nameEn": "Norfolk Island",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MK",
            "name": "Солтүстік Македония",
            "nameEn": "North Macedonia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MP",
            "name": "Солтүстік Мариана аралдары",
            "nameEn": "Northern Mariana Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "NO",
            "name": "Норвегия",
            "nameEn": "Norway",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "OM",
            "name": "Оман",
            "nameEn": "Oman",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PK",
            "name": "Пәкістан",
            "nameEn": "Pakistan",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PW",
            "name": "Палау",
            "nameEn": "Palau",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PA",
            "name": "Панама",
            "nameEn": "Panama",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PG",
            "name": "Папуа — Жаңа Гвинея",
            "nameEn": "Papua New Guinea",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PY",
            "name": "Парагвай",
            "nameEn": "Paraguay",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PE",
            "name": "Перу",
            "nameEn": "Peru",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PH",
            "name": "Филиппин аралдары",
            "nameEn": "Philippines",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PN",
            "name": "Питкэрн аралдары",
            "nameEn": "Pitcairn Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PL",
            "name": "Польша",
            "nameEn": "Poland",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PT",
            "name": "Португалия",
            "nameEn": "Portugal",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PR",
            "name": "Пуэрто-Рико",
            "nameEn": "Puerto Rico",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "QA",
            "name": "Катар",
            "nameEn": "Qatar",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "RO",
            "name": "Румыния",
            "nameEn": "Romania",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "RW",
            "name": "Руанда",
            "nameEn": "Rwanda",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "RE",
            "name": "Реюньон",
            "nameEn": "Réunion",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BL",
            "name": "Сен-Бартелеми",
            "nameEn": "St. Barthélemy",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SH",
            "name": "Әулие Елена аралы",
            "nameEn": "St. Helena",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "KN",
            "name": "Сент-Китс және Невис",
            "nameEn": "St. Kitts & Nevis",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "LC",
            "name": "Сент-Люсия",
            "nameEn": "St. Lucia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MF",
            "name": "Сен-Мартен",
            "nameEn": "St. Martin",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PM",
            "name": "Сен-Пьер және Микелон",
            "nameEn": "St. Pierre & Miquelon",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "VC",
            "name": "Сент-Винсент және Гренадин аралдары",
            "nameEn": "St. Vincent & Grenadines",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "WS",
            "name": "Самоа",
            "nameEn": "Samoa",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SM",
            "name": "Сан-Марино",
            "nameEn": "San Marino",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "ST",
            "name": "Сан-Томе және Принсипи",
            "nameEn": "São Tomé & Príncipe",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SA",
            "name": "Сауд Арабиясы",
            "nameEn": "Saudi Arabia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SN",
            "name": "Сенегал",
            "nameEn": "Senegal",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "RS",
            "name": "Сербия",
            "nameEn": "Serbia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SC",
            "name": "Сейшель аралдары",
            "nameEn": "Seychelles",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SL",
            "name": "Сьерра-Леоне",
            "nameEn": "Sierra Leone",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SG",
            "name": "Сингапур",
            "nameEn": "Singapore",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SX",
            "name": "Синт-Мартен",
            "nameEn": "Sint Maarten",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SK",
            "name": "Словакия",
            "nameEn": "Slovakia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SI",
            "name": "Словения",
            "nameEn": "Slovenia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SB",
            "name": "Соломон аралдары",
            "nameEn": "Solomon Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "ZA",
            "name": "Оңтүстік Африка",
            "nameEn": "South Africa",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GS",
            "name": "Оңтүстік Георгия және Оңтүстік Сандвич аралдары",
            "nameEn": "South Georgia & South Sandwich Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "KR",
            "name": "Оңтүстік Корея",
            "nameEn": "South Korea",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "ES",
            "name": "Испания",
            "nameEn": "Spain",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "LK",
            "name": "Шри-Ланка",
            "nameEn": "Sri Lanka",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PS",
            "name": "Палестина аймақтары",
            "nameEn": "Palestinian Territories",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SR",
            "name": "Суринам",
            "nameEn": "Suriname",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SJ",
            "name": "Шпицберген және Ян-Майен",
            "nameEn": "Svalbard & Jan Mayen",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SE",
            "name": "Швеция",
            "nameEn": "Sweden",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CH",
            "name": "Швейцария",
            "nameEn": "Switzerland",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TW",
            "name": "Тайвань",
            "nameEn": "Taiwan",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TJ",
            "name": "Тәжікстан",
            "nameEn": "Tajikistan",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TZ",
            "name": "Танзания",
            "nameEn": "Tanzania",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TH",
            "name": "Таиланд",
            "nameEn": "Thailand",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TL",
            "name": "Тимор-Лесте",
            "nameEn": "Timor-Leste",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TG",
            "name": "Того",
            "nameEn": "Togo",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TK",
            "name": "Токелау",
            "nameEn": "Tokelau",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TO",
            "name": "Тонга",
            "nameEn": "Tonga",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TT",
            "name": "Тринидад және Тобаго",
            "nameEn": "Trinidad & Tobago",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TN",
            "name": "Тунис",
            "nameEn": "Tunisia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TM",
            "name": "Түрікменстан",
            "nameEn": "Turkmenistan",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TC",
            "name": "Теркс және Кайкос аралдары",
            "nameEn": "Turks & Caicos Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TV",
            "name": "Тувалу",
            "nameEn": "Tuvalu",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TR",
            "name": "Түркия",
            "nameEn": "Türkiye",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "UG",
            "name": "Уганда",
            "nameEn": "Uganda",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "UA",
            "name": "Украина",
            "nameEn": "Ukraine",
            "marker": "**",
            "coverage": "partial_locations",
            "note": "Карталар Қырымда, Донецкіде, Луганскіде, Херсонда және Запорожьеде қолжетімді емес. Украинаның қалған бөлігі қолжетімді."
          },
          {
            "code": "AE",
            "name": "Біріккен Араб Әмірліктері",
            "nameEn": "United Arab Emirates",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GB",
            "name": "Ұлыбритания",
            "nameEn": "United Kingdom",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "UM",
            "name": "АҚШ-тың сыртқы кіші аралдары",
            "nameEn": "U.S. Outlying Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "US",
            "name": "Америка Құрама Штаттары",
            "nameEn": "United States",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "UY",
            "name": "Уругвай",
            "nameEn": "Uruguay",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "UZ",
            "name": "Өзбекстан",
            "nameEn": "Uzbekistan",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "VU",
            "name": "Вануату",
            "nameEn": "Vanuatu",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "VN",
            "name": "Вьетнам",
            "nameEn": "Vietnam",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "VG",
            "name": "Британдық Виргин аралдары",
            "nameEn": "British Virgin Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "VI",
            "name": "АҚШ-тың Виргин аралдары",
            "nameEn": "U.S. Virgin Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "WF",
            "name": "Уоллис және Футуна",
            "nameEn": "Wallis & Futuna",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "EH",
            "name": "Батыс Сахара",
            "nameEn": "Western Sahara",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "ZM",
            "name": "Замбия",
            "nameEn": "Zambia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          }
        ],
        "source": "owner_provided",
        "status": "owner_list_received",
        "policy": "worldwide_except_restrictions",
        "independentlyVerified": false,
        "partialCoverage": {
          "marker": "**",
          "countryCodes": [
            "UA"
          ],
          "note": "Карталар Қырымда, Донецкіде, Луганскіде, Херсонда және Запорожьеде қолжетімді емес. Украинаның қалған бөлігі қолжетімді."
        },
        "unresolvedFootnotes": [],
        "approvalGuaranteed": false
      },
      "sbp": [
        "RU"
      ],
      "alipay": [
        "CN"
      ],
      "crypto": {
        "exactList": null,
        "status": "live_catalog_required",
        "invoiceCurrency": "USDT",
        "cataloguePath": "/api/checkout/{token}/crypto-services"
      }
    },
    "cryptoAcceptance": {
      "invoiceCurrency": "USDT",
      "coinCount": 16,
      "pairCount": 31,
      "pairs": [
        {
          "currency": "AVAX",
          "network": "avalanche",
          "networkLabel": "Avalanche C-Chain"
        },
        {
          "currency": "BCH",
          "network": "bch",
          "networkLabel": "Bitcoin Cash"
        },
        {
          "currency": "BNB",
          "network": "bsc",
          "networkLabel": "BNB Smart Chain"
        },
        {
          "currency": "BTC",
          "network": "btc",
          "networkLabel": "Bitcoin"
        },
        {
          "currency": "DAI",
          "network": "bsc",
          "networkLabel": "BNB Smart Chain"
        },
        {
          "currency": "DAI",
          "network": "eth",
          "networkLabel": "Ethereum"
        },
        {
          "currency": "DAI",
          "network": "polygon",
          "networkLabel": "Polygon PoS"
        },
        {
          "currency": "DASH",
          "network": "dash",
          "networkLabel": "Dash"
        },
        {
          "currency": "DOGE",
          "network": "doge",
          "networkLabel": "Dogecoin"
        },
        {
          "currency": "ETH",
          "network": "eth",
          "networkLabel": "Ethereum"
        },
        {
          "currency": "ETH",
          "network": "arbitrum",
          "networkLabel": "Arbitrum One"
        },
        {
          "currency": "ETH",
          "network": "bsc",
          "networkLabel": "BNB Smart Chain"
        },
        {
          "currency": "GRAM",
          "network": "ton",
          "networkLabel": "TON"
        },
        {
          "currency": "LTC",
          "network": "ltc",
          "networkLabel": "Litecoin"
        },
        {
          "currency": "POL",
          "network": "eth",
          "networkLabel": "Ethereum"
        },
        {
          "currency": "POL",
          "network": "polygon",
          "networkLabel": "Polygon PoS"
        },
        {
          "currency": "SHIB",
          "network": "eth",
          "networkLabel": "Ethereum"
        },
        {
          "currency": "TRX",
          "network": "tron",
          "networkLabel": "TRON"
        },
        {
          "currency": "USDC",
          "network": "arbitrum",
          "networkLabel": "Arbitrum One"
        },
        {
          "currency": "USDC",
          "network": "bsc",
          "networkLabel": "BNB Smart Chain"
        },
        {
          "currency": "USDC",
          "network": "polygon",
          "networkLabel": "Polygon PoS"
        },
        {
          "currency": "USDC",
          "network": "eth",
          "networkLabel": "Ethereum"
        },
        {
          "currency": "USDC",
          "network": "avalanche",
          "networkLabel": "Avalanche C-Chain"
        },
        {
          "currency": "USDT",
          "network": "tron",
          "networkLabel": "TRON"
        },
        {
          "currency": "USDT",
          "network": "avalanche",
          "networkLabel": "Avalanche C-Chain"
        },
        {
          "currency": "USDT",
          "network": "bsc",
          "networkLabel": "BNB Smart Chain"
        },
        {
          "currency": "USDT",
          "network": "ton",
          "networkLabel": "TON"
        },
        {
          "currency": "USDT",
          "network": "polygon",
          "networkLabel": "Polygon PoS"
        },
        {
          "currency": "USDT",
          "network": "arbitrum",
          "networkLabel": "Arbitrum One"
        },
        {
          "currency": "USDT",
          "network": "eth",
          "networkLabel": "Ethereum"
        },
        {
          "currency": "XMR",
          "network": "xmr",
          "networkLabel": "Monero"
        }
      ],
      "catalogueSource": "owner_provided",
      "liveAvailabilitySource": "/api/checkout/{token}/crypto-services",
      "referenceCatalogueConfirmsAvailability": false,
      "transferInstructionsSource": "created_gateway_operation",
      "invoiceFixesOtherCoinExchangeRate": false,
      "exactTransferAmountRequired": true,
      "merchantPayout": {
        "asset": "USDT",
        "network": "TRC20",
        "distinctFromAcceptanceNetworks": true,
        "creationImplemented": false
      }
    },
    "support": {
      "knowledgeScope": "all_published_articles_and_facts",
      "articleCount": 25,
      "historyMessagesPerRequest": 6,
      "historyStorage": "browser_local_storage",
      "historySync": "device_only",
      "separateConversations": true,
      "perConversationDrafts": true,
      "pageContext": "safe_section_label_only",
      "privateAccountAccess": false,
      "financialActions": false,
      "fallback": "documentation_search",
      "readinessEndpoint": "/api/config"
    },
    "notifications": {
      "pageSize": 30,
      "readStateStorage": "server",
      "readStateAffectsTelegramDelivery": false,
      "readEndpoint": "/api/notifications/read"
    },
    "gatewayIntegration": {
      "adapterImplemented": true,
      "contract": "v3",
      "liveConfigurationProvided": null,
      "requiredEnvironment": [
        "GATEWAY_API_KEY",
        "GATEWAY_WEBHOOK_SECRET"
      ],
      "connectionModes": {
        "externalHttps": {
          "originEnvironment": "GATEWAY_BASE_URL"
        },
        "selfHostedService": {
          "capability": "GATEWAY_SERVICE",
          "fixedDestination": true,
          "publicGatewayApi": false
        }
      },
      "availability": {
        "source": "runtime",
        "configurationEndpoint": "/api/config",
        "configurationField": "gateway.configured",
        "configurationIncludesHealthCheck": false,
        "checkoutEndpoint": "/api/checkout/{token}",
        "checkoutField": "invoice.availability",
        "checkoutCompatibilityAlias": "invoice.gatewayConnected",
        "checkoutIncludesProviderApproval": false
      },
      "cardTransport": "browser_JWE_to_gateway",
      "cardPlaintextAcceptedByKevmi": false,
      "hostedCardApi": false,
      "sealedAlgorithms": [
        "RSA-OAEP-256",
        "A256GCM"
      ],
      "ingress": {
        "path": "/api/gateway/webhook",
        "signatureHeader": "X-Gateway-Signature",
        "timestampHeader": "X-Gateway-Timestamp",
        "eventIdHeader": "X-Gateway-Event-Id",
        "signatureAlgorithm": "HMAC-SHA256",
        "signatureInput": "timestamp.rawBody",
        "timestampToleranceSeconds": 300,
        "authenticatedOperationReadRequired": true
      },
      "successRequires": [
        "fulfillment_ready",
        "provider_confirmed",
        "exact_paid_amount",
        "no_dispute",
        "crypto_settlement_evidence_if_crypto"
      ],
      "statusDoesNotCharge": true,
      "reconciliationDoesNotCharge": true,
      "oneDispatchedOperationPerInvoice": true,
      "ledgerNotImplemented": true
    },
    "merchantWorkspace": {
      "multipleStores": true,
      "storeLimit": 100,
      "storeEndpoint": "/api/stores",
      "storeHeader": "X-Kevmi-Store",
      "aggregateReadOnly": true,
      "pricingMode": "universal",
      "baseCurrency": "USD",
      "sbpChargeCurrency": "RUB",
      "cryptoChargeCurrency": "USDT",
      "usdUsdtInvoiceRatio": "1:1",
      "referenceRateSource": "https://www.cbr.ru/scripts/XML_daily.asp",
      "fxInvoiceMaxHours": 24,
      "path": "/account",
      "sections": [
        "overview",
        "payments",
        "payouts",
        "pricing",
        "stores",
        "links",
        "applications",
        "keys",
        "webhooks",
        "widget",
        "events",
        "knowledge",
        "store",
        "notifications",
        "support"
      ]
    },
    "gatewayConnected": null,
    "limitsConfirmed": false,
    "scope": "Public product documentation only. No user records or secrets."
  },
  "locale": "kk",
  "docGroups": [
    {
      "id": "start",
      "title": "Бастау",
      "description": "Алғашқы визиттен конфигурацияланған дүкенге дейін.",
      "icon": "bolt"
    },
    {
      "id": "payments",
      "title": "Төлемдер мен шарттар",
      "description": "Сілтемелер, сомалар, ҚҚС, төлем әдістері және төлемдер.",
      "icon": "card"
    },
    {
      "id": "account",
      "title": "Есептік жазба және қолдау",
      "description": "Telegram, хабарландырулар және сұрағыңыз бойынша көмек.",
      "icon": "settings"
    },
    {
      "id": "developers",
      "title": "Әзірлеушілер",
      "description": "API, қауіпсіздік, webhooks және шлюз интеграциясы.",
      "icon": "book"
    }
  ],
  "navPages": [
    {
      "href": "/",
      "title": "Шолу",
      "icon": "grid"
    },
    {
      "href": "/payment-methods",
      "title": "Төлем әдістері",
      "icon": "card"
    },
    {
      "href": "/pricing",
      "title": "Бағалар",
      "icon": "percent"
    },
    {
      "href": "/payment-links",
      "title": "Төлем сілтемелері",
      "icon": "link"
    },
    {
      "href": "/countries",
      "title": "Қамту",
      "icon": "globe"
    },
    {
      "href": "/docs",
      "title": "Құжаттама",
      "icon": "book"
    },
    {
      "href": "/?support=open",
      "title": "Қолдау",
      "icon": "chat"
    },
    {
      "href": "/integrations",
      "title": "Интеграциялар",
      "icon": "code"
    }
  ],
  "paymentMethods": [
    {
      "id": "card",
      "name": "Халықаралық карталар",
      "shortName": "Халықаралық карталар",
      "description": "Халықаралық тұтынушылар үшін карта төлемдері.",
      "incomingPercent": 10,
      "incomingFixedMinor": 50,
      "incomingFixedCurrency": "USD",
      "payoutPercent": 4,
      "payoutFixedMinor": 0,
      "payoutFixedCurrency": "USD",
      "vatApplies": true,
      "region": "Халықаралық төлемдер",
      "symbol": "card",
      "geography": "Visa және Mastercard 190-нан астам елден, шектеу тізімі мен Украинаның бес өңірін қоспағанда.",
      "countryCount": 223,
      "ownerReportedCountryCount": null,
      "coverageLabel": "190+"
    },
    {
      "id": "sbp",
      "name": "SBP",
      "shortName": "SBP",
      "description": "Ресейдің Жылдам төлемдер жүйесі арқылы банк арқылы төлеңіз.",
      "incomingPercent": 8,
      "incomingFixedMinor": 0,
      "incomingFixedCurrency": "RUB",
      "payoutPercent": 5,
      "payoutFixedMinor": 40000,
      "payoutFixedCurrency": "RUB",
      "vatApplies": false,
      "region": "Ресей",
      "symbol": "sbp",
      "geography": "Ресей. Қолжетімділік банкке және транзакцияға байланысты.",
      "countryCount": 1
    },
    {
      "id": "alipay",
      "name": "Alipay",
      "shortName": "Alipay",
      "description": "Қытайдағы тұтынушылар үшін Alipay төлемдері.",
      "incomingPercent": 10,
      "incomingFixedMinor": 50,
      "incomingFixedCurrency": "USD",
      "payoutPercent": 4,
      "payoutFixedMinor": 0,
      "payoutFixedCurrency": "USD",
      "vatApplies": true,
      "region": "Қытай",
      "symbol": "alipay",
      "geography": "Қытай. Қолжетімділік есептік жазбаға және транзакцияға байланысты.",
      "countryCount": 1
    },
    {
      "id": "crypto",
      "name": "Криптовалюта",
      "shortName": "Криптовалюта",
      "description": "4% комиссиямен және ҚҚСсыз бір реттік крипто төлемдері.",
      "incomingPercent": 4,
      "incomingFixedMinor": 0,
      "incomingFixedCurrency": "USD",
      "payoutPercent": 0,
      "payoutFixedMinor": 300,
      "payoutFixedCurrency": "USD",
      "vatApplies": false,
      "region": "Цифрлық активтер",
      "symbol": "crypto",
      "geography": "Әлемнің барлық елдері. Қолдау көрсетілетін монета мен желіні таңдаңыз. Төлемдер USDT TRC20 арқылы жүзеге асырылады.",
      "countryCount": null
    }
  ],
  "payoutFees": {
    "card": "4%",
    "alipay": "4%",
    "sbp": "5% + RUB 400",
    "crypto": "0% + $3"
  },
  "documentationLocale": "kk"
}
