|
1 | 1 | """Geração de QR Code Pix (BR Code) — 100% local, sem serviços externos. |
2 | 2 |
|
3 | 3 | Configuração (via variáveis de ambiente / Streamlit secrets — nunca no repo): |
4 | | - PIX_KEY chave Pix (CPF, e-mail, celular ou chave aleatória) |
5 | | - PIX_NOME nome do recebedor (máx. 25 caracteres) |
6 | | - PIX_CIDADE cidade do recebedor (máx. 15 caracteres) |
7 | | - PIX_TXID identificador opcional da transação (padrão: ***) |
| 4 | + PIX_COPIA copia-e-cola Pix oficial (EMV completo, ex.: emitido pelo banco) |
| 5 | + PIX_KEY chave Pix (CPF, e-mail, celular ou chave aleatória) — usado |
| 6 | + somente quando PIX_COPIA não está presente |
| 7 | + PIX_NOME nome do recebedor (máx. 25 caracteres — p/ payload montado por chave) |
| 8 | + PIX_CIDADE cidade do recebedor (máx. 15 caracteres — p/ payload montado por chave) |
| 9 | + PIX_TXID identificador opcional da transação (padrão: ***) |
8 | 10 | """ |
9 | 11 |
|
10 | 12 | import base64 |
@@ -68,11 +70,22 @@ def montar_payload(chave: str, nome: str, cidade: str, txid: str = "***") -> str |
68 | 70 |
|
69 | 71 |
|
70 | 72 | def configurado() -> bool: |
71 | | - return bool(os.environ.get("PIX_KEY", "").strip()) |
| 73 | + return bool(_copia() or os.environ.get("PIX_KEY", "").strip()) |
| 74 | + |
| 75 | + |
| 76 | +def _copia() -> str: |
| 77 | + return os.environ.get("PIX_COPIA", "").strip() |
72 | 78 |
|
73 | 79 |
|
74 | 80 | def payload_configurado() -> str: |
75 | | - """Retorna o copia-e-cola Pix se configurado; string vazia caso contrário.""" |
| 81 | + """Retorna o copia-e-cola Pix se configurado; string vazia caso contrário. |
| 82 | +
|
| 83 | + Prioriza PIX_COPIA (payload oficial emitido pelo banco); se ausente, monta |
| 84 | + o BR Code a partir de PIX_KEY. |
| 85 | + """ |
| 86 | + copia = _copia() |
| 87 | + if copia: |
| 88 | + return copia |
76 | 89 | chave = os.environ.get("PIX_KEY", "").strip() |
77 | 90 | if not chave: |
78 | 91 | return "" |
|
0 commit comments