Skip to Content
ПесочницаПодпискиПодписка картой и СБП

Подписка картой и СБП

Вместо подтверждения по SMS абонент привязывает банковскую карту или платит по QR-коду СБП. Отдельного метода у этого сценария нет: тот же CreateSubscription с CustomerType=Card, а СБП — это параметр на странице оплаты.

Обмен сообщениями
Мерчант Subscription Service Абонент │ │ │ │ 1. CreateSubscription ───►│ │ │ CustomerType=Card │ │ │◄── SubscriptionID + │ │ │ AuthorizeUrl ──────────│ │ │ 2. редирект на AuthorizeUrl ────────────────────────►│ │ │◄── карта или QR СБП ─────│ │◄─ SubscriptionStatusNotification (APPROVED) ─────────│
  1. CreateSubscription с CustomerType=Card и CustomerId. В ответе — AuthorizeUrl, SubscriberAcceptanceChannel=AUTH_PAGE и SubscriptionStatus=Pending.
  2. Перенаправьте абонента на AuthorizeUrl. Для оплаты через СБП добавьте к адресу ?useSbpQr=True — вместо формы карты откроется СБП-сценарий, свой для десктопа и телефона (см. ниже).
  3. Абонент платит. Реквизиты в песочнице не проверяются: подойдёт любой номер карты и любой PIN. Чтобы получить отказ, используйте карту с последними 4 цифрами 0001…0005.
  4. Подписка активируется: статус Active, приходит коллбек EventType=APPROVED. При отказе карты — ApprovingFailed и EventType=REJECTED. ApproveSubscription в этом сценарии не вызывается.

Сценарий СБП зависит от устройства

УстройствоЧто видит абонент
ДесктопУниверсальный QR-код. Абонент сканирует его телефоном и подтверждает оплату в приложении своего банка — банк на странице не выбирается
ТелефонСписок банков. QR сканировать нечем, поэтому абонент выбирает банк и переходит в его приложение по диплинку

Экран выбирается по User-Agent; чтобы посмотреть оба с одной машины, добавьте к адресу ?view=qr или ?view=banks.

На экране оплаты видны условия подписки: сумма текущего списания, дальнейшая сумма с периодичностью и пометка об автопродлении — без них плательщик видел бы только разовую сумму. Период берётся из ручки BillingPeriodSeconds, если она задана.

СБП и SberPay мок не различает — оба ведут на один QR-экран. Ссылка одноразовая и живёт 15 минут, как и checkout разовых платежей.

Экраны оплаты двуязычные. Язык определяется автоматически по Accept-Language браузера абонента — ни к AuthorizeUrl, ни к странице WAP-подтверждения дописывать ничего не нужно. Чтобы открыть конкретную версию, добавьте ?lang=en или ?lang=ru (сочетается с ?useSbpQr=True и ?view=): явный выбор важнее заголовка и держится до конца сценария. Язык, которого нет, даёт русский.

CreateSubscription — карта / СБП
<Request> <SubscriptionProjectID>2001</SubscriptionProjectID> <CustomerType>Card</CustomerType> <CustomerId>12345</CustomerId> <Now>20260625120000</Now> <Signature>d2f36558ca5455be...</Signature> </Request>
Ответ
<Response> <StatusID>0</StatusID> <StatusName>REQUEST_ACCEPTED</StatusName> <SubscriptionID>10000002</SubscriptionID> <SubscriptionStatus>Pending</SubscriptionStatus> <SubscriberAcceptanceChannel>AUTH_PAGE</SubscriberAcceptanceChannel> <AuthorizeUrl>https://subs-sandbox.digitalspb.com/Cards/TB/8c0c8870-.../Init</AuthorizeUrl> <PaidUntil>2026-09-16T12:00:00+03:00</PaidUntil> <TrialExists>false</TrialExists> </Response>
Оплата по QR-коду СБП
# к AuthorizeUrl добавляется параметр https://subs-sandbox.digitalspb.com/Cards/TB/8c0c8870-.../Init?useSbpQr=True
Карты с ошибкой (последние 4 цифры)
0001 — недостаточно средств 0002 — карта заблокирована 0003 — превышен лимит 0004 — отклонено банком 0005 — истёк срок действия