Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SMSGo + Django — Exemplo oficial

Django Python License

Exemplo completo de integração da SMSGo com Django: settings, service de envio, views de OTP e webhook assinado, e testes com chave test_.

O que este exemplo demonstra

  • Configuração do cliente SMSGo via Django settings.
  • Geração e validação de código OTP de 6 dígitos com TTL de 5 minutos no Redis.
  • Envio de SMS OTP através de funções de serviço.
  • Recebimento de webhooks de entrega (DLR) assinados com HMAC-SHA256.
  • Testes unitários com chave de teste, sem gastar créditos reais.

Estrutura do exemplo

smsgo-django-example/
├── smsgo_sms/
│   ├── __init__.py
│   ├── settings.py           # Configuração SMSGO_API_KEY e Redis
│   ├── urls.py               # Rotas /otp/request, /otp/verify, /webhooks/smsgo
│   ├── wsgi.py
│   ├── services.py           # Cliente SMSGo e funções de envio
│   ├── views.py              # Views de OTP e webhook
│   └── tests.py              # Testes com chave test_
├── manage.py
├── requirements.txt
├── .env.example
├── .github/workflows/ci.yml
└── LICENSE

Instalação

python -m venv .venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate
pip install -r requirements.txt
cp .env.example .env

Configure o .env:

SMSGO_KEY="test_sua_chave_aqui"
SMSGO_WEBHOOK_SECRET="whsec_..."
REDIS_URL="redis://localhost:6379/0"

Inicie o Redis localmente (ou use Docker):

docker run -d -p 6379:6379 redis:7-alpine

Como funciona

  1. O usuário solicita OTP via POST /otp/request informando o telefone.
  2. A view gera um código de 6 dígitos e armazena no Redis com TTL de 5 minutos.
  3. O serviço send_otp envia o SMS pelo cliente SMSGo.
  4. A SMSGo entrega o status de entrega (DLR) via POST /webhooks/smsgo, assinado com HMAC-SHA256.

Endpoints

Método Rota Descrição
POST /otp/request Solicita envio de OTP
POST /otp/verify Verifica código de OTP
POST /webhooks/smsgo Recebe callback de status da SMSGo

Exemplos de requisição

# Solicitar OTP
curl -X POST http://localhost:8000/otp/request \
  -H "Content-Type: application/json" \
  -d '{"phone":"+5511999990000"}'

# Verificar OTP
curl -X POST http://localhost:8000/otp/verify \
  -H "Content-Type: application/json" \
  -d '{"phone":"+5511999990000","code":"123456"}'

Testes

python manage.py test

Executar localmente

python manage.py runserver

Documentação

Licença

MIT © SMSGo

About

Exemplo de integração da API de SMS da SMSGo em Django — envio transacional e webhook de status.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages