Інтеграція з вашим сервісом
Документація для мерчанта
Створити замовлення
Використати метод 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 | мова клієнта (ru, en) | STRING |
agreement | угода | BOOLEAN |
hideOutData | захистити вихідні реквізити | 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://bcx.exchange/user-lang/payment/order-uid/order-secret
// example result
https://bcx.exchange/en/payment/1409/dGqwF2M2eBPaSN1G5ljMS1cb - Також ви можете просто дати посилання на обмін, як це бачать всі клієнти, відповідно до тієї ж схеми, що і в першому варіанті, за винятком того, що /payment/ слід замінити на /order/
- Існують параметри в методі, які дозволяють відобразити дані про платіж або форму оплати на вашому сайті, ви можете використовувати їх. ВАЖЛИВО: якщо метод з ручною оплатою, вам потрібно оновити статус замовлення з waitPayment на inProgress після оплати.