Документация CashCom TopUp PayCenter API

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‑токен (доступен после регистрации).

Ping

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

Email

sale@cashcom.net

Напишите нам