Интеграция с вашим сервисом
Мерчант
Создать заявку
Используйте метод public/exchanger/order/create
Название | Описание | Тип |
routeId | id направления | ObjectID |
partner | код партнера | STRING |
amount | сумма | FLOAT |
fromValues[0][key] | ключ поля | ObjectID |
fromValues[0][value] | значение для поля | STRING |
toValues[0][key] | ключ поля | STRING |
toValues[0][value] | значение для поля | STRING |
routeValues[0][key] | ключ поля | ObjectID |
routeValues[0][value] | значение для поля | STRING |
lang | язык (рус, англ) | STRING |
agreement | cоглашение | BOOLEAN |
hideOutData | cкрыть реквизиты | BOOLEAN |
clientCallbackUrl | обратный вызов, когда приложение будет завершено, клиент увидит кнопку для возврата на сайт, и клиент будет перенаправлен на этот url ?status=success или на ?status=error | STRING |
ipnUrl | URL-адрес уведомления о мгновенном платеже (будет вызыван, присмене статуса ордера) | STRING |
ipnSecret | строка для создания безопасного хеша в ipn url | STRING |
Документацию к системе авторизации вы можете найти в личном кабинете. Подробнее о работе с методы и дополнительные данные можно найти на
IPN (Уведомление об изменении статуса платежного запроса)
Чтобы получать уведомление об изменении статуса заявки при её создании, вам необходимо отправить дополнительные параметры:
clientCallbackUrl
- обратный вызов, когда приложение будет завершено, клиент увидит кнопку для возврата на сайт, и клиент будет перенаправлен на этот urlhideOutData
- скрыть данные получателяipnUrl
- Ссылка HTTP / HTTPS для уведомления вашего сервера.ipnSecret
- Случайная строка для создания подписи запроса (для поддержания целостности запроса)
- Запрос будет отправлен методом POST
- IPN будет отправлено один раз
- Доставка IPN не гарантируется (если сервер не ответил на запрос, он не будет отправлен повторно)
Пример IPN
- POST
- ['Content-Type'] = 'application/x-www-form-urlencoded'
orderUID
:Number() - заявка uidorderId
:String(ObjectId) -заявка idnewStatus
:String() - заявка текущего статусаinAmount
:String(number) - order in sumoutAmount
:String(number) - order out sumxml_from
:String() - заявка uidxml_to
:String() - заявка uidtimestamp
:Number() - unix время и ipn уведомленияtoValues
:Array([{key,name,value}]) - реквизиты заявки
Список статусов
new
- новая заявкаwaitPayment
- ожидаем платеж от пользователяerrorPayment
- ошибка пользовательского платежа (ошибка отправки продавца)inProgress
- в процессе (ожидается обработка админом или оплата заявки)inProgressPayout
- в очереди на оплату (платеж принят успешно) (если настроен автоматический платеж в валюте, он будет инициализирован)errorPayout
- ошибка платежа (ошибка произошла при оплате)hold
- заявка заморожена (проблемы с приложением)done
- заявка успешно выплаченаreturned
-заявка была оплачена, но не все условия обмена и способы возврата отправителя были выполненыdeleted
- заявка удалена (отменена)
Верефикация контрольной суммы запроса (IPN)
sha256(orderId:newStatus:inAmount:outAmount:xml_from:xml_to:timestamp:ipnSecret)
const stringForHash = orderId+":"+newStatus+":"+inAmount+":"+outAmount+":"+xml_from+":"+xml_to+":"+timestamp+":"+ipnSecret;
// example string for hash 5d8e6002b80b7b4cd75a6424:inProgress:2:317.42:ETH:WMZ:1571328406072:SECRET123
const hash = crypto.createHash('sha256').update(stringForHash).digest('hex')
// example hash af3acf947e6f0e0f2c267e300b8582e504dba12d1f2d058652b7414163c09f48
Контроль платежей
- Если вы хотите контролировать статус запросов, авторизуйтесь и все заявки будут отражены в вашем личном кабинете;
- Вы можете сохранить UID запроса и секрет и вручную перейти к запросу, указав эти данные в адресной строке
Оплата
-
Вы можете использовать / payment / для отображения страницы оплаты
// schema
protocol://domain/user-lang/payment/order-uid/order-secret
// example result
https://www.domain.com/en/payment/1409/dGqwF2M2eBPaSN1G5ljMS1cb - Также вы можете просто отбразить ссылку на бирже так, как ее видят все клиенты по той же схеме, что и в первом варианте, кроме /payment/ следует заменить на /order/
- В методе есть параметры, которые позволяют отображать платежные данные или форму оплаты на вашем сайте, которую вы можете использовать. ВАЖНО: если используется метод с предоплатой, вам необходимо обновить статус заказа с waitPayment до inProgress после оплаты.