Platform Pusat Tindakan mendukung berbagai konfigurasi untuk menerima pembayaran. Panduan Mengaktifkan Pembayaran membahas aspek integrasi yang sama untuk semua integrasi pembayaran, termasuk:
- Mengonfigurasi feed agar menyertakan informasi
tokenization_parameter
- Mengupdate server pemesanan untuk menerima objek
payment_method_token
- Ringkasan informasi yang dipertukarkan antara pengguna, Pusat Tindakan, partner / penjual, dan pemroses pembayaran.
Dalam panduan ini, kami akan membahas secara lebih mendetail cara mengonfigurasi feed Anda untuk menentukan jenis konfigurasi pembayaran mana yang berlaku untuk penjual dan layanan Anda.
- Tidak Ada Pembayaran / Bayar saat Kedatangan
- Prabayar Penuh
- Denda Ketidakhadiran / Tarif Pembatalan
- Deposit
Semua kasus penggunaan pembayaran merupakan perluasan dari kasus penggunaan tanpa pembayaran/bayar saat kedatangan (yang tidak memerlukan konfigurasi pembayaran) sehingga tutorial ini akan dimulai dengan menjelaskan konfigurasi tersebut dan memperlakukan konfigurasi lain sebagai ekstensi.
Setiap bagian juga akan mencakup kolom yang akan dilacak di server pemesanan untuk menerima konfigurasi pembayaran tertentu.
Tidak Ada Pembayaran / Bayar saat Kedatangan
Untuk layanan yang tidak memerlukan pembayaran pada saat pemesanan, tidak diperlukan konfigurasi pembayaran di tingkat penjual atau layanan. Namun, harga tetap berlaku.
Ini adalah konfigurasi dasar pengukuran untuk layanan, yang berisi
nama, deskripsi, dan harga. Ini akan menjadi satu pesan Layanan dalam ServiceFeed
:
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" } }
Tidak ada konfigurasi tambahan di luar penerapan standar yang diperlukan di server pemesanan untuk mendukung pembayaran saat kedatangan.
Pembayaran di muka
Konfigurasi ini digunakan untuk menentukan bahwa jumlah untuk layanan harus dibayar penuh pada saat pemesanan.
Pembayaran di muka ditentukan pada tingkat layanan melalui kolom prepayment_type
di Service
. Untuk mewajibkan pembayaran suatu layanan, nilai ini harus ditetapkan ke REQUIRED
seperti pada contoh di bawah. Perhatikan bahwa harga ditentukan dengan cara yang sama seperti contoh bayar saat kedatangan. Di sini,
karena kami menetapkan jenis prabayar ke wajib, kartu kredit akan
ditagih dan harga ini dapat ditagih pada saat checkout.
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" }
Server Pemesanan
Saat menerima prabayar, token pembayaran akan diteruskan ke server pemesanan Anda dalam panggilan ke CreateBooking
melalui kolom payment_processing_parameters.unparsed_payment_method_token
.
Anda harus menagih dengan tepat jumlah yang ditentukan melalui kolom harga di feed dan harus menggunakan mata uang yang ditentukan dalam feed. Biaya ini harus mengikuti alur yang dijelaskan
dalam
Panduan Mengaktifkan Pembayaran.
Saat menampilkan
CreateBookingResponse
kolom booking.payment_information
harus ditetapkan agar benar-benar
mencerminkan bahwa pembayaran di muka telah diberikan dan diproses.
Spesifikasi
PaymentInformation
berisi dokumentasi
lengkap untuk semua opsi informasi pembayaran. Contoh minimal untuk memproses prabayar diberikan di bawah ini. Harga yang ditampilkan dalam kolom harga harus sama persis dengan yang ditentukan dalam permintaan. Selain itu, jika tarif pajak ditentukan dalam feed/permintaan, tarif tersebut
juga harus disertakan persis.
Perhatikan juga bahwa Anda harus memberikan ID transaksi. ID transaksi ini minimal harus unik di antara transaksi dengan penjual tersebut. Kandidat yang baik untuk ID transaksi adalah ID transaksi yang diberikan kepada Anda oleh pemroses pembayaran.
JSON
{ "prepayment_status": "PREPAYMENT_PROVIDED", "payment_processed_by": "PROCESSED_BY_PARTNER", "payment_transaction_id": "[this-transaction-id]", "price": { "price_micros": "200000000", "currency_code": "USD" } }
Denda Ketidakhadiran
Biaya ketidakhadiran dapat ditagihkan kepada pengguna jika mereka tidak menghadiri reservasi, atau jika mereka membatalkan setelah periode pembatalan. Jika tidak ada jendela pembatalan yang ditentukan, waktu mulai slot akan ditetapkan secara default.
Untuk menetapkan denda ketidakhadiran, dalam feed layanan, Anda harus menyertakan kolom
no_show_fee
seperti yang ditunjukkan pada contoh di bawah:
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" } }
Pada contoh di atas, partner atau penjual berwenang untuk mengenakan tarif tetap sebesar $25 sebagaimana ditentukan dalam kolom no_show_fee.fee.price_micros
jika pemegang janji temu tidak menghadiri janji temu. Biaya ini juga dapat ditagihkan jika pengguna
melakukan pembatalan dalam waktu 4 jam (14.400 detik) sebelum janji temu, seperti
yang ditentukan di kolom
scheduling_rules.min_advance_online_canceling
.
Untuk mengetahui cara menentukan tarif ketidakhadiran tamu di tingkat ketersediaan, lihat bagian ini.
Server Pemesanan
Saat memproses permintaan yang menyertakan denda ketidakhadiran, token pembayaran akan diteruskan ke server pemesanan Anda dalam panggilan ke CreateBooking
melalui kolom payment_processing_parameters.unparsed_payment_method_token
.
Token ini diteruskan dengan cara yang sama seperti dalam kasus pembayaran di muka. Namun, karena token hanya diotorisasi untuk jangka waktu yang singkat, Anda harus memanggil API pemroses pembayaran yang relevan untuk mengupgrade token ini ke versi yang dapat Anda pertahankan untuk digunakan di lain waktu. Hal ini dijelaskan di bagian panduan Mengaktifkan Pembayaran
pada
alur token Biaya Ketidakhadiran.
Saat menampilkan CreateBookingResponse
, booking.payment_information
kolom harus ditetapkan untuk menggemakan kembali status denda ketidakhadiran seperti dalam contoh di bawah ini.
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" } }
Perhatikan bahwa no_show_fee
ditetapkan untuk mencerminkan harga dan struktur biaya yang mungkin dikenakan. Perhatikan juga bahwa, mirip dengan contoh pembayaran di muka, transaction_id
diperlukan dalam pesan ini.
Perhatikan juga bahwa booking_id
yang ditetapkan di
CreateBookingResponse
adalah kolom wajib untuk pembaruan real-time yang harus dikirim saat menagih
denda ketidakhadiran. ID ini diharapkan disimpan bersama informasi tentang pemesanan.
Update Real-Time
Jika pengguna tidak datang untuk pemesanan terjadwal mereka, atau membatalkan setelah periode pembatalan (misalnya dengan menghubungi Anda secara langsung), Anda dapat secara opsional menagih denda ketidakhadiran yang ditentukan menggunakan informasi pembayaran yang Anda simpan pada saat pemesanan. Jika dikenai denda ketidakhadiran, Anda harus mengirimkan Pembaruan Real-Time yang menentukan bahwa denda ketidakhadiran dikenakan.
Untuk pemesanan yang dibuat oleh
CreateBooking
, info terbaru harus dikirim ke
notification.partners.bookings.patch
. Dalam isi permintaan ini harus terdapat pemesanan yang diperbarui, dengan status yang ditetapkan ke NO_SHOW_PENALIZED
. Status ini memberi tahu Google bahwa tagihan telah
dikenakan.
Misalnya, permintaan dapat dikirim ke:
PATCH https://mapsbooking.googleapis.com/v1alpha/notification/partners/12345678/bookings/123123123?updateMask=status
Dengan isi permintaan:
JSON
{ "name": "partners/12345678/bookings/123123123" "merchantId": "merchant-1" "serviceId": "service-2-b" "status": "NO_SHOW_PENALIZED" }
Deposit
Setoran digunakan untuk menagih biaya awal sebagai persyaratan untuk pemesanan. Setoran dapat ditagih pada saat pemesanan atau di lain waktu. Anda mungkin perlu menentukan ketentuan pengembalian dana serta kapan pemesanan dapat dibatalkan secara online.
Untuk menentukan setoran, di feed layanan, Anda harus menyertakan kolom
deposit
seperti yang ditunjukkan pada contoh di bawah:
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" } }
Dalam contoh ini, min_advance_online_canceling
menentukan periode pembatalan dan
deposit.min_advance_cancellation_sec
menentukan kapan setoran dapat dikembalikan dananya. Perhatikan bahwa dalam contoh di atas, setoran dapat menentukan
waktu pembatalan secara terpisah dari persyaratan pengembalian dana. Dalam hal ini, pengguna dapat membatalkan
layanan secara online hingga 24 jam sebelumnya (86.400 detik). Hal ini memastikan bahwa penjual
diberi tahu secara langsung tentang setiap pembatalan yang terlambat. Namun, pengguna mungkin masih memenuhi syarat untuk meminta pengembalian dana atas deposit mereka hingga 4 jam sebelumnya (14.400 detik) sebelum pemesanan (dengan menghubungi Anda atau penjual untuk melakukan pembatalan), yang akan ditampilkan dalam persyaratan saat checkout dan dalam email konfirmasi.
Untuk melihat cara menentukan deposit pada tingkat ketersediaan, lihat bagian ini.
Server Pemesanan
Saat memproses permintaan yang menyertakan deposit, token pembayaran diteruskan ke server pemesanan Anda dalam panggilan ke CreateBooking
melalui kolom payment_processing_parameters.unparsed_payment_method_token
.
Token ini diteruskan dengan cara yang sama seperti dalam kasus pembayaran di muka. Jika Anda menagih deposit atau mencabut penangguhan pada saat pemesanan, Anda dapat melakukannya selama permintaan ini.
Jika Anda ingin menagih setoran di lain waktu, karena token hanya diotorisasi untuk jangka waktu yang singkat, Anda harus memanggil API pemroses pembayaran yang relevan untuk mengupgrade token ini ke versi yang dapat Anda pertahankan untuk digunakan di lain waktu. Hal ini dijelaskan di bagian panduan Mengaktifkan Pembayaran di alur token deposit.
Saat menampilkan
CreateBookingResponse
, kolom booking.payment_information
harus menggemakan kembali status deposit dengan benar, seperti pada contoh di bawah.
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" } }
Perhatikan bahwa deposit ditetapkan untuk mencerminkan harga dan struktur deposit yang akan ditagih atau ditahan. Perhatikan juga bahwa, mirip dengan contoh pembayaran di muka, transaction_id
diperlukan dalam pesan ini.
Update Real-Time
Jika pengguna membatalkan pemesanannya sebelum periode pembatalan deposit, Anda harus mengembalikan deposit yang telah ditagihkan ke kartu pengguna. Saat mengembalikan dana deposit, Anda diwajibkan untuk mengirimkan Pembaruan Real-Time yang menyebutkan bahwa setoran telah dikembalikan dananya.
Untuk pemesanan yang dibuat oleh
CreateBooking
, info terbaru harus dikirim ke
notification.partners.bookings.patch
. Dalam isi permintaan ini harus terdapat pemesanan yang diperbarui, dengan status ditetapkan ke CANCELED
dan kolom paymentInformation.prepaymentStatus
ditetapkan ke PREPAYMENT_REFUNDED
. Hal ini akan memberi tahu Google bahwa setoran telah dikembalikan.
Misalnya, permintaan dapat dikirim ke:
PATCH https://mapsbooking.googleapis.com/v1alpha/notification/partners/12345678/bookings/123123123?updateMask=status
Dengan isi permintaan:
JSON
{ "name": "partners/12345678/bookings/123123123" "merchantId": "merchant-1" "serviceId": "service-2-b" "status": "CANCELED" "paymentInformation": { "prepaymentStatus": "PREPAYMENT_REFUNDED" } }
Memerlukan Kartu Kredit
Layanan mungkin memerlukan kartu kredit sebagai verifikasi tambahan identitas pengguna. Namun, metode ini tidak boleh digunakan untuk pembayaran di muka, setoran, atau biaya ketidakhadiran tamu. Jika kasus penggunaan tersebut diperlukan, kasus tersebut harus dikonfigurasi secara eksplisit menggunakan langkah-langkah di atas. Perhatikan juga bahwa mewajibkan kartu kredit sering kali akan menyebabkan penurunan pemesanan yang signifikan untuk layanan ini.
Untuk mewajibkan kartu kredit diberikan saat checkout, Anda harus menetapkan kolom require_credit_card
ke REQUIRE_CREDIT_CARD_ALWAYS
.
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" }
Server Pemesanan
Saat memproses permintaan yang menyertakan persyaratan kartu kredit, token pembayaran diteruskan ke server pemesanan Anda dalam panggilan ke CreateBooking
melalui kolom payment_processing_parameters.unparsed_payment_method_token
.
Token ini diteruskan dengan cara yang sama seperti dalam kasus pembayaran di muka. Namun, karena token hanya diotorisasi untuk jangka waktu yang singkat, Anda harus memanggil API pemroses pembayaran yang relevan untuk mengupgrade token ini ke versi yang dapat Anda pertahankan untuk digunakan di lain waktu.
Tidak ada informasi tambahan yang diperlukan dalam respons server Pemesanan selain kasus penggunaan bayar saat kedatangan.
Mengganti Harga pada Tingkat Ketersediaan
Pada semua contoh di atas, struktur harga / biaya ditentukan di tingkat Layanan. Umumnya, harga tingkat layanan ini harus digunakan. Namun, dalam beberapa kasus, masuk akal untuk mengubah struktur pembayaran untuk slot ketersediaan tertentu. Misalnya, situasi berikut dapat ditangani dengan mengganti harga / biaya di tingkat ketersediaan:
- Harga turun pada hari Selasa dan naik pada hari Sabtu.
- Biaya ketidakhadiran berlaku untuk ketersediaan antara pukul 17:00 dan 19:00.
Tabel di bawah mencantumkan kolom yang akan digunakan dalam feed ketersediaan untuk mengganti definisi tingkat layanan, untuk setiap metode pembayaran / biaya.
Jenis Pembayaran | Definisi Biaya / Harga | Dapat diganti? |
---|---|---|
Bayar saat Kedatangan | Service.price
|
Harga dapat diganti melalui
Availability.payment_option_id dengan mereferensikan
Merchant.payment_option
|
Pembayaran di muka | Service.price
|
Harga dapat diganti melalui
Availability.payment_option_id yang mereferensikan
Merchant.payment_option
|
Denda ketidakhadiran | Service.no_show_fee
|
Availability.no_show_fee
|
Deposit | Service.deposit
|
Availability.deposit
|
Memerlukan kartu kredit | Service.require_credit_card
|
Availability.require_credit_card
|
Perhatikan bahwa untuk mengganti harga di tingkat ketersediaan, Anda harus terlebih dahulu menentukan opsi pembayaran di tingkat penjual. Selain itu, untuk panduan menambahkan periode pembatalan di tingkat ketersediaan, lihat panduan Cara Menambahkan Periode Pembatalan.