🌐 Интеграция размещенной страницы оформления заказа
Интеграция с размещенной страницей оформления заказа HaloPay. Клиенты перенаправляются на страницу оформления заказа, размещенную в HaloPay. Самая простая интеграция с минимальной работой интерфейса (front-end).
📦 Шаг 1: Создание платежного ордера
Отправить платежный ордер и получить адрес платежа
**POST** https://api.pay.halochat.io/api/entrust/pre-create
Возвращает адрес получения/QR-код и информацию о заказе
Headers
| Имя | Тип | Описание |
|---|---|---|
| X-Sign* | String | hmacSHA256 (body (json string)+timestamp+appKey). Руководство по подписи. |
| X-Timestamp* | String | Временная метка в секундах (10 цифр). Запрос действителен в течение двух минут. |
| X-Appid* | String | Уникальные учетные данные продавца. Найдите это на странице AppManage. |
| content-type* | String | application/json |
Тело запроса (Body)
| Имя | Тип | Обязательно | Описание |
|---|---|---|---|
| out_trade_no | String | Да | ID заказа в системе продавца. Уникальный ID для каждого заказа |
| symbol | String | Да | Символ фиатной валюты |
| amount | String | Да | Сумма (округленная до 2 знаков после запятой) |
| name | String | Нет | Название продукта |
| image | String | Нет | URL-адрес изображения продукта |
| describe | String | Нет | Описание продукта |
| time_expire | String | Нет | Время истечения срока действия (в секундах), 0 означает значение по умолчанию |
| callback_url | String | Нет | URL обратного вызова (callback url) |
Пример тела запроса
{
"out_trade_no": "uz54NEW9TVhLSIDHUSYB4aEFupKoE7I8",
"symbol": "USD",
"amount": "15",
"name": "PRODUCT_NAME",
"image": "https://callback.com/logo.png",
"describe": "CHECKOUT_DESCRIPTION",
"time_expire": 1773750780,
"callback_url": "https://callback.com/"
}
Ответ (Успешно 200)
Header
| Имя | Значение | Обязательно | Тип | Описание |
|---|---|---|---|---|
| X-Appid | h3j6k9m2n... | Y | String | Уникальные учетные данные продавца. Найдите это на странице AppManage. |
| X-Timestamp | 1677152490 | Y | String | Временная метка в секундах (10 цифр). Запрос действителен в течение двух минут. |
| X-Sign | e0b78d93... | Y | String | hmacSHA256 (body (json string)+timestamp+appKey). Руководство по подписи. |
Body
{
"code": 0,
"msg": "success",
"data": {
"url": "https://checkout.pay.halochat.io/202603172021145994e1572e91672b34",
"time_expire": 1773750780,
"trade_no": "202603172021145994e1572e91672b34"
}
}
Параметры
| Имя | Значение | Обязательно | Тип | Описание |
|---|---|---|---|---|
| code | 0 | true | Integer | |
| message | success | true | String | |
| data | true | Object | ||
| data.url | https://checkout.pay.halochat.io/202603172021145994e1572e91672b34 | true | String | Адрес веб-страницы, используемой для оплаты |
| data.time_expire | 1773754032 | true | Integer | Крайний срок оплаты |
| data.trade_no | 202603172021145994e1572e91672b34 | true | String | ID заказа HaloPay |
Ответ (Сбой 200)
{
"code": 10003,
"msg": "Params Error: Invalid amount",
"data": null
}
| Имя | Значение | Обязательно | Тип | Описание |
|---|---|---|---|---|
| code | 10003 | true | Number | |
| msg | Service error, please try again | true | String | |
| data | true | Object |
В качестве меры безопасности мы подписываем возвращаемые данные (и согласно этому должен быть подписан только { code: 0 }, но подписывается все возвращаемое тело). Кроме того, в заголовке ответа будут возвращены Appid, Sign, Timestamp. Метод подписи: hmacSHA256 (body (json string)+timestamp+appKey). Пожалуйста, используйте данные с осторожностью, если проверка подписи не удалась. Это указывает на то, что данные были подделаны.
Тело HTTP — это json строка. Добавьте содержимое тела HTTP в подпись. Убедитесь, что содержимое тела совпадает с содержимым подписи. Как только HaloPay получит запрос, содержимое тела будет прочитано, а подпись проверена.