Platform Actions Center mendukung berbagai konfigurasi karena menerima pembayaran. Tujuan Panduan Mengaktifkan Pembayaran mencakup aspek integrasi yang bersifat umum untuk semua integrasi pembayaran, termasuk:
- Mengonfigurasi feed untuk menyertakan informasi
tokenization_parameter
- Memperbarui server pemesanan untuk menerima
payment_method_token
objek - Ikhtisar tentang informasi yang dipertukarkan antara pengguna, {i>Actions Center<i}, partner / penjual, dan pemroses pembayaran.
Dalam panduan ini, kami akan membahas secara lebih rinci bagaimana cara konfigurasikan feed untuk menentukan mana dari berbagai jenis konfigurasi pembayaran berlaku untuk penjual dan layanan Anda.
- Tidak Ada Pembayaran / Bayar Saat Kedatangan
- Pembayaran Di Muka Penuh
- Biaya Ketidakhadiran / Biaya Pembatalan
- Setoran
Semua kasus penggunaan pembayaran merupakan perpanjangan dari opsi tanpa pembayaran /{i>pay-on-arrival <i}(bayar saat kedatangan) (yang tidak memerlukan konfigurasi pembayaran) akan dimulai dengan menjelaskan konfigurasi tersebut dan menangani konfigurasi sebagai ekstensi.
Setiap bagian juga akan mencakup bidang yang akan dilacak di server pemesanan untuk menerima pembayaran tertentu konfigurasi Anda.
Tidak Ada Pembayaran / Bayar Saat Kedatangan
Untuk layanan yang tidak memerlukan pembayaran saat pemesanan, penjual atau layanan tidak memerlukan konfigurasi pembayaran level organisasi. Namun, harga tetap wajib diisi.
Ini adalah konfigurasi dasar 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 diperlukan konfigurasi tambahan di luar penerapan standar di server pemesanan untuk mendukung fitur bayar saat kedatangan.
Pembayaran di muka
Konfigurasi ini digunakan untuk menentukan bahwa jumlah layanan harus dibayar penuh pada saat pemesanan.
Pembayaran di muka ditentukan pada tingkat layanan melalui
Kolom prepayment_type
kolom
Service
. Untuk mewajibkan pembayaran layanan,
harus disetel ke REQUIRED
seperti dalam contoh di bawah. Perlu diketahui bahwa
harga ditentukan dengan cara yang sama
seperti contoh {i>pay-on-arrival<i}. Di sini,
karena kami sedang menetapkan jenis prabayar, kartu kredit akan
dikumpulkan dan harga ini
dapat dikenakan 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" }
Booking Server
Saat menerima prabayar, token pembayaran akan diteruskan ke pemesanan Anda
server dalam panggilan ke
CreateBooking
melalui kolom
payment_processing_parameters.unparsed_payment_method_token
.
Anda harus menagih sesuai dengan jumlah yang ditentukan melalui
kolom harga di feed dan Anda wajib menggunakan mata uang
yang ditentukan dalam feed. Biaya ini harus mengikuti
alur yang dijelaskan
di
Panduan Mengaktifkan Pembayaran.
Saat mengembalikan
CreateBookingResponse
kolom booking.payment_information
harus disetel dengan benar
menunjukkan bahwa pembayaran di muka telah diberikan dan diproses.
Tujuan
Spesifikasi PaymentInformation
berisi
dokumentasi untuk semua opsi informasi pembayaran. Contoh minimal untuk
pemrosesan prabayar tersedia di bawah. Perlu diperhatikan bahwa harga
yang ditampilkan di kolom harga sama persis dengan yang ditentukan dalam
permintaan. Selain itu, jika tarif pajak ditentukan dalam feed/permintaan, maka
juga harus disertakan dengan tepat.
Perhatikan juga bahwa Anda harus memberikan ID transaksi. ID transaksi ini minimal harus unik di antara transaksi dengan penjual tersebut. J kandidat yang baik untuk ID transaksi adalah ID transaksi yang diberikan 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" } }
Biaya Ketidakhadiran
Denda ketidakhadiran dapat dikenakan kepada pengguna jika mereka tidak hadir reservasi, atau jika mereka membatalkan setelah periode pembatalan. Jika tidak ada periode pembatalan yang ditentukan, ditetapkan secara default ke waktu mulai slot.
Untuk menentukan denda ketidakhadiran, dalam feed layanan, Anda harus menyertakan
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 sebagaimana ditentukan dalam
Kolom no_show_fee.fee.price_micros
jika pemegang janji temu
tidak menghadiri janji temu. Biaya ini juga mungkin dikenakan jika pengguna
membatalkan dalam waktu 4 jam (14.400 detik) sebelum janji temu, sebagaimana
ditentukan dalam scheduling_rules.min_advance_online_canceling
kolom tersebut.
Untuk melihat cara menentukan biaya ketidakhadiran acara di tingkat ketersediaan, lihat bagian ini.
Booking Server
Saat memproses permintaan yang mencakup biaya ketidakhadiran, 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 pembayaran di muka
ini masalahnya atau bukan. Namun, karena token hanya diotorisasi dalam waktu singkat
Anda harus memanggil API pemroses pembayaran yang relevan untuk
meningkatkan token ini menjadi versi yang
dapat Anda pertahankan untuk digunakan
di lain waktu. Hal ini dijelaskan di bagian panduan Mengaktifkan Pembayaran
nyala
Alur token Biaya Ketidakhadiran.
Saat mengembalikan
CreateBookingResponse
kolom booking.payment_information
harus diatur agar dapat
menggemakan status denda ketidakhadiran seperti pada 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" } }
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 wajib diisi untuk update real-time yang harus dikirim saat mengisi daya
denda ketidakhadiran. Id ini diharapkan disimpan bersama informasi
tentang pemesanan.
Real-Time Updates
Jika pengguna tidak datang untuk pemesanan terjadwal mereka, atau membatalkan setelah jendela pembatalan (mis. dengan menghubungi Anda secara langsung), Anda dapat memilih untuk mengenakan denda ketidakhadiran yang ditentukan menggunakan informasi pembayaran yang Anda simpan pada saat pemesanan. Saat mengenakan biaya ketidakhadiran, Anda diwajibkan untuk mengirimkan Info Terbaru Real Time yang menentukan bahwa denda ketidakhadiran ditagih.
Untuk pemesanan yang dibuat oleh
CreateBooking
, update akan dikirim ke
notification.partners.bookings.patch
. Isi permintaan ini harus
pemesanan yang diperbarui, dengan status 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" }
Setoran
Setoran digunakan untuk menagih tagihan awal sebagai persyaratan untuk pemesanan. Setoran dapat dikenakan pada saat pemesanan atau pada lain waktu baik. Anda mungkin perlu menentukan ketentuan mengenai pengembalian dana deposit sebagai dan juga jika pemesanan dapat dibatalkan secara online.
Untuk menentukan setoran, pada feed layanan, Anda harus menyertakan
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 terpisah dari persyaratan pengembalian dana. Dalam hal ini, pengguna
akan dapat membatalkan
layanan secara online hingga 24 jam sebelumnya (86400 detik). Hal ini memastikan bahwa penjual
informasi langsung jika ada keterlambatan dalam pembatalan. Namun, pengguna mungkin masih
memenuhi syarat untuk pengembalian dana atas setoran mereka hingga 4 jam sebelumnya
(14.400 detik) sebelum pemesanan (dengan menghubungi Anda atau penjual untuk melakukan pembatalan),
yang akan ditampilkan di persyaratan saat checkout dan di email konfirmasi.
Untuk melihat bagaimana deposit dapat ditentukan pada tingkat ketersediaan, lihat bagian ini.
Booking Server
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 dalam kasus prabayar. Jika Anda
menagih setoran atau mencabut penangguhan pada saat pemesanan, Anda dapat melakukannya
selama permintaan ini dikirimkan.
Jika Anda berniat menagih setoran di lain waktu, karena token hanya diotorisasi dalam waktu singkat, Anda harus memanggil API pemroses pembayaran yang relevan untuk mengupgrade token ini ke yang dapat Anda pertahankan untuk digunakan di lain waktu. Ini adalah yang dijelaskan di bagian panduan Mengaktifkan Pembayaran di alur token deposit.
Saat mengembalikan
CreateBookingResponse
kolom booking.payment_information
harus
menampilkan kembali status penyetoran dengan benar, seperti pada contoh berikut.
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
deposit yang akan ditagih atau ditahan. Perhatikan juga bahwa, mirip dengan
contoh prabayar, transaction_id
diperlukan dalam pesan ini.
Real-Time Updates
Jika pengguna membatalkan pemesanan sebelum periode pembatalan setoran, Anda harus mengembalikan dana setoran yang telah Anda bayarkan ke kartu pengguna. Kapan mengembalikan dana setoran, Anda diharuskan mengirimkan Pembaruan Real Time yang menentukan bahwa setoran telah dikembalikan.
Untuk pemesanan yang dibuat oleh
CreateBooking
, update akan dikirim ke
notification.partners.bookings.patch
. Dalam isi
harus berupa pemesanan yang diperbarui, dengan status ditetapkan ke
CANCELED
dan
Kolom paymentInformation.prepaymentStatus
disetel ke
PREPAYMENT_REFUNDED
. Hal ini akan memberi tahu Google bahwa setoran tersebut telah
dikembalikan dananya.
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 identitas pengguna. Namun, sebaiknya jangan digunakan untuk pembayaran di muka, deposit, atau biaya ketidakhadiran. Jika kasus penggunaan itu adalah harus dikonfigurasi secara eksplisit menggunakan langkah-langkah di atas. Perhatikan juga bahwa mewajibkan kartu kredit sering kali menyebabkan penurunan yang signifikan dalam pemesanan untuk layanan ini.
Untuk mewajibkan penyediaan kartu kredit saat checkout, Anda harus menetapkan
kolom require_credit_card
untuk
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" }
Booking Server
Saat memproses permintaan yang menyertakan
persyaratan kartu kredit, suatu 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 pembayaran di muka
ini masalahnya atau bukan. Namun, karena token hanya diotorisasi dalam waktu singkat
Anda harus memanggil API pemroses pembayaran yang relevan untuk
meningkatkan token ini menjadi versi yang
dapat Anda pertahankan untuk digunakan
di lain waktu.
Tidak ada informasi tambahan yang diperlukan dalam respons server Pemesanan di luar kasus penggunaan bayar saat kedatangan.
Mengganti Harga pada Tingkat Ketersediaan
Dalam semua contoh di atas, struktur harga / biaya ditentukan di tingkat Layanan. Biasanya, harga tingkat layanan ini data Namun, dalam beberapa kasus, sebaiknya ubah struktur pembayaran untuk slot ketersediaan tertentu. Misalnya, situasi berikut dapat ditangani dengan mengganti harga / biaya di tingkat ketersediaan:
- Harga diturunkan pada hari Selasa dan naik pada hari Sabtu.
- Tidak ada biaya acara yang berlaku untuk ketersediaan antara pukul 17.00 dan 19.00.
Tabel di bawah mencantumkan kolom apa yang harus diisi, untuk setiap metode pembayaran / biaya digunakan di feed ketersediaan untuk mengganti definisi tingkat layanan.
Jenis Pembayaran | Definisi Biaya / Harga | Bisa diganti? |
---|---|---|
Bayar saat Kedatangan | Service.price
|
Harga dapat diganti melalui
Availability.payment_option_id mereferensikan
Merchant.payment_option
|
Pembayaran di muka | Service.price
|
Harga bisa diganti melalui
Availability.payment_option_id mereferensikan
Merchant.payment_option
|
Biaya ketidakhadiran acara | Service.no_show_fee
|
Availability.no_show_fee
|
Setoran | 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, sebagai panduan dalam menambahkan periode pembatalan di tingkat ketersediaan, lihat panduan Cara Menambahkan Periode Pembatalan.