Ö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. 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.
  • Yaşlı bir saç tasarımcısı tarafından sunulan hizmet, genç olmayan bir kişiden daha pahalıdır.

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.