تحديد أنواع دفع مختلفة

تتيح منصة مركز الإجراءات استخدام مجموعة متنوعة من التكوينات لقبول المدفوعات. يتناول دليل تفعيل الدفعات جوانب الدمج الشائعة في جميع عمليات دمج الدفعات، بما في ذلك:

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

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

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

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

خادم الحجز

عند معالجة طلب يتضمّن إيداعًا، يتم إدخال رمز مميّز للدفع إلى خادم الحجز أثناء المكالمة الواردة إلى 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

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