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

Быстрый старт

Три запроса от нуля до активной подписки — на демо-доступах, без регистрации.

Обмен сообщениями
Мерчант Subscription Service Абонент │ │ │ │ 1. CreateSubscription ──────►│ │ │◄── SubscriptionID + SMS_PIN ─│ ~~~ SMS с PIN ~~~~~~~~~~~►│ │ │ (в песочнице не шлётся) │ │ 2. ApproveSubscription ─────►│◄── абонент сообщает PIN ──│ │◄── REQUEST_ACCEPTED ─────────│ │ │ │ │ │ 3. GetSubscriptionStatus ───►│ │ │◄── SubscriptionStatus=Active │ │ │ │ │ │◄─ SubscriptionStatusNotification ─│ через 15 с после подтверждения
  1. Возьмите доступы проекта — SubscriptionProjectID и SecretKey. В песочнице это опубликованные демо-доступы, регистрация не нужна: они перечислены в разделе «Доступ и тестовые данные».
  2. Посчитайте подпись. У подписок она своя и отличается от разовых платежей: HMAC-SHA256 по строке SubscriptionProjectID + Now. Разбор — в разделе «Подпись запросов».
  3. Создайте подписку методом CreateSubscription. В ответе придут SubscriptionID и SubscriberAcceptanceChannel=SMS_PIN — подписка ждёт подтверждения абонента.
  4. Подтвердите её методом ApproveSubscription. SMS песочница не отправляет, PIN фиксированный — 1234; на подбор даётся 3 попытки, после чего подписка навсегда переходит в ApprovingFailed.
  5. Проверьте статус методом GetSubscriptionStatus — придёт Active. После подтверждения на ваш callback URL уходит SubscriptionStatusNotification с EventType=APPROVED (задержка 15 секунд). См. «Коллбеки».

Оплата картой или через СБП вместо SMS. Передайте в CreateSubscription поля CustomerType=Card и CustomerId — в ответе придёт AuthorizeUrl, страница оплаты. Шаг ApproveSubscription в этом сценарии не нужен: подписка активируется по факту оплаты. Разбор — в разделе «Подписка картой и СБП».

Сохраняйте SubscriptionID из ответа CreateSubscription. Он идентифицирует подписку во всех остальных методах — и в песочнице, и в бою.

Шаг 2 — подпись

# ключ — SecretKey, сообщение — SubscriptionProjectID + Now PROJECT=2001 SECRET=subs_secret_key NOW=$(date -u +%Y%m%d%H%M%S) SIG=$(printf '%s' "$PROJECT$NOW" | openssl dgst -sha256 -hmac "$SECRET" -r | cut -d' ' -f1)
Шаг 3 — ответ CreateSubscription
<Response> <StatusName>REQUEST_ACCEPTED</StatusName> <SubscriptionID>83159745</SubscriptionID> <SubscriberAcceptanceRequired>true</SubscriberAcceptanceRequired> <SubscriberAcceptanceChannel>SMS_PIN</SubscriberAcceptanceChannel> <OperatorID>22</OperatorID> <PaidUntil>2026-09-05T18:16:55+03:00</PaidUntil> </Response>
Шаги 4 и 5
<!-- подпись пересчитывается заново: Now новый --> <Request> <SubscriptionProjectID>2001</SubscriptionProjectID> <SubscriptionID>83159745</SubscriptionID> <PinCode>1234</PinCode> <Now>…</Now><Signature>…</Signature> </Request> <!-- GetSubscriptionStatus --> <SubscriptionStatus>Active</SubscriptionStatus> <PaidUntil>2026-09-05T18:16:55+03:00</PaidUntil>
Коллбек — приходит сам
<Request> <SubscriptionID>83159745</SubscriptionID> <SubscriptionProjectID>2001</SubscriptionProjectID> <Subscriber_MSISDN>79600000000</Subscriber_MSISDN> <EventType>APPROVED</EventType> <SubscriptionStatus>Active</SubscriptionStatus> <BillingIteration>1</BillingIteration> <CustomerPrice currency="RUB" amount="0.00"/> </Request>