Сценарий: MSISDN (мобильный биллинг)
- CreateCustomerContract — создать контракт для MSISDN (см. «Создание контракта»).
- AuthorizeCustomerContract — подтвердить PIN (в песочнице верный —
1234, три попытки). - CreateInvoice с
<MobilePhoneCustomer>— создать инвойс. - Мок отправляет коллбек SendPaymentTransaction на ваш callback URL.
В JSON ответ на POST /invoices с customer.type: mobile_phone содержит блок authorization: {"type": "SMS_PIN", "is_authorized": false} — следующий шаг виден из ответа. Спека допускает семь значений authorization., песочница отдаёт одно: выбор схемы оператором она не эмулирует. У оплаченного инвойса 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)
Sandbox
curl
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)
Sandbox
curl
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" }
}'