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

Платежи через платежную форму

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

В этом случае вы можете получить токенизированные данные карты с помощью виджета платежной формы и безопасно провести оплату.

Данный сценарий не учитывает шаг с холдированием платежа. Как провести платеж с холдированием.

  1. Отправьте запрос на создание сессии session/create.

    В заголовках запроса передайте идентификатор вашего проекта и подпись запроса.

    Подробнее о формате запросов

    Пример
    curl -X POST \
    https://proxy-demo.pikepayments.com/api/v1/session/create \
    -H 'Content-Type: application/json' \
    -H 'X-PARTNER-PROJECT: your_project_name' \
    -H 'X-PARTNER-SIGN: signature' \
    -d '{
    "customer": {
    "reference": "user123",
    "contacts": [{
    "email": "user@gmail.com"
    }]
    },
    "amount_details": {
    "amount": 10000,
    "currency": "rub"
    },
    "metadata": "order123"
    }'
  2. Отправьте запрос на создание токена token, передайте в нем идентификатор сессии и тип виджета, который будете вызывать. В ответе придет токен.

    Если хотите добавить в платежную форму чекбокс согласия на автоплатежи I agree to recurring payments, передайте в поле show_recurrent_checkbox значение true. Это нужно, чтобы проводить рекуррентные списания.
    Изначально флажок в данном чекбоксе может отсутствовать (по умолчанию) или быть предустановленным. Если вы хотите, чтобы флажок был предустановлен, обратитесь к вашему менеджеру.

    Пример
    curl -X POST \
    https://proxy-demo.pikepayments.com/api/v1/token \
    -H 'Content-Type: application/json' \
    -H 'X-PARTNER-PROJECT: your_project_name' \
    -H 'X-PARTNER-SIGN: signature' \
    -d '{
    "acquiring_widget": {
    "session_id": "ps_123456"
    }
    }'
  3. Покажите получателю платежную форму. Для этого нужно подключить нашу JavaScript-библиотеку и добавить виджет платежной формы.

    Как добавить платежную форму

  4. Дождитесь вебхука ready_to_confirm. Это значит, что платеж можно провести, и Pike ждет вашего подтверждения (или отмены).

    В теле вебхука придут все данные для платежа, их нужно проверить.

    В ответ следует отдавать HTTP-код 200.

    Пример
    curl -X POST \
    https://partner.ru \
    -H 'Content-Type: application/json' \
    -H 'X-PARTNER-SIGN: signature' \
    -d '{
    "type": "ready_to_confirm",
    "session": {
    "id": "ps_3230",
    "status": "in_progress",
    "created_at": "2024-05-27T02:03:00.000000Z",
    "updated_at": "2024-05-27T02:03:00.000000Z",
    "acquiring_payments": [{
    "id": "pm_2705",
    "status": "pending",
    "created_at": "2024-05-27T02:03:00.000000Z",
    "customer": {
    "reference": "user123",
    "contacts": [{
    "email": "user@gmail.com"
    }]
    },
    "payment_details": {
    "type": "card",
    "card": {
    "last4": "4242",
    "brand": "visa"
    }
    },
    "amount_details": {
    "amount": 10000,
    "currency": "rub"
    },
    "metadata": "good"
    }]
    }
    }'
  5. Проверьте данные для платежа и подтвердите, что готовы его провести (с помощью запроса session/confirm) или отмените (отправьте запрос session/cancel).

    Если карта пользователя требует пройти 3D Secure, вы получите вебхук action_required, просто отправьте HTTP-код 200 в ответ. Клиент будет перенаправлен на 3D Secure автоматически.

    Примеры
    curl -X POST \
    https://proxy-demo.pikepayments.com/api/v1/session/confirm \
    -H 'Content-Type: application/json' \
    -H 'X-PARTNER-PROJECT: your_project_name' \
    -H 'X-PARTNER-SIGN: signature' \
    -d '{
    "session_id": "3230"
    }'
  6. Дождитесь вебхука payment_finished. В теле вебхука придут все данные, с которыми проводился платеж. Результат платежа приходит в поле status массива acquiring_payments/payment_list.

    Если статус succeeded, значит, оплата прошла успешно.

    Подробнее о статусах платежа

Схема оплаты через платежную форму

Схема платежа через платежную форму