Інтеграція з вашим сервісом

Документація для мерчанта

Створити замовлення

Використати метод 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 - колбек, коли заявку буде завершено, клієнт побачить кнопку для повернення на сайт, і клієнт буде перенаправлений на це URL
  • hideOutData - приховати дані отримувача
  • ipnUrl - HTTP/HTTPS посилання для сповіщення вашого сервера.
  • ipnSecret - Випадковий рядок для створення підпису запиту (для підтримки цілісності запиту)
  1. Запит буде надіслано методом POST
  2. IPN буде надіслано один раз
  3. Доставка IPN не гарантована (якщо сервер не відповів на запит, він не буде надісланий повторно)

Приклад IPN

  • POST
  • ['Content-Type'] = 'application/x-www-form-urlencoded'


  • orderUID :Number() - замовлення uid
  • orderId :String(ObjectId) -замовлення id
  • newStatus :String() - замовлення поточний статус
  • inAmount :String(number) - order in sum
  • outAmount :String(number) - order out sum
  • xml_from :String() - замовлення uid
  • xml_to :String() - замовлення uid
  • timestamp :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
        
      

Контроль платежів

  1. Якщо вам потрібно контролювати статус запитів, створюйте їх за допомогою авторизації, тоді всі запити будуть відображені у вашій особистій кабінеті;
  2. Ви можете зберегти UID запиту та секретний код і вручну перейти до запиту, вказавши ці дані в адресному рядку

Платіж

  1. Ви можете використовувати /payment/ для відображення сторінки оплати

    // schema
    https://bcx.exchange/user-lang/payment/order-uid/order-secret
    // example result
    https://bcx.exchange/en/payment/1409/dGqwF2M2eBPaSN1G5ljMS1cb
  2. Також ви можете просто дати посилання на обмін, як це бачать всі клієнти, відповідно до тієї ж схеми, що і в першому варіанті, за винятком того, що /payment/ слід замінити на /order/
  3. Існують параметри в методі, які дозволяють відобразити дані про платіж або форму оплати на вашому сайті, ви можете використовувати їх. ВАЖЛИВО: якщо метод з ручною оплатою, вам потрібно оновити статус замовлення з waitPayment на inProgress після оплати.