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:
- Feed'leri,
tokenization_parameter
bilgilerini içerecek şekilde yapılandırma - Rezervasyon sunucusu
payment_method_token
nesneyi kabul edecek şekilde güncelleniyor - 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.
- Ödeme Yok / Girişte Ödeme
- Tam Ön Ödeme
- Gösterim Ücreti Yok / İptal Ücreti
- Ö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.