Open Banking Gateway

دليل التكامل

ابدأ بأمان. واتصل بوعي.

بيئتان ونوعان من المصادقة وقاعدة فوترة واضحة. إليك كيفية عملها معًا.

ابدأ هنا

اختر التكامل وتحقق من شارة التوفر. لكل تطبيق بيئة ثابتة البيانات، ولا تتوفر نقطة فعلية إلا إذا أوضح الدليل ذلك. مسارات API لا تتغير حسب اللغة.

عنوان البيئة التجريبية
https://www.openbankinggateway.com/api/sandbox
عنوان الاتصال الفعلي
https://www.openbankinggateway.com/api/v1

البيئة المجانية

تستخدم وحدة الموقع طلبات /api/sandbox نسبية من المصدر نفسه. لا تحتاج الخدمة المجهولة دخول Google أو مفتاحًا أو حساب محفظة أو رصيدًا. ليست وسيط متصفح عابرًا للمصادر؛ نفّذ الأمثلة هنا أو بعميل HTTP على الخادم.

استخدم هويات وبيانات الاختبار العامة المعروضة في الصفحات والوحدة فقط. التحويلات محاكاة، ولا تُرسل رسائل، والرموز التجريبية لا تعمل فعليًا.

JavaScript · same-origin sandbox
const response = await fetch('/api/sandbox/bkash-agent/login/request-otp', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    account: '01700000001',
    phoneOperator: 'Grameenphone'
  })
});
const result = await response.json();
curl · sandbox
curl -X POST 'https://www.openbankinggateway.com/api/sandbox/bkash-agent/login/request-otp' \
  -H 'Content-Type: application/json' \
  --data '{
  "account": "01700000001",
  "phoneOperator": "Grameenphone"
}'

مصادقة الواجهة الفعلية

للطلبات الفعلية بين الخوادم، ادخل للموقع وأنشئ مفتاحًا في لوحة التحكم ثم أرسله في x-api-key. لا تكشفه في JavaScript المتصفح أو الروابط أو المستودعات العامة. تعمل التكاملات المدعومة فعليًا فقط.

curl · Live · x-api-key
curl 'https://www.openbankinggateway.com/api/v1/bkash-agent/balance?account=<YOUR_WALLET_NUMBER>' \
  -H "x-api-key: $OBG_API_KEY" \
  -H "X-OBG-Token: $WALLET_TOKEN"
إدارة مفاتيح API

دخول الموقع ودخول المحفظة

يصادق Google حسابك في Open Banking Gateway للوصول للرصيد والمفاتيح والفوترة، ولا يُدخلك إلى bKash أو أي محفظة. أكمل دخول المحفظة منفصلًا بحساب مخوّل لك تشغيله.

تُربط جلسات bKash الفعلية بحساب موقعك بعد الدخول. لا يمكن لمستخدم آخر الاستيلاء على هذا الربط. احفظ رمز المحفظة بأمان وأعد المصادقة عند انتهاء جلسة المزوّد.

  1. 1POST /login/request-otp
  2. 2POST /login/verify-otp
POST · Live · verify-otp
curl -X POST 'https://www.openbankinggateway.com/api/v1/bkash-agent/login/verify-otp' \
  -H "x-api-key: $OBG_API_KEY" \
  -H 'Content-Type: application/json' \
  --data '{
    "account": "<YOUR_WALLET_NUMBER>",
    "pin": "<WALLET_PIN>",
    "otp": "<SMS_OTP>",
    "otpHash": "<SMS_HASH>"
  }'

الحقول الحساسة

أرسل رمز المحفظة في X-OBG-Token. وأرسل PIN وكلمات المرور وOTP وotpHash في جسم JSON لطلبات POST مع Content-Type: application/json. الاستعلامات متوافقة، لكنها قد تسرّب الأسرار للسجل أو الصور أو الإحالات أو السجلات؛ لا تستخدمها للتكاملات الجديدة.

الرصيد والفوترة

كل طلب فعلي ناجح يكلّف رصيدًا واحدًا. الفشل، بما فيه فشل المزوّد، مجاني؛ والتجربة لا تستهلك رصيدًا. قد يُحجز رصيد واحد مؤقتًا أثناء الطلب ثم يُخصم أو يُحرر عند التسوية.

يمنحك أول دخول عبر Google مقدار 1,000 رصيد لمرة واحدة. اشترِ 10,000 مقابل 10 دولارات، أو 50,000 مقابل 50، أو 100,000 مقابل 100. لا تنتهي صلاحيتها، ولا تفتح الواجهات التجريبية فقط.

الأسعار

الاستجابات

تستخدم الاستجابات {code, data}. رمز البوابة وحالة HTTP وحالة المزوّد المتداخلة تصف طبقات مختلفة؛ HTTP 200 أو code 200 وحده لا يثبت نجاح عملية المحفظة. افحص حقول نتيجة المزوّد. لا يُخصم رصيد عند فشل المزوّد المتداخل حتى إن كان الرمز الخارجي 200. تعيد بنية استجابة المزوّد غير المعروفة HTTP 502 مع UPSTREAM_BAD_RESPONSE دون رسوم. لا يُضمن حقل إضافي للاستجابة الخام.

JSON · gateway error
{
  "code": 400,
  "data": {
    "error": "One or more parameters are missing or invalid.",
    "errorCode": "INVALID_PARAMS",
    "requestId": "<request-id>"
  }
}

يعرّف X-Request-Id الطلب. عند تأكيد التسوية، تكون قيمة X-Credits-Charged هي 1 لطلب فعلي ناجح مدفوع و0 للفشل أو التجربة. يعني X-OBG-Settlement: unknown أن نتيجة الفوترة غير محسومة؛ ولا يثبت X-Credits-Charged: 0 عدم حدوث خصم. احتفظ بالمعرّف لا ببيانات الاعتماد للتشخيص.

التحويلات وإعادة المحاولة

تتطلب العمليات المالية الفعلية Idempotency-Key فريدًا لكل عملية مقصودة. احتفظ بالمفتاح نفسه أثناء التحقق منها، ولا تنشئ مفتاحًا جديدًا لإعادة تحويل مجهول النتيجة. لا تعيد البوابة الطلبات تلقائيًا.

HTTP headers · example
Idempotency-Key: <original-operation-id>
X-Request-Id: <gateway-request-id>
X-Credits-Charged: 0
X-OBG-Settlement: unknown

الأخطاء والحدود

تُحد التجربة بـ60 طلبًا في الدقيقة لكل IP، وتوجد حدود فعلية وللحسابات. عند 429 التزم بـRetry-After. مهلة القراءة 25 ثانية، والدخول والكتابة والمال حتى 45 ثانية.

الأخطاء والحدود
HTTPرمز البوابةالإجراء المطلوب
404APP_NOT_FOUNDتحقق من الحقول المطلوبة والأنواع وقواعد التحقق.
404ENDPOINT_NOT_FOUNDتحقق من الحقول المطلوبة والأنواع وقواعد التحقق.
405METHOD_NOT_ALLOWEDتحقق من الحقول المطلوبة والأنواع وقواعد التحقق.
503LIVE_GATEWAY_DISABLEDالبوابة الفعلية أو خدمة مطلوبة غير مفعلة. جرّب البيئة التجريبية أو تواصل مع الدعم.
403LIVE_ACCESS_NOT_ENABLEDلا يوجد مزوّد فعلي مفعّل. استخدم التجربة أو تواصل معنا. لا يُخصم رصيد.
401INVALID_API_KEYقدّم مفتاحًا صالحًا أو ادخل لوحدة الموقع الفعلية. أخطاء جلسة المحفظة نتائج منفصلة من المزوّد.
401UNAUTHENTICATEDقدّم مفتاحًا صالحًا أو ادخل لوحدة الموقع الفعلية. أخطاء جلسة المحفظة نتائج منفصلة من المزوّد.
403ORIGIN_REJECTEDقدّم مفتاحًا صالحًا أو ادخل لوحدة الموقع الفعلية. أخطاء جلسة المحفظة نتائج منفصلة من المزوّد.
400INVALID_PARAMSتحقق من الحقول المطلوبة والأنواع وقواعد التحقق.
400INVALID_IDEMPOTENCY_KEYتحقق من الحقول المطلوبة والأنواع وقواعد التحقق.
413PAYLOAD_TOO_LARGEتحقق من الحقول المطلوبة والأنواع وقواعد التحقق.
415UNSUPPORTED_MEDIA_TYPEتحقق من الحقول المطلوبة والأنواع وقواعد التحقق.
429RATE_LIMITEDانتظر المدة في Retry-After ولا تُكرر الطلبات بسرعة.
403ACCOUNT_LINKED_TO_ANOTHER_USERأكمل دخول المحفظة بحساب الموقع الصحيح. لا يمكن ربط محفظة بمستخدمين.
403ACCOUNT_NOT_LINKEDأكمل دخول المحفظة بحساب الموقع الصحيح. لا يمكن ربط محفظة بمستخدمين.
409REQUEST_IN_PROGRESSافحص العملية الأصلية ونتيجتها قبل أي إجراء.
409IDEMPOTENT_REPLAYافحص العملية الأصلية ونتيجتها قبل أي إجراء.
422IDEMPOTENCY_KEY_REUSEDافحص العملية الأصلية ونتيجتها قبل أي إجراء.
402INSUFFICIENT_CREDITSاشحن الرصيد قبل طلب فعلي آخر.
504UPSTREAM_TIMEOUTاحتفظ بمعرّف الطلب وIdempotency-Key الأصلي. إذا كانت نتيجة التحويل أو تسوية الفوترة غير محسومة فراجع الاستخدام وطابق نتيجة المزوّد قبل المحاولة؛ ولا تُكرر العملية تلقائيًا مطلقًا.
502UPSTREAM_UNAVAILABLEاحتفظ بمعرّف الطلب وIdempotency-Key الأصلي. إذا كانت نتيجة التحويل أو تسوية الفوترة غير محسومة فراجع الاستخدام وطابق نتيجة المزوّد قبل المحاولة؛ ولا تُكرر العملية تلقائيًا مطلقًا.
502UPSTREAM_BAD_RESPONSEلم تُعرف بنية استجابة المزوّد. تعيد البوابة HTTP 502 ولا تخصم رصيدًا. في العمليات المالية لا يثبت ذلك عدم تحرك الأموال؛ طابق نتيجة المزوّد قبل أي إعادة محاولة.
503NOT_CONFIGUREDالبوابة الفعلية أو خدمة مطلوبة غير مفعلة. جرّب البيئة التجريبية أو تواصل مع الدعم.
500INTERNAL_ERRORاحتفظ بمعرّف الطلب وIdempotency-Key الأصلي. إذا كانت نتيجة التحويل أو تسوية الفوترة غير محسومة فراجع الاستخدام وطابق نتيجة المزوّد قبل المحاولة؛ ولا تُكرر العملية تلقائيًا مطلقًا.

مرجع التكاملات

تتضمن كل صفحة القائمة الدقيقة للطلبات وقواعدها ووحدة تجريبية افتراضيًا. التوفر تحدده قائمة التكاملات لا شراء الرصيد.