Процесс работы

Шаг 1 - Создайте заказ



Для доступа к API необходимо обратиться к нашим контактным лицам с запросом на получение ключа API_KEY. После получения ключа, вам потребуется включить его в заголовки (headers) запросов веб-интерфейса следующим образом:



api-key: <API_KEY>


Для создания заказа первоначально требуется отправить POST-запрос методом HTTP с телом, содержащим данные в формате JSON, по следующему URL-адресу:


https://api-dev.asadalpay.com/api/orders/create-order

Пример JSON, который нужно приложить к телу запроса:


{
  "products": [
    {
      "name": "Шоколад",
      "price": 200,
      "quantity": 2
    },
    {
      "name": "Очки",
      "price": 2000,
      "quantity": 4
    }
  ],
  "currency": "KZT",
  "external_id": "string",
  "description": "Оплата за груз",
  "attempts": 5,
  "mcc": "5533",
  "capture_method": "HOLD",
  "back_url": "https://asadalpay.com",
  "notify_url": "https://asadalpay.com"
}

Поля содержат следующие данные:


ПолеТип данныхОписание
productsarrayСписок покупок
currencystringВалюта оплаты
external_idstringID заказа в вашей системе
descriptionstringОписание заказа
attemptsintМаксимальное количество попыток оплаты по этому заказу
mccstringКод вида торговой точки
capture_methodstringМетод платежа
back_urlstringСсылка на которую надо перенаправить после успешного платежа
notify_urlstringВебхук на который прилетает данные после оплаты

Структура объекта products:



{
  "name": "Шоколад",
  "price": 200,
  "quantity": 2
}


Поля должны содержать следующие данные:


ПолеТип данныхОписание
namestringНазвание продукта
pricefloatЦена продукта
quantityintКоличество

Шаг 2 - Перенаправьте клиента на платежную форму



После POST запроса вы должны получить JSON со следующим телом:


{
  "created_at": "2023-10-17T22:09:47.971488",
  "updated_at": "2023-10-17T22:09:47.971488",
  "uuid": "f629ce3a-08b7-4be1-9121-371f59ddcc7a",
  "amount": 8400,
  "back_url": "https://asadalpay.com",
  "notify_url": "https://asadalpay.com",
  "description": "Оплата за груз",
  "status": "UNPAID",
  "currency": "KZT",
  "checkout_url": "http://pay-dev.asadalpay.com/checkout/
  f629ce3a-08b7-4be1-9121-371f59ddcc7a",
  "external_id": "string",
  "receiver": "merchant_test",
  "products": [
    {
      "name": "Шоколад",
      "price": 200,
      "quantity": 2
    },
    {
      "name": "Очки",
      "price": 2000,
      "quantity": 4
    }
  ]
}

Поля должны содержать следующие данные:


ПолеТип данныхОписание
created_atstringВремя создания заказа
updated_atstringВремя обновления заказа
uuidstringuuid заказа
amountfloatСумма заказа
back_urlstringСтраница перенаправления
notify_urlstringВебхук для обратного ответа
descriptionstringОписание заказа
statusstringСтатус заказа
currencystringВалюта заказа
checkout_urlstringСсылка на форму оплаты
external_idstringId мерчанта
receiverstringНазвание мерчанта
productsarrayСписок продуктов заказа

Поле checkout_url содержит ссылку на страницу оплаты по которому перейдет конечный клиент и указав платежные данные совершит покупку


Платежная форма выглядит следующим образом:



Шаг 3 - Получите результаты оплаты



Заказ можно считать успешным, как только он перешел в статус PAID в зависимости от способа списания денег.


Если пользователь передумает платить или что-то пойдет не так, заказ останется в статусе UNPAID.


Также вы можете следить за статусом, запрашивая информацию о заказе удобной для вас периодичностью. Для этого вам понадобится идентификатор заказа — значение параметра uuid в созданном объекте заказа.


GET: https://api-dev.asadalpay.com/api/orders/{order_uuid}

Подтверждение заказа


В случае если при создании заказа была указана поле HOLD в capture_method то после оплаты происходит холдирование платежа со статусом «Удержание» (IN_HOLD). После чего необходимо будет её подтвердить в личном кабинете в CRM-системе либо через API.


Request


POST запрос по следующему url:


https://api-dev.asadalpay.com/api/orders/confirm/{order_uuid}

// Body

{
    "reason" : "{причина подтверждение}"
}

// Headers:

"api-key": "eyJhbGciO..."



Response


{
        "name": "CONFIRM", (Название транзакции),
        "payment_status": "CONFIRMED", (Статус платежа),
        "status": "SUCCEEDED", (Статус транзакции),
        "error_code": "", (Код ошибки),
        "error_description": "", (Описание ошибки)
}

Отмена платежа


Если заказ был создан, оплачен и захолдирован (capture_method) то его можно отменить если не было совершено подтверждение. Отменить платеж можно в личном кабинете в CRM-системе либо через API.


Request


POST запрос по следующему url:


https://api-dev.asadalpay.com/api/orders/cancel/{order_uuid}

// Body

{
"reason" : "{причина отмены}"
}

// Headers:

"api-key": "eyJhbGciO..."


Response


{
        "name": "CANCEL", (Название транзакции),
        "payment_status": "CANCELLED", (Статус платежа),
        "status": "SUCCEEDED", (Статус транзакции),
        "error_code": "", (Код ошибки),
        "error_description": "", (Описание ошибки)
}

Возврат отмененного платежа


Если заказ был оплачен, подтвержден и необходимо совершить возврат (refund). Возврат платежа можно совершить в личном кабинете CRM-системы либо через API:


Request


POST запрос по следующему url:


https://api-dev.asadalpay.com/api/orders/refund/{order_uuid}

// Body

{
    "reason" : "{причина возврата}"
}

// Headers:

"api-key": "eyJhbGciO..."


Response


{
        "name": "REFUND", (Название транзакции),
        "payment_status": "REFUNDED", (Статус платежа),
        "status": "SUCCEEDED", (Статус транзакции),
        "error_code": "", (Код ошибки),
        "error_description": "", (Описание ошибки)
}

Фильтрация платежей


Можно произвести фильтрацию платежей через API. Фильтрация производится по следующим полям:


1. Статуc:


Query: status


  • CONFIRMED - Подтвержден
  • IN_HOLD - Захолдирован
  • DECLINED - Отклонен
  • TDS_AUTH_REQUIRED - На стадии 3ds
  • CANCELLED - Отменен
  • REFUNDED - Возвращен

2. Дата:


Query:


  • from-date - фильтрация платежей от этой даты. В формате %Y-%m-%d. Например, 2023-06-12
  • to-date - фильтрация платежей до этой даты. В формате %Y-%m-%d. Например, 2023-06-16

3. Сумма:


Query:


  • min-amount - минимальная сумма для фильтрации
  • max-amount - максимальная сумма для фильтрации

4. UUID:


Query:


  • uuid - идентификатор платежа
  • order-uuid - платежи по id заказу

5. Платежным системам:


Query:


  • card_system - фильтрации по МПС (значения могут быть VISA, MASTERCARD)

Request


Необходимо поля отправить как Query. Обязательное поле: page (номер страницы)

GET запрос по следующему url:


https://api-dev.asadalpay.com/api/transactions?page=1&limit=10 \\ Headers
"api-key": "eyJhbGciO..."

Response


  • total_pages - это общее количество страниц

  • payments - платежи

  • created_at - дата создания платежа

  • updated_at - дата обновления платежа

  • merchant_name - название мерчанта

  • email - почта пользователя

  • amount - сумма заказа

  • order_uuid - идентификатор заказа

  • status - статус платежа

  • uuid - идентификатор платежа

  • total_fee_amount - общая сумма комиссии

  • card_system - МПС

  • reimbursement_amount - сумма возмещения за минусом комиссии

  • transactions - история действия с платежем

  • created_at - дата создания

  • updated_at - дата обновления

  • name - название транзакции (

    • REFUND - Транзакция Возврата
    • CANCEL -Транзакция отмены
    • CONFIRM - Транзакция Подтверждения
    • INIT_HOLD - Транзакция двухфакторного платежа
    • INIT_AUTO_PAYMENT - Транзакция однофакторного платежа )
  • error_code - код ошибки

  • error_description - описание ошибки



{
  "total_pages": 6,
  "payments": [
    {
      "created_at": "2024-02-12T15:49:29.229051",
      "updated_at": "2024-02-12T16:48:34.789161",
      "merchant_name": "testmerchant",
      "email": "test122@mail.ru",
      "amount": 400.51,
      "order_uuid": "bdab8978-4180-47db-8bf4-c7dfdb04ead8",
      "status": "REFUNDED",
      "uuid": "77c76550-ff57-4cbc-87fe-c0afef607f44",
      "total_fee_amount": 0,
      "card_system": "VISA",
      "reimbursement_amount": 400.51,
      "transactions": [
        {
          "created_at": "2024-02-12T15:49:29.229051",
          "updated_at": "2024-02-12T15:49:29.266188",
          "name": "INIT_AUTO_PAYMENT",
          "status": "SUCCEEDED",
          "error_code": null,
          "error_description": null
        },
        {
          "created_at": "2024-02-12T16:48:34.767161",
          "updated_at": "2024-02-12T16:48:34.789161",
          "name": "REFUND",
          "status": "SUCCEEDED",
          "error_code": null,
          "error_description": null
        }
      ]
    },
  ]
}