Guide
Guide d'intégration Python pour créer et payer une transaction YKNPG.
Guide d'intégration Python pour créer et payer une transaction YKNPG.
Pré-requis
- Python 3.10+, accès internet vers votre API YKNPG.
- Un jeton bearer stocké comme
YKNPG_API_TOKEN(utiliser.env, ne jamais le coder en dur). requestsetpython-dotenvinstallés.
- Créer le dossier du projet
mkdir -p demo_python && cd demo_pythonpython -m venv .venv && source .venv/bin/activate
- Installer les dépendances
pip install requests python-dotenv
- Ajouter le fichier d'environnement
- Fichier :
.env
YKNPG_API_TOKEN=remplacez-par-votre-jeton
YKNPG_BASE_URL=https://yknpg.ngoul.com/api/v1
- Créer le script de transaction
- Fichier :
create_transaction.py
import os
import time
from dotenv import load_dotenv
import requests
load_dotenv()
API_TOKEN = os.environ["YKNPG_API_TOKEN"]
BASE_URL = os.environ.get("YKNPG_BASE_URL", "https://yknpg.ngoul.com/api/v1")
def create_transaction(amount: int, phone: str) -> dict:
payload = {
"amount": amount,
"provider": "ORANGE_MONEY",
"user_infos": {"number": phone},
"callback_url": "http://example.com",
"callback_method": "POST",
"your_message": "pay this",
"your_order_ref": "demo-1",
"provider_fees_on_customer": True,
}
resp = requests.post(
f"{BASE_URL}/transactions/",
headers={"Authorization": f"Bearer {API_TOKEN}"},
json=payload,
timeout=10,
)
resp.raise_for_status()
return resp.json()
def pay_transaction(uuid: str) -> dict:
resp = requests.post(
f"{BASE_URL}/transactions/{uuid}/pay/",
headers={"Authorization": f"Bearer {API_TOKEN}"},
timeout=10,
)
resp.raise_for_status()
return resp.json()
def poll_status(uuid: str) -> str:
status = "new"
while status in {"new", "paying"}:
time.sleep(5)
resp = requests.get(
f"{BASE_URL}/transactions/{uuid}/",
headers={"Authorization": f"Bearer {API_TOKEN}"},
timeout=10,
)
resp.raise_for_status()
status = resp.json()["status"]
print(f"Current status: {status}")
return status
if __name__ == "__main__":
phone = input("Enter phone number: ")
amount = int(input("Enter amount: "))
transaction = create_transaction(amount, phone)
print("Gateway instructions:", transaction.get("instructions"))
paid = pay_transaction(transaction["uuid"])
print("Post-pay instructions:", paid.get("instructions"))
final_status = poll_status(transaction["uuid"])
print("Final status:", final_status)
- Exécuter
python create_transaction.py- Suivez les invites du terminal ; partagez les instructions avec le payeur.
Remarques
- Le flux reflète
create_transaction_vapi: création → affichage des instructions → paiement → polling. - Ajustez
provideretcallback_urlselon vos besoins ; gardez les secrets dans.env.