Інтеграція з сервісом 1cent

Створити заявку

POST /public/exchanger/order/create
Параметр Тип Опис
routeId ObjectID id напряму
partner String код партнера
amount Float сума
fromValues Array [{key: ObjectID, value: String}]
toValues Array [{key: String, value: String}]
routeValues Array [{key: ObjectID, value: String}]
lang String мова
agreement Boolean договір
hideOutData Boolean приховати реквізити
clientCallbackUrl String зворотний виклик, коли програма буде завершена, клієнт побачить кнопку для повернення на сайт, і клієнт буде перенаправлений на цей URL.
ipnUrl String URL-адреса сповіщення про миттєвий платеж
ipnSecret String рядок для створення безпечного хешу в ipn url
skipPreview Boolean пропустити крок підтвердження заявки
Приклад запиту
POST https://www.1cent.io/public/exchanger/order/create
Content-Type: application/json

{
  "routeId": "64a1f3...",
  "amount": 100,
  "lang": "ru",
  "agreement": true,
  "clientCallbackUrl": "https://your-merchant-site.com/callback",
  "ipnUrl": "https://your-merchant-site.com/ipn",
  "ipnSecret": "your_secret"
}
200 Результат
{
  status: "success",
  error: 0,
  data: {
    orderUID: 1409,
    orderId: "64a1f3...",
    orderSecret: "dGqwF2M2...",
    paymentUrl: "https://www.1cent.io/en/payment/1409/dGqwF2M2..."
  }
}

Отримати заявку

GET /public/exchanger/order/get
Параметр Тип Опис
orderUID Number числовий ID заявки
orderSecret String секрет заявки з відповіді /order/create
type String тип сторінки: payment або order
Приклад запиту
GET https://www.1cent.io/public/exchanger/order/get
  ?orderUID=1409
  &orderSecret="dGqwF2M2..."
  &type="payment"
200 Результат
{
  "orderUID": 1409,
  "orderId": "64a1f3...",
  "newStatus": "waitPayment",
  "inAmount": "100",
  "outAmount": "317.42",
  "xml_from": "ETH",
  "xml_to": "WMZ"
}

Оновити статус заявки

Використовується для підтвердження оплати при ручному методі — переводить заявку з waitPayment в inProgress.

PUT /public/exchanger/order/update-status
Параметр Тип Опис
orderUID Number числовий ID заявки
orderSecret String секрет заявки з відповіді /order/create
status String новий статус заявки (наприклад, inProgress)
Приклад запиту
PUT https://www.1cent.io/public/exchanger/order/update-status
Content-Type: application/json

{
  "orderUID": 1409,
  "orderSecret": "dGqwF2M2...",
  "status": "inProgress"
}
200 Результат
{
  "status": "success",
  "order": {
    "orderUID": 1409,
    "newStatus": "inProgress"
  }
}

IPN (Сповіщення про зміну статусу платіжного запиту)

Щоб отримувати сповіщення про зміну статусу заявки, при її створенні передайте параметри ipnUrl, ipnSecret, clientCallbackUrl та hideOutData. При зміні статусу сервер надішле POST-запит на ваш ipnUrl з такими даними:

POST https://your-merchant-site.com/ipn
Параметр Тип Опис
orderUID Number заявка uid
orderId String заявка id (ObjectId)
newStatus String заявка поточного статусу
inAmount String сума вхідного платежу
outAmount String сума вихідного платежу
xml_from String валюта відправлення
xml_to String валюта отримання
timestamp Number unix час і ipn сповіщення
toValues Array [{key, name, value}] — реквізити заявки
Створення заявки з IPN параметрами
POST https://www.1cent.io/public/exchanger/order/create
Content-Type: application/json

{
  "routeId": "64a1f3...",
  "amount": 100,
  "agreement": true,
  "ipnUrl": "https://your-merchant-site.com/ipn",
  "ipnSecret": "your_secret",
  "clientCallbackUrl": "https://your-merchant-site.com/callback",
  "hideOutData": false
}
Вхідний IPN запит
POST https://your-merchant-site.com/ipn
Content-Type: application/x-www-form-urlencoded

orderUID=1409
&orderId="5d8e6002b80b7b4cd75a6424"
&newStatus="done"
&inAmount="2"
&outAmount="317.42"
&xml_from="ETH"
&xml_to="WMZ"
&timestamp=1571328406072
&toValues=[{"key":"wallet","name":"Кошелёк","value":"Z123456789"}]
  1. IPN буде відправлено один раз
  2. Доставка IPN не гарантується (якщо сервер не відповів на запит, він не буде надіслан повторно)

Статус Опис
new нова заявка
waitPayment очікуємо платіж від користувача
errorPayment помилка платежу користувача (помилка відправки продавця)
inProgress у процесі (очікується обробка адміном чи оплата заявки)
inProgressPayout у черзі на оплату (платіж прийнято успішно) (якщо налаштовано автоматичний платіж у валюті, він буде ініціалізований)
errorPayout помилка платежу (помилка сталася під час оплати)
hold заявка заморожена (проблеми із додатком)
done заявка успішно виплачена
returned заявка була оплачена, але не всі умови обміну та способи повернення відправника були виконані
deleted заявка видалена (скасована)

Верифікація контрольної суми запиту (IPN)

checksum formula
sha256(orderId:newStatus:inAmount:outAmount:xml_from:xml_to:timestamp:ipnSecret)
checksum.js
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 / для відображення сторінки оплати

GET /{lang}/payment/{orderUID}/{orderSecret}
Приклад запиту
https://www.1cent.io/en/payment/1409/dGqwF2M2eBPaSN1G5ljMS1cb
200 Результат
HTTP/1.1 200 OK
Content-Type: text/html

<!-- Payment page for order #1409 -->
  • Також ви можете просто дати посилання на біржу так, як її бачать усі клієнти за тією ж схемою, що й у першому варіанті, крім /payment/, слід замінити на /order/
  • У методі є параметри, які дозволяють відображати платіжні дані або форму оплати на вашому сайті, яку ви можете використати. ВАЖЛИВО: якщо використовується метод передоплати, вам необхідно оновити статус замовлення з waitPayment до inProgress після оплати.