Eşzamansız rezervasyonlar ekleme

.

Eşzamanlı rezervasyonlar, onaylanan veya reddedilen rezervasyonlar olarak tanımlanır gerçekleşmesidir.

Eşzamansız rezervasyonlar, satıcının web sitesinde veya daha sonra geri dönecektir.

Bir rezervasyon, düzeyi için ödeme yaparsınız. Bu aynı zamanda belirli bir satıcı ve hizmet için hem eşzamanlı hem de eşzamansız kullanılabilirlik alanları olabilir.

Uygun uygulamayı belirlemek için önce hangi kategorinin şu riskin kapsamına giriyor:

Eşzamansız rezervasyon ölçütleri

  • İşlemler Merkezi'nde eş zamansız rezervasyonda değişiklik yapılamaz desteklenir.
  • Satıcılar rezervasyon işlemini iş ortağının online sistemine (ör. restoran için ev sahipliği paneli). veya kullanıcı adına bir satıcı üzerinde anlaşmaya varıp Kullanıcı rezervasyonunu reddettiğinde izin verilmez.
  • Satıcının yeni rezervasyon zamanı teklifi desteklenmez. İlgili içeriği oluşturmak için kullanılan Rezervasyon isteği orijinal haliyle kabul edilmeli veya reddedilmelidir.

Yalnızca eşzamanlı rezervasyonları etkinleştirme

Standart uygulama varsayılan olarak eşzamanlı rezervasyonlara ayarlanır. Lütfen danışın: Daha fazla bilgi için Randevular'ın Uçtan Uca entegrasyon belgelerini inceleyin.

Eşzamansız rezervasyonu etkinleştirme

Satıcıların bazıları veya tümü eşzamansız rezervasyon akışı kullanıyorsa şu değişikliklerin yapılması gerekiyor:

  • Onay modu: Artık kullanılabilirlik alanlarının tüm temsilleri rezervasyonların nasıl sonuçlandığını açıklayan bir confirmation_mode alanı içermelidir. onaylandığına dikkat edin. Belirtin: confirmation_mode takip etmek için:

    • Stok Durumu Feed'inde confirmation_mode, kullanılabilirlik düzeyi
    • Booking Server API yöntemlerinde confirmation_mode, slot düzeyi
    • Real-Time Updates API yöntemlerinde confirmation_mode belirtilir kullanılabilirlik düzeyinde
  • Rezervasyon durumu: Rezervasyonlarla ilgili tüm gösterimlerde status alanı rezervasyonun durumunu temsil eder. Üç kez yeni eşzamansız durum değerleri kullanıma sunuldu: PENDING_CONFIRMATION, DECLINED_BY_MERCHANT ve FAILED. Bu yeni durum değerlerini şu durumlarda kullanın: eşzamansız rezervasyonların işlenmesi, reddedilmesi ve hataları.
  • Rezervasyon güncellemeleri: Randevu alınan rezervasyonun durumuyla ilgili rezervasyonları, Rezervasyon Bildirim API'si aracılığıyla bildirilmelidir. bookings.patch yöntemini kullanabilirsiniz.

Aşağıdaki şemada, onay modunun ve rezervasyon durumunun nasıl kullanıldığı gösterilmektedir tipik bir eşzamansız rezervasyon etkileşimidir.

Şekil 1: Eşzamansız rezervasyon akışı
Şekil 1: Eşzamansız rezervasyon akışı
  1. Müsaitlik durumu feed'leri, her müsaitlik durumu aralığının onay modu belirtiliyor. Bu bilgileri her zaman Böylece rezervasyonun eşzamansız doğasını kullanıcılara açıklayabiliriz. erken bir aşamada belirlemenize yardımcı olur.
  2. Zaman BatchAvailabilityLookup veya CheckAvailability olarak adlandırdığımızda, onay modundan geçer ve tercihen aynı onay modunu geri döndü. Bu, kullanıcıya uygun mesajın gösterilmesini sağlar.
  3. Zaman CreateBooking onay modunu e-postalarımızı beklenen onay modunu belirtin. Eşzamansız rezervasyon istek gönderildi, rezervasyon durumla ilgili olarak döndürüldü PENDING_MERCHANT_CONFIRMATION
  4. Satıcı bir rezervasyon isteğini kabul ettiğinde veya reddettiğinde, rezervasyon gerçek zamanlı güncelleme Rezervasyon Bildirim API'si aracılığıyla güncellenir. bookings.patch yöntemi kullanılmaktadır. Benzer olmayan rezervasyonları otomatik olarak reddetmek istiyorsanız ve değişiklikleri zamanında yanıtlamak için aynı gerçek zamanlı güncelleme yöntemidir.

Stok Durumu Feed'leri

Müsaitlik durumu feed'inde, her alanın eşzamanlı mı yoksa eş zamanlı mı olduğunu belirtin. eşzamansız. Bunu yapmak için yeni confirmation_mode cihazını ayarlayın girin.

// Mode by which bookings for an availability slot are confirmed.
enum ConfirmationMode {
  // The confirmation mode was not specified.
  // Synchronous confirmation will be assumed.
  CONFIRMATION_MODE_UNSPECIFIED = 0;

  // Bookings for this availability will be confirmed synchronously.
  CONFIRMATION_MODE_SYNCHRONOUS = 1;

  // Bookings for this availability will be confirmed asynchronously.
  CONFIRMATION_MODE_ASYNCHRONOUS = 2;
}

Hiçbir mod etkin değilse onay modunun eşzamanlı olduğu varsayılır. belirtildiğinden, bu yöntemin kullanılması nedeniyle açıkça bir mod belirtilmesi yanlışlıkla yapılan ihmallerle ilgili karışıklığı ortadan kaldıran bir sistemdir.

Asenk.

{
  "availability": [
    {
      "merchant_id": "10001",
      "service_id": "1000",
      "spots_open": 3,
      "spots_total": 3,
      "duration_sec": 3600,
      "start_sec": 1535806800,
      "resources": {
        "party_size": 4
      },
      "confirmation_mode": "CONFIRMATION_MODE_ASYNCHRONOUS"
    }
  ]
}

Sync

{
  "availability": [
    {
      "merchant_id": "10001",
      "service_id": "1000",
      "spots_open": 3,
      "spots_total": 3,
      "duration_sec": 3600,
      "start_sec": 1535806800,
      "resources": {
        "party_size": 4
      },
      "confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS"
    }
  ]
}

Eş Zamansız ve Senkronize

{
  "availability": [
    {
      "merchant_id": "10001",
      "service_id": "1000",
      "spots_open": 3,
      "spots_total": 3,
      "duration_sec": 3600,
      "start_sec": 1535806800,
      "resources": {
        "party_size": 4
      },
      "confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS"
    },
    {
      "merchant_id": "10002",
      "service_id": "1000",
      "spots_open": 4,
      "spots_total": 4,
      "duration_sec": 3600,
      "start_sec": 1535806800,
      "resources": {
        "party_size": 2
      },
      "confirmation_mode": "CONFIRMATION_MODE_ASYNCHRONOUS"
    }

  ]
}

Rezervasyon Sunucusu

BatchAvailabilityLookup veya CheckAvailability

BatchAvailabilityLookupResponse (BAL) veya CheckAvailabilityResponse (CA), confirmation_mode stok durumu feed'i aracılığıyla BatchAvailabilityLookupRequest veya CheckAvailabilityRequest.

BAL-Async

{
  "slot_time_availability": [
    {
      "slot_time": {
        "duration_sec": "3600",
        "resource_ids": {
          "party_size": 3
        },
        "service_id": "1000",
        "start_sec": "1546458300",
        "confirmation_mode": "CONFIRMATION_MODE_ASYNCHRONOUS"
      },
      "available": true
    }
  ]
}

BAL Senkronizasyonu

{
  "slot_time_availability": [
    {
      "slot_time": {
        "duration_sec": "3600",
        "resource_ids": {
          "party_size": 3
        },
        "service_id": "1000",
        "start_sec": "1546458300",
        "confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS"
      },
      "available": true
    }
  ]
}

CA-Async

{
  "slot": {
    "duration_sec": "3600",
    "merchant_id": "317652",
    "resources": {
      "party_size": 3
    },
    "service_id": "1000",
    "start_sec": "1546458300",
    "confirmation_mode": "CONFIRMATION_MODE_ASYNCHRONOUS"
  },
  "count_available": 1,
  "duration_requirement": "DO_NOT_SHOW_DURATION"
}

CA Senkronizasyonu

{
  "slot": {
    "duration_sec": "3600",
    "merchant_id": "317652",
    "resources": {
      "party_size": 3
    },
    "service_id": "1000",
    "start_sec": "1546458300",
    "confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS"
  },
  "count_available": 1,
  "duration_requirement": "DO_NOT_SHOW_DURATION"
}

CreateBooking

Mevcut şu seçenekleri kullanabilirsiniz:

// Status of a booking.
//
// Updating booking status does not change the status of the associated payment.
// Prepayment status updates should be done using the PrepaymentStatus enum.
enum BookingStatus {
  // Not specified.
  BOOKING_STATUS_UNSPECIFIED = 0;

  // Booking has been confirmed
  CONFIRMED = 1;

  // Booking is awaiting confirmation by the merchant before it can transition
  // into CONFIRMED status. Only applicable to non-payments Dining or
  // Beauty verticals.
  PENDING_MERCHANT_CONFIRMATION = 2;

  // Booking has been canceled on behalf of the user.
  // The merchant can still trigger a manual refund.
  CANCELED = 3;

  // User did not show for the appointment
  NO_SHOW = 4;

  // User did not show for the appointment in violation of the cancellation
  // policy.
  NO_SHOW_PENALIZED = 5;

  // Booking could not be completed by the async backend due to a failure.
  FAILED = 6;

  // Booking was asynchronously declined by the merchant. Only applicable to
  // non-payments Dining or Beauty verticals.
  DECLINED_BY_MERCHANT = 7;
}

CreateBookingResponse içinde rezervasyon için sağlanan toplam zaman aralığı için geçerli confirmation_mode değerini döndür CreateBookingRequest'e girelim. Ayrıca, rezervasyon eşzamansız olduğunda status cihazını PENDING_MERCHANT_CONFIRMATION olarak ayarlayın. Lütfen confirmation_mode kullanıcının neyle ve neyle rezervasyon yapacağıdır. Google, kullanıcıların kafasını karıştırmamayı amaçlar.

Asenk.

{
  "booking": {
    "slot": {
      "duration_sec": "3600",
      "merchant_id": "100001",
      "resources": {
        "party_size": 2
      },
      "service_id": "1000",
      "start_sec": "1546647234",
      "confirmation_mode": "CONFIRMATION_MODE_ASYNCHRONOUS"
    },
    "user_information": {
      "email": "johnsmith@gmail.com",
      "family_name": "John",
      "given_name": "Smith",
      "telephone": "+1 800-123-4567",
      "user_id": "2017492857928759285"
    },
    "payment_information": {
      "prepayment_status": "PREPAYMENT_NOT_PROVIDED"
    },
    "status": "PENDING_MERCHANT_CONFIRMATION"
  }
}

Sync

{
  "booking": {
    "slot": {
      "duration_sec": "3600",
      "merchant_id": "100001",
      "resources": {
        "party_size": 2
      },
      "service_id": "1000",
      "start_sec": "1546647234",
      "confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS"
    },
    "user_information": {
      "email": "johnsmith@gmail.com",
      "family_name": "John",
      "given_name": "Smith",
      "telephone": "+1 800-123-4567",
      "user_id": "2017492857928759285"
    },
    "payment_information": {
      "prepayment_status": "PREPAYMENT_NOT_PROVIDED"
    },
    "status": "CONFIRMED"
  }
}

UpdateBooking

Eş zamansız sürümün ilk sürümünde kullanıcı mevcut bir rezervasyonda değişiklik yapar desteklenmez. Bunun yerine, kullanıcı rezervasyonu iptal etmeli ve yeni rezervasyon.

Gerçek Zamanlı Güncellemeler

Stok durumu ile ilgili anlık güncellemeler için confirmation_mode belirtilmelidir. Bu, aşağıdaki yöntemler için geçerlidir:

Envanter RTU'su (SwapServiceAvailability veya BatchPlaceServiceAvailability)

Kullanım availability.replace (toplu) yöntemi veya services.availability.replace yöntemi, Availability içinde confirmation_mode öğesini CONFIRMATION_MODE_ASYNCHRONOUS olarak ayarla

Asenk.

{
  "extendedServiceAvailability": [
    {
      "merchantId": "1001",
      "serviceId": "12310",
      "startTimeRestrict": "2014-10-02T15:01:23.045123456Z",
      "endTimeRestrict": "2014-10-02T19:01:23.045123456Z",
      "availability": [
        {
          "startTime": "2014-10-02T15:30:00.00Z",
          "duration": "3600s",
          "spotsOpen": "0",
          "spotsTotal": "2",
          "availabilityTag": "1000001",
          "confirmation_mode": "CONFIRMATION_MODE_ASYNCHRONOUS"
        }
      ]
    }
  ]
}

Sync

{
  "extendedServiceAvailability": [
    {
      "merchantId": "1001",
      "serviceId": "12310",
      "startTimeRestrict": "2014-10-02T15:01:23.045123456Z",
      "endTimeRestrict": "2014-10-02T19:01:23.045123456Z",
      "availability": [
        {
          "startTime": "2014-10-02T15:30:00.00Z",
          "duration": "3600s",
          "spotsOpen": "0",
          "spotsTotal": "2",
          "availabilityTag": "1000001",
          "confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS"
        }
      ]
    }
  ]
}

Eş Zamansız ve Senkronize

{
  "extendedServiceAvailability": [
    {
      "merchantId": "1001",
      "serviceId": "12310",
      "startTimeRestrict": "2014-10-02T15:01:23.045123456Z",
      "endTimeRestrict": "2014-10-02T19:01:23.045123456Z",
      "availability": [
        {
          "startTime": "2014-10-02T15:30:00.00Z",
          "duration": "3600s",
          "spotsOpen": "0",
          "spotsTotal": "2",
          "availabilityTag": "1000001",
          "confirmation_mode": "CONFIRMATION_MODE_ASYNCHRONOUS"
        },
        {
          "startTime": "2014-10-03T11:00:00.00Z",
          "duration": "5400s",
          "spotsOpen": "1",
          "spotsTotal": "1",
          "availabilityTag": "1000002",
          "confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS"
        }
      ]
    }
  ]
}

Rezervasyon Bildirimi API'si

Rezervasyon durumunda eşzamansız güncellemeler Rezervasyon üzerinden yapılmalıdır. Notification API bookings.patch yöntemi.

Durumu güncellerken, status alanının adını updateMask.

Durum Açıklama
ONAYLANDI satıcı rezervasyonu onayladı
BAŞARISIZ iş ortağı, satıcıyla yapılan rezervasyonu onaylayamadı veya reddedemedi
DECLINED_BY_MERCHANT satıcı rezervasyonu reddetti
Request:
PATCH https://mapsbooking.googleapis.com/v1alpha/notification/partners/<PARTNER_ID>/bookings/<BOOKING_ID>?updateMask=status

Body:
{"name":"partners/<PARTNER_ID>/bookings/<BOOKING_ID>", "status":"DECLINED_BY_MERCHANT"}

Rezervasyon hatası olması durumunda rezervasyon durumunu FAILED olarak ayarlayın ve rezervasyon_failure değerini belirtin. Durum başka bir değere ayarlanırsa booking_failure yoksayıldı.

Request:
PATCH https://mapsbooking.googleapis.com/v1alpha/notification/partners/<PARTNER_ID>/bookings/<BOOKING_ID>?updateMask=status&booking_failure.cause="SLOT_UNAVAILABLE"

Body:
{"name":"partners/<PARTNER_ID>/bookings/<BOOKING_ID>", "status":"FAILED"}

E-posta Bildirimleri

Eşzamansız rezervasyonlarda, web sitenizin adresiyle ilişkili beş olası e-posta kullanıcılara gönderilen rezervasyonun durumu.

  • PENDING_MERCHANT_CONFIRMATION
  • CONFIRMED
  • DECLINED_BY_MERCHANT
  • FAILED
  • CANCELED