Перейти к содержанию

UPI

Вариант интеграции PZ

Описание процесса оплаты

  1. Плательщик выбирает UPI в качестве способа оплаты.
  2. Торговец запрашивает номер кошелька у PaySage.io и отображает его клиенту.
  3. Плательщик делает перевод на указанный кошелек.
  4. Плательщик копирует идентификатор транзакции из квитанции и вводит его на платежной форме торговца.
  5. Торговец создает платеж через PaySage.io API и передает идентификатор транзакции.
  6. Далее PaySage.io активирует платеж и уведомляет торговца, когда транзакция будет завершена.

Для этого варианта интеграции поддерживаются следующие типы транзакций:


Запрос номера кошелька

Запрос

Отправьте GET запрос на https://api.paysage.io/beyag/pkm/upi/wallet/{currency}, где {currency} - это валюта в формате ISO-4217, например USD.

Ответ

В ответ будет получен статус код 200, если запрос был обработан успешно, или не успешно.

Пример успешного ответа
{
  "wallet": "123456789",
  "status": "ok"
}
Пример ответа в случае ошибки
{
  "status": "fail",
  "message": "An error has occurred while fetching a wallet. Try again later, please."
}

Оплата

Запрос

Note

Поддерживаемые валюты и страны уточняйте у аккаунт менеджера.

После того как плательщик отправит вам идентификатор транзакции, необходимо отправить запрос оплаты со следующими данными:

object
object
Секция параметров способа оплаты.
type
обязательный
string
upi
account
условно обязательный
string
Аккаунт в UPI. Обратитесь в Службу технической поддержки за более подробной информацией.
object
Cекция, содержащая дополнительную информацию о плательщике.
email
обязательный
string
Адрес электронной почты покупателя.
first_name
условно обязательный
string
Имя покупателя. Обратитесь в Службу технической поддержки за более подробной информацией.
last_name
условно обязательный
string
Фамилия покупателя. Обратитесь в Службу технической поддержки за более подробной информацией.
object
Cекция, содержащая дополнительную информацию о платеже.
transaction_id
условно обязательный
string
Идентификатор транзакции, полученный от покупателя. Обратитесь в Службу технической поддержки за более подробной информацией.
Ответ

Секция upi из ответа на запрос будет иметь все те же параметры, что были присланы в запросе, а также один дополнительный параметр form с необходимыми параметрами, чтобы сформировать веб-форму для перехода на оплату.


Выплата средств

Запрос

Info

Дробная часть суммы игнорируется. Например, если передан amount = 123456, тогда актуальный amount будет 123400.

Отправьте запрос выплаты средств со следующими данными:

object
object
Секция параметров способа выплаты.
type
обязательный
string
imps_ib
channel
обязательный
string
Идентификатор или адрес электронной почты пользователя, для которого проводится выплата средств.
account
обязательный
string
Номер счета получателя.
account_name
обязательный
string
Имя держателя счета.
bank_code
обязательный
string
Уникальный идентификатор, присваиваемый центральным банком страны. Код IFSC.
Ответ

Секция imps_ib из ответа на запрос будет иметь все те же параметры, что были присланы в запросе.

Вариант интеграции PF

Для этого варианта интеграции поддерживается тип транзакций оплата:


Оплата

Описание процесса оплаты

  1. Покупатель выбирает UPI в качестве способа оплаты на сайте торговца и указывает свой VPA (Virtual Payment Address).
  2. Торговец отправляет запрос оплаты в PaySage.io, указав VPA покупателя.
  3. PaySage.io возвращает торговцу статус оплаты: pending или failed.
  4. Покупатель получает запрос подтверждения оплаты в своем аккаунте приложения UPI.
  5. Покупатель подтверждает оплату в приложении UPI.
  6. PaySage.io высылает торговцу автоматическое уведомление со статусом successful, failed или pending.
Запрос

Отправьте запрос оплаты, указав следующие дополнительные параметры:

object
object
Секция параметров способа оплаты.
type
обязательный
string
upi
account
обязательный
string
VPA/ UPI ID покупателя.
object
Секция информации о покупателе.
first_name
обязательный
string (30)
Имя покупателя.
last_name
обязательный
string(30)
Фамилия покупателя.
state
обязательный
string (2)
Штат покупателя. Укажите 2 последних символа из геокода формата ISO 3166-2.
city
обязательный
string
Город покупателя.
zip
обязательный
string (6)
Почтовый индекс покупателя.
address
обязательный
string (100)
Адрес покупателя.
phone
обязательный
string (14)
Номер телефона покупателя.
email
обязательный
string
Адрес электронной почты покупателя.
Пример запроса
{
    "request": {
        "amount": 10042,
        "currency": "INR",
        "description": "description",
        "test": false,
        "customer": {
            "first_name": "John",
            "last_name": "Doe",
            "state": "KA",
            "city": "Bangalore",
            "zip": "560002",
            "address": "1st Street",
            "phone": "17777777777",
            "email": "user@example.com"
        },
        "method": {
            "type": "upi",
            "account": "1234"
        }
    }
}
Ответ

Секция upi в ответе будет содержать те же параметры, что и в запросе.

Вариант интеграции PF (QR)

Оплата

Описание процесса оплаты

  1. Покупатель выбирает UPI в качестве способа оплаты на сайте торговца и указывает свой VPA (Virtual Payment Address).
  2. Торговец отправляет запрос оплаты в PaySage.io, указав VPA покупателя.
  3. PaySage.io возвращает торговцу ответ с тремя ссылками:

    • ссылка на QR-код;
    • deeplink для перенаправления покупателя в приложение UPI;
    • ссылка на веб-страницу, где размещена и ссылка для перехода в приложение UPI, и QR-код.
  4. Торговец перенаправляет покупателя на одну из ссылок из ответа.

  5. Покупатель завершает оплату в приложении UPI.
  6. PaySage.io высылает торговцу автоматическое уведомление со статусом транзакции.
Запрос

Отправьте запрос оплаты, указав следующие дополнительные параметры:

object
return_url
обязательный
string
URL, на который будет перенаправлен покупатель после завершения транзакции в платёжной системе.
object
Секция параметров способа оплаты.
type
обязательный
string
upi_qr_deeplink
account
обязательный
string
VPA/ UPI ID покупателя.
object
Секция информации о покупателе.
first_name
обязательный
string
Имя покупателя.
last_name
обязательный
string
Фамилия покупателя.
state
обязательный
string (2)
Штат покупателя. Укажите 2 последних символа из геокода формата ISO 3166-2.
city
обязательный
string
Город покупателя.
zip
обязательный
string (6)
Почтовый индекс покупателя.
address
обязательный
string (100)
Адрес покупателя.
phone
обязательный
string (14)
Номер телефона покупателя.
email
обязательный
string
Адрес электронной почты покупателя.
Пример запроса
{
  "request": {
    "amount": 20000,
    "currency": "INR",
    "description": "description",
    "duplicate_check": false,
    "test": false,
    "expired_at": "2026-01-01T15:00:00+01:00",
    "tracking_id": "your_uniq_number",
    "ip": "127.0.0.1",
    "language": "en",
    "notification_url": "https://merchant.ltd/notification",
    "return_url": "https://merchant.ltd/return",
    "customer": {
      "first_name": "John",
      "last_name": "Doe",
      "middle_name": "Mid",
      "country": "IN",
      "state": "KA",
      "city": "Bangalore",
      "zip": "560002",
      "address": "1st Street",
      "phone": "17777777777",
      "device_id": "12312312321fff67",
      "email": "example@example.com"
    },
    "method": {
      "account": "BE11-EF898-251F-A949",
      "type": "upi_qr_deeplink"
    }
  }
}
Ответ

Отправьте покупателя на один из следующих URL-адресов:

  • additional_data.payment_method.qr_code – чтобы отобразить покупателю QR-код для сканирования мобильным устройством;
  • additional_data.payment_method.deeplink – чтобы перенаправить покупателя в приложение UPI;
  • form.action – чтобы перенаправить покупателя на HTML страницу, где размещены и QR-код и кнопка перехода в приложение UPI.
Пример ответа
{
  "transaction": {
    "uid": "05482b9d-2ec9-4844-8763-55fc3195c9ef",
    "type": "payment",
    "status": "pending",
    "amount": 20000,
    "currency": "INR",
    "description": "description",
    "created_at": "2025-07-12T10:07:52Z",
    "updated_at": "2025-07-12T10:07:52Z",
    "method_type": "upi_qr_deeplink",
    "receipt_url": "https://backoffice.paysage.io/customer/transactions/05482b9d-2ec9-4844-8763-55fc3195c9ef/27b5379b2b6796c4d9ef9f2d850000190fac077da124f4d8b14e370b4a737c27?language=en",
    "payment": {
      "status": "pending",
      "gateway_id": 5374,
      "ref_id": "178648809",
      "message": "Transaction was initialized"
    },
    "upi_qr_deeplink": {
      "type": "upi_qr_deeplink",
      "account": "BE11-EF898-251F-A949"
    },
    "customer": {
      "zip": "560002",
      "city": "Bangalore",
      "email": "example@example.com",
      "phone": "17777777777",
      "state": "KA",
      "address": "1st Street",
      "country": "IN",
      "device_id": "12312312321fff67",
      "last_name": "Doe",
      "first_name": "John",
      "middle_name": "Mid",
      "ip": "127.0.0.1"
    },
    "manually_corrected_at": null,
    "version": 1,
    "message": "Transaction was initialized",
    "tracking_id": "your_uniq_number",
    "test": false,
    "language": "en",
    "expired_at": "2026-01-01T14:00:00Z",
    "billing_address": {
      "zip": "560002",
      "city": "Bangalore",
      "email": "example@example.com",
      "phone": "17777777777",
      "state": "KA",
      "address": "1st Street",
      "country": "IN",
      "device_id": "12312312321fff67",
      "last_name": "Doe",
      "first_name": "John",
      "middle_name": "Mid"
    },
    "additional_data": {
      "payment_method": {
        "type": "alternative",
        "qr_code": "data:image/png;base64,",
        "deeplink": "upi:/"
      }
    },    
    "gateway": {
      "iframe": false
    },
    "form": {
      "action": "https://api.paysage.io/beyag/transactions/redirect/05482b9d-2ec9-4844-8763-55fc3195c9ef",
      "method": "GET",
      "fields": []
    }
  }
}