3D-Secure¶
3D-Secure (Three-Domain Secure) — протокол аутентификации покупателей, обеспечивающий безопасную оплату товаров и услуг в интернете. Технология 3D-Secure (далее по тексту — 3DS) подразумевает дополнительный шаг аутентификации при совершении покупки в интернет-магазине:
- на первом шаге на странице оплаты используются реквизиты банковской карты: номер, срок действия, имя держателя, код проверки подлинности (например, CVC2);
- на втором — дополнительный защитный код, который вводится на веб-форме банка-эмитента.
Аутентификация при оплате с формы QIWI¶
Раздел в процессе написания. Скоро мы опубликуем здесь полезную информацию.
Аутентификация при оплате с формы партнёра¶
Клиент должен пройти аутентификацию с помощью 3D-Secure, если при выполнении сценария «Оплата с формы партнёра» в ответе на запрос создания платежа вернулся объект requirements.threeDS
с полями:
acsUrl
— URL-адрес сервера, на который направляется клиент для прохождения аутентификации;pareq
— зашифрованный запрос на аутентификацию.
Для аутентификации клиента с помощью 3D-Secure партнёр должен выполнить POST-запрос на acsUrl
со следующими параметрами тела запроса:
TermUrl
— URL-адрес страницы партнёра, на которую направляется клиент после успешной аутентификации;MD
— уникальный идентификатор операции аутентификации в системе партнёра;PaReq
— значение параметраpareq
из ответа на запрос создания платежа.
После отправки POST-запроса на acsUrl
данные клиента передаются в платёжную систему, обслуживающую банковскую карту, и банк-эмитент. Банк-эмитент принимает решение о необходимости аутентификации:
- если аутентификация не требуется, средства клиента списываются с карты;
- если аутентификация необходима, клиент получает OTP и вводит его на форме банка-эмитента.
После прохождения аутентификации клиент направляется на TermUrl
с зашифрованным результатом проверки в параметре PaRes
.
Для завершения аутентификации партнёру необходимо выполнить запрос на завершение аутентификации и передать в нём значение PaRes
.
POST /partner/payin/v1/sites/test-01/payments/1811/complete HTTP/1.1
Accept: application/json
Authorization: Bearer 5c4b25xx93aa435d9cb8cd17480356f9
Content-type: application/json
Host: api.qiwi.com
{
"threeDS": {
"pares": "eJzVWFevo9iyfu9fMZrzaM0QjWHk3tIiGptgooE3cgabYMKvv3jvTurTc3XOfbkaJMuL...."
}
}
Запросы приведены в качестве примера: актуальные формат и список параметров см. в разделе «Справочник методов API» документации API приёма платежей.
Пример успешной аутентификации клиента изображён на диаграмме ниже.
%%{init: {
"sequence" : {
"wrap":true,
"messageFontSize":14,
"noteFontSize":12,
"actorMargin":
60 }}}%%
sequenceDiagram
participant С as Клиент
participant P as Партнёр
participant Q as QIWI
participant B as Банк-эмитент
P->>+Q: Запрос на создание платежа
Q->>-P: Ответ на запрос создания платежа
Note left of Q: status:WAITING, requirements.threeDS.pareq, requirements.threeDS.acsUrl
P->>С: Направление на acsUrl
Note left of P: TermUrl, MD, PaReq
rect rgb(230, 230, 230)
Note over С, B: Форма банка-эмитента
С->>B: Выполнение кода (вызов API формой)
Note right of С: TermUrl, MD, PaReq
B->>С: OTP
С->>С: Ввод OTP на форме
С->>B: Выполнение кода (вызов API формой)
B->>С: Направление на TermUrl партнёра
С->>P:
Note right of С: PaRes
end
P->>+Q: Запрос на завершение аутентификации
Note right of P: threeDS.pares
Q->>+B: Холдирование и/или списание средств
B->>-Q:
Q->>Q: Изменение состояния операции
Q->>P: Состояние операции
Для сохранения обратной совместимости использование разных версий протоколов аутентификации (3D-Secure 1.0 или 3D-Secure 2.0) не влияет на интеграцию с помощью API приёма платежей.