ضبط الدفعات

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

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

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

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

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

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

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

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

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

JSON

{
    "merchant_id": "merchant-1",
    "service_id": "service-1-a",
    "name": "Men's haircut",
    "description": "One of our stylists will cut your hair",
    "price": {
        "price_micros": 15000000,
        "currency_code": "USD"
    }
}

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

دفع مقدم

وتُستخدم هذه الإعدادات لتحديد أنّه يجب دفع مبلغ الخدمة بالكامل في وقت الحجز.

يتم تحديد الدفع المسبق على مستوى الخدمة من خلال حقل prepayment_type في Service. لطلب سداد رسوم خدمة، يجب ضبط ذلك على REQUIRED كما في المثال أدناه. يُرجى العِلم بأنّه يتم تحديد السعر بالطريقة نفسها التي يحدّدها بها نموذج الدفع عند الوصول. سيتمّ جمع بطاقة ائتمان هنا ولأننا نضبط نوع الدفع المسبق على أنّه مطلوب، يمكن تحصيل هذا السعر عند الدفع.

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"
    }
    "prepayment_type": "REQUIRED"
}

خادم الحجز

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

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

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

لاحظ أيضًا أنه يجب تقديم معرِّف المعاملة. ويجب أن يكون معرّف المعاملة فريدًا على الأقل بين المعاملات مع هذا التاجر. ويُعدّ معرّف المعاملة الذي يوفّره معالج الدفع مرشحًا جيدًا لمعرّف المعاملة.

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 في خلاصة الخدمة كما هو موضّح في المثال أدناه:

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.

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

خادم الحجز

عند معالجة طلب يتضمّن رسوم عدم الحضور، يتم تمرير رمز مميّز للدفع إلى خادم الحجز الخاص بك في المكالمة المرسَلة إلى 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 ثانية) من إتمام عملية الحجز (من خلال التواصل معك أو مع التاجر لإلغاء عملية الدفع)، وسيتمّ عرض هذه البيانات في البنود المبيّنة عند إتمام الدفع وفي رسالة التأكيد الإلكترونية.

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

خادم الحجز

عند معالجة طلب يتضمن إيداعًا، يتم تمرير رمز مميّز للدفع إلى خادم الحجز الخاص بك في المكالمة المرسَلة إلى 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": "service-1-a",
    "name": "Men's haircut",
    "description": "One of our stylists will cut your hair",
    "price": {
        "price_micros": 15000000,
        "currency_code": "USD"
    },
    "require_credit_card": "REQUIRE_CREDIT_CARD_ALWAYS"
}

خادم الحجز

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

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

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

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

  • يتم تخفيض الأسعار أيام الثلاثاء، ويتم رفعها أيام السبت.
  • لا تنطبق رسوم العرض على مدى التوفر بين الساعة 5:00 مساءً و7:00 مساءً.
  • الخدمة المقدمة من قِبل كبار المصممين أغلى من الخدمة الصغرى.

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

طريقة الدفع الرسوم / تعريف السعر قابل للتجاوز؟
الدفع عند الوصول Service.price يمكن إلغاء السعر من خلال Availability.payment_option_id الذي يشير إلى Merchant.payment_option
دفع مقدم Service.price يمكن إلغاء السعر من خلال Availability.payment_option_id التي تشير إلى Merchant.payment_option.
بدون رسوم العرض Service.no_show_fee Availability.no_show_fee
Deposit Service.deposit Availability.deposit
يلزم توفر بطاقة ائتمان Service.require_credit_card Availability.require_credit_card

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