Оплата с формы партнёра¶
Общие сведения¶
Оплату с собственной платёжной формы партнёр может реализовать c помощью API.
Обратите внимание
Для приёма платежей с помощью собственной платёжной формы партнёру необходимо отвечать стандартам безопасности PCI DSS и иметь соответствующий сертификат, т.к. данные банковских карт, принимаемые к оплате, являются чувствительной информацией.
Важная информация
Согласно требованиям Банка России 13-МР от 12.10.2023 выполняется проверка соответствия фактической деятельности партнёра заявленной им при заключении договора. Для этого, а также для снижения риска недействительных и мошеннических операций, партнёру требуется интегрировать скрипт, разработанный для сбора дополнительных данных о клиенте при совершении платежей.
Доступны несколько сценариев приёма платежей:
- одношаговый — когда авторизация и подтверждение платежа выполняются в рамках одного запроса;
- двухшаговый — когда авторизация и подтверждение платежа выполняются двумя отдельными запросами.
При выполнении одношагового сценария средства клиента холдируются и сразу же списываются после подтверждения им оплаты. Отменить списание технически невозможно, доступен лишь возврат средств.
При выполнении двухшагового сценария средства клиента холдируются после подтверждения им оплаты и списываются только после того, как QIWI получит подтверждение от партнёра. Холдирование средств можно отменить, списанные средства можно вернуть.
Начало работы¶
① Выполните шаги, указанные в статье «Интернет-эквайринг» → «Начало работы»
② Выпустите ключ доступа к API приёма платежей
Ключ доступа к API — cимвольная строка для авторизации запросов к API согласно стандарту OAuth 2.0 RFC 6749, RFC 6750В. Выпускается в личном кабинете в разделе «Настройки».
③ Протестируйте взаимодействие
Отправленный вам siteId по умолчанию находится в тестовом режиме. В этом режиме вы можете проводить операции без реального движения денежных средств. Тестирование доступно только для определённых способов оплаты. Подробности см. в статье «Тестовый режим».
Одношаговый сценарий¶
Пример успешной оплаты с помощью выполнения одношагового сценария описан и изображён ниже. В примере оплата совершается с банковской карты.
Обратите внимание
Все способы оплаты, кроме оплаты с банковской карты, подключаются по запросу: оплата с банковской карты доступна по умолчанию, для подключения остальных способов обратитесь в службу поддержки.
- Клиент выбирает товар или услугу на торговой площадке партнёра, переходит к оплате.
- Партнёр отображает клиенту собственную платёжную форму для ввода реквизитов карты.
- Клиент вводит реквизиты карты и подтверждает оплату.
- 
Партнёр отправляет QIWI запрос на создание платежа, в котором передаёт сумму платежа, данные карты и признак одношагового проведения платежа ( flags:[SALE]).Если не передать flags:[SALE], платёж будет проведён по двушаговому сценарию: средства клиента будут захолдированы после подтверждения им оплаты и списаны только после того, как QIWI получит подтверждение от партнёра.
- 
QIWI возвращает партнёру статус платежа ( WAITING— создан, ожидает аутентификации клиента с помощью 3D-Secure), а также данные для аутентификации:pareqиacsUrl.
- Партнёр использует полученные данные для аутентификации клиента и сообщает QIWI об успешном прохождении аутентификации: см. шаги из статьи «Интернет-эквайринг» → 3D-Secure.
- QIWI с помощью платёжной системы отправляет запрос на авторизацию и подтверждение платежа в банк-эмитент.
- Банк-эмитент резервирует (холдирует) и сразу же списывает денежные средства с карты клиента.
- QIWI фиксирует успешное списание средств и возвращает партнёру статус платежа COMPLETED.
- Партнёр принимает решение об успешности завершения платежа — выполняет действия, указанные в статье «Общие принципы и правила» → «Решение об успешности операции».
%%{init: {
    "sequence" : {
        "wrap":true,
        "messageFontSize":14,
        "noteFontSize":12,
        "actorMargin":
        60 }}}%%
sequenceDiagram
    participant С as Клиент
    participant P as Партнёр
    participant Q as QIWI
    participant B as Банк-эмитент
    С->>P: Выбор товара или услуги, оплата
    Note right of С: Ввод реквизитов карты
    P->>+Q: Запрос на создание платежа
    Note right of P: siteId, paymentId, amount, cardData, flags: SALE
    Q->>-P: Ответ на запрос создания платежа
    Note left of Q: siteId, paymentId, amount, status:WAITING, requirements.threeDS.pareq, requirements.threeDS.acsUrl
    rect rgb(230, 230, 230)
    Note over С, B: Аутентификация клиента с помощью 3D-Secure
    end
    Q->>+B: Запрос на авторизацию и подтверждение платежа
    Note right of Q: Через платёжную систему
    B->>B: HOLD
    B->>B: CAPTURE
    B->>-Q: Ответ на запрос
    Note left of B: ОК
    Q->>Q: Завершение платежа
    Q->>P: Статус платежа
    Note left of Q: status:COMPLETED
    rect rgb(255, 238, 223)
    Q->>P: Сценарий «Принятие решения об успешности операции»
    P->>Q: 
    end
    P->>С: Отображение результата на форме
    Note right of С: «Платёж успешен»Элемент диаграммы QIWI — совокупность участников процесса проведения платежа. Указанные на диаграмме сценарии см. в статьях:
- «3D-Secure»;
- «Общие принципы и правила» → «Решение об успешности операции».
Партнёр получает, обрабатывает и хранит данные карты клиента.
PUT /partner/payin/v1/sites/test-01/payments/1811 HTTP/1.1
Accept: application/json
Authorization: Bearer 5c4b25xx93aa435d9cb8cd17480356f9
Content-type: application/json
Host: api.qiwi.com
{
  "amount": {
    "currency": "RUB",
    "value": 1.00
  },
  "paymentMethod" : {
    "type" : "CARD",
    "pan" : "4444443616621049",
    "expiryDate" : "12/19",
    "cvv2" : "123",
    "holderName" : "unknown cardholder"
  },
  "flags": [ "SALE" ]
}
HTTP/1.1 200 OK
Content-Type: application/json
{
    "paymentId": "1811",
    "billId": "autogenerated-a29ea8c9-f9d9-4a60-87c2-c0c4be9affbc",
    "createdDateTime": "2019-08-15T13:28:26+03:00",
    "amount": {
        "currency": "RUB",
        "value": 1.00
    },
    "capturedAmount": {
        "currency": "RUB",
        "value": 0.00
    },
    "refundedAmount": {
        "currency": "RUB",
        "value": 0.00
    },
    "paymentMethod": {
        "type": "CARD",
        "maskedPan": "444444******1049",
        "rrn": "123",
        "authCode": "181218",
        "type": "CARD"
    },
    "status": {
        "value": "WAITING",
        "changedDateTime": "2019-08-15T13:28:26+03:00"
    },
    "requirements" : {
        "threeDS" : {
          "pareq" : "eJyrrgUAAXUA+Q==",
          "acsUrl" : "https://test.paymentgate.ru/acs/auth/start.do"
        }
    }
}
Запросы и ответы приведены в качестве примера: актуальные формат и список параметров см. в разделе «Справочник методов API» документации API приёма платежей.
Примеры запросов для аутентификации клиента см. в статье «3D-Secure».
Двухшаговый сценарий¶
Пример успешной оплаты с помощью выполнения двухшагового сценария описан и изображён ниже. В примере оплата совершается с банковской карты.
Обратите внимание
Двухшаговый сценарий позволяет использовать лишь один способ оплаты — с банковской карты.
- Клиент выбирает товар или услугу на торговой площадке партнёра, переходит к оплате.
- Партнёр отображает клиенту собственную платёжную форму для ввода реквизитов карты.
- Клиент вводит реквизиты карты и подтверждает оплату.
- Партнёр отправляет QIWI запрос на создание платежа, в котором передаёт сумму платежа и данные карты.
- QIWI возвращает партнёру статус платежа (WAITING— создан, ожидает аутентификации клиента с помощью 3D-Secure), а также данные для аутентификации:pareqиacsUrl.
- Партнёр использует полученные данные для аутентификации клиента и сообщает QIWI об успешном прохождении аутентификации: см. шаги из статьи «Интернет-эквайринг» → 3D-Secure.
- QIWI с помощью платёжной системы отправляет запрос на авторизацию платежа в банк-эмитент.
- Банк-эмитент резервирует (холдирует) денежные средства на карте клиента.
- QIWI фиксирует успешное холдирование средств.
- 
Партнёр выполняет действия, указанные в статье «Общие принципы и правила» → «Решение об успешности операции». На этапе получения уведомления у партнёра появляется идентификатор платежа, который он должен подтвердить — paymentId.
- 
Партнёр выполняет необходимые действия перед тем, как получить денежные средства от клиента — списать их с его карты. Сбор заказа и т.п. 
- 
Партнёр отправляет QIWI запрос на подтверждение платежа, в котором передаёт полученный на этапе 10 идентификатор платежа. По умолчанию QIWI ожидает подтверждения платежа в течение 72 часов с момента его успешной авторизации — оплаты счёта. По истечении этого срока платёж подтверждается автоматически. Для изменения длительности ожидания или настройки автоматической отмены платежа обратитесь в службу поддержки. Длительность ожидания не может превышать 5 суток. 
- 
QIWI с помощью платёжной системы отправляет запрос на подтверждение платежа в банк-эмитент. 
- Банк-эмитент списывает денежные средства с карты клиента.
- QIWI фиксирует успешное завершение платежа.
- Партнёр принимает решение об успешности завершения платежа — выполняет действия, указанные в статье «Общие принципы и правила» → «Решение об успешности операции».
%%{init: {
    "sequence" : {
        "wrap":true,
        "messageFontSize":14,
        "noteFontSize":12,
        "actorMargin":
        60 }}}%%
sequenceDiagram
    participant С as Клиент
    participant P as Партнёр
    participant Q as QIWI
    participant B as Банк-эмитент
    С->>P: Выбор товара или услуги, оплата
    Note right of С: Ввод реквизитов карты
    P->>+Q: Запрос на создание платежа
    Note right of P: siteId, paymentId, amount, cardData
    Q->>-P: Ответ на запрос создания платежа
    Note left of Q: siteId, paymentId, amount, status:WAITING, requirements.threeDS.pareq, requirements.threeDS.acsUrl
    rect rgb(230, 230, 230)
    Note over С, B: Аутентификация клиента с помощью 3D-Secure
    end
    Q->>+B: Запрос на авторизацию платежа
    Note right of Q: Через платёжную систему
    B->>B: HOLD
    B->>-Q: Результат авторизации
    Note left of B: ОК
    Q->>Q:  Состояние операции
    Note over Q: Средства захолдированы
    rect rgb(255, 238, 223)
    Q->>P: Сценарий «Принятие решения об успешности операции»
    Note left of Q: paymentId
    P->>Q: 
    end
    P->>С: Коммуникация с клиентом
    Note left of P: Заказ собирается
    P->>P: Сбор заказа
    Note over P: Заказ готов к отправке
    P->>+Q: Запрос на подтверждение платежа
    Note right of P: siteId, paymentId, captureId
    Q->>+B: Запрос на подтверждение платежа
    Note right of Q: Через платёжную систему
    B->>B: CAPTURE
    B->>-Q: Результат
    Note left of B: ОК
    Q->>Q:  Статус платежа
    Note over Q: COMPLETED
    Q->>-P: Ответ на запрос подтверждения
    Note left of Q: siteId, paymentId, captureId, amount, status: COMPLETED
    rect rgb(255, 238, 223)
    Q->>P: Сценарий «Принятие решения об успешности операции»
    Note left of Q: paymentId
    P->>Q: 
    end
    P->>С: Коммуникация с клиентом
    Note left of P: Заказ отправленЭлемент диаграммы QIWI — совокупность участников процесса проведения платежа. Указанные на диаграмме сценарии см. в статьях:
- «3D-Secure»;
- «Общие принципы и правила» → «Решение об успешности операции».
Партнёр получает, обрабатывает и хранит данные карты клиента.
PUT /partner/payin/v1/sites/test-01/payments/1811 HTTP/1.1
Accept: application/json
Authorization: Bearer 5c4b25xx93aa435d9cb8cd17480356f9
Content-type: application/json
Host: api.qiwi.com
{
  "amount": {
    "currency": "RUB",
    "value": 1.00
  },
  "paymentMethod" : {
    "type" : "CARD",
    "pan" : "4444443616621049",
    "expiryDate" : "12/19",
    "cvv2" : "123",
    "holderName" : "unknown cardholder"
  }
}
Пример ответа на запрос создания платежа см. в разделе «Одношаговый сценарий».
Запросы и ответы приведены в качестве примера: актуальные формат и список параметров см. в разделе «Справочник методов API» документации API приёма платежей.
Примеры запросов для аутентификации клиента см. в статье «3D-Secure».