İşlem Merkezi platformu, ödeme almak için çeşitli yapılandırmaları destekler. Ödemeleri Etkinleştirme Kılavuzu, entegrasyonla ilgili aşağıdakiler dahil olmak üzere tüm ödeme entegrasyonlarında ortak olan yönleri kapsar:
- Feed'leri
tokenization_parameter
bilgilerini içerecek şekilde yapılandırma - Rezervasyon sunucusunu
payment_method_token
nesnelerini kabul edecek şekilde güncelleme - Kullanıcı, İşlem Merkezi, iş ortağı / satıcı ve ödeme işleyici arasında paylaşılan bilgilere genel bakış.
Bu kılavuzda, satıcılarınız ve hizmetleriniz için hangi ödeme yapılandırma türlerinin geçerli olduğunu belirtmek amacıyla feed'lerinizi nasıl yapılandıracağınızı daha ayrıntılı bir şekilde ele alacağız.
- Ödeme yok / Varışta ödeme
- Tam Ödeme
- Gösterilmeme Ücreti / İptal Ücreti
- Ödeme
Ödemelerle ilgili tüm kullanım alanları, ödeme yapılan/varışta ödeme yapılan kullanım alanının (ödeme yapılan bir yapılandırma gerektirmez) uzantılarıdır. Bu nedenle, bu eğitim bu yapılandırmayı açıklayarak başlayacak ve diğer yapılandırmaları uzantı olarak ele alacaktır.
Her bölümde, belirli ödeme yapılandırmasını kabul etmek için rezervasyon sunucusunda izlenecek alanlar da yer alır.
Ödeme yok / Varışta ödeme
Rezervasyon sırasında ödeme gerektirmeyen hizmetler için satıcı veya hizmet düzeyinde ödeme yapılandırması gerekmez. Ancak fiyatlar yine de gereklidir.
Bu, bir hizmetin adı, açıklaması ve fiyatı içeren temel yapılandırmasıdır. Bu, ServiceFeed
içinde tek bir Hizmet mesajı olacaktır:
{ "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 özelliğini desteklemek için rezervasyon sunucusunda standart uygulamanın ötesinde ek yapılandırma gerekmez.
Ön Ödeme
Bu yapılandırma, hizmetin tutarının rezervasyon sırasında eksiksiz olarak ödenmesi gerektiğini belirtmek için kullanılır.
Ön ödeme, Service
öğesinin prepayment_type
alanı aracılığıyla hizmet düzeyinde belirtilir. Bir hizmet için ödeme alınmasını zorunlu kılmak istiyorsanız bu ayar aşağıdaki örnekte gösterildiği gibi REQUIRED
olarak ayarlanmalıdır. Fiyatın, teslimatta ödeme örneğiyle aynı şekilde belirtildiğini unutmayın. Burada, ön ödeme türünü zorunlu olarak ayarladığımızdan bir kredi kartı bilgisi alınır ve bu fiyat ödeme sırasında tahsil edilebilir.
{ "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 ödemeler kabul edilirken payment_processing_parameters.unparsed_payment_method_token
alanı aracılığıyla CreateBooking
çağrısında rezervasyon sunucunuza bir ödeme jetonu iletilir.
Feed'lerdeki fiyat alanı aracılığıyla tam olarak belirtilen tutarı tahsil etmeniz ve feed'lerde belirtilen para birimini kullanmanız gerekir. Bu ödemeler, Ödemeleri 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ğlandığını ve işlendiğini doğru şekilde yansıtacak şekilde ayarlanmalıdır.
PaymentInformation
spesifikasyonu, tüm ödeme bilgisi seçenekleriyle ilgili tam dokümanları içerir. Ön ödemeyi işleme koyma ile ilgili minimum bir örnek aşağıda verilmiştir. Fiyat alanında döndürülen fiyatın, istekte belirtilen fiyatla tam olarak eşleşmesi önemlidir. Ayrıca feed'lerde/isteklerde bir vergi oranı belirtilmişse bu oran da tam olarak eklenmelidir.
Ayrıca bir işlem kimliği sağlamanız gerektiğini unutmayın. Bu işlem kimliği, en azından ilgili satıcıyla yapılan 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.
{ "prepayment_status": "PREPAYMENT_PROVIDED", "payment_processed_by": "PROCESSED_BY_PARTNER", "payment_transaction_id": "[this-transaction-id]", "price": { "price_micros": "200000000", "currency_code": "USD" } }
Etkinliğe katılmayan kullanıcılar için ücret
Rezervasyona katılmayan veya iptal süresi geçtikten sonra rezervasyonu iptal eden kullanıcılardan kullanılmayan rezervasyon ücreti alınabilir. İptal aralığı belirtilmezse varsayılan olarak aralığın başlangıç zamanı kullanılır.
Gösterilmeyen rezervasyon ücretini belirtmek için hizmet feed'ine aşağıdaki örnekte gösterildiği gibi no_show_fee
alanını eklemeniz gerekir:
{ "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, iş ortağı veya satıcı, randevu sahibi randevuya katılmazsa no_show_fee.fee.price_micros
alanında belirtildiği gibi 25 ABD doları sabit ücret tahsil etmeye yetkilidir. Bu ücret, kullanıcı scheduling_rules.min_advance_online_canceling
alanında belirtildiği gibi randevudan 4 saat (14.400 saniye) önce iptal ederse de alınabilir.
Gösterilmeyen ücretlerin müsaitlik durumu düzeyinde nasıl tanımlanabileceğini görmek için bu bölüme bakın.
Rezervasyon sunucusu
Gösterilmeme ücreti içeren bir istek işlenirken payment_processing_parameters.unparsed_payment_method_token
alanı aracılığıyla CreateBooking
çağrısında rezervasyon sunucunuza bir ödeme jetonu iletilir.
Bu jeton, ön ödeme durumunda olduğu gibi iletilir. Ancak jeton yalnızca kısa bir süre için yetkilendirildiğinden, bu jetonu daha sonra kullanmak üzere kalıcı hale getirebileceğiniz bir sürüme yükseltmek için ödeme işleyicinizin ilgili API'sini çağırmanız gerekir. Bu konu, Gösterilmeyen Rezervasyon Ücreti jeton akışı başlıklı Ödemeleri Etkinleştirme kılavuz bölümünde açıklanmıştır.
CreateBookingResponse
döndürülürken, rezervasyonu kullanmama ücretinin durumunu aşağıda verilen örnekte gösterildiği gibi doğru şekilde yansıtmak için booking.payment_information
alanının ayarlanması gerekir.
{ "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
değerinin, alınabilecek ücretin fiyatını ve yapısını yansıtacak şekilde ayarlandığını unutmayın. Ayrıca, ön ödeme örneğine benzer şekilde bu iletide bir transaction_id
gerektiğini unutmayın.
Ayrıca, CreateBookingResponse
bölümünde ayarlanan booking_id
değerinin, kullanılmayan rezervasyon ücreti alınırken gönderilmesi gereken anlık güncellemeler için zorunlu bir alan olduğunu unutmayın. Bu kimliğin, rezervasyonla ilgili bilgilerle birlikte saklanması beklenir.
Gerçek Zamanlı Güncellemeler
Bir kullanıcı planlanan rezervasyonuna gelmezse veya iptal süresi geçtikten sonra rezervasyonu iptal ederse (ör. sizinle doğrudan iletişime geçerek) rezervasyon sırasında kaydettiğiniz ödeme bilgilerini kullanarak isteğe bağlı olarak belirtilen rezervasyonu kullanmama ücretini alabilirsiniz. Rezervasyonu kullanmama ücreti aldığınızda, rezervasyonu kullanmama ücretinin alındığını belirten bir Anlık 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, durumu NO_SHOW_PENALIZED
olarak ayarlanmış güncellenmiş rezervasyon bulunmalıdır. Bu durum, Google'a bir ödeme yapıldığını bildirir.
Örneğin, aşağıdakilere istek gönderilebilir:
PATCH https://mapsbooking.googleapis.com/v1alpha/notification/partners/12345678/bookings/123123123?updateMask=status
İstek içeriğiyle:
{ "name": "partners/12345678/bookings/123123123" "merchantId": "merchant-1" "serviceId": "service-2-b" "status": "NO_SHOW_PENALIZED" }
Ödeme
Depozitolar, rezervasyon şartı olarak ilk ödemeyi almak için kullanılır. Teminatlar rezervasyon sırasında veya daha sonra tahsil edilebilir. Rezervasyonların ne zaman online olarak iptal edilebileceğinin yanı sıra, teminatların hangi şartlar altında iade edilebileceğini de tanımlamanız gerekebilir.
Teminat belirtmek için hizmet feed'ine aşağıdaki örnekte gösterildiği gibi deposit
alanını eklemeniz gerekir:
{ "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 teminat tutarının ne zaman geri ödeneceğini tanımlar. Yukarıdaki örnekte, teminat için geri ödeme koşullarından ayrı olarak bir iptal süresi belirtilebileceğini unutmayın. Bu durumda, kullanıcı 24 saat öncesinden (86.400 saniye) önce hizmetini online olarak iptal edebilir. Bu sayede, geç iptallerden satıcı doğrudan haberdar olur. Ancak kullanıcı, rezervasyondan 4 saat (14.400 saniye) önceye kadar teminat bedelinin geri ödenmesini isteyebilir (iptal için sizinle veya satıcıyla iletişime geçerek). Bu durum, ödeme sırasındaki şartlarda ve onay e-postasında gösterilir.
Depozitoların müsaitlik düzeyinde nasıl tanımlanabileceğini görmek için bu bölüme göz atın.
Rezervasyon sunucusu
Depozito içeren bir istek işlenirken payment_processing_parameters.unparsed_payment_method_token
alanı aracılığıyla CreateBooking
çağrısında rezervasyon sunucunuza bir ödeme jetonu iletilir.
Bu jeton, ön ödeme durumunda olduğu gibi iletilir. Rezervasyon sırasında depozitoyu tahsil ederseniz veya açık provizyonu kaldırırsanız bu istek sırasında da bunu yapabilirsiniz.
Jeton yalnızca kısa bir süre için yetkilendirildiğinden, teminat bedelini daha sonra tahsil etmeyi planlıyorsanız bu jetonu daha sonra kullanabileceğiniz bir sürüme yükseltmek için ödeme işleyicinizin ilgili API'sini çağırmanız gerekir. Bu konu, para yatırma jetonu akışı ile ilgili Ödemeleri Etkinleştirme kılavuz bölümünde açıklanmıştır.
CreateBookingResponse
döndürüldüğünde booking.payment_information
alanı, aşağıdaki örnekte olduğu gibi teminat durumunu doğru şekilde yansıtmalıdır.
{ "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" } }
Teminatın, tahsil edilecek veya tutulacak teminatın fiyatını ve yapısını yansıtacak şekilde ayarlandığını unutmayın. Ayrıca, ön ödeme örneğine benzer şekilde bu iletide bir transaction_id
gerektiğini unutmayın.
Gerçek Zamanlı Güncellemeler
Bir kullanıcı, rezervasyonunu teminat iptal süresi dolmadan önce iptal ederse kullanıcının kartından tahsil ettiğiniz tüm teminat bedelini iade etmeniz gerekir. Bir teminat için geri ödeme yaptığınızda, teminat bedelinin geri ödendiğini belirten bir Anlık 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, durumu CANCELED
ve paymentInformation.prepaymentStatus
alanının değeri PREPAYMENT_REFUNDED
olarak ayarlanmış güncellenmiş rezervasyon bulunmalıdır. Bu işlem, Google'a depozitonun geri ödendiğini bildirir.
Örneğin, aşağıdakilere istek gönderilebilir:
PATCH https://mapsbooking.googleapis.com/v1alpha/notification/partners/12345678/bookings/123123123?updateMask=status
İstek içeriğiyle:
{ "name": "partners/12345678/bookings/123123123" "merchantId": "merchant-1" "serviceId": "service-2-b" "status": "CANCELED" "paymentInformation": { "prepaymentStatus": "PREPAYMENT_REFUNDED" } }
Kredi kartı zorunluluğu
Bir hizmet, kullanıcının kimliğinin ek doğrulaması olarak kredi kartı isteyebilir. Ancak ön ödeme, avans veya gelmeme ücretleri için kullanılmamalıdır. Bu kullanım alanları gerekiyorsa yukarıdaki adımlar kullanılarak açıkça yapılandırılmalıdır. Ayrıca, kredi kartı zorunluluğunun genellikle bu hizmet için yapılan rezervasyonlarda önemli bir düşüşe yol açacağını unutmayın.
Ödeme sırasında kredi kartı kullanılmasını zorunlu kılmak için require_credit_card
alanını REQUIRE_CREDIT_CARD_ALWAYS
olarak ayarlamanız gerekir.
{ "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ı şartı içeren bir istek işlenirken payment_processing_parameters.unparsed_payment_method_token
alanı aracılığıyla CreateBooking
çağrısında rezervasyon sunucunuza bir ödeme jetonu iletilir.
Bu jeton, ön ödeme durumunda olduğu gibi iletilir. Ancak jeton yalnızca kısa bir süre için yetkilendirildiğinden, bu jetonu daha sonra kullanmak üzere kalıcı hale getirebileceğiniz bir sürüme yükseltmek için ödeme işleyicinizin ilgili API'sini çağırmanız gerekir.
Rezervasyon sunucusu yanıtında, varışta ödeme kullanım alanı dışında ek bilgi gerekmez.
Stok Durumu Düzeyinde Fiyatlandırmayı Geçersiz Kılma
Yukarıdaki örneklerin tümünde fiyat / ücret yapısı Hizmet düzeyinde belirtilmiştir. Çoğu durumda bu hizmet düzeyi fiyatlandırması kullanılmalıdır. Ancak bazı durumlarda, belirli müsaitlik durumu aralıkları için ödeme yapısını değiştirmek mantıklı olabilir. Örneğin, aşağıdaki durumlar, müsaitlik durumu düzeyinde fiyatları / ücretleri geçersiz kılarak ele alınabilir:
- Fiyatlar salı günleri düşer, cumartesi günleri artar.
- 17:00 ile 19:00 arasındaki müsaitlik durumu için geç gelme ücreti uygulanmaz.
Aşağıdaki tabloda, her ödeme / ücret yöntemi için bilgi dokümanında hizmet düzeyi tanımını geçersiz kılmak üzere hangi alanın kullanılacağı listelenmiştir.
Ödeme Türü | Ücret / Fiyat Tanımı | Geçersiz kılınabilir mi? |
---|---|---|
Varışta Ödeme | Service.price
|
Fiyat, Availability.payment_option_id referansı üzerinden devre dışı bırakılabilir
Merchant.payment_option
|
Ön Ödeme | Service.price
|
Fiyat, Availability.payment_option_id referansı üzerinden atlanabilir
Merchant.payment_option
|
Gösteri ücreti yok | Service.no_show_fee
|
Availability.no_show_fee
|
Ödeme | Service.deposit
|
Availability.deposit
|
Kredi kartı zorunluluğu | Service.require_credit_card
|
Availability.require_credit_card
|
Satın alınabilirlik seviyesinde fiyatı geçersiz kılmak için önce satıcı seviyesinde bir ödeme seçeneği tanımlamanız gerektiğini unutmayın. Ayrıca, müsaitlik durumu seviyesinde iptal aralıkları ekleme hakkında bilgi edinmek için İptal Aralıkları Ekleme başlıklı kılavuzu inceleyebilirsiniz.