Интеграция с сервисом 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"
}{
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 после оплаты.