Skip to main content

QR code payments through FPS

You can receive payments using Faster Payment System (FPS) by a QR code. To start accepting FPS payments by a QR code, please contact your Smart Glocal manager.

Making an FPS payment by a QR code

  1. Create a payment session session/create specifying faster_payment_system in payment_details.type. Optionally, you can add a return URL to redirect the customer back after the payment (payment_options.return_url).

    Request example
    curl -X POST \
    https://demo.smart-glocal.com/api/v1/session/create \
    -H 'Content-Type: application/json' \
    -H 'X-PARTNER-PROJECT: your_project_name' \
    -H 'X-PARTNER-SIGN: signature' \
    -d '{
    "payment_details": {
    "type": "faster_payment_system"
    },
    "amount_details": {
    "amount": 5000,
    "currency": "rub"
    },
    "customer": {
    "reference": "lucky"
    },
    "payment_options": {
    "return_url": "https://smart-glocal.com"
    }
    }'
    Response example
    curl -X POST \
    https://partner.com \
    -H 'content-type: application/json' \
    -H 'X-PARTNER-SIGN: signature' \
    -d '{
    "status": "ok",
    "session": {
    "id": "ps_269223600",
    "status": "created",
    "created_at": "2024-09-12T14:30:45.015376Z",
    "updated_at": "2024-09-12T14:30:45.015376Z"
    }
    }'
  2. Send a session/start/payment request. Specify the unique customer identifier in customer.reference and/or the end user's IP in participant_details.sender.ipv4. Note that at least one of these values is required.

    Request example
    curl -X POST \
    https://demo.smart-glocal.com/api/v1/session/start/payment \
    -H 'content-type: application/json' \
    -H 'X-PARTNER-PROJECT: your_project_name' \
    -H 'X-PARTNER-SIGN: signature' \
    -d '{
    "session_id": "ps_ps_269223600",
    "payment_details": {
    "type": "faster_payment_system"
    },
    "payment_options": {
    "return_url": "https://smart-glocal.com"
    },
    "customer": {
    "reference": "lucky"
    },
    "participant_details": {
    "sender": {
    "ipv4": "192.168.0.1"
    }
    }
    }'
    Response example
    curl -X POST \
    https://partner.com \
    -H 'content-type: application/json' \
    -H 'X-PARTNER-SIGN: signature' \
    -d '{
    "status": "ok",
    "session": {
    "id": "ps_269223600",
    "status": "in_progress",
    "created_at": "2024-09-12T14:30:46.526965Z",
    "updated_at": "2024-09-12T14:30:46.721229Z",
    "acquiring_payments": [
    {
    "id": "pm_229376900",
    "status": "in_progress",
    "created_at": "2024-09-12T14:30:46.739560Z",
    "customer": {
    "reference": "lucky"
    },
    "participant_details": {
    "sender": {
    "ipv4": "192.168.0.1"
    }
    },
    "payment_details": {
    "type": "faster_payment_system"
    },
    "amount_details": {
    "amount": 5000,
    "currency": "rub"
    },
    "payment_options": {
    "return_url": "https://smart-glocal.com",
    "recurrent": false
    }
    }]
    }
    }'
  3. Wait for a ready_to_confirm webhook. When you receive it, it means that Smart Glocal is ready to make the payment and is waiting for your confirmation.

    Webhook example
    curl -X POST \
    https://partner.com \
    -H 'content-type: application/json' \
    -H 'X-PARTNER-SIGN: signature' \
    -d '{
    "type": "ready_to_confirm",
    {
    "status": "ok",
    "session": {
    "id": "ps_269223600",
    "status": "in_progress",
    "created_at": "2024-09-12T14:30:45.015376Z",
    "updated_at": "2024-09-12T14:30:45.391978Z",
    "acquiring_payments": [
    {
    "id": "pm_229376900",
    "status": "in_progress",
    "created_at": "2024-09-12T14:30:45.239773Z",
    "customer": {
    "reference": "lucky"
    },
    "participant_details": {
    "sender": {
    "ipv4": "192.168.0.1"
    }
    },
    "payment_details": {
    "type": "faster_payment_system"
    },
    "amount_details": {
    "amount": 5000,
    "currency": "RUB"
    },
    "amounts": {
    "fee": {
    "merchant_fee": {
    "amount": 111,
    "currency": "RUB"
    }
    }
    },
    "metadata": {
    "paymentReference": "payment reference",
    "description": "some description"
    },
    "payment_options": {
    "return_url": "https://smart-glocal.com",
    "recurrent": false
    }
    }],
    "actions": {
    "confirm": "2024-09-12T14:30:46.275850Z"
    }
    }
    }'
  4. Send a session/confirm request or a session/cancel request to confirm or cancel the operation.

    Request example
    curl -X POST \
    https://demo.smart-glocal.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":"ps_269223600"
    }'
  5. Wait for an action_required webhook containing a payment link as a QR code from Smart Glocal and display the QR code to the customer in the web browser. If the link is opened directly on a mobile phone, a list of banks from which to choose will open.

    Webhook example
    curl -X POST \
    https://partner.com \
    -H 'content-type: application/json' \
    -H 'X-PARTNER-SIGN: signature' \
    -d '{
    "type": "action_required",
    {
    "status": "ok",
    "session": {
    "id": "ps_269223600",
    "status": "in_progress",
    "created_at": "2024-09-12T14:30:45.015376Z",
    "updated_at": "2024-09-12T14:30:45.229719Z",
    "acquiring_payments": [
    {
    "id": "pm_229376900",
    "status": "pending",
    "created_at": "2024-09-12T14:30:45.239773Z",
    "customer": {
    "reference": "lucky"
    },
    "participant_details": {
    "sender": {
    "ipv4": "192.168.0.1"
    }
    },
    "payment_details": {
    "type": "faster_payment_system"
    },
    "amount_details": {
    "amount": 5000,
    "currency": "RUB"
    },
    "customer_interaction": {
    "type": "inform",
    "inform": {
    "qr": {
    "content": "https://qr.nspk.ru/AD10004AO4DQJ54B9Q0PLEGTD7V5UEQT?type=01&bank=100000000153&sum=5000&cur=RUB&crc=CEAB",
    "img": "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"
    }
    }
    }
    }
    ]
    }
    }'

    If you get the qr_expired error, it means that the QR code has expired and you need to start over.

  6. After the customer makes the payment, you will receive a payment_finished webhook containing the payment result from Smart Glocal. The succeeded status indicates a successful payment.

    Webhook example
    curl -X POST \
    https://partner.com \
    -H 'content-type: application/json' \
    -H 'X-PARTNER-SIGN: signature' \
    -d '{
    "type": "payment_finished",
    {
    "status": "ok",
    "session": {
    "id": "ps_269223600",
    "status": "accepted",
    "created_at": "2024-09-12T14:30:45.015376Z",
    "updated_at": "2024-09-12T14:31:14.237089Z",
    "acquiring_payments": [
    {
    "id": "pm_229376900",
    "status": "succeeded",
    "created_at": "2024-09-12T14:30:45.239773Z",
    "finished_at": "2024-09-12T14:31:14.087203Z",
    "customer": {
    "reference": "lucky",
    "contacts": [
    {
    "phone": "7911*****11"
    }]
    },
    "participant_details": {
    "sender": {
    "ipv4": "192.168.0.1"
    }
    },
    "payment_details": {
    "type": "faster_payment_system"
    },
    "amount_details": {
    "amount": 5000,
    "currency": "RUB"
    },
    "amounts": {
    "fee": {
    "merchant_fee": {
    "amount": 111,
    "currency": "RUB"
    }
    }
    },
    "metadata": {
    "paymentReference": "payment reference",
    "description": "some description"
    },
    "payment_options": {
    "return_url": "https://smart-glocal.com",
    "recurrent": false
    }
    }],
    "actions": {
    "confirm": "2024-09-12T14:30:46.275850Z",
    "capture": "2024-09-12T14:31:13.872710Z"
    }
    }
    }'

Sequence diagram of QR code payments