API для пополнения абонентских счетов провайдеров и продажи цифровых товаров в системе PayCenter
Версия: 2.1
Последнее обновление: 17 января 2024 года
API‑точка
https://API_URL/joinCashcom/api/cashcom_v2_1
Авторизуйтесь в вашем аккаунте и получите секретный токен.
Все запросы отправляются методом POST в формате JSON и должны содержать HTTP‑заголовки:
| Заголовок | Описание |
|---|---|
CashCom-PointId |
Номер точки продаж (выдаётся при генерации секретного токена). |
CashCom-Authorization-Type |
Тип авторизации: Keys или Token. В данной реализации используйте Token. |
CashCom-Signature |
Подпись запроса. Алгоритм формирования — см. Генерация подписи. |
# пример на Python
srcSign = secretToken + request + pointId + API_PUBLIC_TOKEN
sign = hashlib.sha512(srcSign.encode('utf-8')).hexdigest()
# пример на PHP
$srcSign = $secretToken.$request.$pointId.$API_PUBLIC_TOKEN;
$sign = hash('sha512', $srcSign);
// пример на Java
String srcSign = secretToken + request + pointId + API_PUBLIC_TOKEN;
MessageDigest md = MessageDigest.getInstance("SHA-512");
md.reset();
byte[] buf = srcSign.getBytes();
md.update(buf, 0, buf.length);
buf = md.digest();
StringBuilder builder = new StringBuilder();
for (byte b : buf) {
builder.append(String.format("%02x", b));
}
String signature = builder.toString();
Подпись вычисляется так:
srcSign = secretToken + request + pointId + API_PUBLIC_TOKEN
Далее строка srcSign хешируется алгоритмом SHA‑512.
| Поле | Описание |
|---|---|
secretToken |
Сгенерированный вами ранее секретный токен. |
request |
Тело запроса (JSON). |
pointId |
Идентификатор точки продаж. |
API_PUBLIC_TOKEN |
Публичный API‑токен (доступен после регистрации). |
curl -i -X POST https://API_URL/joinCashcom/api/cashcom_v2_1/ping -H 'CashCom-PointId: <YOUR_POINTID_HERE>' -H 'CashCom-Authorization-Type: Token' -H 'CashCom-Signature: <YOUR_SIGNATURE_HERE>' -H 'Content-Type: application/json' -d '{}'
Запрос не выполняет бизнес‑операций и служит только для проверки доступности сервера CashCom и корректности авторизации.
URL: https://API_URL/joinCashcom/api/cashcom_v2_1/ping
Пример ответа:
{
"code": 0,
"comment": "27.01.2024 14:55:16 EET ver. 2.1"
}
curl -i -X POST https://API_URL/joinCashcom/api/cashcom_v2_1/getprice -H 'CashCom-PointId: <YOUR_POINTID_HERE>' -H 'CashCom-Authorization-Type: Token' -H 'CashCom-Signature: <YOUR_SIGNATURE_HERE>' -H 'Content-Type: application/json' -d '{ "countryCode": "VN" }'
Возвращает список продуктов и их параметры.
URL: https://API_URL/joinCashcom/api/cashcom_v2_1/getprice
Пример ответа:
{
"code": 0,
"comment": "ok",
"products": [
{
"productPriceType": "FIXED",
"countryCodes": ["VN"],
"productCode": "13",
"categoryId": 1,
"providerName": "Gmobile Vietnam",
"name": "500000 VND",
"currency": "USD",
"price": 2778,
"fields": [
{
"name": "Account",
"code": "account",
"type": 1,
"regex_inputing": ".*",
"regex_complite": "\d{5,12}",
"direction": "Введите номер телефона без кода страны",
"display": true,
"confirm": false
}
]
}
// ... другие продукты
]
}
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
countryCode |
String | нет | Двухбуквенный код страны. |
productCode |
String | нет | Код продукта в системе CashCom. |
| Поле | Тип | Описание |
|---|---|---|
code |
Int | Код обработки запроса (см. Коды возврата). |
comment |
String | Комментарий к коду обработки. |
products |
List | Список объектов с описанием конфигурации продуктов. |
products.productCode |
String | Код продукта. |
products.productPriceType |
String | Тип цены (FIXED — фиксированная, RANGE — диапазон). |
products.countryCodes |
List | Список кодов стран. |
products.categoryId |
Int | Идентификатор категории. |
products.providerName |
String | Название провайдера. |
products.name |
String | Название продукта. |
products.currency |
String | Валюта (ISO 4217). |
products.price |
Int | Цена в минимальных единицах валюты (копейки). Только для FIXED. |
products.destCurrency |
String | Целевая валюта (только для RANGE). |
products.destCurrencyRate |
Double | Курс конвертации (только для RANGE). |
products.fields |
List | Поля для передачи провайдеру (номер телефона, счет и т. д.). |
products.fields.name |
String | Название поля. |
products.fields.code |
String | Код поля. |
products.fields.type |
Int | Тип поля: 1 — Int, 2 — String, 4 — Boolean, 5 — Select, 6 — Double, 7 — Calculate. |
products.fields.regex_inputing |
String | Регулярка для ввода. |
products.fields.regex_complite |
String | Регулярка для валидации. |
products.fields.direction |
String | Инструкция для ввода. |
products.fields.example |
String | Пример. |
products.fields.order |
Int | Порядок отображения. |
products.fields.display |
Boolean | Отображать поле. |
products.fields.confirm |
Boolean | Подтверждать значение. |
products.fields.def |
String | Значение по умолчанию. |
products.fields.formula |
String | Скрипт для вычисления (JS). |
products.fields.selects |
List | Возможные значения (для Select). |
products.fields.selects.name |
String | Название значения. |
products.fields.selects.value |
String | Значение. |
curl -i -X POST https://API_URL/joinCashcom/api/cashcom_v2_1/validate -H 'CashCom-PointId: <YOUR_POINTID_HERE>' -H 'CashCom-Authorization-Type: Token' -H 'CashCom-Signature: <YOUR_SIGNATURE_HERE>' -H 'Content-Type: application/json' -d '{
"orders": [{
"id": "125358",
"date": 1706409044132,
"productCode": "201",
"amount": 100,
"currency": "USD",
"attr": {
"account": "209407828"
}
}]
}'
Запрос проверки заказа выполняется перед покупкой для проверки доступности продукта и корректности параметров.
URL: https://API_URL/joinCashcom/api/cashcom_v2_1/validate
Пример ответа:
{
"code": 0,
"comment": "ok",
"validateResults": [
{
"id": "125358",
"code": 0,
"needNextStep": false,
"comment": "Successfully"
}
]
}
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
orders |
List | да | Список заказов. |
orders.id |
String | да | Идентификатор заказа. |
orders.date |
Long | да | Время отправки (ms с 01.01.1970). |
orders.productCode |
String | да | Код продукта. |
orders.currency |
String | да | Валюта (ISO 4217). |
orders.amount |
Int | нет | Цена для RANGE (min units). |
orders.attr |
Map | нет | Доп. параметры заказа (см. описание в Получить прайс-лист). |
| Поле | Тип | Описание |
|---|---|---|
code |
Int | Код обработки (см. Коды возврата). |
comment |
String | Комментарий. |
validateResults |
List | Список результатов валидации. |
validateResults.id |
String | Идентификатор заказа. |
validateResults.code |
Int | Код проверки (см. Коды валидации). |
validateResults.comment |
String | Комментарий по проверке. |
validateResults.needNextStep |
Boolean | Флаг необходимости повторной проверки. |
validateResults.attr |
Map | Зарезервированные атрибуты (см. ниже). |
curl -i -X POST https://API_URL/joinCashcom/api/cashcom_v2_1/purchase -H 'CashCom-PointId: <YOUR_POINTID_HERE>' -H 'CashCom-Authorization-Type: Token' -H 'CashCom-Signature: <YOUR_SIGNATURE_HERE>' -H 'Content-Type: application/json' -d '{
"orders": [{
"id": "125357",
"date": 1706361413172,
"productCode": "1269.3885",
"currency": "USD",
"attr": {
"account": "377384504"
}
}]
}'
Запрос purchase отправляет заказы и возвращает их статус.
URL: https://API_URL/joinCashcom/api/cashcom_v2_1/purchase
Пример ответа:
{
"code": 0,
"comment": "ok",
"statuses": [
{
"id": "125357",
"status": 1,
"isfinal": false,
"comment": "Processing"
}
]
}
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
orders |
List | да | Список заказов. |
orders.id |
String | да | Идентификатор заказа. |
orders.date |
Long | да | Время отправки (ms с 01.01.1970). |
orders.productCode |
String | да | Код продукта. |
orders.currency |
String | да | Валюта (ISO 4217). |
orders.amount |
Int | нет | Цена для RANGE. |
orders.attr |
Map | нет | Дополнительные параметры заказа. |
| Поле | Тип | Описание |
|---|---|---|
code |
Int | Код обработки (см. Коды возврата). |
comment |
String | Комментарий. |
statuses |
List | Список статусов заказов. |
statuses.id |
String | Идентификатор заказа. |
statuses.status |
Int | Код статуса (см. Статусы заказа). |
statuses.isfinal |
Boolean | Флаг финального статуса. |
statuses.comment |
String | Комментарий к статусу. |
statuses.attr |
Map | Зарезервированные атрибуты заказа (см. ниже). |
curl -i -X POST https://API_URL/joinCashcom/api/cashcom_v2_1/getstatus -H 'CashCom-PointId: <YOUR_POINTID_HERE>' -H 'CashCom-Authorization-Type: Token' -H 'CashCom-Signature: <YOUR_SIGNATURE_HERE>' -H 'Content-Type: application/json' -d '{ "statuses": [{ "id": "125357" }] }'
Запрос getstatus получает текущие статусы заказов.
URL: https://API_URL/joinCashcom/api/cashcom_v2_1/getstatus
Пример ответа:
{
"code": 0,
"comment": "ok",
"statuses": [
{
"id": "125357",
"status": 100,
"isfinal": true,
"comment": "Success"
}
]
}
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
statuses |
List | да | Список объектов с полем id. |
statuses.id |
String | да | Идентификатор заказа. |
| Поле | Тип | Описание |
|---|---|---|
code |
Int | Код обработки (см. Коды возврата). |
comment |
String | Комментарий. |
statuses |
List | Список статусов заказов. |
statuses.id |
String | Идентификатор заказа. |
statuses.status |
Int | Код статуса (см. Статусы заказа). |
statuses.isfinal |
Boolean | Флаг финального статуса. |
statuses.comment |
String | Комментарий к статусу. |
statuses.attr |
Map | Зарезервированные атрибуты заказа (см. ниже). |
Коды возврата определяют результат обработки запроса.
Внимание! Эти коды описывают только результат запроса, статус заказа см. в Статусы заказа.
| Код | Описание |
|---|---|
| 0 | Запрос успешно обработан. |
| 1 | Неверная подпись запроса. |
| 2 | Неверные параметры запроса. |
| 3 | Нет прав на выполнение этой операции. |
| 100 | Другая ошибка. |
Коды статусов заказа определяют текущее состояние заказа.
| Код | Финальный | Описание |
|---|---|---|
| 0 | да | Заказ не найден. |
| 1 | нет | Заказ в обработке. |
| 2 | да | Заказ отклонён. |
| 3 | да | Заказ отменён. |
| 4 | нет | Статус заказа неизвестен, повторите запрос позже. |
| 100 | да | Заказ выполнен успешно. |
Коды валидации определяют результат проверки заказа с помощью запроса validate.
| Код | Описание |
|---|---|
| 0 | Успешная валидация. |
| 1 | Неверные данные. |
| 2 | Неверное значение amount. |
| 3 | Неверное значение amountIn. |
| 4 | Неверное значение currency. |
| 5 | Продукт временно недоступен, попробуйте позже. |
| 6 | Продукт не найден или не подключён к точке. |
| 7 | Точка заблокирована. |
| 8 | Общая ошибка. |
Ниже список зарезервированных атрибутов, передаваемых в поле attr ответа.
| Ключ | Описание |
|---|---|
customer_pin_number |
PIN‑код предоплаченной карты. |
serial_nr |
Серийный номер PIN‑кода предоплаченной карты. |
screen_info |
Информация для отображения продукта покупателю. |
receipt_text |
Информация для печати на чеке. |
transaction_id |
Идентификатор транзакции у конечного провайдера. |
Штаб-квартира
Rm 301 Unit C, 2/F, Kwong On Bank Mongkok Branch Bldg 728-730, Nathan Rd Kln, Hong Kong
sale@cashcom.net