Інтеграція з вашим сервісом
Документація для мерчанта
Створити замовлення
Використати метод 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 після оплати.