Platform Pesan dengan Google mendukung berbagai konfigurasi untuk menerima pembayaran. Panduan Mengaktifkan Pembayaran mencakup aspek-aspek integrasi yang umum untuk semua integrasi pembayaran, termasuk:
- Mengonfigurasi feed untuk menyertakan informasi
tokenization_parameter
- Memperbarui server pemesanan untuk menerima objek
payment_method_token
- Ringkasan informasi yang dipertukarkan antara pengguna, Pesan dengan Google, partner / penjual, dan pemroses pembayaran.
Dalam panduan ini, kami akan membahas lebih detail cara mengonfigurasi feed untuk menentukan berbagai jenis konfigurasi pembayaran yang berlaku untuk penjual dan layanan Anda.
- Tidak Ada Pembayaran / Bayar Saat Kedatangan
- Prabayar Penuh
- Denda Ketidakhadiran / Biaya Pembatalan
- Deposit
Semua kasus penggunaan untuk pembayaran adalah ekstensi kasus penggunaan tanpa pembayaran/bayar saat tiba (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 apa pun pada saat pemesanan, konfigurasi pembayaran tidak diperlukan di tingkat penjual atau layanan. Namun, harga tetap wajib diisi.
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 selain 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.
Prabayar ditentukan di tingkat layanan melalui kolom
prepayment_type
pada
Service
. Untuk mewajibkan pembayaran layanan, tetapkan ke REQUIRED
seperti dalam contoh di bawah. Perlu diperhatikan bahwa
harga ditentukan dengan cara yang sama seperti contoh bayar saat kedatangan. Di sini,
karena kami menetapkan jenis prabayar ke wajib diisi, kartu kredit akan
dikumpulkan 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 diteruskan ke server pemesanan Anda dalam panggilan ke CreateBooking
melalui kolom payment_processing_parameters.unparsed_payment_method_token
.
Anda diwajibkan untuk menagih jumlah yang ditetapkan melalui
kolom harga dalam feed dan Anda harus menggunakan mata uang
yang ditentukan dalam feed. Biaya ini harus mengikuti alur yang dijelaskan
dalam
Mengaktifkan Panduan Pembayaran.
Saat menampilkan
CreateBookingResponse
kolom booking.payment_information
harus ditetapkan dengan benar
untuk mencerminkan bahwa prabayar telah diberikan dan diproses.
Spesifikasi
PaymentInformation
berisi dokumentasi
lengkap untuk semua opsi informasi pembayaran. Contoh minimal untuk memproses prabayar diberikan di bawah ini. Penting untuk memastikan bahwa harga yang ditampilkan di kolom harga 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 setidaknya harus unik antara transaksi dengan penjual tersebut. Kandidat ID transaksi yang baik 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 membatalkan setelah periode pembatalan. Jika tidak ditentukan, jendela pembatalan akan ditetapkan secara default ke waktu mulai slot.
Untuk menetapkan tarif ketidakhadiran, di 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 diberi otorisasi untuk mengenakan biaya tetap sebesar $25 seperti yang ditentukan dalam kolom no_show_fee.fee.price_micros
jika pemegang janji temu tidak menghadiri janji temu. Biaya ini juga dapat dikenakan jika pengguna
membatalkan dalam waktu 4 jam (14.400 detik) sebelum janji temu, seperti
yang ditentukan di kolom
scheduling_rules.min_advance_online_canceling
.
Untuk melihat bagaimana tidak ada biaya acara yang dapat ditentukan pada tingkat ketersediaan, lihat bagian ini.
Server Pemesanan
Saat memproses permintaan yang menyertakan biaya 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 prabayar. Namun, karena token hanya diotorisasi untuk jangka waktu 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
,
kolom booking.payment_information
harus ditetapkan untuk mengulangi
status tidak hadir seperti dalam contoh di bawah dengan benar.
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" } }
Perlu diperhatikan bahwa no_show_fee
ditetapkan untuk mencerminkan harga dan
struktur biaya yang mungkin dikenakan. Perhatikan juga bahwa, mirip dengan contoh prabayar, transaction_id
diperlukan dalam pesan ini.
Perhatikan juga bahwa booking_id
yang ditetapkan di
CreateBookingResponse
adalah kolom yang wajib diisi untuk pembaruan real-time yang harus dikirim saat mengenakan biaya
ketidakhadiran. ID ini diharapkan disimpan bersama informasi tentang pemesanan.
Update Real-Time
Jika pengguna tidak datang untuk pemesanan terjadwalnya, atau membatalkan setelah periode pembatalan (misalnya, dengan menghubungi Anda secara langsung), Anda dapat menagih biaya ketidakhadiran yang ditentukan secara opsional menggunakan informasi pembayaran yang Anda simpan pada saat pemesanan. Saat menagih biaya ketidakhadiran, Anda harus mengirimkan Update Real Time yang menyebutkan bahwa ada biaya ketidakhadiran.
Untuk pemesanan yang dibuat oleh CreateBooking
, pembaruan harus dikirim ke notification.partners.bookings.patch
. Isi permintaan ini harus berupa pemesanan yang diperbarui, dengan status yang ditetapkan ke NO_SHOW_PENALIZED
. Status ini memberi tahu Google bahwa tagihan telah
dilakukan.
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
Deposit digunakan untuk menagih biaya awal sebagai persyaratan pemesanan. Deposit dapat dibebankan pada saat pemesanan atau di lain waktu. Anda mungkin perlu menentukan pada syarat mana setoran dapat dikembalikan serta kapan pemesanan dapat dibatalkan secara online.
Untuk menentukan deposit, 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 deposit dapat dikembalikan dananya. Perhatikan bahwa dalam contoh di atas, setoran dapat menentukan waktu pembatalan secara terpisah dari persyaratan pengembalian dana. Dalam kasus ini, pengguna dapat membatalkan
layanan secara online hingga 24 jam sebelumnya (86.400 detik). Ini memastikan penjual
langsung diberi tahu tentang pembatalan yang terlambat. Namun, pengguna mungkin masih memenuhi syarat untuk melakukan pengembalian dana atas depositnya hingga 4 jam sebelumnya (14400 detik) sebelum pemesanan (dengan menghubungi Anda atau penjual untuk membatalkan), yang akan ditunjukkan dalam persyaratan saat checkout dan dalam email konfirmasi.
Untuk melihat cara menentukan setoran pada tingkat ketersediaan, lihat bagian ini.
Server Pemesanan
Saat memproses permintaan yang menyertakan setoran, 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 pada kasus prabayar. Jika Anda menagih deposit atau mencabut penangguhan pada saat pemesanan, Anda dapat melakukannya selama permintaan ini.
Jika Anda ingin menagih deposit di lain waktu, karena token hanya diotorisasi untuk jangka waktu 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 setoran.
Saat menampilkan
CreateBookingResponse
, kolom booking.payment_information
harus
melakukan echo dengan benar status setoran, seperti dalam 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 setoran ditetapkan untuk mencerminkan harga dan struktur setoran yang akan ditagih atau ditahan. Perhatikan juga bahwa, mirip dengan contoh prabayar, transaction_id
diperlukan dalam pesan ini.
Update Real-Time
Jika pengguna membatalkan pemesanannya sebelum periode pembatalan deposit, Anda harus mengembalikan dana untuk deposit yang telah ditagihkan ke kartu pengguna. Saat mengembalikan dana untuk deposit, Anda harus mengirimkan Real Time Update yang menentukan bahwa deposit tersebut telah dikembalikan dananya.
Untuk pemesanan yang dibuat oleh CreateBooking
, pembaruan harus dikirim ke notification.partners.bookings.patch
. Dalam isi permintaan ini harus berupa pemesanan yang diperbarui, dengan status yang ditetapkan ke CANCELED
dan kolom paymentInformation.prepaymentStatus
yang ditetapkan ke PREPAYMENT_REFUNDED
. Tindakan 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, penawaran tidak boleh digunakan untuk pembayaran di muka, setoran, atau biaya ketidakhadiran. Jika diperlukan, kasus penggunaan tersebut harus dikonfigurasi secara eksplisit menggunakan langkah-langkah di atas. Perhatikan juga bahwa mewajibkan kartu kredit sering kali menyebabkan penurunan pemesanan yang signifikan untuk layanan ini.
Untuk meminta 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 prabayar. Namun, karena token hanya diotorisasi untuk jangka waktu 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 di kasus penggunaan pembayaran saat kedatangan.
Mengganti Harga di Tingkat Ketersediaan
Di semua contoh di atas, struktur harga / biaya ditentukan di tingkat Layanan. Dalam sebagian besar kasus, harga tingkat layanan ini harus digunakan. Namun, dalam beberapa kasus, ubah struktur pembayaran untuk slot ketersediaan tertentu adalah hal yang wajar. Misalnya, situasi berikut dapat ditangani dengan mengganti harga / biaya di tingkat ketersediaan:
- Harga dikurangi pada hari Selasa dan naik pada hari Sabtu.
- Tidak ada biaya pertunjukan yang berlaku untuk ketersediaan antara pukul 17.00 dan 19.00.
Tabel di bawah ini mencantumkan, untuk setiap metode pembayaran / biaya, kolom yang akan digunakan dalam feed ketersediaan untuk mengganti definisi tingkat layanan.
Jenis Pembayaran | Biaya / Definisi Harga | Dapat diganti? |
---|---|---|
Bayar saat Kedatangan | Service.price
|
Harga dapat diganti melalui
Availability.payment_option_id yang mereferensikan
Merchant.payment_option
|
Pembayaran di muka | Service.price
|
Harga dapat diganti melalui
Availability.payment_option_id yang mereferensikan
Merchant.payment_option
|
Tidak ada biaya 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 tentang menambahkan periode pembatalan di tingkat ketersediaan, lihat panduan Cara Menambahkan Jendela Pembatalan.