Skip to main content
Uma conta é prepaid ou postpaid em um dado momento, definido por account_balance.billing_mode. Postpaid fica desligado até que smsg.balance.postpaid.enabled seja true, portanto migrar adiciona duas colunas e não muda nada até que você diga.

O que muda

Uma conta postpaid não é debitada de forma alguma. Seu balance fica em zero, nenhum bloco é reservado, e o que ela deve é derivado de cdr_submit quando a fatura é preparada. O que o gateway aplica em vez disso é credit_limit — quanto de uso não faturado pode acumular antes que a conta seja recusada.
credit_limit = 0 significa sem crédito, não ilimitado.Não há representação de ilimitado e não deve haver. Um erro de digitação ou um campo de formulário ausente deve falhar de forma fechada: uma conta que não pode enviar nada é um chamado de suporte, e uma conta que pode enviar tudo é um mês de tráfego que ninguém pode faturar.
Bater o limite é a mesma recusa que ficar sem crédito prepaid — SMPP 0x402, HTTP 402, motivo insufficientCredit. Deliberadamente: os dois significam “você não pode enviar isto agora”, e dois status codes fariam todo cliente na plataforma aprender um segundo.

Conta exata, aplicação aproximada

Estes são dois trabalhos diferentes, e eles deliberadamente não compartilham uma implementação.

A verificação de limite

Lê um valor em memória atualizado no mesmo poll de 30 segundos que aplica recharges. Tem permissão de estar desatualizado.

A fatura

Uma função pura de cdr_submit sobre uma janela semiaberta. Nunca lê aquele contador, nunca lê account_balance, nunca lê o ledger.
Portanto, a única coisa que pode tornar uma fatura errada é uma linha cdr_submit ausente ou extra. Nada no caminho de aplicação pode corromper uma fatura.

A defasagem é enviesada de forma segura

Um poll só pode apertar o headroom, nunca aumentá-lo — porque a query não pode ver mensagens enviadas enquanto ela estava rodando. Headroom sobe apenas quando a dívida genuinamente encolhe: um período fechado, um reembolso caído ou um operador que mudou o limite. Esse viés é o ponto. A defasagem recusa cedo demais em vez de tarde demais.

Quão longe do limite uma conta pode ir

A última linha é a que se deve observar se você algum dia rodar mais de um gateway contra um banco de dados. Está declarada porque é a que escala, não porque é um problema atual.
Nunca fature a partir do contador, e nunca adicione uma linha de ledger por mensagem para tornar o billing exato.Isso colocaria uma escrita no banco de dados no caminho do dinheiro a milhares por segundo — exatamente o que este subsistema existe para evitar — e cdr_submit já é o registro por mensagem.

Escolhendo entre os dois

Prepaid é o padrão mais seguro para uma nova conta. Postpaid ganha seu risco com clientes cujo volume faz top-ups constantes se tornarem um transtorno.

Relacionado

Crédito prepaid

Blocos, reservas e a identidade do dinheiro.

Statements

Fechando um período e emitindo a fatura.