Installation
ثبّت حزمةdodopayments باستخدام مدير الحزم لديك:
البدء السريع
أنشئ عميلًا، ثم أنشئ جلسة دفع:bearerToken، فسيقرأ العميل متغير البيئة DODO_PAYMENTS_API_KEY. وإذا حذفت environment، فسيتصل العميل بالوضع المباشر. يعمل مفتاح API الخاص بوضع الاختبار فقط مع environment: 'test_mode'.
الميزات الأساسية
TypeScript First
تعريفات الأنواع لكل مَعلمة طلب وحقل استجابة، تظهر في المحرر لديك.
Auto-Pagination
تجلب أساليب القوائم الصفحة التالية تلقائيًا عند التكرار باستخدام
for await...of.Error Handling
فئة أخطاء مقيّدة بالأنواع لكل حالة خطأ HTTP، مع الحالة والترويسات ونص الاستجابة.
Smart Retries
محاولتا إعادة محاولة افتراضيًا، مع تأخير أُسّي، لأخطاء الاتصال ورموز الحالة القابلة لإعادة المحاولة.
الإعدادات
متغيرات البيئة
خزّن مفتاح API في متغير بيئة:.env
إذا تم تعيين عنوان URL أساسي ومرّرت أيضًا
environment، فسيطرح المُنشئ خطأ “Ambiguous URL”. لاستخدام environment في هذه الحالة، مرّر baseURL: null.
للتحقق من webhook، مرّر نص الطلب الخام والترويسات إلى client.webhooks.unwrap(rawBody, { headers }). يتحقق هذا من التوقيع باستخدام مفتاح webhook الخاص بك ويعيد الحدث المحلّل. أما client.webhooks.unsafeUnwrap(rawBody) فيحلّل النص دون التحقق منه، لذا استخدمه للاختبار فقط. راجع Webhooks.
إعداد المهلة الزمنية
تنتهي مهلة الطلبات بعد دقيقة واحدة افتراضيًا. عيّنtimeout، بالمللي ثانية، على العميل أو على طلب واحد:
APIConnectionTimeoutError. تتم إعادة محاولة الطلبات التي انتهت مهلتها، لذلك قد يستغرق الاستدعاء وقتًا أطول من timeout قبل فشله.
إعداد إعادة المحاولة
عيّنmaxRetries على العميل أو على طلب واحد:
DodoPayments.APIError. يحتوي كل خطأ على خصائص status وheaders وerror (نص الاستجابة). تحقّق من فئة محددة باستخدام instanceof، مثل err instanceof DodoPayments.RateLimitError:
العمليات الشائعة
تستخدم الأمثلة في هذا القسمclient من البدء السريع.
إنشاء جلسة دفع
أنشئ جلسة دفع، ثم أعد توجيه العميل إلىcheckout_url المُعاد:
checkout_url مرة واحدة وينتهي بعد 24 ساعة. للاطلاع على كل خيار من خيارات الجلسة، راجع جلسات الدفع.
إدارة العملاء
أنشئ عميلًا باستخدام عنوان بريد إلكتروني واسم، ثم استرجعه بواسطة المعرّف:التعامل مع الاشتراكات
أنشئ اشتراكًا، وافرض رسومًا على اشتراك عند الطلب، واقرأ سجل استخدام الاشتراك.يتطلب
billing فقط country، وهو رمز بلد ISO مكوّن من حرفين. يأخذ customer { customer_id } لإرفاق عميل موجود، أو { email, name? } لإنشاء عميل. يُستخدم charge مع الاشتراكات عند الطلب، ويكون product_price بأصغر وحدة للعملة. يعيد retrieveUsageHistory قائمة مقسّمة إلى صفحات، ويمكنك التكرار عليها كما هو موضح في الترقيم التلقائي للصفحات.الفوترة المستندة إلى الاستخدام
إدخال أحداث الاستخدام
أرسل أحداث الاستخدام إلى عميل:يُعد
event_id مفتاح عدم التكرار، لذا امنح كل حدث قيمة فريدة. إذا ظهر event_id نفسه مرتين في طلب واحد، فسيتم رفض الطلب بالكامل. وإذا كان قد تم إدخال event_id من قبل، فسيتم تجاهل الحدث الجديد. يقبل الطلب ما يصل إلى 1,000 حدث. تكون قيمة timestamp افتراضيًا هي الوقت الحالي، ويُرفض الحدث إذا كان قبل الوقت الحالي بأكثر من ساعة أو بعده بأكثر من 5 دقائق.استرجاع أحداث الاستخدام
استرجع حدثًا واحدًا بواسطةevent_id، أو اعرض قائمة بالأحداث المصفّاة حسب العميل واسم الحدث والنطاق الزمني:
usageEvents.list أيضًا meter_id، ويعيد قائمة مقسّمة إلى صفحات.
إعداد الوكيل الوسيط
لإرسال الطلبات عبر وكيل وسيط، مرّر إعدادات الوكيل الوسيط الخاصة ببيئة التشغيل لديك فيfetchOptions.
Node.js (باستخدام Undici)
مرّرProxyAgent من undici باعتباره dispatcher:
Bun
عيّن الخيارproxy:
Deno
أنشئ عميل HTTP باستخدامDeno.createHttpClient ومرّره باعتباره client:
التسجيل
عيّن مستوى السجل باستخدام خيار العميلlogLevel أو متغير البيئة DODO_PAYMENTS_LOG. يتجاوز خيار العميل متغير البيئة.
'debug': رسائل التصحيح والمعلومات والتحذيرات والأخطاء.'info': رسائل المعلومات والتحذيرات والأخطاء.'warn': التحذيرات والأخطاء. وهذا هو الإعداد الافتراضي.'error': الأخطاء فقط.'off': لا توجد تسجيلات.
console افتراضيًا. لاستخدام pino أو winston أو مكتبة تسجيل أخرى، مرّر أداة التسجيل الخاصة بك باعتبارها خيار logger؛ ويظل logLevel متحكمًا في الرسائل التي تصل إليها. رسائل السجل مخصصة لتصحيح الأخطاء فقط، وقد يتغير تنسيقها بين الإصدارات.
الترحيل من Node.js SDK
إذا كنت تستخدم Node.js SDK القديم، فاتبع دليل الترحيل للترقية. يستخدم SDK الحالي API المضمّنfetch بدلًا من node-fetch، ويتطلب Node.js 20 وTypeScript 4.9 وJest 28 أو الإصدارات الأحدث، ويتضمن أداة ترحيل تحدّث معظم كودك.
View Migration Guide
تعرّف على كيفية الترحيل من Node.js SDK إلى TypeScript SDK
الترقيم التلقائي للصفحات
تعيد أساليب القوائم نتائج مقسّمة إلى صفحات. كرّر باستخدامfor await...of للحصول على العناصر من كل صفحة. يطلب SDK الصفحة التالية عند الحاجة إليها:
page.items واستدعِ hasNextPage() وgetNextPage():
page_size إلى أسلوب القائمة، مثل client.payments.list({ page_size: 50 }).
المتطلبات
يدعم SDK TypeScript 4.9 أو الإصدارات الأحدث وبيئات التشغيل التالية:- متصفحات الويب (Chrome وFirefox وSafari وEdge وغيرها، بأحدث الإصدارات)
- Node.js 20 LTS أو الإصدارات الأحدث (غير المنتهية الصلاحية)
- Deno 1.28.0 أو الإصدارات الأحدث
- Bun 1.0 أو الإصدارات الأحدث
- Cloudflare Workers
- Vercel Edge Runtime
- Jest 28 أو الإصدارات الأحدث مع بيئة
"node"(بيئة"jsdom"غير مدعومة) - Nitro 2.6 أو الإصدارات الأحدث
الموارد
GitHub Repository
الكود المصدري والإصدارات والقائمة الكاملة للأساليب.
API Reference
كل نقطة نهاية ومَعلمة واستجابة.
Discord Community
اطرح الأسئلة وتحدث مع المطورين الآخرين.
Report Issues
أبلغ عن الأخطاء أو اطلب ميزات جديدة.
الدعم
للحصول على مساعدة بشأن TypeScript SDK:- Discord: انضم إلى خادم المجتمع للحصول على مساعدة فورية.
- البريد الإلكتروني: تواصل مع support@dodopayments.com.
- GitHub: افتح مشكلة في المستودع.