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. Ancak fiyatlar hâlâ zorunludur.
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": "service-1-a", "name": "Men's haircut", "description": "One of our stylists will cut your hair", "price": { "price_micros": 15000000, "currency_code": "USD" } }
Varışta ödeme yapılabilmesi için rezervasyon sunucusunda standart uygulamanın ötesinde ek bir yapılandırma yapılması gerekmez.
Ön Ödeme
Bu yapılandırma, hizmet tutarının rezervasyon sırasında tamamen ödenmesi gerektiğini belirtmek için kullanılır.
Ön ödeme, hizmet düzeyinde Service
alanının prepayment_type
alanı üzerinden belirtilir. Bir hizmet için ödeme gerektirebilmek amacıyla bu, aşağıdaki örnekte olduğu gibi REQUIRED
olarak ayarlanmalıdır. Fiyatın, varışta ödeme örneğiyle aynı şekilde belirtildiğini unutmayın. Burada
ön ödeme türünü gerekli olarak ayarladığımız için bir kredi kartı toplanır ve bu fiyat ödeme sırasında
tahsil edilebilir.
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" }
Rezervasyon Sunucusu
Ön ödemeleri kabul ettiğinizde, payment_processing_parameters.unparsed_payment_method_token
alanı üzerinden CreateBooking
çağrısında rezervasyon sunucunuza bir ödeme jetonu iletilir.
Feed'lerdeki fiyat alanı üzerinden tam olarak belirtilen tutarda ücret almanız ve feed'lerde belirtilen para birimini kullanmanız gerekir. Bu ödemeler, Ödeme Etkinleştirme Kılavuzu'nda açıklanan akışa uygun olmalıdır.
CreateBookingResponse
döndürülürken booking.payment_information
alanı, ön ödemenin sağlanıp işlendiğini doğru şekilde yansıtacak şekilde ayarlanmalıdır.
PaymentInformation
spesifikasyonu, tüm ödeme bilgisi seçenekleriyle ilgili belgelerin tamamını içerir. Aşağıda, ön ödemenin işlenmesine dair minimum düzeyde bir örnek verilmiştir. Fiyat alanında döndürülen fiyatın, istekte belirtilen fiyatla tam olarak eşleşmesi önemlidir. Feed'lerde/istekte bir vergi oranı belirtiliyorsa tam olarak dahil edilmesi gerekir.
İşlem kimliği de sağlamanız gerektiğini unutmayın. Bu işlem kimliği en azından söz konusu satıcıyla olan işlemler arasında benzersiz olmalıdır. İşlem kimliği için iyi bir aday, ödeme işleyici tarafından size sağlanan işlem kimliğidir.
JSON
{ "prepayment_status": "PREPAYMENT_PROVIDED", "payment_processed_by": "PROCESSED_BY_PARTNER", "payment_transaction_id": "[this-transaction-id]", "price": { "price_micros": "200000000", "currency_code": "USD" } }
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.
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.
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": "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" }
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.
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? |
---|---|---|
Girişte ödeme | Service.price
|
Merchant.payment_option referansını kullanarak Availability.payment_option_id aracılığıyla fiyat geçersiz kılınabilir.
|
Ön Ödeme | Service.price
|
Fiyat, Merchant.payment_option
referansını kullanarak Availability.payment_option_id
tarafından geçersiz kılınabilir
|
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.