Интеграция с сервисом 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 cоглашение
hideOutData Boolean cкрыть реквизиты
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 после оплаты.