แพลตฟอร์มศูนย์การดำเนินการรองรับการกำหนดค่าที่หลากหลายสำหรับการรับชำระเงิน คู่มือการเปิดใช้การชำระเงินจะครอบคลุมแง่มุมของการผสานรวมที่ใช้ร่วมกันสำหรับการผสานรวมการชำระเงินทั้งหมด ซึ่งรวมถึง
- การกำหนดค่าฟีดให้รวมข้อมูล
tokenization_parameter
- การอัปเดตเซิร์ฟเวอร์การจองให้ยอมรับออบเจ็กต์
payment_method_token
- ภาพรวมของข้อมูลที่แลกเปลี่ยนระหว่างผู้ใช้ ศูนย์การดำเนินการ พาร์ทเนอร์ / ผู้ขาย และผู้ประมวลผลการชำระเงิน
ในคู่มือนี้ เราจะอธิบายรายละเอียดเพิ่มเติมเกี่ยวกับวิธีกำหนดค่าฟีดเพื่อระบุการกำหนดค่าการชำระเงินประเภทต่างๆ ที่ใช้กับผู้ขายและบริการของคุณได้
- ไม่มีการชำระเงิน / ชำระเงินเมื่อมาถึง
- ชำระเงินล่วงหน้าเต็มจำนวน
- ไม่มีค่าธรรมเนียมการยกเลิก / ค่าธรรมเนียมการไม่แสดง
- เงินฝาก
กรณีการใช้งานทั้งหมดสำหรับการชําระเงินคือส่วนขยายของกรณีการใช้งานแบบไม่มีการชำระเงิน/ชำระเงินเมื่อมาถึง (ซึ่งไม่ต้องมีการกําหนดค่าการชําระเงิน) บทแนะนํานี้จึงจะเริ่มต้นด้วยการอธิบายการกําหนดค่านั้นและถือว่าการกําหนดค่าอื่นๆ เป็นส่วนขยาย
แต่ละส่วนจะครอบคลุมถึงช่องที่จะติดตามในเซิร์ฟเวอร์การจองด้วย เพื่อยอมรับการกำหนดค่าการชำระเงินที่เฉพาะเจาะจง
ไม่มีการชำระเงิน / ชำระเงินเมื่อมาถึง
สำหรับบริการที่ไม่ต้องมีการชําระเงิน ณ เวลาที่จอง คุณไม่จําเป็นต้องกําหนดค่าการชําระเงินที่ระดับผู้ขายหรือบริการ อย่างไรก็ตาม คุณยังคงต้องระบุราคา
นี่คือการกำหนดค่าพื้นฐานสำหรับบริการ ซึ่งมีชื่อ คำอธิบาย และราคา ข้อความนี้เป็นข้อความบริการเดียวภายใน ServiceFeed
{ "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" } }
คุณไม่จำเป็นต้องมีการกำหนดค่าเพิ่มเติมนอกเหนือจากการติดตั้งใช้งานมาตรฐานในเซิร์ฟเวอร์การจองเพื่อรองรับการชําระเงินเมื่อมาถึง
การชำระเงินล่วงหน้า
การกําหนดค่านี้ใช้เพื่อระบุว่าต้องชําระเงินค่าบริการเต็มจํานวน ณ เวลาที่จอง
การชำระเงินล่วงหน้าจะระบุไว้ในระดับบริการผ่านช่อง prepayment_type
ของ Service
หากต้องการกำหนดให้ต้องชำระเงินสำหรับบริการนี้ ควรตั้งค่าเป็น REQUIRED
ดังตัวอย่างด้านล่าง โปรดทราบว่าราคาจะระบุในลักษณะเดียวกับตัวอย่างการชำระเงินเมื่อมาถึง ในส่วนนี้ ระบบจะเก็บรวบรวมบัตรเครดิตและเรียกเก็บเงินราคานี้ ณ เวลาที่ชำระเงิน เนื่องจากเราตั้งค่าประเภทการชำระเงินล่วงหน้าเป็น "ต้องระบุ"
{ "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" }
เซิร์ฟเวอร์การจอง
เมื่อยอมรับการชำระเงินล่วงหน้า ระบบจะส่งโทเค็นการชำระเงินไปยังเซิร์ฟเวอร์การจองของคุณในการเรียกใช้ CreateBooking
ผ่านช่อง payment_processing_parameters.unparsed_payment_method_token
คุณต้องเรียกเก็บเงินตามจำนวนเงินที่ระบุผ่านช่องราคาในฟีด และต้องใช้สกุลเงินที่ระบุในฟีด การเรียกเก็บเงินเหล่านี้ควรเป็นไปตามขั้นตอนที่อธิบายไว้ในคู่มือการเปิดใช้การชําระเงิน
เมื่อส่งคืน CreateBookingResponse
ต้องตั้งค่าช่อง booking.payment_information
ให้แสดงว่ามีการชำระล่วงหน้าและดำเนินการแล้ว
ข้อกำหนด PaymentInformation
มีเอกสารประกอบฉบับเต็มสำหรับตัวเลือกข้อมูลการชำระเงินทั้งหมด ตัวอย่างขั้นต่ำสำหรับการประมวลผลการชําระเงินล่วงหน้ามีดังนี้ ราคาที่แสดงในฟิลด์ราคาต้องตรงกับราคาที่ระบุในคำขอ นอกจากนี้ หากระบุอัตราภาษีในฟีด/คำขอ คุณต้องระบุอัตราภาษีดังกล่าวอย่างถูกต้องด้วย
และโปรดทราบว่าคุณต้องระบุรหัสธุรกรรมด้วย รหัสธุรกรรมนี้ต้องไม่ซ้ำกันอย่างน้อยที่สุดกับธุรกรรมกับผู้ขายรายนั้น รหัสธุรกรรมที่เหมาะสําหรับใช้อ้างอิงคือรหัสธุรกรรมที่ผู้ประมวลผลการชำระเงินระบุให้คุณ
{ "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
ในฟีดบริการ ดังที่แสดงในตัวอย่างด้านล่าง
{ "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" } }
ในตัวอย่างนี้ พาร์ทเนอร์หรือผู้ขายได้รับอนุญาตให้เรียกเก็บเงินในอัตราคงที่ $25 ตามที่ระบุไว้ในช่อง no_show_fee.fee.price_micros
หากผู้ถือการนัดหมายไม่เข้าร่วมการนัดหมาย ระบบอาจเรียกเก็บค่าธรรมเนียมนี้ด้วยหากผู้ใช้ยกเลิกภายใน 4 ชั่วโมง (14, 400 วินาที) ก่อนการนัดหมายตามที่ระบุไว้ในช่อง scheduling_rules.min_advance_online_canceling
หากต้องการดูวิธีกำหนดค่าธรรมเนียมการยกเลิกการจองที่ระดับความพร้อมให้บริการ โปรดดูส่วนนี้
เซิร์ฟเวอร์การจอง
เมื่อประมวลผลคำขอที่มีค่าธรรมเนียมการไม่แสดงบัตร ระบบจะส่งโทเค็นการชำระเงินไปยังเซิร์ฟเวอร์การจองในการเรียกใช้ CreateBooking
ผ่านฟิลด์ payment_processing_parameters.unparsed_payment_method_token
ระบบจะส่งโทเค็นนี้ในลักษณะเดียวกับในการชำระเงินล่วงหน้า อย่างไรก็ตาม เนื่องจากโทเค็นได้รับสิทธิ์เพียงระยะเวลาสั้นๆ คุณจึงต้องเรียก API ที่เกี่ยวข้องของผู้ประมวลผลการชำระเงินเพื่ออัปเกรดโทเค็นนี้เป็นเวอร์ชันที่คุณเก็บไว้ใช้ได้ภายหลัง โปรดดูคำอธิบายในส่วนคู่มือการเปิดใช้การชำระเงิน
เกี่ยวกับขั้นตอนการใช้โทเค็นค่าธรรมเนียมการไม่แสดง
เมื่อแสดงผล CreateBookingResponse
ต้องตั้งค่าช่อง booking.payment_information
เพื่อแสดงสถานะค่าธรรมเนียมการไม่แสดงตัวอย่างถูกต้อง ดังตัวอย่างด้านล่าง
{ "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
ได้รับการกําหนดให้แสดงราคาและโครงสร้างค่าธรรมเนียมที่อาจเรียกเก็บ และโปรดทราบว่าข้อความนี้ต้องมี transaction_id
เช่นเดียวกับตัวอย่างการชำระเงินล่วงหน้า
นอกจากนี้ โปรดทราบว่า booking_id
ที่กําหนดไว้ใน CreateBookingResponse
เป็นฟิลด์ที่ต้องกรอกสําหรับการอัปเดตแบบเรียลไทม์ที่ต้องส่งเมื่อเรียกเก็บค่าธรรมเนียมการไม่แสดงตัว ระบบจะจัดเก็บรหัสนี้ไว้พร้อมกับข้อมูลเกี่ยวกับการจอง
การอัปเดตแบบเรียลไทม์
หากผู้ใช้ไม่มาตามการจองที่กำหนดเวลาไว้ หรือยกเลิกหลังจากพ้นระยะเวลาที่ยกเลิกได้ (เช่น ติดต่อคุณโดยตรง) คุณอาจเลือกเรียกเก็บค่าธรรมเนียมการไม่แสดงตัวที่ระบุโดยใช้ข้อมูลการชำระเงินที่คุณจัดเก็บไว้ ณ เวลาที่จอง เมื่อเรียกเก็บค่าธรรมเนียมการไม่มาเข้าพัก คุณจะต้องส่งการอัปเดตแบบเรียลไทม์ที่ระบุว่ามีการเรียกเก็บค่าธรรมเนียมการไม่มาเข้าพัก
สำหรับคำสั่งซื้อที่สร้างขึ้นโดย CreateBooking
คุณควรส่งการอัปเดตไปยัง notification.partners.bookings.patch
เนื้อความของคำขอนี้ควรเป็นการจองที่อัปเดตแล้วโดยตั้งค่าสถานะเป็น NO_SHOW_PENALIZED
สถานะนี้จะแจ้งให้ Google ทราบว่ามีการเรียกเก็บเงินแล้ว
เช่น ระบบอาจส่งคำขอไปยัง
PATCH https://mapsbooking.googleapis.com/v1alpha/notification/partners/12345678/bookings/123123123?updateMask=status
เมื่อใช้เนื้อหาคำขอ
{ "name": "partners/12345678/bookings/123123123" "merchantId": "merchant-1" "serviceId": "service-2-b" "status": "NO_SHOW_PENALIZED" }
เงินฝาก
ระบบจะใช้เงินมัดจําเพื่อเรียกเก็บเงินครั้งแรกตามข้อกําหนดในการจอง ระบบอาจเรียกเก็บเงินมัดจํา ณ เวลาจองหรือในภายหลัง คุณอาจต้องกำหนดเงื่อนไขที่จะได้รับเงินมัดจําคืน รวมถึงกรณีที่ยกเลิกการจองทางออนไลน์ได้
หากต้องการระบุเงินมัดจํา คุณควรใส่ช่อง deposit
ในฟีดบริการ ดังที่แสดงในตัวอย่างด้านล่าง
{ "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" } }
ในตัวอย่างนี้ min_advance_online_canceling
จะกำหนดกรอบเวลาการยกเลิก และ deposit.min_advance_cancellation_sec
จะกำหนดกรณีที่ขอเงินมัดจําคืนได้ โปรดทราบว่าในตัวอย่างข้างต้น เงินมัดจําสามารถระบุเวลายกเลิกแยกต่างหากจากข้อกําหนดการคืนเงิน ในกรณีนี้ ผู้ใช้จะยกเลิกบริการทางออนไลน์ได้ล่วงหน้าสูงสุด 24 ชั่วโมง (86400 วินาที) วิธีนี้ช่วยให้มั่นใจได้ว่าผู้ขายจะได้รับแจ้งเกี่ยวกับการยกเลิกล่าช้าโดยตรง อย่างไรก็ตาม ผู้ใช้อาจยังคงมีสิทธิ์รับเงินคืนสำหรับเงินมัดจําได้จนถึง 4 ชั่วโมงก่อนเวลาการจอง (14,400 วินาที) (โดยการติดต่อคุณหรือผู้ขายเพื่อขอยกเลิก) ซึ่งจะแสดงอยู่ในข้อกําหนด ณ การชำระเงินและในอีเมลยืนยัน
หากต้องการดูวิธีกำหนดเงินมัดจําที่ระดับความพร้อมใช้งาน ให้ดูส่วนนี้
เซิร์ฟเวอร์การจอง
เมื่อประมวลผลคำขอที่มีเงินมัดจํา ระบบจะส่งโทเค็นการชําระเงินไปยังเซิร์ฟเวอร์การจองของคุณในการเรียกใช้ CreateBooking
ผ่านช่อง payment_processing_parameters.unparsed_payment_method_token
ระบบจะส่งโทเค็นนี้ในลักษณะเดียวกับในเคสการชำระเงินล่วงหน้า หากเรียกเก็บเงินมัดจําหรือยกเลิกการกันวงเงินบัตรเครดิต/บัตรเดบิต ณ เวลาที่จอง คุณจะดําเนินการดังกล่าวได้ในระหว่างคําขอนี้
หากต้องการเรียกเก็บเงินมัดจําในภายหลัง เนื่องจากโทเค็นได้รับอนุญาตเพียงระยะเวลาสั้นๆ คุณต้องเรียกใช้ API ที่เกี่ยวข้องของผู้ให้บริการประมวลผลการชำระเงินเพื่ออัปเกรดโทเค็นนี้เป็นเวอร์ชันที่คุณเก็บไว้ใช้ได้ภายหลัง การดำเนินการนี้อธิบายไว้ในส่วนคู่มือการเปิดใช้การชำระเงินเกี่ยวกับขั้นตอนการฝากโทเค็น
เมื่อแสดงผล CreateBookingResponse
ช่อง booking.payment_information
ต้องแสดงผลสถานะเงินมัดจําอย่างถูกต้อง ดังตัวอย่างด้านล่าง
{ "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" } }
โปรดทราบว่าระบบจะกำหนดเงินมัดจําให้สอดคล้องกับราคาและโครงสร้างของเงินมัดจําที่จะเรียกเก็บหรือกันไว้ และโปรดทราบว่าข้อความนี้ต้องมี transaction_id
เช่นเดียวกับตัวอย่างการชำระเงินล่วงหน้า
การอัปเดตแบบเรียลไทม์
หากผู้ใช้ยกเลิกการจองก่อนกรอบเวลาการยกเลิกการเรียกเก็บเงินมัดจํา คุณต้องคืนเงินมัดจําที่เรียกเก็บจากบัตรของผู้ใช้ เมื่อคืนเงินมัดจํา คุณจะต้องส่งการอัปเดตแบบเรียลไทม์ที่ระบุว่ามีการคืนเงินมัดจําแล้ว
สำหรับคำสั่งซื้อที่สร้างขึ้นโดย CreateBooking
คุณควรส่งการอัปเดตไปยัง notification.partners.bookings.patch
เนื้อหาของคำขอนี้ควรเป็นการจองที่อัปเดตแล้ว โดยตั้งค่าสถานะเป็น CANCELED
และตั้งค่าฟิลด์ paymentInformation.prepaymentStatus
เป็น PREPAYMENT_REFUNDED
ซึ่งจะแจ้งให้ Google ทราบว่ามีการคืนเงินมัดจําแล้ว
เช่น ระบบอาจส่งคำขอไปยัง
PATCH https://mapsbooking.googleapis.com/v1alpha/notification/partners/12345678/bookings/123123123?updateMask=status
เมื่อใช้เนื้อหาคำขอ
{ "name": "partners/12345678/bookings/123123123" "merchantId": "merchant-1" "serviceId": "service-2-b" "status": "CANCELED" "paymentInformation": { "prepaymentStatus": "PREPAYMENT_REFUNDED" } }
ต้องใช้บัตรเครดิต
บริการอาจต้องใช้บัตรเครดิตเพื่อยืนยันตัวตนของผู้ใช้เพิ่มเติม แต่ไม่ควรใช้สำหรับการชำระเงินล่วงหน้า เงินมัดจํา หรือค่าธรรมเนียมการยกเลิก หากจำเป็นต้องใช้ Use Case ดังกล่าว ก็ควรกำหนดค่า Use Case เหล่านั้นอย่างชัดเจนโดยใช้ขั้นตอนข้างต้น นอกจากนี้ โปรดทราบว่าการกำหนดให้ต้องใช้บัตรเครดิตมักจะทำให้การจองบริการนี้ลดลงอย่างมาก
หากต้องการกำหนดให้ต้องระบุบัตรเครดิตระหว่างการชำระเงิน คุณต้องตั้งค่าช่อง require_credit_card
เป็น REQUIRE_CREDIT_CARD_ALWAYS
{ "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" }
เซิร์ฟเวอร์การจอง
เมื่อประมวลผลคำขอที่มีข้อกำหนดเกี่ยวกับบัตรเครดิต ระบบจะส่งโทเค็นการชำระเงินไปยังเซิร์ฟเวอร์การจองในการเรียกใช้ CreateBooking
ผ่านช่อง payment_processing_parameters.unparsed_payment_method_token
ระบบจะส่งโทเค็นนี้ในลักษณะเดียวกับในการชำระเงินล่วงหน้า อย่างไรก็ตาม เนื่องจากโทเค็นได้รับสิทธิ์เพียงระยะเวลาสั้นๆ คุณจึงต้องเรียก API ที่เกี่ยวข้องของผู้ประมวลผลการชำระเงินเพื่ออัปเกรดโทเค็นนี้เป็นเวอร์ชันที่คุณเก็บไว้ใช้ได้ภายหลัง
ไม่จำเป็นต้องระบุข้อมูลเพิ่มเติมในการตอบกลับจากเซิร์ฟเวอร์การจองนอกเหนือจาก Use Case แบบชำระเงินเมื่อมาถึง
การลบล้างการกำหนดราคาที่ระดับความพร้อมจำหน่ายสินค้า
ในตัวอย่างทั้งหมดข้างต้น โครงสร้างราคา / ค่าบริการจะระบุไว้ที่ระดับบริการ ในกรณีส่วนใหญ่ คุณควรใช้ราคาระดับบริการนี้ อย่างไรก็ตาม ในบางกรณี การเปลี่ยนแปลงโครงสร้างการชำระเงินสำหรับช่วงเวลาที่พร้อมให้บริการบางช่วงเวลาก็อาจเหมาะสม ตัวอย่างเช่น สถานการณ์ต่อไปนี้สามารถจัดการด้วยการลบล้างราคา / ค่าธรรมเนียมที่ระดับความพร้อมจำหน่ายสินค้า
- ราคาจะลดลงในวันอังคารและเพิ่มขึ้นในวันศุกร์
- จะไม่มีค่าธรรมเนียมการแสดงสำหรับห้องว่างระหว่างเวลา 17:00 น. ถึง 19:00 น.
ตารางด้านล่างแสดงช่องที่จะใช้ในฟีดห้องว่างเพื่อลบล้างคำจำกัดความระดับบริการสำหรับวิธีการชำระเงิน / ค่าธรรมเนียมแต่ละวิธี
ประเภทการชําระเงิน | คำจำกัดความของค่าธรรมเนียม / ราคา | ลบล้างได้ไหม |
---|---|---|
ชำระเงินเมื่อมาถึง | Service.price
|
ราคาที่ลบล้างได้ผ่านAvailability.payment_option_id อ้างอิง
Merchant.payment_option
|
การชำระเงินล่วงหน้า | Service.price
|
ราคาสามารถลบล้างได้ผ่านAvailability.payment_option_id อ้างอิง
Merchant.payment_option
|
ไม่มีค่าธรรมเนียมการยกเลิก | Service.no_show_fee
|
Availability.no_show_fee
|
เงินฝาก | Service.deposit
|
Availability.deposit
|
ต้องใช้บัตรเครดิต | Service.require_credit_card
|
Availability.require_credit_card
|
โปรดทราบว่าหากต้องการลบล้างราคาที่ระดับความพร้อมจำหน่ายสินค้า คุณต้องกำหนดตัวเลือกการชำระเงินที่ระดับผู้ขายก่อน นอกจากนี้ โปรดดูคำแนะนำในการเพิ่มกรอบเวลาการยกเลิกที่ระดับห้องว่างในคู่มือวิธีเพิ่มกรอบเวลาการยกเลิก