Skip to main content

Paylet FR — SDK Python

SDK Python de la passerelle Paylet FR, passerelle de micro-paiement Machine-to-Machine (M2M) compatible x402 / HTTP 402 Payment Required.

Le SDK enveloppe la gateway Paylet et orchestre le flux de paiement à la volée : un agent appelle une ressource payante, reçoit un challenge 402, le règle, puis rejoue la requête avec la preuve de paiement.

  • Aucune dépendance runtime (bibliothèque standard uniquement).
  • Montants exacts en micro-crédits (entiers), zéro flottant.
  • Idempotence automatique (Idempotency-Key), retries avec backoff.
  • Helpers de signature HMAC-SHA256 côté vendeur.

Installation

pip install ./sdk-python
# ou, en développement :
pip install -e ./sdk-python

Démarrage rapide

from paylet import Paylet, Money

client = Paylet("ak_live_<votre-cle>")  # clé M2M, header X-API-Key

# Solde du compte
solde = client.get_balance()
print(solde.available)                 # -> 3.42 EUR
print(solde.available.minor)           # -> 3420000 micro-crédits

# Accès à une ressource payante : le 402 est géré automatiquement
data = client.fetch_paid("GET", "https://vendor.example.com/data/42")
print(data)

Le flux fetch_paid exécute la séquence x402 complète : appel sans preuve -> 402 payment_required -> règlement (POST /v1/payments) -> rejeu avec l'en-tête X-Payment -> livraison de la ressource.

Fonctions exposées

Classe Paylet (client gateway + flux x402)

Méthode Endpoint Description
get_balance() GET /v1/balance solde courant, réservé, disponible
get_ledger(**f) GET /v1/ledger écritures du grand livre (pagination curseur)
list_transactions(**f) GET /v1/transactions liste des transactions
get_transaction(id) GET /v1/transactions/{id} une transaction
get_payment(id) GET /v1/payments/{id} un paiement
get_payment_receipt(id) GET /v1/payments/{id}/receipt récupère un reçu signé perdu
settle(challenge, ...) POST /v1/payments règle un challenge 402, renvoie un Payment
fetch_paid(method, url, ...) — (vendeur tiers) flux x402 de bout en bout

Type Money (montants exacts, zéro flottant)

  • Money.from_minor(1500000) : depuis un entier de micro-crédits.
  • Money.from_eur("1.50") : depuis un prix en euros (chaîne ou Decimal).
  • .minor : l'entier de micro-crédits.
  • .to_eur_str() : la valeur en euros sous forme de chaîne.

1 EUR = 1 000 000 micro-crédits. Aucune conversion silencieuse : passer un flottant à Money lève TypeError.

Exceptions (paylet.errors)

Hiérarchie typée par code d'erreur (contrat section 4.4) : InsufficientFundsError, ChallengeExpiredError, ChallengeInvalidError, IdempotencyConflictError, AuthenticationError, RateLimitedError, NotFoundError, etc. Toutes héritent de PayletError (attributs code, message, status_code, details).

Signature et vendeur (paylet.signing, paylet.vendor)

  • sign_payload / verify_payload : primitives HMAC-SHA256.
  • compute_payload_hash(body) : empreinte sha256:<hex> du corps payant.
  • create_challenge / verify_challenge : challenge x402 côté vendeur.
  • verify_receipt : vérification locale d'un reçu (ressource, montant, bénéficiaire), sans appel réseau.
  • Vendor : regroupe ces opérations sous un objet.

Exemples runnables

python exemples/demo_locale.py   # démo de bout en bout, 100 % locale
python exemples/basic.py         # usage minimal (clé + gateway réelles)

Tests

python -m unittest discover -t . -s tests -v

Note d'interopérabilité

Le format exact du champ de signature des objets signés (challenge et reçu) — champ sig ajouté au JSON canonique, le tout encodé en base64url — n'est pas figé par ARCHITECTURE.md (qui ne précise que « HMAC-SHA256 + base64url »). Ce SDK fixe donc une convention, identique en Python et en TypeScript, à valider par l'architecte pour garantir l'interopérabilité avec la gateway.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

paylet-0.1.0.tar.gz (22.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

paylet-0.1.0-py3-none-any.whl (18.2 kB view details)

Uploaded Python 3

File details

Details for the file paylet-0.1.0.tar.gz.

File metadata

  • Download URL: paylet-0.1.0.tar.gz
  • Upload date:
  • Size: 22.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.6

File hashes

Hashes for paylet-0.1.0.tar.gz
Algorithm Hash digest
SHA256 a68881839fddf42728aa92eb8afc25f0356774fc0f53a866146f527e1dd97ed9
MD5 6caa4eb717b50cde12e25fd04bed57b9
BLAKE2b-256 44dbf3bfb3e929b616b0dba588bbc3e2e218699b3f10ac54b696aef3b5388f29

See more details on using hashes here.

File details

Details for the file paylet-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: paylet-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 18.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.6

File hashes

Hashes for paylet-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 30b8480daea98b66e60453dd2bb70c1b418be741f2083bc5a769a4fc7ac8d516
MD5 37535f48628f4b986355af2c5035aefc
BLAKE2b-256 2890179567a8f74eb106c289d2f98a92148e6bd8433c4262203a6827a9e3644b

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page