FinishAuthorizeRequest class

Метод подтверждает платеж передачей реквизитов, а также списывает средства с карты покупателя при одностадийной оплате и блокирует указанную сумму при двухстадийной.

Используется, если у площадки есть сертификация PCI DSS и собственная платежная форма.

FinishAuthorizeRequest


Для ApplePay (расшифровка токена происходит на стороне Мерчанта) надо:

  1. Передавать route = Route.acq и source = Source.applePay;
  2. Передавать объект cardData.

Продавец формирует объект cardData из расшифрованного параметра paymentData, полученного от Apple.


Для ApplePay (расшифровка токена происходит на стороне Банка) надо:

  1. Передавать route = Route.acq и source = Source.applePay;
  2. Передавать параметр encryptedPaymentData вместо cardData

Продавец формирует параметр encryptedPaymentData из параметра paymentData, закодированное в Base64. Параметр paymentData Apple возвращает в объекте PKPaymentToken.


Для GooglePay (расшифровка токена происходит на стороне Мерчанта) надо:

  1. Передавать route = Route.acq и source = Source.googlePay;
  2. Передавать объект cardData.

В случае получения от GooglePay payload версии ECv1 содержимое объекта encryptedMessage.paymentMethodDetails:

  • pan или dpan в pan (в зависимости от наличия)
  • expirationMont + expirationYear в ExpDate
  • 3dsCryptogram в CAVV (если есть)
  • 3dsEciIndicator в ECI (если есть);

В случае получения от GooglePay payload версии ECv2 содержимое объекта encryptedMessage.paymentMethodDetails:

  • pan в pan
  • expirationMont + expirationYear в ExpDate
  • cryptogram в CAVV (если есть)
  • eciIndicator в ECI (если есть)

В случае получения CAVV в CardData оплата будет проводиться как оплата токеном, иначе прохождение 3DS будет регулироваться стандартными настройками треминала/платежа.


Для GooglePay (расшифровка токена происходит на стороне Банка) надо:

  1. Передавать route = Route.acq и source = Source.googlePay;
  2. Передавать параметр encryptedPaymentData вместо cardData

Для YandexPay (расшифровка токена происходит на стороне Мерчанта) надо:

  1. Передавать route = Route.acq и source = Source.yandexPay;
  2. Передавать в DATA.transactionId значение PaymentToken.messageId
  3. Передавать в DATA.YandexPayWeb значение true
  4. Передавать параметр cardData Размапить параметры из расшифрованного токена event.token
  • paymentMethodDetails.pan в pan
  • paymentMethodDetails,expirationMonth + paymentMethodDetails.expirationYear в ExpDate
  • paymentMethodDetails.cryptogram в CAVV (если есть)
  • paymentMethodDetails.eci в ECI (если есть)

Для 3DS второй версии в параметрах DATA необходимо передовать следующие параметры:

Наименование Тип Обязательность deviceChannel Описание
threeDSCompInd String Да 02 - BRW Идентификатор выполнения 3DS Method. 'Y' - выполнение метода успешно завершено, 'N' - выполнение метода завершено неуспешно или метод не выполнялся
javaEnabled String Нет 02 - BRW Поддерживает ли браузер пользователя Java: true/false. По умолчанию значение "false"
language String Да 02 - BRW Язык браузера по формату IETF BCP47.
colorDepth String Нет 02 - BRW Глубина цвета в битах. Допустимые значения: 1/4/8/15/16/24/32/48
timezone String Да 02 - BRW Time-zone пользователя. Пример: UTC +5 hours: -300
screen_height String Да 02 - BRW Высота экрана в пикселях
screen_width String Да 02 - BRW Ширина экрана в пикселях
cresCallbackUrl String Да 02 - BRW URL который будет использоваться для получения результата(CRES) после завершения Challenge Flow(аутентификаци с дополнительным переходом на страницу ACS)
sdkAppID String Да 01 – APP Уникальный идентификатор приложения 3DS Requestor, который формируется 3DS SDK при каждой установке или обновлении приложения
sdkEncData String Да 01 – APP Данные, собранные SDK. JWE объект, полученный от 3DS SDK, должен быть дополнительно закодирован в base64 строку.
sdkEphemPubKey String Да 01 – APP Компонент public key пары ephemeral key, сгенерированный 3DS SDK. JWE объект, полученный от 3DS SDK, должен быть дополнительно закодирован в base64 строку
sdkMaxTimeout String Да 01 – APP Максимальное количество времени (в минутах). Значение должно быть больше либо равно 5 символов.
sdkReferenceNumber String Да 01 – APP Поставщик и версия 3DS SDK
sdkTransID String Да 01 – APP Уникальный идентификатор транзакции, назначенный 3DS SDK для идентификации одной транзакции
sdkInterface String Да 01 – APP Список поддерживаемых интерфейсов SDK. Поддерживаемые значения: 01 = Native, 02 = HTML, 03 = Both
sdkUiType String Да 01 – APP Список поддерживаемых типов UI. Значения для каждого интерфейса: Native UI = 01–04, HTML UI = 01–05. Поддерживаемые значения: 01 = Text, 02 = Single Select, 03 = Multi Select, 04 = OOB, 05 = HTML Other (valid only for HTML UI). Пример значения: "01,02,03,04,05"

Для 3DS Version 2 в HttpHeaders запроса обязательно должны присутсвовать заголовки: “User-Agent” и “Accept”.

Inheritance
Annotations
  • @JsonSerializable(includeIfNull: false)

Constructors

FinishAuthorizeRequest({required int paymentId, String? cardData, String? encryptedPaymentData, int? amount, Map<String, String>? data, String? infoEmail, String? ip, String? phone, bool? sendEmail, Route? route, Source? source, String? signToken})
Создает экземпляр метода подтверждение платежа передачей реквизитов
FinishAuthorizeRequest.fromJson(Map<String, dynamic> json)
Преобразование json в модель
factory

Properties

amount int?
Сумма в копейках
final
apiMethod String
Метод запроса
no setteroverride
apiMethodPath String
Полный путь до метода запроса (версия + метод)
no setterinherited
apiVersion String
Версия метода запроса
no setterinherited
cardData String?
Зашифрованные данные карты. См. класс PaymentSource.
final
data Map<String, String>?
Дополнительные параметры платежа в формате "ключ":"значение" (не более 20 пар).
final
encryptedPaymentData String?
Данные карт
final
equals Map<String, Object?>
Comparison objects
no setteroverride
hashCode int
The hash code for this object.
no setterinherited
headers Map<String, String>
Заголовок метода
no setteroverride
ignoredFields Set<String>
Список игнорируемых полей при создании токена запроса
no setterinherited
infoEmail String?
Email для отправки информации об оплате
final
ip String?
IP-адрес клиента
final
is3DsVersionV2 bool
Проверка запроса на наличие 3DsV2
no setter
paymentId int
Уникальный идентификатор транзакции в системе Банка, полученный в ответе на вызов метода Init
final
phone String?
Телефон клиента
final
route Route?
Способ платежа. Возможные значения: ACQ
final
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
sendEmail bool?
Информация на почту:
final
signToken String?
Опциональный параметр: готовая подпись запроса
finalinherited
source Source?
Источник платежа.
final

Methods

compareLists<R>(List<R>? list1, List<R>? list2) bool
Determines whether list1 and list2 are equal.
inherited
copyWith({String? cardData, String? encryptedPaymentData, int? amount, Map<String, String>? data, String? infoEmail, String? ip, int? paymentId, String? phone, bool? sendEmail, Route? route, Source? source, String? signToken}) FinishAuthorizeRequest
Создает экземпляр с заданными параметрами
override
genHash<R>(Iterable<R>? values) int
Returns a hashCode for equals.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toJson() Map<String, dynamic>
Преобразование модели в json
override
toString() String
A string representation of this object.
inherited
validate() → void
Метод проверяет валидность данных
override

Operators

operator ==(Object other) bool
The equality operator.
inherited