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 ouDecimal)..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): empreintesha256:<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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a68881839fddf42728aa92eb8afc25f0356774fc0f53a866146f527e1dd97ed9
|
|
| MD5 |
6caa4eb717b50cde12e25fd04bed57b9
|
|
| BLAKE2b-256 |
44dbf3bfb3e929b616b0dba588bbc3e2e218699b3f10ac54b696aef3b5388f29
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
30b8480daea98b66e60453dd2bb70c1b418be741f2083bc5a769a4fc7ac8d516
|
|
| MD5 |
37535f48628f4b986355af2c5035aefc
|
|
| BLAKE2b-256 |
2890179567a8f74eb106c289d2f98a92148e6bd8433c4262203a6827a9e3644b
|