إنتقل إلى المحتوى الرئيسي

مرجع API الـ Payment Intents

مرجع كامل لنقاط نهاية API الـ Payment Intents.

الرابط الأساسي​

https://api.orcarail.com/api/v1

إصدار API موجود في المسار (v1). لاستخدام إصدار آخر، استخدم الرابط الأساسي المقابل (مثل https://api.orcarail.com/api/v2). تستخدم Node SDK الإعدادين baseUrl وapiVersion؛ راجع Node SDK.

إنشاء Payment Intent​

أنشئ Payment Intent جديدًا.

POST /payment_intents

المصادقة​

  • رمز Bearer (JWT) أو مفتاح API (Basic Auth)

جسم الطلب​

المعاملالنوعمطلوبالوصف
amountstringنعمالمبلغ المطلوب تحصيله (مثل "100.00")
currencystringنعمرمز العملة (مثل "usd")
payment_method_typesarrayنعميجب أن يتضمن "crypto"
tokenIdnumberنعممعرّف الرمز (مثل USDC وUSDT)
networkIdnumberنعممعرّف الشبكة (مثل Ethereum وPolygon)
return_urlstringنعمرابط العودة بعد الدفع
cancel_urlstringلارابط الإلغاء
descriptionstringلاوصف الدفعة
metadataobjectلابيانات وصفية مخصصة
expires_atstringلاطابع انتهاء الصلاحية بصيغة ISO 8601
withdrawal_addressesobjectلاعناوين السحب حسب نوع الشبكة. المفاتيح: أنواع الشبكات الصالحة (evm وsolana وbitcoin وtron وcosmos وpolkadot وmove وton). احذفه أو اتركه فارغًا لشبكة ما لاستخدام الافتراضي في حسابك من إعدادات السحب.

الاستجابة​

{
"id": "550e8400-e29b-41d4-a716-446655440000",
"amount": "100.00",
"currency": "usd",
"status": "requires_payment_method",
"paymentMethodTypes": ["crypto"],
"clientSecret": "550e8400-e29b-41d4-a716-446655440000_secret_abc123",
"returnUrl": "https://merchant.example.com/return",
"paymentLink": {
"id": 1,
"link": "https://pay.orcarail.com/pay/pl_abc123"
},
"createdAt": "2024-01-01T00:00:00.000Z"
}

استرجاع Payment Intent​

احصل على تفاصيل Payment Intent.

GET /payment_intents/:id

المصادقة​

  • رمز Bearer (JWT) أو مفتاح API (Basic Auth)

معاملات المسار​

المعاملالنوعمطلوبالوصف
idstringنعممعرّف الـ Payment Intent (مثل 550e8400-e29b-41d4-a716-446655440000)

الاستجابة​

{
"id": "550e8400-e29b-41d4-a716-446655440000",
"amount": "100.00",
"currency": "usd",
"status": "succeeded",
"paymentMethodTypes": ["crypto"],
"latestTransaction": {
"id": "txn_1234567890",
"status": "completed",
"hash": "0x1234567890abcdef...",
"amount": "100.00"
},
"createdAt": "2024-01-01T00:00:00.000Z",
"updatedAt": "2024-01-01T00:00:00.000Z"
}

تأكيد Payment Intent​

أكّد Payment Intent للحصول على رابط التوجيه.

POST /payment_intents/:id/confirm

المصادقة​

  • رمز Bearer (JWT) أو مفتاح API (Basic Auth)

معاملات المسار​

المعاملالنوعمطلوبالوصف
idstringنعممعرّف الـ Payment Intent

جسم الطلب​

المعاملالنوعمطلوبالوصف
client_secretstringنعمالـ client secret من الـ Payment Intent
return_urlstringلاتجاوز رابط العودة
payment_method_dataobjectلابيانات طريقة الدفع

الاستجابة​

{
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "requires_confirmation",
"nextAction": {
"type": "redirect_to_url",
"redirectToUrl": {
"url": "https://pay.orcarail.com/pay/pl_abc123?payment_intent=550e8400-e29b-41d4-a716-446655440000&payment_intent_client_secret=550e8400-e29b-41d4-a716-446655440000_secret_abc123"
}
}
}

إلغاء Payment Intent​

ألغِ Payment Intent. بعد إلغائه لا يمكن استخدامه للدفع.

POST /payment_intents/:id/cancel

المصادقة​

  • مفتاح API (Basic Auth) — مطلوب

معاملات المسار​

المعاملالنوعمطلوبالوصف
idstringنعممعرّف الـ Payment Intent

الاستجابة​

{
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "canceled",
"updatedAt": "2024-01-01T12:00:00.000Z"
}

إكمال Payment Intent​

علّم Payment Intent بأنه قيد المعالجة وأطلق الـ webhook payment_intent.processing. استدعِ ذلك بعد عودة العميل إلى رابط العودة (مثل صفحة النجاح) ليعلّم خادمك الخلفي الـ intent بأنه قيد المعالجة بينما تستطلع أو تنتظر الـ webhook النهائي payment_intent.complete.

POST /payment_intents/:id/complete

المصادقة​

  • مفتاح API (Basic Auth) — مطلوب

معاملات المسار​

المعاملالنوعمطلوبالوصف
idstringنعممعرّف الـ Payment Intent

الاستجابة​

{
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "processing",
"updatedAt": "2024-01-01T12:00:00.000Z"
}

محاكاة دفعة (للـ sandbox فقط)​

أكمل Payment Intent دون تحويل على السلسلة، في مؤسسة sandbox فقط. تمر الدفعة بالتدفق العادي وتُطلق الـ webhooks المعتادة مع livemode: false، وتحمل معاملتها simulated: true. المدفوعات المحاكاة غير قابلة للسحب أبدًا.

POST /payment_intents/:id/simulate

المصادقة​

  • مفتاح API (Basic Auth) لمؤسسة sandbox (ak_test_…) — مطلوب

الأخطاء​

الحالةالرمزمتى
403SIMULATION_SANDBOX_ONLYينتمي الـ intent إلى مؤسسة حية

تستخدم صفحة الدفع المستضافة المقابل العام POST /payments/links/:slug/simulate (لروابط الـ sandbox فقط).

تحديث Payment Intent​

حدّث Payment Intent قبل التأكيد.

PATCH /payment_intents/:id

المصادقة​

  • رمز Bearer (JWT) أو مفتاح API (Basic Auth)

معاملات المسار​

المعاملالنوعمطلوبالوصف
idstringنعممعرّف الـ Payment Intent

جسم الطلب​

كل الحقول اختيارية. ضمّن فقط الحقول المراد تحديثها.

المعاملالنوعمطلوبالوصف
amountstringلاالمبلغ المحدّث
currencystringلاالعملة المحدّثة
descriptionstringلاالوصف المحدّث
metadataobjectلاالبيانات الوصفية المحدّثة
return_urlstringلارابط العودة المحدّث
cancel_urlstringلارابط الإلغاء المحدّث
withdrawal_addressesobjectلاعناوين السحب حسب نوع الشبكة؛ احذفه لاستخدام الافتراضي في الحساب

الاستجابة​

{
"id": "550e8400-e29b-41d4-a716-446655440000",
"amount": "150.00",
"currency": "usd",
"status": "requires_payment_method",
"updatedAt": "2024-01-01T12:00:00.000Z"
}

رموز الحالة​

رمز الحالةالوصف
200نجاح
201تم الإنشاء
400طلب غير صالح
401غير مصرّح
404غير موجود
500خطأ داخلي في الخادم

صيغة استجابة الخطأ​

{
"statusCode": 400,
"message": "Invalid request",
"error": "Bad Request"
}

حدود المعدل​

تخضع طلبات API لحدود معدل. الحدود الحالية:

  • الطلبات المصادَق عليها: 100 طلب في الدقيقة لكل مفتاح API/مستخدم
  • الطلبات غير المصادَق عليها: 10 طلبات في الدقيقة لكل IP

تتضمن الاستجابات ترويسات حدود المعدل:

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1640995200

انظر أيضًا​