Перейти к основному содержимому

Получение платежных методов

Платежный метод - сущность, которая хранит в себе всю информацию о предстоящем платеже.

Для начала работы необходимо сделать запрос на получение платежного метода, подставив id платежного метода в URL.

Swagger - подробное API платежных методов.

Механика работы

  1. Подключить платежные методы в системе FirstPay к своему мерчанту.
  2. Данные по платежному методу можно получить по запросу POST https://{firstpay_url}/api/payment_methods/v1/{id}.
  3. Важно!!! Запрос за получением информации о платежном методе необходимо делать каждый раз перед тем как пользователь попадет на страницу платежа. Так как информация в платежном методе динамическая (поле account), необходимо ее актуализировать каждый раз. То есть когда пользователь заходит на страницу платежных методов или выбирает "иконку" одного из платежных методов - необходимо послать запрос в FirstPay и получить актуальную информацию по платежному методу.

API

Для получения платежного метода по id: POST запрос https://{firstpay_url}/api/payment_methods/v1/{id}.

Таблица query параметров:

ПараметрТипОписаниеПример
typearray[string]У параметра есть два значения PAY_IN и PAY_OUT. Это тип платежного метода. Параметр не передается при запросе платежного метода по id..../v1?type=PAY_IN
localestringВозможные значения: en, hi, bn, az и другие. Параметр используется для локализации данных по заполняемым полям. Если не передавать параметр, то по дефолту переводы будут на en..../v1?locale=ru

Таблица body параметров:

ПараметрТипОписание
publicKeystringАвторизация
merchantPaymentIdstringИдентификатор платежа в системе мерчанта
merchantUserIdstringИдентификатор пользователя в системе мерчанта
amountfloatСумма платежа
levelenumСообщает о виде направляемого трафика, принимает два возможных значения: FTD (first time deposit), STD (second time deposit) (опционально)
hashstringАвторизация

Таблица возвращаемых ответов:

codeТело ответаОписание
200Платежный методПри успешном запросе возвращаются данные по платежному методу (либо массив платежных данных, в зависимости от вызванного метода).
400{"error": "some text here..."}Ошибка возникает, если не удалось распарсить тело запроса и query параметры. (скорее всего они были переданы с ошибкой).
401{"error": "NO_LOGIN"}Ошибка возникает, если не передали в теле запроса поле publicKey.
401{"error": "NO_TOKEN"}Ошибка возникает, если не передали в теле запроса поле hash.
401{"error": "NO_KEY"}Ошибка возникает, если передан неправильный publicKey.
401{"error": "UNAUTHORIZED"}Ошибка возникает, если произошла ошибка при валидации publicKey и hash.
404{"error": "ACCOUNT_NOT_FOUND"}Ошибка возникает, когда в системе нет свободного аккаунта, куда можно отправлять средства в данный момент.
404{"error": "NOT_FOUND"}Ошибка возникает при запросе платежного метода по id, если такого метода нет в системе.
500{"error": "some text here..."}Ошибка возникает, когда сервер не смог обработать запрос и произошла какая-то не штатная ситуация.

Описание полей платежного метода

Интерфейс платежного метода:

{
"id": "string",
"type": "PAY_IN",
"name": "string",
"currency": "string",
"logoUrl": "string",
"minPaymentAmount": 0,
"maxPaymentAmount": 0,
"isAttachmentRequired": true,
"detailFieldsHint": "string",
"clientFieldsHint": "string",
"clientFields": [
{
"key": "string",
"name": "string",
"validation": {
"type": "string",
"minLength": 0,
"maxLength": 0
}
}
],
"account": {
"id": 0,
"detailFields": [
{
"key": "string",
"name": "string",
"value": "string"
}
]
}
}

Таблица с описанием всех полей:

ПолеТипОписание
idStringID платежного метода.
typeEnumТип платежного метода. Значениями этого поля могут быть либо PAY_IN, либо PAY_OUT. PAY_IN - для дебетов, PAY_OUT - для выплат.
nameStringНазвание платежного метода.
currencyEnumISO код валюты: USD, INR, BDT, PKR и тд.
logoUrlStringURL логотипа платежного метода.
minPaymentAmountNumberМинимально допустимый размер платежа. Важно!: эта настройка устанавливается либо мерчантом, либо платежным методом. Предполагается, что это ограничение на ввод будет на стороне формы оплаты. Так как API метод на отправку платежа не имеет ограничения.
maxPaymentAmountNumberМаксимально допустимый размер платежа. Важно!: эта настройка устанавливается либо мерчантом, либо платежным методом Предполагается, что это ограничение на ввод будет на стороне формы оплаты. Так как API метод на отправку платежа не имеет ограничения.
isAttachmentRequiredBooleanНеобходимо ли при создании пеймента указывать поле attachmentId.
detailFieldsHintStringХинт/Подсказка к набору полей из объекта account.
clientsFieldsHintStringХинт/Подсказка к набору полей из объекта clientFields.
clientFieldsArrayМассив полей-инпутов для ввода данных клиента. Каждое поле содержит свой тип и валидацию.
keyStringИдентификатор/id поля, он пригодится при отправке платежа после заполнения формы.
nameStringНазвание инпут поля. Можно использовать как placeholder или тайтл.
validationObjectВалидация инпут поля. Каждое поле имеет ограничение на вводимые символы.
typeEnumТип валидации, на данный момент имеются два типа STRING (только строковые символы) и NUMBER (только цифры).
minLengthNumberМинимальное кол-во символов для вводимого значения.
maxLengthNumberМаксимальное кол-во символов для вводимого значения.
accountObjectОбъект с информацией о том, куда необходимо перечислять средства.
idNumberID аккаунта, он понадобится при отправки платежа.
detailFieldsArrayМассив полей с информацией об аккаунте.
keyStringИдентификатор/id поля.
nameStringНазвание поля. Можно использовать как placeholder или тайтла.
valueStringЗначение поля Это значение зачастую нужно дать пользователю скопировать из интерфейса формы.

Как работать с полями платежного метода

Здесь пример формы оплаты с полями из платежного метода. Форма может быть в любом виде, это именно показательный пример как правильно интерпретировать поля.

Создание postback url

  1. Блок с вводом кол-ва средств. Amount - всегда имеет тип number. На скрине 300 - это поле minPaymentAmount, 50000 - maxPaymentAmount, INR - currency.
  2. Подсказки/хинты. Здесь detailFieldsHint относится к верхнему блоку - detailFields, где указаны необходимые поля с информацией о перечислении средств для пользователя. А clientFieldsHint относится к блоку с полями, которые заполняет пользователь. detailFieldsHint/clientFieldsHint можно использовать как подсказки/пояснения к блокам.
  3. Блок с информацией о том, куда перечислять средства. Здесь могут быть несколько полей, все зависит от платежного метода. Желательно всем этим полям навешивать иконку "copy", чтобы пользователь мог скопировать значение из каждого поля (value). В данном случае "PhonePe wallet" - поле name, "test@upi" - value.
  4. Блок с полями, которые заполняет пользователь. Здесь могут быть несколько полей, все зависит от платежного метода. Каждое поле имеет свой тип валидации. В данном случае "UTR number" - name. А type/minLength/maxLength валидация, которая применяется к вводимому значению "123456789012".