أنشئ جلسة الدفع، وأرفق مرجع المشتري، وتحقق من الـ Webhooks الموقّعة من خادم Django أو Flask أو FastAPI. مكتبة قياسية فقط — لا شيء لتراجعه ولا شيء لتثبيت إصداره.
pip install esaalatfrom esaalat import EsaalatClient
# Reads ESAALAT_CLIENT_ID, ESAALAT_CLIENT_SECRET and ESAALAT_WEBHOOK_SECRET.
esaalat = EsaalatClient.from_env()
session = esaalat.create_session(order_id="order-12345", amount=5000)
session["session_token"] # → open the checkout from your page
session["portal_url"] # → or redirect the buyer straight to itfrom esaalat import EsaalatWebhookError
@app.post("/esaalat/webhooks")
def esaalat_webhook():
try:
event = esaalat.verify_webhook(
request.data, # the RAW body
request.headers["X-Esaalat-Signature"],
)
except EsaalatWebhookError:
return "", 400 # anything but 2xx retries
if event["event"] == "payment.verified":
release_order(event["order_id"]) # idempotent on intent_id
return "", 200exp داخل الـ JWT، فلا تبدأ طلباتك بالفشل عند انتهاء الساعة.429 أو انتهاء المهلة أن ينشئ الطلب مرتين.429 و5xx وفشل الشبكة، مع احترام Retry-After.| المعامل | متغير البيئة | القيمة الافتراضية |
|---|---|---|
client_id | ESAALAT_CLIENT_ID | مطلوب |
client_secret | ESAALAT_CLIENT_SECRET | مطلوب |
webhook_secret | ESAALAT_WEBHOOK_SECRET | يحتاجه verify_webhook |
base_url | ESAALAT_BASE_URL | https://api.esaalat.com/api/v1 |
timeout | — | 20 ثانية |
max_retries | — | 2 |
urllib وhmac وjson من المكتبة القياسية.format_amount(5000.5) يرفض قبل إرسال الطلب.