Idram для онлайн-магазинов: процесс, реквизиты и как его подключить
Как выглядит платеж Idram для покупателя и для вас, какие реквизиты выдает Idram, какие URL нужно зарегистрировать в Idram и как включить кошелек в Paynet и в плагинах магазина без лишних догадок.
Если вы продаете потребителям в Армении, часть ваших покупателей предпочтет заплатить из кошелька, а не вводить номер карты. Idram - один из кошельков, которым они пользуются каждый день, и добавить его на страницу оплаты - это совсем другая задача, чем добавить карты. Другой договор, другие реквизиты, другие сценарии сбоев. Эта статья охватывает все три.
Что видит покупатель
Опыт покупателя короткий, и важно его понимать, поскольку он определяет, что может обещать ваша страница заказа.
- Покупатель попадает на вашу страницу оплаты и выбирает Idram среди способов оплаты, включенных вами для этого домена. На размещенной странице оплаты Paynet он отображается как кошелек, под тем названием, которое вы ему дали.
- Его отправляют платить в Idram. На этом этапе ваш сайт не участвует, и это именно то, что нужно: через ваш сервер не проходит ничего чувствительного.
- Idram подтверждает платеж обратно в Paynet, и покупатель возвращается на
return_url, указанный вами при создании платежа. - Ваш магазин подтверждает реальный статус и отмечает заказ оплаченным.
Шаг 4 - это не необязательное украшение. Возврат покупателя на страницу благодарности - это перенаправление браузера, а браузеры закрывают, обновляют и делятся ссылками. Статус, на основании которого вы действуете, должен приходить из API, а не из того факта, что кто-то попал на определенный URL.
Что вам нужно от Idram
Вы подписываете договор с Idram напрямую. Paynet не перепродает договоры с кошельками и не держит ваши деньги: Idram рассчитывается с вами по вашему собственному соглашению. Из этого соглашения вы получаете два реквизита и три URL.
Реквизиты. Idram выдает EDP Account ID, поле, которое часто обозначается как EDP_REC_ACCOUNT, и секретный ключ. Это весь набор. В Paynet они вводятся в провайдера, которого вы добавляете для Idram, и хранятся в зашифрованном виде.
URL. Idram также требует зарегистрировать для вашего мерчант-счета три адреса:
- Result URL, через который Idram подтверждает платеж,
- Success URL, куда отправляется оплативший покупатель,
- Fail URL, куда отправляется покупатель, не совершивший оплату.
Paynet показывает вам все три, готовые к копированию, на экране провайдера Idram в вашей панели управления. Отправьте их своему контактному лицу в Idram и попросите зарегистрировать. Не пропускайте Result URL. Без него у Idram нет канала для подтверждения ваших платежей, и каждая продажа будет выглядеть неоплаченной в вашем магазине, независимо от того, насколько правильно настроено все остальное.
Включение Idram в Paynet
Как только у вас есть реквизиты, часть работы в панели управления занимает несколько минут.
- Откройте "Провайдеры" и выберите "Добавить провайдера". Выберите Idram в качестве процессора, дайте ему отображаемое название (это название, которое покупатели видят при оплате, так что сделайте его узнаваемым) и вставьте EDP Account ID и секретный ключ.
- Подключите провайдера к своему верифицированному домену. Провайдер, не подключенный к домену, не появится на странице оплаты этого домена.
- Проверьте страницу "Домены". Каждый домен показывает, какие способы активны, а домен без активных способов показывает "Нет способа оплаты" вместо того, чтобы незаметно давать сбой за счет покупателя.
Есть одна вещь, которую вы заметите: не у каждого процессора можно проверить реквизиты без совершения реального платежа. Там, где это так, панель управления прямо об этом говорит, вместо того чтобы показывать обнадеживающую зеленую галочку, которую она не заслужила. Эта честность важна для кошельков и напрямую подводит к тому, как тестировать.
Тестирование, когда у кошелька нет тестовой среды
У Idram нет публичной тестовой среды. У Telcell тоже. Это значит, что нет песочницы на стороне кошелька, где можно было бы отправлять воображаемые платежи в фиктивный Idram и наблюдать за их успешным прохождением.
Что можно сделать - это разделить две вещи, которые на самом деле нужно доказать.
Проверьте свою логику с помощью провайдера Sandbox. Установите провайдера Sandbox из панели управления и либо отправляйте "processor": "sandbox", либо используйте тестовый API-ключ, начинающийся с sk_test_. Ни банк, ни кошелек не задействуются, деньги не перемещаются, и ничего не засчитывается в ваш баланс. На тестовой странице оплаты номер карты определяет результат: 4111 1111 1111 1111 одобрен, 4000 0000 0000 0002 отклонен эмитентом, 4000 0000 0000 0119 - тайм-аут процессора, а также есть номера для недостаточных средств, истекших транзакций и общей ошибки. Так вы проверяете свой поток заказов, обработку webhook и страницу благодарности до того, как в дело вступят реальные деньги. Это также работает внутри плагинов CMS, так что вы можете протестировать реальную витрину от начала до конца.
Проверьте реквизиты Idram одним небольшим реальным платежом. Когда прогон в песочнице прошел чисто, совершите один живой платеж через Idram самостоятельно. Здесь помогают тарифы Paynet: платежи до 500 драм бесплатны, так что небольшой самостоятельный тест ничего не стоит на стороне Paynet. Убедитесь, что заказ завершается в вашем магазине, что транзакция появляется в вашей панели управления и что фискальный чек выпускается, если у вас активен e-HDM.
Правильное подтверждение платежей
Кошельки делают одну архитектурную особенность неизбежной. Idram не предоставляет API статуса, который Paynet мог бы опросить постфактум с вопросом "был ли этот платеж действительно оплачен?". Подтверждение и есть подтверждение. Поэтому все, что идет дальше по цепочке, должно быть надежным.
Схема, вокруг которой построен API, звучит так: webhook - это напоминание, API - это истина:
- Paynet отправляет webhook на
callback_urlплатежа или на URL webhook домена при каждом финальном статусе и при возвратах. - Вы проверяете заголовок
X-Paynet-Signature, представляющий собой шестнадцатеричный HMAC-SHA256 в нижнем регистре от необработанного тела запроса под вашим секретом webhook. Вычисляйте его по исходным байтам, никогда по повторно закодированной копии JSON, и сравнивайте функцией с постоянным временем выполнения. - Вы исключаете дубли по
delivery_id, быстро отвечаете 200, а затем вызываетеGET /api/v1/orders/{order_id}/payment, чтобы прочитать достоверное состояние, прежде чем что-либо делать с заказом.
Paynet ждет 2xx-ответ 10 секунд, не следует перенаправлениям и повторяет попытку три раза: через 1, 5 и 30 минут. Если доставка для завершенного или возвращенного платежа окончательно не удалась, вам приходит письмо, не чаще одного раза в 6 часов на домен.
Две детали жизненного цикла экономят реальные деньги. Платеж истекает, если он не оплачен в течение 20 минут, а запоздалое подтверждение от провайдера все еще может перевести платеж со статусом failed или expired в completed. Всегда действуйте на основании последнего прочитанного статуса.
Готовый к использованию код проверки подписи на PHP и Node.js есть в справочнике по API.
Idram в плагинах магазина
Если ваш магазин работает на поддерживаемой платформе, вам вообще не нужно трогать API. Установите плагин, нажмите Connect, и процессоры, которые вы подключили в Paynet, появятся при оплате, каждый как отдельная именованная опция со своим логотипом. Это касается WooCommerce, OpenCart 2, 3 и 4, PrestaShop, а также коннекторов Tilda и Ecwid, все они перечислены на странице плагинов.
Плагины проявляют ту же осторожность в подтверждении, которую API требует от вас. Webhook - это лишь подсказка перепроверить заказ, и магазин затем считывает достоверный статус из вашего аккаунта Paynet, прежде чем что-либо завершить. Поддельный webhook не может отметить заказ оплаченным.
Фискальные чеки для продаж через кошелек
Продажа через кошелек - это продажа, так что ей нужен фискальный чек, как и любой другой. При подключенном и активном e-HDM Paynet автоматически выпускает чек для каждого успешного платежа, каким бы способом ни воспользовался покупатель, а QR-код чека показывается покупателю. Чеки для платежей, прошедших через Paynet, бесплатны; самостоятельные чеки стоят 3 драма каждый, и каждый новый аккаунт начинает с 500 таких чеков. Подробности - на странице тарифов.
Что делать дальше
- Запросите у своего контактного лица в Idram EDP Account ID и секретный ключ, если у вас их еще нет.
- Добавьте Idram как провайдера в Paynet, скопируйте с этого экрана URL Result, Success и Fail и отправьте их в Idram для регистрации.
- Подключите провайдера к верифицированному домену и убедитесь, что домен показывает Idram как активный способ оплаты.
- Прогоните провайдера Sandbox от начала до конца, включая обработчик webhook и страницу благодарности.
- Совершите один небольшой живой платеж через Idram, до 500 драм, и проверьте, что он поступает как оплаченный в вашем магазине и в панели управления.
- По любым вопросам пишите на [email protected].
Idram является товарным знаком своего владельца. Paynet - независимый платежный шлюз, которым управляет ООО Digital Brains в Ереване; продавцы заключают собственные договоры с каждым провайдером.