دليل التكامل
ابدأ بأمان. واتصل بوعي.
بيئتان ونوعان من المصادقة وقاعدة فوترة واضحة. إليك كيفية عملها معًا.
ابدأ هنا
اختر التكامل وتحقق من شارة التوفر. لكل تطبيق بيئة ثابتة البيانات، ولا تتوفر نقطة فعلية إلا إذا أوضح الدليل ذلك. مسارات API لا تتغير حسب اللغة.
- عنوان البيئة التجريبية
- https://www.openbankinggateway.com/api/sandbox
- عنوان الاتصال الفعلي
- https://www.openbankinggateway.com/api/v1
البيئة المجانية
تستخدم وحدة الموقع طلبات /api/sandbox نسبية من المصدر نفسه. لا تحتاج الخدمة المجهولة دخول Google أو مفتاحًا أو حساب محفظة أو رصيدًا. ليست وسيط متصفح عابرًا للمصادر؛ نفّذ الأمثلة هنا أو بعميل HTTP على الخادم.
استخدم هويات وبيانات الاختبار العامة المعروضة في الصفحات والوحدة فقط. التحويلات محاكاة، ولا تُرسل رسائل، والرموز التجريبية لا تعمل فعليًا.
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 -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 '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"دخول الموقع ودخول المحفظة
يصادق Google حسابك في Open Banking Gateway للوصول للرصيد والمفاتيح والفوترة، ولا يُدخلك إلى bKash أو أي محفظة. أكمل دخول المحفظة منفصلًا بحساب مخوّل لك تشغيله.
تُربط جلسات bKash الفعلية بحساب موقعك بعد الدخول. لا يمكن لمستخدم آخر الاستيلاء على هذا الربط. احفظ رمز المحفظة بأمان وأعد المصادقة عند انتهاء جلسة المزوّد.
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 دون رسوم. لا يُضمن حقل إضافي للاستجابة الخام.
{
"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 فريدًا لكل عملية مقصودة. احتفظ بالمفتاح نفسه أثناء التحقق منها، ولا تنشئ مفتاحًا جديدًا لإعادة تحويل مجهول النتيجة. لا تعيد البوابة الطلبات تلقائيًا.
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 | رمز البوابة | الإجراء المطلوب |
|---|---|---|
| 404 | APP_NOT_FOUND | تحقق من الحقول المطلوبة والأنواع وقواعد التحقق. |
| 404 | ENDPOINT_NOT_FOUND | تحقق من الحقول المطلوبة والأنواع وقواعد التحقق. |
| 405 | METHOD_NOT_ALLOWED | تحقق من الحقول المطلوبة والأنواع وقواعد التحقق. |
| 503 | LIVE_GATEWAY_DISABLED | البوابة الفعلية أو خدمة مطلوبة غير مفعلة. جرّب البيئة التجريبية أو تواصل مع الدعم. |
| 403 | LIVE_ACCESS_NOT_ENABLED | لا يوجد مزوّد فعلي مفعّل. استخدم التجربة أو تواصل معنا. لا يُخصم رصيد. |
| 401 | INVALID_API_KEY | قدّم مفتاحًا صالحًا أو ادخل لوحدة الموقع الفعلية. أخطاء جلسة المحفظة نتائج منفصلة من المزوّد. |
| 401 | UNAUTHENTICATED | قدّم مفتاحًا صالحًا أو ادخل لوحدة الموقع الفعلية. أخطاء جلسة المحفظة نتائج منفصلة من المزوّد. |
| 403 | ORIGIN_REJECTED | قدّم مفتاحًا صالحًا أو ادخل لوحدة الموقع الفعلية. أخطاء جلسة المحفظة نتائج منفصلة من المزوّد. |
| 400 | INVALID_PARAMS | تحقق من الحقول المطلوبة والأنواع وقواعد التحقق. |
| 400 | INVALID_IDEMPOTENCY_KEY | تحقق من الحقول المطلوبة والأنواع وقواعد التحقق. |
| 413 | PAYLOAD_TOO_LARGE | تحقق من الحقول المطلوبة والأنواع وقواعد التحقق. |
| 415 | UNSUPPORTED_MEDIA_TYPE | تحقق من الحقول المطلوبة والأنواع وقواعد التحقق. |
| 429 | RATE_LIMITED | انتظر المدة في Retry-After ولا تُكرر الطلبات بسرعة. |
| 403 | ACCOUNT_LINKED_TO_ANOTHER_USER | أكمل دخول المحفظة بحساب الموقع الصحيح. لا يمكن ربط محفظة بمستخدمين. |
| 403 | ACCOUNT_NOT_LINKED | أكمل دخول المحفظة بحساب الموقع الصحيح. لا يمكن ربط محفظة بمستخدمين. |
| 409 | REQUEST_IN_PROGRESS | افحص العملية الأصلية ونتيجتها قبل أي إجراء. |
| 409 | IDEMPOTENT_REPLAY | افحص العملية الأصلية ونتيجتها قبل أي إجراء. |
| 422 | IDEMPOTENCY_KEY_REUSED | افحص العملية الأصلية ونتيجتها قبل أي إجراء. |
| 402 | INSUFFICIENT_CREDITS | اشحن الرصيد قبل طلب فعلي آخر. |
| 504 | UPSTREAM_TIMEOUT | احتفظ بمعرّف الطلب وIdempotency-Key الأصلي. إذا كانت نتيجة التحويل أو تسوية الفوترة غير محسومة فراجع الاستخدام وطابق نتيجة المزوّد قبل المحاولة؛ ولا تُكرر العملية تلقائيًا مطلقًا. |
| 502 | UPSTREAM_UNAVAILABLE | احتفظ بمعرّف الطلب وIdempotency-Key الأصلي. إذا كانت نتيجة التحويل أو تسوية الفوترة غير محسومة فراجع الاستخدام وطابق نتيجة المزوّد قبل المحاولة؛ ولا تُكرر العملية تلقائيًا مطلقًا. |
| 502 | UPSTREAM_BAD_RESPONSE | لم تُعرف بنية استجابة المزوّد. تعيد البوابة HTTP 502 ولا تخصم رصيدًا. في العمليات المالية لا يثبت ذلك عدم تحرك الأموال؛ طابق نتيجة المزوّد قبل أي إعادة محاولة. |
| 503 | NOT_CONFIGURED | البوابة الفعلية أو خدمة مطلوبة غير مفعلة. جرّب البيئة التجريبية أو تواصل مع الدعم. |
| 500 | INTERNAL_ERROR | احتفظ بمعرّف الطلب وIdempotency-Key الأصلي. إذا كانت نتيجة التحويل أو تسوية الفوترة غير محسومة فراجع الاستخدام وطابق نتيجة المزوّد قبل المحاولة؛ ولا تُكرر العملية تلقائيًا مطلقًا. |
مرجع التكاملات
تتضمن كل صفحة القائمة الدقيقة للطلبات وقواعدها ووحدة تجريبية افتراضيًا. التوفر تحدده قائمة التكاملات لا شراء الرصيد.