Menu AuthGuardCentro de ajuda
Englishauthguard.pt

Programadores · SDKs

SDK Python

  • 1 min de leitura
  • SaaS · Instalação própria

O pacote authguard-sdk (importado como authguard) usa PyJWT para os JWT.

Instalar

Ainda não está no PyPI. A partir do repositório:

pip install ./sdks/python

Criar um pedido e esperar

import os
from authguard import IntentsClient, WaitTimeoutError

client = IntentsClient(
    base_url="https://identity.example.com",
    client_id="1c9a2b3d-4e5f-4a6b-9c7d-8e9f0a1b2c3d",
    client_secret=os.environ["AUTHGUARD_CLIENT_SECRET"],
)

result = client.create_intent(
    {"operationType": "invoice.pay", "subjectEmail": "ana@example.com",
     "externalReference": "INV-42",
     "fields": {"amount": {"amount": "1250.00", "currency": "EUR"}}},
    idempotency_key="erp-INV-42-attempt-1",
)
print(result.intent["comparisonCode"])   # mostre-o junto à operação

try:
    decided = client.wait_for_decision(result.intent["intentId"], timeout=900)
except WaitTimeoutError:
    client.cancel_intent(result.intent["intentId"])
    raise

result.replayed é True quando a chave já tinha sido usada com o mesmo corpo.

Verificar um webhook (Flask)

from authguard import verify_webhook, WebhookVerificationError

event = verify_webhook(WEBHOOK_SECRET, request.headers, request.get_data())

Uma falha lança WebhookVerificationError; responda 400. Elimine duplicados pelo webhook-id.

Verificar o recibo

verify_intent_digest(intent["intentJson"], intent["intentDigest"]) e check_receipt(intent["receipt"], intent_id=…, intent_digest=…, state=…).

OpenID Connect

OidcClient faz a descoberta, o URL com PKCE, a troca do código e a validação do ID token.

Erros

As falhas da API levantam ApiError com o estado HTTP e o code estável; wait_for_decision levanta WaitTimeoutError quando a espera termina, e cancel_intent levanta um ApiError 409 quando o pedido já foi decidido. Decida pelo código, não pelo texto da mensagem; veja Erros e limites.

Códigos de erro deste artigo

Referência do artigodev-sdk-pythonindique-a ao suporte para identificar este artigo. Verificado contra o produto no commit 5f6607a8.