ضبط الدفعات

يدعم النظام الأساسي لميزة "الحجز عبر Google" مجموعة متنوعة من التهيئات لاستلام الدفعات. يتناول دليل تفعيل الدفعات جوانب الدمج الشائعة في كل عمليات دمج الدفعات، بما في ذلك:

  1. إعداد الخلاصات لتضمين معلومات tokenization_parameter
  2. جارٍ تعديل خادم الحجز لقبول payment_method_token عنصر
  3. نظرة عامة على المعلومات التي يتم تبادلها بين مستخدم و"الحجز عبر Google" والشريك / التاجر ومعالج الدفع

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

  1. لا توجد دفعات / الدفع عند الوصول
  2. دفعة مسبقة كاملة
  3. لا توجد رسوم للعرض / رسوم إلغاء
  4. Deposit

إنّ جميع حالات الاستخدام للدفعات هي إضافات لحالة الاستخدام "الدفعات" / "الدفع عند الدفع" (التي لا تتطلّب إعدادًا للدفع) لذا سيبدأ هذا البرنامج التعليمي بوصف تلك التهيئة والتعامل مع الإعدادات الأخرى على أنها إضافات.

وسيشمل كل قسم أيضًا الحقول التي يجب تتبّعها في خادم الحجز لقبول إعدادات الدفع المحدّدة.

لا توجد دفعات / الدفع عند الوصول

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

هذه هي التهيئة الأساسية لإحدى الخدمات، والتي تحتوي على الاسم والوصف والسعر. ستكون هذه رسالة خدمة واحدة ضمن ServiceFeed:

JSON

{
    "merchant_id": "merchant-1",
    "service_id": "reservation",
    "name": "reservation",
    "description": "Food reservation"
}

ولا يتطلّب خادم الحجز إعداد إضافي غير التنفيذ العادي لإتاحة الدفع عند الوصول.

رسوم عدم الحضور

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

لتحديد رسوم عدم العرض، يجب تضمين حقل no_show_fee في خلاصة الخدمة كما هو موضّح في المثال أدناه:

JSON

{
    "merchant_id": "merchant-1",
    "service_id": "service-2-b",
    "name": "Spa Treatment",
    "description": "A full spa treatment",
    "price": {
        "price_micros": 200000000,
        "currency_code": "USD"
    }
    "scheduling_rules": {
        "min_advance_online_canceling": 14400,
    }
    "no_show_fee": {
        "fee": {
            "price_micros": 25000000,
            "currency_code": "USD"
        }
        "fee_type": "FIXED_RATE_DEFAULT"
    }
}

في المثال أعلاه، يُسمح للشريك أو التاجر بتحصيل رسوم ثابتة تبلغ 25 دولارًا أمريكيًا كما هو محدّد في الحقل no_show_fee.fee.price_micros إذا لم يحضر مالك الموعد الموعد. وقد يتمّ أيضًا تحصيل هذه الرسوم إذا ألغى المستخدم الاشتراك في غضون 4 ساعات (14400 ثانية) قبل الموعد، على النحو الموضّح في الحقل scheduling_rules.min_advance_online_canceling.

يُرجى مراجعة هذا القسم للاطّلاع على كيفية تحديد أي رسوم للعروض عند مستوى التوفّر.

يمكن اختياريًا ضبط رسوم عدم الحضور ليتم تحصيلها عن كل شخص مقابل الحجز. في هذه الحالة، يمكن ضبط no_show_fee.fee.fee_type على PER_PERSON.

خادم الحجز

عند معالجة طلب يتضمّن رسوم عدم الحضور، يتم تمرير رمز مميّز للدفع إلى خادم الحجز الخاص بك في المكالمة المرسَلة إلى CreateBooking من خلال الحقل payment_processing_parameters.unparsed_payment_method_token. ويتم تمرير هذا الرمز المميّز بالطريقة نفسها المتّبعة في حالة الدفع المسبق. وبما أنّه لا يُسمح باستخدام الرمز المميّز إلا لفترة زمنية قصيرة، يجب استدعاء واجهة برمجة التطبيقات ذات الصلة بمعالج الدفع لترقية هذا الرمز المميّز إلى إصدار يمكنك استخدامه في وقت لاحق. ستجد وصفًا لذلك في القسم "دليل تفعيل الدفعات" في مسار الرمز المميز لرسوم عدم العرض.

عند عرض السمة CreateBookingResponse، يجب ضبط الحقل booking.payment_information لتوضيح حالة رسوم عدم العرض بشكل صحيح كما هو موضّح في المثال أدناه.

JSON

{
    "prepayment_status": "PREPAYMENT_PROVIDED",
    "payment_processed_by": "PROCESSED_BY_PARTNER",
    "payment_transaction_id": "[this-transaction-id]",
    "price": {
        "price_micros": "200000000",
        "currency_code": "USD"
    }
    "no_show_fee": {
        "fee": {
            "price_micros": 25000000,
            "currency_code": "USD"
        }
        "fee_type": "FIXED_RATE_DEFAULT"
    }
}

يُرجى العِلم بأنّه تمّ ضبط no_show_fee ليعكس سعر الرسوم التي قد يتمّ تحصيلها وبنيتها. ويُرجى العِلم أيضًا بأنه، على غرار مثال الدفعات المسبقة، يجب توفّر transaction_id في هذه الرسالة.

يُرجى العِلم أيضًا بأنّ السمة booking_id المحدَّدة في CreateBookingResponse هي حقل مطلوب للتحديثات في الوقت الفعلي التي يجب إرسالها عند تحصيل رسوم عدم العرض. من المتوقّع أن يتمّ تخزين هذا المعرّف مع معلومات حول الحجز.

تحديثات في الوقت الفعلي

إذا لم يصل المستخدم للحجز المجدول، أو ألغى الحجز بعد نافذة الإلغاء (مثلاً من خلال التواصل معك مباشرةً)، يمكنك اختياريًا تحصيل رسوم عدم الحضور المحدّدة باستخدام معلومات الدفع التي خزّنتها في وقت الحجز. عند تحصيل رسوم عدم الحضور، عليك إرسال تحديث في الوقت الفعلي يوضّح أنّه لم يتم تحصيل رسوم عدم العرض.

بالنسبة إلى الحجوزات التي تم إنشاؤها من خلال CreateBooking، يجب إرسال تعديل إلى notification.partners.bookings.patch. ويجب أن يكون نص الطلب المحدّث في نص هذا الطلب محدّدًا مع ضبط حالته على NO_SHOW_PENALIZED. تُعلم هذه الحالة Google بأنه تم تحصيل رسوم.

على سبيل المثال، يمكن إرسال طلب إلى:

PATCH https://mapsbooking.googleapis.com/v1alpha/notification/partners/12345678/bookings/123123123?updateMask=status

مع نص الطلب:

JSON

{
    "name": "partners/12345678/bookings/123123123"
    "merchantId": "merchant-1"
    "serviceId": "service-2-b"
    "status": "NO_SHOW_PENALIZED"
}

Deposit

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

لتحديد إيداع، يجب تضمين حقل deposit في خلاصة الخدمة كما هو موضّح في المثال أدناه:

JSON

{
    "merchant_id": "merchant-1",
    "service_id": "service-2-b",
    "name": "Spa Treatment",
    "description": "A full spa treatment",
    "price": {
        "price_micros": 200000000,
        "currency_code": "USD"
    }
    "scheduling_rules": {
        "min_advance_online_canceling": 86400,
    }
    "deposit": {
        "deposit": {
            "price_micros": 25000000,
            "currency_code": USD,
            "min_advance_cancellation_sec": 14400,
        }
        "deposit_type": "FIXED_RATE_DEFAULT"
    }
}

في هذا المثال، تحدّد min_advance_online_canceling نافذة الإلغاء، وتوضّح السمة deposit.min_advance_cancellation_sec وقت ردّ الأموال. في المثال أعلاه، يمكن للإيداع تحديد وقت إلغاء بشكل منفصل عن مدة ردّ الأموال. وفي هذه الحالة، سيتمكّن المستخدم من إلغاء الخدمة على الإنترنت قبل 24 ساعة بحد أقصى (86400 ثانية). ويضمن ذلك إعلام التاجر مباشرةً بأي عمليات إلغاء متأخرة. ومع ذلك، قد يبقى المستخدم مؤهّلاً لاسترداد الأموال التي تم إيداعها في حسابه قبل أن يصل إلى 4 ساعات (قبل 14400 ثانية) من إتمام عملية الحجز (من خلال التواصل معك أو مع التاجر لإلغاء عملية الدفع)، وسيتمّ عرض هذه البيانات في البنود المبيّنة عند إتمام الدفع وفي رسالة التأكيد الإلكترونية.

يُرجى مراجعة هذا القسم للاطّلاع على كيفية تحديد الودائع.

ويُرجى العِلم أيضًا أنّه يمكن فرض رسوم على مبلغ معيّن، مثل رسوم عدم الحضور، أو بسعر ثابت لكل فرد. في هذه الحالة، يكون مبلغ الإيداع سعرًا ثابتًا 25 دولارًا أمريكيًا (أو ما يعادل هذا المبلغ بالعملة المحلية)، كما هو محدد في "deposit_type": "FIXED_RATE_DEFAULT". إذا كان الحجز يتضمّن حجمًا مختلفًا للحفل، قد يتم تحديد الإيداع كإيداع لكل شخص من خلال ضبط "deposit_type": "PER_PERSON".

خادم الحجز

عند معالجة طلب يتضمن إيداعًا، يتم تمرير رمز مميّز للدفع إلى خادم الحجز الخاص بك في المكالمة المرسَلة إلى CreateBooking من خلال الحقل payment_processing_parameters.unparsed_payment_method_token. ويتم تمرير هذا الرمز المميز بالطريقة نفسها المتبعة في حالة الدفع المسبق. وإذا كنت تحصّل مبلغ الإيداع أو تحصّل الرسوم في وقت الحجز، يمكنك إجراء ذلك أثناء هذا الطلب.

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

عند عرض CreateBookingResponse، يجب أن يشير الحقل booking.payment_information إلى حالة الإيداع كما هو موضّح في المثال أدناه.

JSON

{
    "prepayment_status": "PREPAYMENT_PROVIDED",
    "payment_processed_by": "PROCESSED_BY_PARTNER",
    "payment_transaction_id": "[this-transaction-id]",
    "price": {
        "price_micros": "200000000",
        "currency_code": "USD"
    }
    "deposit": {
        "deposit": {
            "price_micros": 25000000,
            "currency_code": USD,
            "min_advance_cancellation_sec": 28800,
        }
        "deposit_type": "FIXED_RATE_DEFAULT"
    }
}

تجدر الإشارة إلى أنه تم تعيين مبلغ الإيداع ليعكس سعر وإيداع الإيداع الذي سيتم تحصيله أو تعليقه. ويُرجى العِلم أيضًا بأنه، على غرار مثال الدفعات المسبقة، يجب توفّر transaction_id في هذه الرسالة.

تحديثات في الوقت الفعلي

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

بالنسبة إلى الحجوزات التي تم إنشاؤها من خلال CreateBooking، يجب إرسال تعديل إلى notification.partners.bookings.patch. ويجب أن يكون نص هذا الطلب محدّثًا في نص هذا الطلب، مع ضبط الحالة على CANCELED وضبط حقل paymentInformation.prepaymentStatus على PREPAYMENT_REFUNDED. لإعلام Google بأنّه تم ردّ مبلغ الإيداع.

على سبيل المثال، يمكن إرسال طلب إلى:

PATCH https://mapsbooking.googleapis.com/v1alpha/notification/partners/12345678/bookings/123123123?updateMask=status

مع نص الطلب:

JSON

{
    "name": "partners/12345678/bookings/123123123"
    "merchantId": "merchant-1"
    "serviceId": "service-2-b"
    "status": "CANCELED"
    "paymentInformation": {
      "prepaymentStatus": "PREPAYMENT_REFUNDED"
    }
    
}

يلزم توفر بطاقة ائتمان

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

لطلب تقديم بطاقة ائتمان أثناء الدفع، يجب ضبط الحقل require_credit_card على REQUIRE_CREDIT_CARD_ALWAYS.

JSON

{
    "merchant_id": "merchant-1",
    "service_id": "reservation",
    "name": "reservation",
    "description": "Food reservation",
    "require_credit_card": "REQUIRE_CREDIT_CARD_ALWAYS"
}

خادم الحجز

عند معالجة طلب يتضمّن متطلّبات بطاقة ائتمان، يتم تمرير رمز مميّز للدفع إلى خادم الحجز الخاص بك في المكالمة المرسَلة إلى CreateBooking من خلال الحقل payment_processing_parameters.unparsed_payment_method_token. ويتم تمرير هذا الرمز المميّز بالطريقة نفسها المتّبعة في حالة الدفع المسبق. وبما أنّه لا يُسمح باستخدام الرمز المميّز إلا لفترة زمنية قصيرة، يجب استدعاء واجهة برمجة التطبيقات ذات الصلة بمعالج الدفع لترقية هذا الرمز المميّز إلى إصدار يمكنك استخدامه في وقت لاحق.

لا يلزم تقديم معلومات إضافية في استجابة خادم الحجز بخلاف حالة استخدام الدفع عند الوصول.

إلغاء الأسعار على مستوى التوفر

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

  • يتم تخفيض الأسعار أيام الثلاثاء، ويتم رفعها أيام السبت.
  • لا تنطبق رسوم العرض على مدى التوفر بين الساعة 5:00 مساءً و7:00 مساءً.
  • يتطلب إيداعًا للحفلات ذات الأحجام الأكبر من 6.
  • تتطلب الحجوزات في غرفة معينة استخدام بطاقة ائتمان.

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

طريقة الدفع الرسوم / تعريف السعر قابل للتجاوز؟
بدون رسوم العرض Service.no_show_fee Availability.no_show_fee
Deposit Service.deposit Availability.deposit
يلزم توفر بطاقة ائتمان Service.require_credit_card Availability.require_credit_card

ملاحظة: لإلغاء السعر على مستوى التوفّر، يجب أولاً تحديد خيار دفع على مستوى التاجر. بالإضافة إلى ذلك، للحصول على إرشادات حول إضافة نوافذ الإلغاء على مستوى التوفّر، يُرجى الاطّلاع على الدليل كيفية إضافة فترات إلغاء.