Ödemeleri Yapılandırma

Google ile Rezervasyon platformu, ödeme almayla ilgili çeşitli yapılandırmaları destekler. Ödemeleri Etkinleştirme Kılavuzu'nda, aşağıdakiler dahil olmak üzere tüm ödeme entegrasyonunun ortak özellikleri yer alır:

  1. Feed'leri, tokenization_parameter bilgilerini içerecek şekilde yapılandırma
  2. Rezervasyon sunucusu payment_method_token nesneyi kabul edecek şekilde güncelleniyor
  3. Kullanıcı, Google ile Rezervasyon, iş ortağı / satıcı ve ödeme işleyici arasında iletilen bilgiler.

Bu kılavuzda, satıcılarınız ve hizmetleriniz için farklı ödeme yapılandırması türlerinden hangilerinin geçerli olduğunu belirtmek amacıyla feed'lerinizi nasıl yapılandıracağınız daha ayrıntılı olarak ele alınacaktır.

  1. Ödeme Yok / Girişte Ödeme
  2. Tam Ön Ödeme
  3. Gösterim Ücreti Yok / İptal Ücreti
  4. Ödeme

Ödemelerle ilgili tüm kullanım alanları, "ödeme yok" veya "varışta ödeme" kullanım alanı uzantısıdır (ödeme yapılandırması gerekmez). Bu eğitim, ilk olarak bu yapılandırmayı açıklayıp diğer yapılandırmaları uzantılar olarak ele alır.

Her bölümde, belirli ödeme yapılandırmasını kabul etmek için rezervasyon sunucusunda izlenecek alanlar da ele alınır.

Ödeme Yok / Girişte Ödeme

Rezervasyon sırasında herhangi bir ödeme gerektirmeyen hizmetler için satıcı veya hizmet düzeyinde ödeme yapılandırması gerekmez.

Bu; ad, açıklama ve fiyat içeren bir hizmetin temel yapılandırmasıdır. Bu, ServiceFeed içindeki tek bir Hizmet mesajıdır:

JSON

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

Varışta ödeme yapılabilmesi için rezervasyon sunucusunda standart uygulamanın ötesinde ek bir yapılandırma yapılması gerekmez.

Gösteri Ücreti

Rezervasyona katılmayan veya iptal aralığından sonra iptal eden kullanıcılar için rezervasyonu kullanmama ücretleri uygulanabilir. İptal aralığı belirtilmemişse varsayılan olarak zaman aralığının başlangıç zamanı kullanılır.

Gösterilmez ücretini belirtmek için hizmet feed'inde aşağıdaki örnekte gösterildiği gibi no_show_fee alanını eklemeniz gerekir:

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"
    }
}

Yukarıdaki örnekte, randevu sahibi randevuya katılmazsa iş ortağı veya satıcı no_show_fee.fee.price_micros alanında belirtildiği şekilde 25 ABD doları sabit ücret ödemesi almaya yetkilidir. Bu ücret, kullanıcı scheduling_rules.min_advance_online_canceling alanında belirtildiği şekilde randevudan önceki 4 saat (14.400 saniye) içinde iptal ederse de ödeme alınabilir.

Müsaitlik düzeyinde hiçbir gösterim ücretinin nasıl tanımlanamadığını görmek için bu bölüme bakın.

İsteğe bağlı olmayan tesis, isteğe bağlı olarak rezervasyon için kişi başına ücretlendirilecek şekilde yapılandırılabilir. Bu durumda, no_show_fee.fee.fee_type öğesi PER_PERSON olarak ayarlanabilir.

Rezervasyon Sunucusu

Gösterilmez ücret içeren bir isteği işlerken, rezervasyon sunucunuza CreateBooking çağrısında payment_processing_parameters.unparsed_payment_method_token alanı üzerinden bir ödeme jetonu iletilir. Bu jeton, ön ödeme senaryosunda olduğu gibi iletilir. Ancak jeton yalnızca kısa bir süre için yetkilendirildiğinden, bu jetonu daha sonra kullanmak üzere saklayabileceğiniz bir sürüme geçirmek için ödeme işleyicinizin ilgili API'sini çağırmanız gerekir. Bu durum, No-Show Fare token flow konusunda gösterilen Ödeme Etkinleştirme rehberi bölümünde açıklanmıştır.

CreateBookingResponse döndürürken aşağıdaki örnekte olduğu gibi, "gösterilmez" durumunu doğru şekilde yansıtmak için booking.payment_information alanı ayarlanmalıdır.

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, ücret alınabilecek ücretin fiyatını ve yapısını yansıtacak şekilde ayarlanır. Ayrıca, ön ödeme örneğine benzer şekilde bu mesajda da transaction_id gereklidir.

Ayrıca, CreateBookingResponse içinde ayarlanan booking_id, gerçek zamanlı güncellemeler için zorunlu olmayan bir alandır. Gösterilmezken ücret alınırken gönderilmesi gerekir. Bu kimliğin rezervasyonla ilgili bilgilerle birlikte depolanması beklenir.

Gerçek Zamanlı Güncellemeler

Planlanan rezervasyona gelen veya iptal süresinden sonra iptal eden (ör. sizinle doğrudan iletişime geçen) bir kullanıcı, isteğe bağlı olarak belirtilen rezervasyonu kullanmama ücretini, rezervasyon sırasında depoladığınız ödeme bilgilerini kullanarak tahsil edebilirsiniz. Rezervasyonu kullanmama ücreti aldığınızda, gösterim ücreti alınmadığını belirten bir Gerçek Zamanlı Güncelleme göndermeniz gerekir.

CreateBooking tarafından oluşturulan rezervasyonlar için notification.partners.bookings.patch adresine güncelleme gönderilmelidir. Bu isteğin gövdesinde durum NO_SHOW_PENALIZED olarak güncellenen güncellenmiş rezervasyon olmalıdır. Bu durum, Google'a bir ödeme yapıldığını bildirir.

Örneğin, bir istek şu adrese gönderilebilir:

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

İstek metniyle:

JSON

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

Ödeme

Depozitolar, rezervasyonun bir koşulu olarak ilk ödeme tutarını tahsil etmek için kullanılır. Depozitolar rezervasyon sırasında veya daha sonra alınabilir. Hangi şartlar altında depozitonun geri ödenebileceğini ve rezervasyonların online olarak ne zaman iptal edilebileceğini tanımlamanız gerekebilir.

Bir ödeme belirtmek için hizmet feed'inde aşağıdaki örnekte gösterildiği gibi deposit alanını eklemeniz gerekir:

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"
    }
}

Bu örnekte, min_advance_online_canceling iptal aralığını, deposit.min_advance_cancellation_sec ise depozito için ne zaman geri ödeme yapılacağını tanımlar. Yukarıdaki örnekte depozito, geri ödeme şartlarından ayrı olarak iptal zamanı belirtebileceğini unutmayın. Bu durumda, kullanıcı 24 saate kadar (86.400 saniye) internet üzerinden hizmeti iptal edebilecek. Bu, satıcı tarafından geciken iptaller hakkında doğrudan bilgilendirilmesini sağlar. Ancak kullanıcı, rezervasyonun başlamasından 4 saat (14.400 saniye) öncesine kadar (iptal işlemi için sizinle veya satıcıyla iletişime geçerek) geri ödeme isteğinde bulunabilir ancak ödeme sırasında ve onay e-postasında belirtilen şartlarda gösterilir.

Ödemelerin kullanılabilirlik düzeyinde nasıl tanımlanabileceğini görmek için bu bölümü inceleyin.

Ayrıca, rezervasyonu göstermeme ücretlerinde olduğu gibi depozito karşılığında sabit bir ücret veya kişi başı ücret alınabilir. Bu durumda, "deposit_type": "FIXED_RATE_DEFAULT" tarafından belirtilen depozito, 25 ABD doları sabit ücrettir. Rezervasyonda parti boyutu varsa depozito, "deposit_type": "PER_PERSON" ayarlayarak kişi başına ödeme olarak belirtilebilir.

Rezervasyon Sunucusu

Ödeme içeren bir istek işlenirken, payment_processing_parameters.unparsed_payment_method_token alanı üzerinden CreateBooking çağrısında rezervasyon sunucunuza bir ödeme jetonu iletilir. Bu jeton, ön ödeme senaryosunda olduğu gibi iletilir. Ödemeyi ödeme sırasında tahsil eder veya rezervasyon sırasında bekletmeyi kaldırırsanız bu istek sırasında bunu yapabilirsiniz.

Ödemeyi daha sonra almayı planlıyorsanız jeton yalnızca kısa bir süre için yetkilendirildiğinden bu jetonu daha sonra kullanmak üzere saklayabileceğiniz bir sürüme geçirmek için ödeme işleyicinizin ilgili API'sini çağırmanız gerekir. Bu, depolama jetonu akışı hakkındaki Ödeme Etkinleştirme kılavuzu bölümünde açıklanmıştır.

CreateBookingResponse döndürülürken booking.payment_information alanının aşağıdaki örnekte olduğu gibi depozito durumunu doğru bir şekilde yansıtması gerekir.

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"
    }
}

Ödemenin, alınacak veya bekletilecek depozitonun fiyatını ve yapısını yansıtacak şekilde ayarlandığını unutmayın. Ayrıca, ön ödeme örneğine benzer şekilde bu mesajda da transaction_id gereklidir.

Gerçek Zamanlı Güncellemeler

Bir kullanıcı, rezervasyonunu ödeme iptali aralığından önce iptal ederse kullanıcı kartından aldığınız depozitoyu geri ödemeniz gerekir. Geri ödeme yaparken geri ödeme tutarının belirtildiği bir Gerçek Zamanlı Güncelleme göndermeniz gerekir.

CreateBooking tarafından oluşturulan rezervasyonlar için notification.partners.bookings.patch adresine güncelleme gönderilmelidir. Bu isteğin gövdesinde durum CANCELED ve paymentInformation.prepaymentStatus alanı PREPAYMENT_REFUNDED olarak güncellenen güncellenmiş rezervasyon olmalıdır. Bu durum, Google'a depozitonun geri ödendiğini bildirir.

Örneğin, bir istek şu adrese gönderilebilir:

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

İstek metniyle:

JSON

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

Kredi Kartı İsteyin

Hizmet, kullanıcının kimliğinin ek doğrulaması olarak kredi kartı gerektirebilir. Ancak ön ödeme, depozito veya hiç gösterim ücreti için kullanılmamalıdır. Bu kullanım alanları gerekliyse yukarıdaki adımları kullanarak açıkça yapılandırılmalıdır. Ayrıca, kredi kartı kullanmanın genellikle bu hizmette rezervasyonlarda önemli bir düşüşe neden olacağını lütfen unutmayın.

Ödeme sırasında kredi kartı verilmesini zorunlu kılmak için require_credit_card alanını REQUIRE_CREDIT_CARD_ALWAYS olarak ayarlamanız gerekir.

JSON

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

Rezervasyon Sunucusu

Kredi kartı gereksinimi içeren bir isteği işlerken, rezervasyon sunucusuna CreateBooking çağrısında payment_processing_parameters.unparsed_payment_method_token alanı üzerinden bir ödeme jetonu iletilir. Bu jeton, ön ödeme senaryosunda olduğu gibi iletilir. Ancak jeton yalnızca kısa bir süre için yetkilendirildiğinden, bu jetonu daha sonra kullanmak üzere saklayabileceğiniz bir sürüme geçirmek için ödeme işleyicinizin ilgili API'sini çağırmanız gerekir.

Rezervasyon sunucusu yanıtında, "girişte ödeme" kullanım alanı dışında ek bilgilere gerek yoktur.

Müsaitlik Düzeyinde Fiyatlandırmayı Geçersiz Kılma

Yukarıdaki tüm örneklerde fiyat / ücret yapısı Hizmet düzeyinde belirtilmiştir. Çoğu durumda bu hizmet düzeyinde fiyatlandırma kullanılmalıdır. Ancak bazı durumlarda, belirli müsaitlik durumu slotları için ödeme yapısını değiştirmek mantıklı olabilir. Örneğin, aşağıdaki durumlar stok durumu düzeyinde fiyatları / ücretleri geçersiz kılarak çözülebilir:

  • Fiyatlar Salı günleri düşürülüp Cumartesi günleri artırılır.
  • 17:00-19:00 saatleri arasında müsaitlik için gösterilmez.
  • 6'dan büyük parti boyutları için ödeme yapılmasını zorunlu kılın.
  • Belirli bir odadaki rezervasyonlar için kredi kartı gereklidir.

Aşağıdaki tabloda, her ödeme / ücret yöntemi için hizmet düzeyi tanımını geçersiz kılmak amacıyla stok durumu feed'inde kullanılacak alan listelenmiştir.

Ödeme Türü Ücret / Fiyat Tanımı Geçersiz kılınabilir mi?
Program ücretsiz Service.no_show_fee Availability.no_show_fee
Ödeme Service.deposit Availability.deposit
Kredi kartı iste Service.require_credit_card Availability.require_credit_card

Stok durumu düzeyinde fiyatı geçersiz kılmak için önce satıcı düzeyinde bir ödeme seçeneği tanımlamanız gerekir. Ayrıca, kullanılabilirlik düzeyinde iptal pencereleri eklemeyle ilgili yardım için lütfen İptal Pencereleri Ekleme kılavuzuna bakın.