Skip to Content
ПесочницаПодпискиХуки песочницы: Списания

Хуки песочницы: Списания

В бою подписка тарифицируется по расписанию проекта — раз в 30 дней и так несколько циклов. Ждать этого в тесте нельзя, поэтому цикл сжимается блоком <TestInfo> в CreateSubscription: период задаётся в секундах, а исход списания выбирается заранее.

ПолеЗначение
BillingPeriodSeconds1…86400. Включает цикл списаний — без этого поля списаний не будет вовсе. Задаёт и период между списаниями, и интервал повторной попытки после отказа
MaxIterations1…100, по умолчанию 3. Сколько успешных списаний пройдёт, прежде чем подписка закроется (FINISHED / Closed)
ExpectedBillingResultSuccess (по умолчанию) или Failed — исход каждой попытки списания
BillingAmountСумма списания в уведомлениях (CustomerPrice), по умолчанию 10.00
OperatorIDОператор подписки, по умолчанию 22. Значение 20 включает поведение Мегафона: operation_status вместо action в обратном редиректе (WAP) и CancelUrl в ответе CancelSubscription

Перед каждым успешным списанием мок присылает ContentRequest — запрос текста сервисного SMS. Отвечайте StatusName=REQUEST_ACCEPTED и блоком ContentMessage со значениями параметров; ответ сохраняется в журнале коллбеков.

Некорректные значения запрос не ломают: в лог уходит предупреждение, применяется значение по умолчанию. Отсчёт первого списания начинается с момента активации подписки (подтверждение PIN или оплата), а не с её создания.

Блока <TestInfo> в боевом контракте нет — уберите его перед переходом в прод. Там списания идут по расписанию проекта.

Что приходит при ExpectedBillingResult=Success

Каждый период — APPROVED_BILLING с растущим BillingIteration и сдвинутым PaidUntil. На последней итерации следом приходит FINISHED, подписка переходит в Closed, списания прекращаются.

Что приходит при Failed

Попытка списания не проходит: REJECTED_BILLING_ATTEMPT, статус Redelivering, BillingErrorCode=210 («нет средств»), через период — следующая попытка. После третьей неудачи — REJECTED_BILLING и RenewingFailed: подписка закрыта, новых попыток не будет.

CreateSubscription с циклом списаний
<Request> <SubscriptionProjectID>2001</SubscriptionProjectID> <Subscriber_MSISDN>79600000000</Subscriber_MSISDN> <Now>20260817120000</Now> <Signature>d2f36558ca5455be...</Signature> <TestInfo> <BillingPeriodSeconds>10</BillingPeriodSeconds> <MaxIterations>3</MaxIterations> <ExpectedBillingResult>Success</ExpectedBillingResult> <BillingAmount>49.00</BillingAmount> </TestInfo> </Request>
Последовательность уведомлений
# ExpectedBillingResult=Success APPROVED сразу после подтверждения APPROVED_BILLING +10 c BillingIteration=1 APPROVED_BILLING +20 c BillingIteration=2 APPROVED_BILLING +30 c BillingIteration=3 FINISHED +30 c SubscriptionStatus=Closed # ExpectedBillingResult=Failed APPROVED после подтверждения REJECTED_BILLING_ATTEMPT +10 c Redelivering, BillingErrorCode=210 REJECTED_BILLING_ATTEMPT +20 c Redelivering REJECTED_BILLING +30 c RenewingFailed