Інтеграція з вашим сервісом
Мерчант
Створити заявку
Використовуйте метод 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 | договір | BOOLEAN |
hideOutData | приховати реквізити | BOOLEAN |
clientCallbackUrl | зворотний виклик, коли програма буде завершена, клієнт побачить кнопку для повернення на сайт, і клієнт буде перенаправлений на цей URL. ?status=success або на ?status=error | STRING |
ipnUrl | URL-адреса сповіщення про миттєвий платеж (буде викликаний при зміні статусу ордера) | STRING |
ipnSecret | рядок для створення безпечного хешу в ipn url | STRING |
Документацію до системи авторизації можна знайти в особистому кабінеті. Докладніше про роботу з методи та додаткові дані можна знайти на
IPN (Сповіщення про зміну статусу платіжного запиту)
Щоб отримати повідомлення про зміну статусу заявки під час її створення, необхідно надіслати додаткові параметри:
clientCallbackUrl
- зворотний виклик, коли програма буде завершена, клієнт побачить кнопку для повернення на сайт, і клієнт буде перенаправлений на цей URL.hideOutData
- приховати дані одержувача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.smartexpay.com//user-lang/payment/order-uid/order-secret
// example result
https://www.smartexpay.com//en/payment/1409/dGqwF2M2eBPaSN1G5ljMS1cb - Також ви можете просто дати посилання на біржу так, як її бачать усі клієнти за тією ж схемою, що й у першому варіанті, крім /payment/, слід замінити на /order/
- У методі є параметри, які дозволяють відображати платіжні дані або форму оплати на вашому сайті, яку ви можете використати. ВАЖЛИВО: якщо використовується метод передоплати, вам необхідно оновити статус замовлення з waitPayment до inProgress після оплати.