Інтеграція з сервісом 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"
}{
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"{
"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"
}{
"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}] — реквізити заявки |
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
}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"}]- IPN буде відправлено один раз
- Доставка IPN не гарантується (якщо сервер не відповів на запит, він не буде надіслан повторно)
| Статус | Опис |
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 / для відображення сторінки оплати
GET /{lang}/payment/{orderUID}/{orderSecret}
https://www.1cent.io/en/payment/1409/dGqwF2M2eBPaSN1G5ljMS1cbHTTP/1.1 200 OK
Content-Type: text/html
<!-- Payment page for order #1409 -->- Також ви можете просто дати посилання на біржу так, як її бачать усі клієнти за тією ж схемою, що й у першому варіанті, крім /payment/, слід замінити на /order/
- У методі є параметри, які дозволяють відображати платіжні дані або форму оплати на вашому сайті, яку ви можете використати. ВАЖЛИВО: якщо використовується метод передоплати, вам необхідно оновити статус замовлення з waitPayment до inProgress після оплати.