Интеграция с вашим сервисом
Мерчант
Создать заявку
Используйте метод 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
https://www.develop.exchange/user-lang/payment/order-uid/order-secret
// example result
https://www.develop.exchange/en/payment/1409/dGqwF2M2eBPaSN1G5ljMS1cb - Также вы можете просто дать ссылку на биржу так, как ее видят все клиенты по той же схеме, что и в первом варианте, кроме /payment/ следует заменить на /order/
- В методе есть параметры, которые позволяют отображать платежные данные или форму оплаты на вашем сайте, которую вы можете использовать. ВАЖНО: если используется метод с предоплатой, вам необходимо обновить статус заказа с waitPayment до inProgress после оплаты.