Какие способы оплаты нужны магазину и что платёжные системы проверяют на сайте до договора, мы писали в статье о приёме онлайн-оплаты на сайте в Узбекистане. Эта статья о том, как подключение выглядит изнутри.
Payme, Click и Uzum Bank в одной таблице
Покупателю все три системы привычны, везде принимаются Uzcard и Humo. Для сайта они разные: у каждой свой протокол обмена данными.
| Payme | Click | Uzum Bank | |
|---|---|---|---|
| Кто может подключить | ИП, ЧП, ООО, АО, ГУП, СП, НОУ | юрлица и ИП | юрлица и ИП |
| Протокол | Merchant API на JSON-RPC, сервер Payme сам вызывает методы сайта | SHOP API, два запроса на платёж: Prepare и Complete | сайт создаёт платёж через API, результат приходит уведомлением |
| Сумма в запросах | в тийинах, 100 тийинов = 1 сум | в сумах | по документации Uzum, проверяется на тесте |
| Когда заказ оплачен | после вызова PerformTransaction | после запроса Complete | после уведомления об успешной оплате |
| Комиссия | по договору, на рынке 0,8-2% с платежа | ||
Что подготовить до заявки
Физлицу кассу не откроет ни одна из систем. Payme в документации прямо перечисляет, с кем работает: ИП, ЧП, ООО, АО, ГУП, СП и НОУ. Иностранной компании понадобится местное юрлицо.
Пакет у всех трёх систем почти одинаковый:
- свидетельство о регистрации и ИНН;
- реквизиты расчётного счёта, на него будут приходить деньги за вычетом комиссии;
- отдельная заявка в каждую систему, общего договора нет;
- сайт с ценами, публичной офертой, условиями доставки и возврата, реквизитами и контактами.
Сайт проверяют вручную, и страница «скоро открытие» модерацию не пройдёт. Заранее соберите коды ИКПУ товаров и услуг из классификатора tasnif.soliq.uz: без них не соберётся фискальный чек.
Заявки удобнее подать во все системы в один день и параллельно делать интеграцию. Модерация от программиста не зависит, а если ждать каждую систему по очереди, две недели легко растягиваются в шесть.
Как устроен Payme
В Payme Business три типа касс: с выставлением счетов, без выставления счетов и для оплаты на месте. Последняя работает сразу после подключения, двум другим сначала нужна настройка обмена с сайтом через Merchant API. Интернет-магазину подходит касса с выставлением счетов.
Покупатель платит на странице checkout.paycom.uz. Сайт собирает для неё строку параметров: m (идентификатор кассы), ac.order_id (номер заказа), a (сумма) и c (адрес, куда вернуть покупателя), кодирует её в Base64 и добавляет к адресу. Сумма передаётся в тийинах, поэтому заказ на 150 000 сум превращается в a=15000000.
Пока человек платит, сервер Payme по очереди вызывает три метода на стороне сайта:
CheckPerformTransaction
Payme спрашивает, можно ли принять платёж. Сайт проверяет, что заказ существует, ещё не оплачен и сумма совпадает.
CreateTransaction
Payme создаёт транзакцию, сайт запоминает её номер и резервирует товар.
PerformTransaction
Деньги списаны. Статус «оплачен» заказ получает только здесь.
Кроме этих трёх сайт должен отвечать на CancelTransaction (отмена, в том числе уже проведённого платежа), CheckTransaction (состояние транзакции) и GetStatement (выписка за период, по ней удобно каждый день сверять оплаты с заказами). Через SetFiscalData передаются данные фискального чека.
У созданной транзакции есть срок жизни. Если её не провели за 12 часов, Payme отменяет её сам с причиной 4, «отмена по таймауту». Сайт в этом случае возвращает заказ в «не оплачен» и снимает резерв, иначе товар месяцами числится за покупателем, который давно передумал.
В песочнице test.paycom.uz стоит прогнать все сценарии: успешную оплату, неверную сумму, несуществующий заказ, повторный вызов и отмену. Боевой режим включают после того, как прошли все.
Как устроен Click
У Click на каждый платёж приходит два запроса на адреса, которые вы указываете в кабинете мерчанта. Там же выдаются service_id, merchant_id и секретный ключ. Сам сервис после настройки включает поддержка Click.
Первым приходит Prepare (action=0). Сайт проверяет заказ и сумму, резервирует товар и возвращает свой номер подготовки merchant_prepare_id. Вторым приходит Complete (action=1), после него заказ оплачен. Оба запроса подписаны полем sign_string, это MD5 от параметров запроса и секретного ключа. Сайт пересчитывает подпись и отклоняет запрос, если она не сошлась, так поддельную «оплату» не провести.
Сумма в Click приходит в сумах. На сайте, где подключены и Payme, и Click, тийины и сумы перепутать проще всего, и проверять это нужно отдельным тестом.
Complete Click повторно не присылает. Если в этот момент сайт был недоступен или ответил ошибкой, заказ останется неоплаченным, пока его не найдёт сверка. Обратная ситуация тоже бывает: одно и то же уведомление по click_trans_id приходит дважды, и без проверки товар спишется со склада два раза.
Зачем рядом Uzum Bank
Uzum Bank, бывший Apelsin, работает по короткой схеме. Сайт через API создаёт платёж и получает ссылку, покупатель подтверждает оплату в приложении Uzum Bank, а результат приходит на сайт уведомлением. Статус заказа меняется по уведомлению. Возврат покупателя на сайт ничего не доказывает: он мог закрыть вкладку до перехода.
Подключают Uzum рядом с Payme и Click чаще всего ради рассрочки Uzum Nasiya. Для товаров дороже 1-2 млн сум она нередко решает, состоится покупка или нет. Условия рассрочки и её стоимость прописываются в договоре отдельно.
Фискальный чек и коды ИКПУ
При оплате через платёжную систему покупатель получает электронный фискальный чек. Положение о порядке предоставления электронного фискального чека через электронную платёжную организацию требует, чтобы в нём были QR-код и фискальный признак. Если данных не хватает, при проверке в приложении Soliq покупатель увидит, что чек «не содержит налоговой информации».
Для чека сайт передаёт по каждой позиции заказа:
- название, цену и количество;
- код ИКПУ из классификатора tasnif.soliq.uz;
- код единицы измерения или упаковки из того же классификатора;
- ставку НДС: 12% или «без НДС», в зависимости от режима налогообложения.
Ошибку в ИКПУ потом исправляют вместе с бухгалтером, поэтому коды лучше сверить до запуска и хранить прямо в карточке товара на сайте. Таблица у менеджера теряется при первой же смене сотрудника.
Сроки и деньги
| Этап | Сколько занимает |
|---|---|
| Документы и страницы сайта | 1-3 дня, если оферта и реквизиты уже есть |
| Модерация и договор | от нескольких дней до 2 недель на каждую систему |
| Интеграция одной системы с готовым сайтом | 3-5 рабочих дней |
| Чеки с ИКПУ, тесты, первый боевой платёж | ещё 2-5 рабочих дней |
Постоянно вы платите только комиссию с каждого платежа. Процент назначает договор, по рынку это 0,8-2%. При сравнении предложений имеет смысл спросить ещё о сроке зачисления денег, о порядке возвратов и о стоимости рассрочки: эти условия влияют на деньги не меньше процента.
Разово вы платите за интеграцию. Готовые модули для популярных CMS есть, но их почти всегда приходится дорабатывать под чеки, отмены и сверку. Если магазин ещё только проектируется, оплату проще заложить сразу при разработке сайта, вместе с каталогом и статусами заказов.
Где теряют деньги после запуска
- Заказ становится оплаченным, когда покупатель возвращается на сайт. Человек оплатил и закрыл вкладку, деньги пришли, а заказ висит неоплаченным.
- Тийины перепутаны с сумами, и заказ на 150 000 сум уходит в Payme как 1 500.
- Отмена и таймаут не обрабатываются, резервы не снимаются, остатки на складе расходятся с реальностью.
- Одно уведомление обрабатывается дважды: два списания со склада, два письма покупателю.
- Сверки с выпиской нет, и расхождения находятся в конце месяца.
- ИКПУ не заполнены, и покупатели получают чеки без налоговой информации.
С какой системы начать, если подключать по одной, разобрали в статье Payme или Click. Данные покупателей, которые сайт собирает при оплате, подпадают под закон о персональных данных. Что из них можно хранить за рубежом, написано в статье о локализации персональных данных.
Вопросы и ответы
Можно ли подключить Payme к сайту физическому лицу?
Нет. Кассы Payme Business открывают только ИП, ЧП, ООО, АО, ГУП, СП и НОУ. Click и Uzum Bank тоже работают с юрлицами и ИП, а деньги приходят на расчётный счёт компании.
Сколько стоит подключить Payme, Click и Uzum?
Постоянно платится комиссия с каждого платежа, по рынку 0,8-2%, точная ставка в договоре. Разово оплачивается интеграция: 3-5 рабочих дней на одну систему, с фискальными чеками и тестами до двух недель.
Сколько ждать подключения?
Модерация и договор занимают от нескольких дней до двух недель на каждую систему. Если подать заявки во все системы в один день и параллельно делать интеграцию, магазин начнёт принимать оплату через 2-3 недели.
Почему в Payme сумма в 100 раз больше, чем в заказе?
Payme считает в тийинах: 1 сум равен 100 тийинам, и заказ на 150 000 сум передаётся как 15 000 000. Click принимает сумму в сумах, поэтому на сайте с обеими системами единицы легко перепутать.
Что будет с неоплаченной транзакцией в Payme?
Через 12 часов после создания Payme отменит её сам, с причиной 4 «отмена по таймауту». Сайт должен вернуть заказ в статус «не оплачен» и снять резерв товара.
Нужен ли фискальный чек при оплате через Payme или Click?
Нужен. В электронном фискальном чеке должны быть QR-код и фискальный признак. Для этого сайт передаёт по каждой позиции название, цену, количество, код ИКПУ из tasnif.soliq.uz и ставку НДС.
Обязательно подключать все три системы?
Нет. Обычно начинают с Payme и Click, а Uzum добавляют ради рассрочки на товары дороже 1-2 млн сум. Каждая следующая система обходится дешевле первой, потому что заказы, статусы и чеки на сайте уже настроены.
