عرض تجريبي مباشر

دليل بوابة الدفع

تكامل Razorpay API لمواقع حجز السفر

Razorpay بوابة دفع للهند تقبل البطاقات وUPI والخدمات المصرفية عبر الإنترنت والمحافظ بالروبية. يشرح هذا الدليل كيف تعمل دفعة Razorpay في حجز طيران أو فندق أو جولة، والوضع الفعلي في PHPTRAVELS: Razorpay ليس موصلاً جاهزاً اليوم، لكن يمكن إضافته كتكامل مخصص على الشيفرة المصدرية التي تملكها.

  • بطاقات وUPI وخدمات مصرفية ومحافظ
  • طلب وCheckout وتحصيل
  • التحقق من التوقيع والـ Webhook
  • استرداد كامل وجزئي

Razorpay في لمحة

ما هو Razorpay وأين يقف في PHPTRAVELS

Razorpay بوابة دفع هندية. تستخدمها شركة سفر تبيع لعملاء في الهند لقبول وسائل الدفع التي يتوقعونها عند الدفع: بطاقات الخصم والائتمان وUPI والخدمات المصرفية عبر الإنترنت والمحافظ الشائعة، تُحصَّل وتُسوّى بالروبية الهندية في حساب Razorpay الخاص بالتاجر.

PHPTRAVELS منصة حجز سفر مستضافة ذاتياً ومعها الشيفرة المصدرية كاملة. بوابات الدفع الجاهزة فيها تأتي من قائمة حية تُفعّلها ببيانات التاجر الخاصة بك. Razorpay ليس في هذه القائمة اليوم، لذا لا يوجد مفتاح تفعيل له في لوحة الإدارة بعد.

هذا لا يعني أنك لا تستطيع استخدامه. بما أن الشيفرة ملكك، يمكن إضافة Razorpay على شكل تكامل API مخصص، وللهند توجد بالفعل بوابة جاهزة: Cashfree. تعرض صفحة تكامل بوابات الدفع كل البوابات التي يمكنك تفعيلها الآن.

رسم توضيحي لدفعة سفر عبر الإنترنت: صفحة إتمام حجز تمرّر دفعة بطاقة إلى بوابة دفع ثم تعود إلى نظام الحجز

بطاقة معلومات Razorpay

ما هو
بوابة دفع للشركات في الهند
وسائل الدفع
بطاقات وUPI وخدمات مصرفية ومحافظ
العملة
تحصيل وتسوية بالروبية INR؛ تُرسل المبالغ بالبايسة
مفاتيح API
Key ID وKey Secret، منفصلان لوضع الاختبار ووضع الإنتاج
الوضع في PHPTRAVELS
ليس موصلاً جاهزاً. متاح كتكامل مخصص على الشيفرة المصدرية المرفقة
الجاهز اليوم في الهند
Cashfree، يُفعَّل في لوحة الإدارة بحسابك الخاص في Cashfree
دليل إعداد Cashfree

مسار الدفع

دفعة Razorpay واحدة لحجز سفر، خطوة بخطوة

يقسّم تكامل Razorpay العمل بين متصفح المسافر وخادمك. يعرض المتصفح Checkout؛ أما الخادم فينشئ الطلب ويتحقق من النتيجة ويقرر متى يُؤكَّد الحجز.

  1. 01

    خادمك

    إنشاء طلب

    عندما يضغط المسافر على الدفع، يستدعي خادمك Orders API بالمبلغ بالبايسة والعملة وreceipt يحمل مرجع الحجز. يعيد Razorpay قيمة order_id.

  2. 02

    المتصفح

    فتح Razorpay Checkout

    تفتح صفحة الحجز Checkout بالـ Key ID الخاص بك وهذا order_id، فيدفع المسافر بالضبط المبلغ الذي حدده خادمك.

  3. 03

    المتصفح

    المسافر يدفع

    يختار المسافر بطاقة أو UPI أو خدمة مصرفية أو محفظة ويُكمل أي خطوة يطلبها بنكه. تصبح الدفعة مُفوَّضة.

  4. 04

    المتصفح

    يعيد Checkout ثلاث قيم

    عند النجاح يعيد Checkout القيم razorpay_payment_id وrazorpay_order_id وrazorpay_signature، وترسلها الصفحة إلى خادمك.

  5. 05

    خادمك

    التحقق من التوقيع

    يعيد خادمك حساب التوقيع من order_id وpayment_id باستخدام Key Secret. لا يُعدّ دفعة حقيقية إلا التوقيع المطابق.

  6. 06

    خادمك

    تحصيل الدفعة

    مع التحصيل التلقائي يحصّل Razorpay نيابةً عنك. ومع التحصيل اليدوي يحصّل خادمك بعد أن تؤكد شركة الطيران أو الفندق أو مورّد الجولة الحجز، فلا يُحاسَب أحد على حجز فشل.

  7. 07

    خادمك

    تأكيد الحجز

    ينتقل الحجز إلى مدفوع، وتُصدر التذكرة أو القسيمة، ويُخزَّن payment_id الخاص بـ Razorpay مع مرجع الحجز.

  8. 08

    خادمكمن خادم إلى خادم

    استقبال الـ Webhook

    يرسل Razorpay أيضاً أحداثاً مثل payment.captured إلى عنوان الـ Webhook لديك. وهذا يغطي المسافر الذي يغلق التبويب قبل أن تتمكن الصفحة من الإبلاغ.

التوقيعات والـ Webhooks

فحصان يُبقيان تكامل Razorpay موثوقاً

أي شيء يصل من المتصفح أو عبر الإنترنت يمكن تزويره. لا يثق تكامل Razorpay بدفعة إلا بعد التحقق من توقيع صُنع بسرّ لا يغادر خادمك أبداً.

verify-razorpay.php · للتوضيح
 1// 1. After Checkout: verify the payment signature 2$orderId   = $booking["razorpay_order_id"];  // from your own record 3$paymentId = $_POST["razorpay_payment_id"]; 4$signature = $_POST["razorpay_signature"]; 5$expected  = hash_hmac("sha256", $orderId . "|" . $paymentId, $keySecret); 6if (!hash_equals($expected, $signature)) { rejectPayment(); } 7markPaid($booking["ref"], $paymentId); 8 9// 2. Webhook: verify X-Razorpay-Signature over the raw body10$body    = file_get_contents("php://input");11$header  = $_SERVER["HTTP_X_RAZORPAY_SIGNATURE"] ?? "";12$expect  = hash_hmac("sha256", $body, $webhookSecret);13if (!hash_equals($expect, $header)) { http_response_code(400); exit; }14$event = json_decode($body, true);15if (alreadyHandled($event)) exit;          // repeat delivery16switch ($event["event"]) {17  case "payment.captured": confirmBooking($event); break;18  case "refund.processed": markRefunded($event);   break;19}

شيفرة وهمية توضيحية لعرض المنطق، وليست ملفاً جاهزاً للنسخ. اتبع وثائق Razorpay وحزم SDK الخاصة به للاستدعاءات الدقيقة.

  • توقيع الدفعة

    يجب أن يساوي HMAC SHA256 لـ order_id يليه الرمز | ثم payment_id، بمفتاح Key Secret الخاص بك، قيمة razorpay_signature. قارن باستخدام دالة زمنها ثابت.

  • توقيع الـ Webhook

    يحمل كل Webhook ترويسة X-Razorpay-Signature: وهي HMAC SHA256 لجسم الطلب الخام، بمفتاح سر الـ Webhook الذي تضبطه في لوحة Razorpay.

  • التسليم المتكرر

    قد تصل الـ Webhooks أكثر من مرة أو بترتيب مختلف. سجّل معرّفات الحدث والدفعة وتجاهل أي حدث طبّقته على الحجز من قبل.

  • الأسرار تبقى على الخادم

    يذهب Key ID فقط إلى المتصفح. أما Key Secret وسر الـ Webhook فيبقيان في إعدادات الخادم، وليس في مصدر الصفحة أو تطبيق الجوال.

الاسترداد والإلغاء

استرداد السفر نادراً ما يكون بالمبلغ كاملاً

رسوم الإلغاء وقواعد عدم الحضور والرحلات الملغاة جزئياً تجعل الاسترداد في السفر جزئياً في الغالب. تتعامل Refunds API من Razorpay مع الحالتين، ويحدد التكامل المبلغ وفق قواعد الحجز لديك.

  • استرداد كامل

    الإلغاء المجاني يعيد المبلغ المحصَّل كاملاً إلى وسيلة الدفع التي استخدمها المسافر.

  • استرداد جزئي

    بعد خصم رسوم الإلغاء، يسترد الخادم الرصيد المتبقي فقط. يُرسل المبلغ بالبايسة مثل الطلب الأصلي.

  • جزء من رحلة

    ألغِ ليلة فندق واحدة أو راكباً واحداً واسترد ذلك الجزء؛ ويمكن أن تتبعه استردادات جزئية أخرى حتى إجمالي المبلغ المحصَّل.

  • refund.processed

    يخبر Webhook الاسترداد خادمك متى تمّ الاسترداد، فيرى الحجز والمسافر الحالة الصحيحة.

  • يُخزَّن مع الحجز

    يُحفظ معرّف كل استرداد مع مرجع الحجز وpayment_id الأصلي لفريق الحسابات لديك.

  • مثال: إلغاء مع رسوم

    المبلغ المحصَّل
    ₹12,500.00 amount: 1250000
    رسوم الإلغاء
    ₹1,500.00 amount: 150000
    مبلغ الاسترداد
    ₹11,000.00 amount: 1100000

    أرقام توضيحية فقط. يقبل Razorpay المبالغ بأصغر وحدة للعملة، فكل 100 بايسة تساوي روبية واحدة.

كيف تربط Razorpay

ثلاث طرق لقبول المدفوعات مع Razorpay أو بدونه

اختر الطريق المناسب لفريقك وموعد إطلاقك. في الطرق الثلاث تبقى الأموال في حساب التاجر الخاص بك؛ ولا تكون PHPTRAVELS طرفاً في التسوية أبداً.

  1. الخيار 1

    مطوّروك يضيفونه

    تأتي PHPTRAVELS بالشيفرة المصدرية كاملة، فيستطيع مطوّروك إضافة Razorpay كبوابة جديدة بجانب الحالية: إنشاء الطلب وCheckout في خطوة الدفع والتحقق من التوقيع والتحصيل والـ Webhooks والاسترداد.

    • ابنِ واختبر بمفاتيح وضع الاختبار من Razorpay
    • أعد استخدام مرجع الحجز كـ receipt للطلب
    • انتقل إلى مفاتيح الإنتاج بعد نجاح حجوزات الاختبار
  2. الخيار 2

    PHPTRAVELS تبنيه

    يستطيع مطوّرونا بناء موصل Razorpay لك على شكل تكامل API مخصص. ترسل المتطلبات، وتتلقى التكلفة والجدول الزمني قبل بدء العمل، وتحصل في النهاية على الشيفرة المصدرية المختبرة.

    • عرض سعر قبل بدء العمل
    • مبني على وضع الاختبار في Razorpay
    • يُسلَّم كشيفرة مصدرية تملكها
  3. الخيار 3

    استخدم بوابة جاهزة الآن

    إذا كنت بحاجة إلى الإطلاق أولاً، فعّل بوابة موجودة بالفعل في المنصة. وللهند هي Cashfree. من البوابات الجاهزة اليوم:

بوابات جاهزة

بوابات دفع يمكنك تفعيلها اليوم

تأتي هذه القائمة حية من دليل بوابات PHPTRAVELS. تُفعَّل كل بوابة في لوحة الإدارة بحسابك ومفاتيحك الخاصة.

هل تريد فهم الاستدعاءات خلف أي منها؟ اقرأ دليل واجهة API لبوابة الدفع، وقارن دليلي مدفوعات Stripe ومدفوعات PayPal، أو اطّلع على كيف يدفع الوكلاء من محفظة الوكيل B2B في بوابة B2B.

أسئلة عن Razorpay

Razorpay وPHPTRAVELS، بالأجوبة

تحدّث مع المبيعات

ليس كموصل جاهز. Razorpay ليس في قائمة بوابات PHPTRAVELS اليوم، لذا لا يمكنك تفعيله في لوحة الإدارة. وبما أن الشيفرة المصدرية كاملة مرفقة، يمكن إضافته كتكامل مخصص لبوابة دفع، بواسطة مطوّريك أو مطوّرينا.

Cashfree بوابة جاهزة في PHPTRAVELS ولها دليل إعداد على docs.phptravels.com/payments/cashfree. تُفعّلها في لوحة الإدارة بحسابك الخاص في Cashfree. وتوجد بوابات جاهزة أخرى مثل Stripe وPayPal في صفحة بوابات الدفع.

يقبل Razorpay البطاقات وUPI والخدمات المصرفية عبر الإنترنت والمحافظ للمدفوعات بالروبية الهندية. وتعتمد الوسائل التي تظهر عند الدفع على ما فُعّل في حسابك الخاص في Razorpay.

يقبل Razorpay المبالغ بأصغر وحدة للعملة، لذا يُضرب إجمالي الحجز بالروبية في 100 قبل إنشاء الطلب. ويُرسل مبلغ الاسترداد بالطريقة نفسها.

يعيد Checkout معرّف الدفعة ومعرّف الطلب وتوقيعاً. يحسب خادمك HMAC SHA256 لمعرّف الطلب ومعرّف الدفعة بمفتاح Key Secret الخاص بك، ولا يقبل الدفعة إلا إذا طابقت النتيجة التوقيع.

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

نعم. تدعم Refunds API من Razorpay الاسترداد الكامل والجزئي، فيمكن الاحتفاظ برسوم الإلغاء وإعادة الرصيد. ويخبر الـ Webhook المسمى refund.processed خادمك متى اكتمل الاسترداد.

نعم. حساب التاجر وKey ID وKey Secret والتسوية كلها ملكك. لا توفر PHPTRAVELS بيانات اعتماد البوابة ولا تتعامل مع أموالك أبداً. ابنِ بمفاتيح وضع الاختبار وانتقل إلى مفاتيح الإنتاج عند الإطلاق.

يعتمد على النطاق الذي تحتاجه، مثل الدفع والتحصيل اليدوي والاسترداد ومدفوعات الوكلاء. تقدّم PHPTRAVELS عرض سعر للعمل المخصص قبل أن يبدأ. أما المنصة نفسها فرخصة لمرة واحدة تبدأ من.