Tetapkan Berbagai Jenis Pembayaran

Platform Actions Center mendukung berbagai konfigurasi karena menerima pembayaran. Tujuan Panduan Mengaktifkan Pembayaran mencakup aspek integrasi yang bersifat umum untuk semua integrasi pembayaran, termasuk:

  1. Mengonfigurasi feed untuk menyertakan informasi tokenization_parameter
  2. Memperbarui server pemesanan untuk menerima payment_method_token objek
  3. 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.

  1. Tidak Ada Pembayaran / Bayar Saat Kedatangan
  2. Pembayaran Di Muka Penuh
  3. Biaya Ketidakhadiran / Biaya Pembatalan
  4. 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.