Skip to Content

Сценарий: MSISDN (мобильный биллинг)

  1. CreateCustomerContract — создать контракт для MSISDN (см. «Создание контракта»).
  2. AuthorizeCustomerContract — подтвердить PIN (в песочнице верный — 1234, три попытки).
  3. CreateInvoice с <MobilePhoneCustomer> — создать инвойс.
  4. Мок отправляет коллбек SendPaymentTransaction на ваш callback URL.

В JSON ответ на POST /invoices с customer.type: mobile_phone содержит блок authorization: {"type": "SMS_PIN", "is_authorized": false} — следующий шаг виден из ответа. Спека допускает семь значений authorization.type, песочница отдаёт одно: выбор схемы оператором она не эмулирует. У оплаченного инвойса is_authorized становится true.

PIN в песочнице не приходит по SMS — верное значение фиксированное: 1234. POST /invoices/{id}/authorize с другим значением даёт 422 INVOICE_NOT_AUTHORIZED и сообщает, сколько попыток осталось; после трёх неудачных — 422 INVOICE_AUTH_ATTEMPTS_EXCEEDED, и инвойс не принимает авторизацию уже никогда, даже с верным PIN. Верный PIN переводит инвойс в active. XML-метод AuthorizeCustomerContract по-прежнему принимает любой PIN — там проверка не добавлялась.

TestInfo — управление результатом платежа в sandbox: добавьте в XML-запрос <TestInfo><ExpectedBillingResult>…</ExpectedBillingResult></TestInfo>. Значения: Success · Failed · SuccessSequencePayment · FailedSequencePayment.

CreateInvoice — мобильный биллинг (XML)

curl -X POST \ https://pay-sandbox.digitalspb.com/API/XML/InvoiceManagementService.ashx \ -H "Content-Type: text/xml; charset=utf-8" \ --data-binary @create_invoice.xml # create_invoice.xml: # <Request> # <Header><Authentication> # <Login>demo_login</Login> # <NowUtc>20260625120000</NowUtc> # <Signature>abcdef1234...</Signature> # </Authentication></Header> # <CreateInvoiceRequest> # <ProjectID>1001</ProjectID> # <MobilePhoneCustomer> # <MSISDN>79600000000</MSISDN> # </MobilePhoneCustomer> # <InvoiceInfo> # <MerchantOrderID>ORDER-001</MerchantOrderID> # <CustomerPrice amount="99.00" currency="RUB" includingVAT="true"/> # </InvoiceInfo> # <CustomerContractInfo> # <CreateIfNotExists>false</CreateIfNotExists> # <MerchantContractID>contract-123</MerchantContractID> # </CustomerContractInfo> # <!-- Sandbox: управление результатом --> # <TestInfo><ExpectedBillingResult>Success</ExpectedBillingResult></TestInfo> # </CreateInvoiceRequest> # </Request>

CreateInvoice — мобильный биллинг (JSON)

curl -X POST \ https://pay-sandbox.digitalspb.com/api/v3/projects/1001/invoices \ -H "Content-Type: application/json" \ -H "X-Login: demo_login" \ -H "X-Timestamp: $TS" \ -H "X-Signature-Version: 3" \ -H "X-Signature: $SIG" \ -d '{ "customer": { "type": "mobile_phone", "msisdn": "79600000000" }, "order": { "merchant_order_id": "ORDER-001", "price": { "amount": "99.00", "currency": "RUB", "vat_included": true } }, "contract": { "create_if_not_exists": false, "merchant_contract_id": "contract-123" } }'