API 2.0 по интеграции с MirexPay.
1. Регистрируетесь на сайте.
2. Заходите в меню Кассы и создаете Кассу для своего домена, проходите модерацию, ожидаем результат модерации.
3. После модерации для кассы генерируется client_id и client_secret - в настройках кассы можете видеть эти ключи.
4. Для инициирования оплаты - нужно отправить клиента на форму оплаты по ссылке с нужными параметрами:
https://new.mirexpay.com/payments/create?client_id=<CLIENT_ID>&amount=1.00
Запрос обязательно должен содержать переменные client_id (который получили на предыдущем шаге) и amount - сумма для оплаты (для отделения десятых и сотых служит - точка, к примеру amount=8.44)
Также запрос может содержать следующие не обязательные переменные:
order_id - целое число - идентификатор заказа в магазине. Если Вам нужно передать номер заказ строкой с буквами - тогда лучше передавать номер заказа в параметре "description"
user_id - целое число - идентификатор пользователя в магазине
description - краткое описание назначения платежа (максимум 512 символов)
success_url - ссылка на страницу с успешной оплатой
fail_url - ссылка на страницу с безуспешной оплатой
currency - код валюты в стандарте ISO 4217, если код не передан по умолчанию будет считаться, что счет выставлен в Долларах.
client_email - email плательщика.
new_card - признак карты из whitelist: y - новая карта, n - карта из whitelist.
country - Код страны банка, выпустившего карту: ru - Российский банк, world - иностранный. По умолчанию world, если параметр пуст или не передан.
Коды валют в
ISO 4217 для Доллара США - 840, для российского Рубля - 643, для Евро - 978, для украинской Гривны - 980.
5. После успешного или проваленного платежа на прописанный вами в настройках кассы Callback URI будет отправлен POST запрос содержащий данные о платеже в виде json объекта в параметре payment. В объекте будут присутствовать следующие свойства
- order_id - идентификатор заказа в вашей системе
- id - номер платежа в системе MirexPay
- status - статус платежа (success или fail)
- amount - запрошенная вами сума платежа
- amount_fee - к-во денег снятое системой за проведенный платеж
- actual_amount - к-во денег поступившее на ваш баланс в системе
- client_id - идентификатор вашего аккаунта
- description - описание, которое вносили в запросе
- card - маска номера карты первые и последние цифры номера карты клиента в формате 44444|2222
- comment - комментарий к платежу, если например платеж был с ошибкой, то может быть указана причина ошибки
- signature - токен, который генерируется путём обьеденения amount, client_id и client_secret
Пример генерации signature:
$signature = base64_encode(sha1($amount ."|". $client_id ."|". $client_secret));
Пример обработки параметра такого запроса:
$post = json_decode($_POST["payment"]); $order_id = $post->order_id;
Все нотификации отправляются с ip адресов 5.101.112.71, 104.21.22.181, 172.67.206.95.
---------
Если Вы хотите вручную повторно отправить Callback на свой Callback_url - для этого зайдите в информацию о платеже (в кабинете это меню Платежи, жмите на номер платежа), внизу под табличкой с информацией о платеже будет кнопка "Отправить Callback", при нажатии - Callback отправится повторно и будет показан ответ Вашего сервера.
---------
Тестовая среда.
Есть так-же возможность делать тестовые платежи. Для включения тестовой среды - обратитесь к Вашему менеджеру технической поддержки.
Для тестовой среды - Вам будет активирован метод TEST_EUR для Вашей кассы.
После этого - Для того, чтоб направить платеж по тестовому направлению - Мерчант должен формировать ссылку перехода запроса в евро (код валюты 978). Например сгенерировать такую ссылку и по ней перейти в браузере:
Пример - https://new.mirexpay.com/payments/create?client_id=<CLIENT_ID>&amount=1.00¤cy=978
где <CLIENT_ID> - это client_id кассы, в которой подключен тестовый метод.
В процессе тестирования можно использовать два варианта номеров карт:
4141999977771111 - это тестовая карта для успешного платежа.
4141999977772222 - это тестовая карта отмены платежа
Если ввести любой другой номер карты - то статус платежа будет Pending.