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

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.

<form name="form" action="{ACSUrl}" method="post" >
        <input type="hidden" name="TermUrl" value="{TermUrl}" >
        <input type="hidden" name="MD" value="{MD}" >
        <input type="hidden" name="PaReq" value="{PaReq}" >
</form>
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 приёма платежей.