إضافة خدمات على الإنترنت (متوقّفة نهائيًا)

وتُعرف الخدمات على الإنترنت بأنّها خدمات تُقدَّم بالكامل على الإنترنت من خلال منصّة مستضافة، ولا تتطلّب من العميل حضور الخدمة شخصيًا. في ما يلي بعض الأمثلة على الخدمات على الإنترنت:

  • دروس يوغا على الإنترنت من خلال Zoom
  • دورة تدريبية عن الماكياج على الإنترنت عبر Google Meet
  • تقدير فيديو السباكة على الإنترنت عبر Skype

متطلبات الأهلية للخدمات على الإنترنت

قبل البدء في عملية التنفيذ، يُرجى مراجعة سياسات الخدمات على الإنترنت وأفضل الممارسات المتعلّقة بها.

تنفيذ الخدمات على الإنترنت

إنّ عملية دمج الخدمات على الإنترنت هي إضافة إلى عملية الدمج الحالية للمواعيد، وتتطلّب بعض التغييرات في عملية تنفيذ حالية. تشمل التغييرات التالية على مستوى عالٍ:

  • الخلاصات: يمكنك إضافة type وVirtualSession وDirectMerchantPayment وCancellationPolicy (إذا لم يسبق لك إضافتها) إلى خلاصات "الخدمات".
  • خادم الحجز: يمكنك إضافة VirtualSessionInfo إلى طريقة CreateBooking، وإرسال رسائل إلكترونية تتضمّن معلومات الإعداد الافتراضية إلى المستخدم.
  • تعديلات في الوقت الفعلي (السلوك الحالي): معالجة التغييرات في المستودع الافتراضي من خلال "RTU" في InventoryUpdate، والتعديلات على الحجز من خلال BookingNotification RTU، والتغييرات التي تطرأ على الخدمة من خلال "RTU" للخدمة

الخلاصات

خلاصة الخدمات

تتم إضافة الحقول التالية إلى خلاصة "الخدمات" لإتاحة الخدمات على الإنترنت.

مواصفات خلاصة الخدمات

 enum ServiceType {
     SERVICE_TYPE_UNSPECIFIED = 0;
    // Service that provides dining reservation.
    SERVICE_TYPE_DINING_RESERVATION = 1;
    // Service that provides food ordering in general, could be either takeout
    // or delivery or both.
    SERVICE_TYPE_FOOD_ORDERING = 2;
    // Service that only provides food delivery.
    SERVICE_TYPE_FOOD_DELIVERY = 6;
    // Service that only provides food takeout.
    SERVICE_TYPE_FOOD_TAKEOUT = 7;

    // Service that provides appointments or classes. Recommended for (1) health
    // and fitness, (2) spa and beauty, and (3) financial consults and
    // evaluations services. Please see the supported service types:
    // https://developers.google.com/actions-center/guides/end-to-end-integration/overview
    SERVICE_TYPE_APPOINTMENT = 5;
    // Service that provides appointment for an online class or session which
    // will be fully virtual. Must be set if enabling virtual service bookings.
    SERVICE_TYPE_ONLINE_APPOINTMENT = 8;
  }
// Information about virtual/online session. E.g. Online yoga class, virtual
// cooking class etc.
message VirtualSession {
  // Instructions on how this virtual class is set up. If the partner does not
  // include the video URL with the booking, then this text must include when
  // the video URL will be shared with the user. Eg. “Zoom url will be mailed
  // 30 minutes prior to the class”. (Recommended)
  // Only the folloiwng four tags are supported: <br>, <strong>, <em>, <i>.
  Text session_instructions = 1;

  // Requirements for the given virtual session. Eg. yoga mat,
  // cooking utensils etc. (Recommended)
  // Only the folloiwng four tags are supported: <br>, <strong>, <em>, <i>.
  Text session_requirements = 2;

  // Information about the virtual platform used in this session. (Required to
  // enable virtual services)
  message VirtualPlatformInfo {
    // Enum to indicate which virtual platform would be used by the merchant.
    enum Platform {
      PLATFORM_UNSPECIFIED = 0;
      // The merchant is flexible in which video platform they use.
      FLEXIBLE = 1;
      GOOGLE_HANGOUTS = 2;
      GOOGLE_MEET = 3;
      ZOOM = 4;
      SKYPE = 5;
      YOUTUBE = 6;
      // Should be set if the video platform used is different from the ones
      // mentioned here.
      OTHER = 7;
    }
    Platform platform = 1;
    // The name of the platform if the platform is set to OTHER. (Required if
    // platform is set to OTHER)
    Text other_platform_name = 2;
  }
  VirtualPlatformInfo virtual_platform_info = 3;

  // Set this as true if the virtual session is not live and is pre-recorded.
  // (Optional)
  bool is_session_prerecorded = 4;
}
// Information about how the user can pay directly to the merchant instead of
// pre-paying for the service via RwG.
message DirectMerchantPayment {
  // Users would be advised to pay only via the payment methods mentioned below.
  repeated Text payment_methods = 1;
}
// Cancellation policy for a service.
message CancellationPolicy {
  // Defines a single refund condition. Multiple refund conditions could be
  // used together to describe "refund steps" as various durations before the
  // service start time.
  message RefundCondition {
    // Duration in seconds before the start time, until when the customer can
    // receive a refund for part of the service's cost specified in
    // `refund_percent`.
    // When set to 0 (default), the service can be cancelled at any time.
    int64 min_duration_before_start_time_sec = 1;

    // The percent that can be refunded, as long as the service booking is
    // cancelled at least `min_duration_before_start_time` before the service
    // start time, in the range of [0, 100]. When set to 0 (default), the
    // service is not refundable. When set to 100 this service is fully
    // refundable.
    uint32 refund_percent = 2;
  }
  // Zero or more refund conditions applicable to the policy.
  repeated RefundCondition refund_condition = 1;
}

مثال على خلاصة الخدمات

{
  "service": [
    {
      "merchant_id": "100",
      "service_id": "100-1",
      "type" : "SERVICE_TYPE_ONLINE_APPOINTMENT",
      "localized_service_name": {
        "value": "Makeup masterclass",
        "localized_value": [
          {
            "locale": "en",
            "value": "Makeup masterclass"
          }
        ]
      },
      "localized_description": {
        "value": "Learn how to do runway makeup from an award winning makeup artist.",
        "localized_value": [
          {
            "locale": "en",
            "value": "Learn how to do runway makeup from an award winning makeup artist."
          }
        ]
      },
      "virtual_session": {
        "session_instructions": {
          "value": "You must have access to a computer, and a solid internet connection. Class registration link will be sent to you 15 mins before the start of the class. The class link will be accessible 1 day after the class.  ",
          "localized_value": [
            {
              "locale": "en",
              "value": "You must have access to a computer, and a solid internet connection. Class registration link will be sent to you 15 mins before the start of the class. The class link will be accessible 1 day after the class.  "
            }
          ]
        },
        "session_requirements": {
          "value": "makeup brush, makeup palette, mirror",
          "localized_value": [
            {
              "locale": "en",
              "value": "makeup brush, makeup palette, mirror"
            }
          ]
        },
        "virtual_platform_info": {
          "platform": "OTHER",
          "other_platform_name": "Susan's hosted platform"
        }
      },
      "direct_merchant_payment": {
        "payment_methods": [
          {
            "value": "Venmo",
            "localized_value": [
              {
                "locale": "en",
                "value": "Venmo"
              }
            ]
          }
        ]
      },
      "price": {
        "price_micros": 75000000,
        "currency_code": "USD"
      },
      "rules": {
        "min_advance_booking": 0,
        "min_advance_online_canceling": 86400,
        "cancellation_policy": {
          "refund_condition": [
            {
              "min_duration_before_start_time_sec": 3600,
              "refund_percent": 100
            }
          ]
        }
      },
      "prepayment_type": "NOT_SUPPORTED",
      "tax_rate": {
        "micro_percent": 7750000
      }
    },
    {
      "merchant_id": "100",
      "service_id": "100-2",
      "type" : "SERVICE_TYPE_ONLINE_APPOINTMENT",
      "localized_service_name": {
        "value": "Advanced Vinyasa Yoga",
        "localized_value": [
          {
            "locale": "en",
            "value": "Advanced Vinyasa Yoga"
          }
        ]
      },
      "localized_description": {
        "value": "Learn the advanced techniques of vinyasa yoga taught by award winning yoga instructors.",
        "localized_value": [
          {
            "locale": "en",
            "value": "Learn the advanced techniques of vinyasa yoga taught by award winning yoga instructors."
          }
        ]
      },
      "virtual_session": {
        "session_instructions": {
          "value": "You must have access to a computer, and a solid internet connection. Class registration link will be included in an email from the merchant.",
          "localized_value": [
            {
              "locale": "en",
              "value": "You must have access to a computer, and a solid internet connection. Class registration link will be included in an email from the merchant."
            }
          ]
        },
        "session_requirements": {
          "value": "yoga mat, dumbbells",
          "localized_value": [
            {
              "locale": "en",
              "value": "yoga mat, dumbbells"
            }
          ]
        },
        "virtual_platform_info": {
          "platform": "ZOOM"
        }
      },
      "price": {
        "price_micros": 40000000,
        "currency_code": "USD"
      },
      "rules": {
        "min_advance_booking": 0,
        "min_advance_online_canceling": 86400,
        "cancellation_policy": {
          "refund_condition": [
            {
              "min_duration_before_start_time_sec": 86400,
              "refund_percent": 100
            },
            {
              "min_duration_before_start_time_sec": 3600,
              "refund_percent": 50
            }
          ]
        }
      },
      "prepayment_type": "REQUIRED",
      "tax_rate": {
        "micro_percent": 7750000
      },
      "require_credit_card": "REQUIRE_CREDIT_CARD_ALWAYS"
    }
  ]
}
  • الوصف المترجَم: يجب أن يوضح الوصف بوضوح موضوع الخدمة. يُرجى الرجوع إلى دليل أفضل الممارسات لمعرفة أفضل طريقة لتنظيم بنية محتوى خدماتك.
  • تعليمات الجلسة: يجب أن تصف تعليمات الجلسة جميع خطوات الإعداد اللازمة وأن تستوفي الإرشادات الموضّحة في السياسة.
    • إذا لم يتم إنشاء عنوان URL للفيديو على المنصة ورقم تعريف الاجتماع تلقائيًا كجزء من عملية الحجز (على سبيل المثال، لا يتم إرسال التفاصيل عبر CreateBookingResponse)، عليك ذكره بوضوح في session_instructions الوقت والجهة التي يجب أن يتوقّع المستخدم من خلالها إرسال تفاصيل الأنظمة الأساسية إليه.
  • متطلبات الجلسة: يجب أن تصف متطلبات الجلسة جميع المعدات أو المواد اللازمة التي يحتاجها المستخدم للمشاركة في الصف بفعالية. يمكنك أيضًا تضمين مواد اختيارية قد يحتاجها المستخدم، ولكن يُرجى وضع علامة عليها كمواد اختيارية.
  • النظام الأساسي: يجب أن تشير المنصّة إلى المنصّة التي سيستخدمها المستخدم للوصول إلى الخدمة على الإنترنت.
    • إذا كان التاجر هو الذي سيحدد المنصة في وقت لاحق، اضبط السمة platform على FLEXIBLE.
    • إذا لم تكن المنصّة التي يستخدمها التاجر مُدرَجة في القائمة، اضبط platform على OTHER، وحدِّد other_platform_name.
  • سياسة الإلغاء: من المهم أن يكون لديك سياسات إلغاء دقيقة. اضبط CancellationPolicy في حال السماح بردّ الأموال والإلغاء. والافتراض التلقائي في حال عدم ضبط هذه السياسة هو أنّه لا يُسمح بردّ الأموال.

خلاصة مدى التوفّر

  • إجمالي عدد النقاط: اضبط هذه السمة على إجمالي عدد المشاركين المسموح به على المنصة (مع التأكد من طرح عدد المشاركين).

خادم الحجز

اختياري: إذا أنشأ نظامك معرّف اجتماع وعنوان URL نيابةً عن التاجر، يُرجى تضمين VirtualSessionInfo كجزء من CreateBookingResponse.

مواصفات CreateBooking

message Booking {
// Information related to the virtual session which was booked.
message VirtualSessionInfo {
  // URL which was created for the virtual session. (optional)
  string session_url = 1;
  // The meeting id which was created for the virtual session. (optional)
  string meeting_id = 2;
  // Password required to access the session. (optional)
  string password = 3;
}

 VirtualSessionInfo virtual_session_info = X;
}

CreateBookingRequest

{
  "idempotency_token": "10000000000",
  "payment_information": {
    "prepayment_status": "PREPAYMENT_NOT_PROVIDED"
  },
  "slot": {
    "confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS",
    "duration_sec": "3600",
    "merchant_id": "10001",
    "service_id": "10001-1",
    "start_sec": "1586829600"
  },
  "user_information": {
    "email": "john.doe@gmail.com",
    "family_name": "John",
    "given_name": "Doe",
    "telephone": "+123 456 7890",
    "user_id": "110291237"
  }
}

CreateBookingResponse

{
  "booking": {
    "bookingId": "abcdefg-12345",
    "slot": {
      "merchantId": "10001",
      "serviceId": "10001-1",
      "startSec": "1586804400",
      "durationSec": "3600"
    },
    "userInformation": {
      "userId": "110291237",
      "givenName": "John",
      "familyName": "Doe",
      "telephone": "+123 456 7890",
      "email": "john.doe@gmail.com"
    },
    "status": "CONFIRMED",
    "virtual_session_info": {
      "video_url": "meet.google.com/abcd-efg",
      "meeting_id": "abcd-efg",
      "password" : "somepassword"
    }
  }
}

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

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

  • وقت الاستجابة لطلب الوقت في المستودع الإعلاني: عند إجراء أي تعديلات على التغييرات في الخانات على نظامك أو نظام "مركز الإجراءات"، يجب أن تؤدي هذه التعديلات إلى تنشيط حساب المستودع بالكامل من أجل إعلامنا بالتغييرات التي تم إجراؤها على الخانات.
  • BookingNotification RTU: أي تعديلات على الحجوزات (مثل تعديل الوقت أو عمليات الإلغاء) في نظامك أو نظام "مركز الإجراءات"، يجب أن تؤدي إلى تنشيط إشعار RTU على BookingNotification لإعلام نا بالتغييرات التي تطرأ على الحجز.
    • إذا لم يرسل المستخدم الدفعة إلى التاجر أو الشريك، يُرجى إرسال إشعار RTU لإلغاء الدفعة. سيصلك من "مركز الإجراءات" رسالة إلكترونية حول الإلغاء.
  • نقل البيانات في الوقت الفعلي (RTU): في حال تعديل الخدمات حاليًا من خلال "RTU" للخدمة، احرص على تضمين حقول الخدمة المناسبة على الإنترنت في حال التحديث لخدمة على الإنترنت.

الرسائل الإلكترونية

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

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