ตั้งค่าประเภทการชำระเงินที่แตกต่างกัน

แพลตฟอร์ม Actions Center รองรับการกำหนดค่าต่างๆ ในการรับชำระเงิน คู่มือการเปิดใช้การชำระเงินครอบคลุมแง่มุมต่างๆ ของการผสานรวมที่เกี่ยวข้องกับการผสานรวมการชำระเงินทั้งหมด ได้แก่

  1. การกำหนดค่าฟีดให้รวมข้อมูล tokenization_parameter
  2. กำลังอัปเดตเซิร์ฟเวอร์การจองให้ยอมรับออบเจ็กต์ payment_method_token รายการ
  3. ภาพรวมของข้อมูลที่แลกเปลี่ยนระหว่างผู้ใช้, Actions Center, พาร์ทเนอร์ / ผู้ขาย และผู้ประมวลผลการชำระเงิน

ในคู่มือนี้เราจะพูดถึงรายละเอียดเพิ่มเติมเกี่ยวกับวิธีกำหนดค่าฟีดเพื่อระบุการกำหนดค่าการชำระเงินประเภทต่างๆ ที่ใช้ได้กับผู้ขายและบริการของคุณ

  1. ไม่มีการชำระเงิน / ชำระเงินเมื่อมาถึง
  2. ชำระล่วงหน้าเต็มจำนวน
  3. ค่าธรรมเนียมการไม่แสดงตัว / ค่าธรรมเนียมการยกเลิก
  4. เงินฝาก

Use Case สำหรับการชำระเงินทั้งหมดเป็นการขยายการใช้งาน Use Case แบบไม่ต้องชำระเงิน/จ่ายเมื่อมาถึง (ซึ่งไม่ต้องมีการกำหนดค่าการชำระเงิน) ดังนั้นบทแนะนำนี้จะเริ่มต้นด้วยการอธิบายการกำหนดค่านั้นและถือว่าการกำหนดค่าอื่นๆ เป็นส่วนขยาย

แต่ละส่วนจะครอบคลุมช่องที่จะติดตามในเซิร์ฟเวอร์การจอง เพื่อยอมรับการกำหนดค่าการชำระเงินนั้นๆ ด้วย

ไม่มีการชำระเงิน / ชำระเงินเมื่อมาถึง

สำหรับบริการที่ไม่ต้องชำระเงินใดๆ ณ เวลาที่จอง จะไม่ต้องมีการกำหนดค่าการชำระเงินที่ระดับผู้ขายหรือบริการ อย่างไรก็ตาม ระบบยังจำเป็นต้องระบุราคาอยู่

นี่คือการกำหนดค่าพื้นฐานของบริการ ซึ่งจะมีชื่อ คำอธิบาย และราคา นี่จะเป็นข้อความบริการข้อความเดียวภายใน 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"
    }
}

ไม่จำเป็นต้องมีการกำหนดค่าเพิ่มเติมนอกเหนือจากการใช้งานมาตรฐานในเซิร์ฟเวอร์การจองเพื่อรองรับการชำระเงินเมื่อมาถึง

การชำระเงินล่วงหน้า

การกำหนดค่านี้ใช้เพื่อระบุว่าต้องจ่ายค่าบริการเต็มจำนวนเมื่อจอง

การชำระล่วงหน้าจะกำหนดในระดับบริการผ่านช่อง prepayment_type ของ Service หากต้องการกำหนดให้มีการชำระเงินค่าบริการ ควรตั้งค่านี้เป็น REQUIRED ตามตัวอย่างด้านล่าง โปรดทราบว่าราคาที่ระบุจะเหมือนกับตัวอย่างการชำระเงินเมื่อมาถึง เนื่องจากเราตั้งค่าประเภทการชำระล่วงหน้าเป็น "บังคับ" ระบบจะรวบรวมบัตรเครดิตและเรียกเก็บเงินราคานี้ได้เมื่อชำระเงิน

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"
}

เซิร์ฟเวอร์การจอง

เมื่อรับการชำระเงินล่วงหน้า ระบบจะส่งโทเค็นการชำระเงินไปยังเซิร์ฟเวอร์การจองในการเรียก CreateBooking ผ่านช่อง payment_processing_parameters.unparsed_payment_method_token คุณต้องเรียกเก็บเงินตามจำนวนที่ระบุผ่านช่องราคาในฟีดและต้องใช้สกุลเงินที่ระบุในฟีด การเรียกเก็บเงินเหล่านี้ควรเป็นไปตามขั้นตอนที่อธิบายไว้ในคู่มือการเปิดใช้การชำระเงิน

เมื่อแสดงผล CreateBookingResponse ต้องตั้งค่าช่อง booking.payment_information ให้แสดงอย่างถูกต้องว่ามีการชำระเงินล่วงหน้าและประมวลผลแล้ว

ข้อกำหนดของ PaymentInformation มีเอกสารประกอบฉบับเต็มสำหรับตัวเลือกข้อมูลการชำระเงินทั้งหมด ตัวอย่างเล็กน้อยสำหรับการประมวลผลการชำระล่วงหน้ามีดังนี้ ราคาที่แสดงผลในช่องราคาต้องตรงกันทุกประการกับที่ระบุไว้ในคำขอ นอกจากนี้ หากระบุอัตราภาษีในฟีด/คำขอ จะต้องระบุอัตราภาษีดังกล่าวให้ชัดเจนด้วย

โปรดทราบว่าคุณต้องระบุรหัสธุรกรรมด้วย รหัสธุรกรรมนี้ต้องไม่ซ้ำกันระหว่างธุรกรรมกับผู้ขายดังกล่าว ตัวเลือกที่ดีสำหรับรหัสธุรกรรมคือรหัสธุรกรรมที่ผู้ประมวลผลการชำระเงินระบุให้คุณ

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 ดังที่แสดงในตัวอย่างด้านล่าง

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"
    }
}

ในตัวอย่างข้างต้น พาร์ทเนอร์หรือผู้ขายได้รับอนุญาตให้เรียกเก็บค่าธรรมเนียมในอัตราคงที่ $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 ให้สะท้อนถึงสถานะของค่าธรรมเนียมการไม่แสดงตัวอย่างถูกต้องตามตัวอย่างด้านล่าง

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"
    }
}

โปรดทราบว่า 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

ด้วยเนื้อความของคำขอ:

JSON

{
    "name": "partners/12345678/bookings/123123123"
    "merchantId": "merchant-1"
    "serviceId": "service-2-b"
    "status": "NO_SHOW_PENALIZED"
}

เงินฝาก

ระบบจะใช้เงินฝากเพื่อเรียกเก็บค่าใช้จ่ายเริ่มต้นเป็นข้อกำหนดสำหรับการจอง โดยอาจมีการเรียกเก็บเงินมัดจำ ณ เวลาที่จองหรือชำระในภายหลัง คุณอาจต้องกําหนดข้อกําหนดที่ขอคืนเงินมัดจำได้ รวมถึงเวลาที่ยกเลิกการจองทางออนไลน์ได้

หากต้องการระบุเงินฝากในฟีดบริการ คุณควรใส่ช่อง deposit ดังที่แสดงในตัวอย่างด้านล่าง

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"
    }
}

ในตัวอย่างนี้ min_advance_online_canceling กำหนดกรอบเวลาการยกเลิก และ deposit.min_advance_cancellation_sec กำหนดช่วงเวลาที่จะขอคืนเงินมัดจำได้ โปรดทราบว่าในตัวอย่างข้างต้น เงินฝากจะระบุเวลายกเลิกแยกต่างหากจากเงื่อนไขการคืนเงิน ในกรณีนี้ ผู้ใช้จะยกเลิกบริการทางออนไลน์ได้ล่วงหน้าไม่เกิน 24 ชั่วโมง (86, 400 วินาที) ทั้งนี้เพื่อให้ผู้ขายทราบโดยตรงเกี่ยวกับการยกเลิกล่าช้า อย่างไรก็ตาม ผู้ใช้อาจยังมีสิทธิ์ได้รับเงินคืนสูงสุด 4 ชั่วโมงล่วงหน้า (14,400 วินาที) ก่อนการจอง (โดยการติดต่อคุณหรือผู้ขายเพื่อขอยกเลิก) ซึ่งจะแสดงในข้อกำหนดที่จุดชำระเงินและในอีเมลยืนยัน

ดูวิธีกำหนดเงินฝากในระดับความพร้อมใช้งานได้ที่ส่วนนี้

เซิร์ฟเวอร์การจอง

เมื่อประมวลผลคำขอที่มีเงินมัดจำอยู่ ระบบจะส่งโทเค็นการชำระเงินไปยังเซิร์ฟเวอร์การจองในการเรียก CreateBooking ผ่านช่อง payment_processing_parameters.unparsed_payment_method_token ระบบจะส่งโทเค็นนี้ในลักษณะเดียวกับในกรณีการชำระล่วงหน้า หากคุณ เรียกเก็บเงินมัดจำหรือถอนคำสั่งกันไว้ ณ เวลาที่จอง คุณจะดำเนินการดังกล่าวได้ ระหว่างคำขอนี้

หากคุณต้องการเรียกเก็บค่ามัดจำในภายหลัง เนื่องจากโทเค็นจะได้รับอนุญาตในช่วงเวลาสั้นๆ เท่านั้น คุณต้องเรียกใช้ API ที่เกี่ยวข้องของผู้ประมวลผลการชำระเงินเพื่ออัปเกรดโทเค็นนี้เป็นเวอร์ชันที่คุณเก็บไว้ใช้งานในภายหลังได้ ซึ่งอธิบายไว้ในส่วนคู่มือการเปิดใช้การชำระเงินเกี่ยวกับกระบวนการโทเค็นการฝากเงิน

เมื่อแสดงผล CreateBookingResponse ช่อง booking.payment_information ต้องสะท้อนสถานะของเงินฝากอย่างถูกต้องตามตัวอย่างด้านล่าง

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"
    }
}

โปรดทราบว่าเงินฝากจะถูกกำหนดให้แสดงถึงราคาและโครงสร้างของเงินฝากที่จะเรียกเก็บหรือระงับไว้ นอกจากนี้ โปรดทราบว่าจำเป็นต้องมี 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

ด้วยเนื้อความของคำขอ:

JSON

{
    "name": "partners/12345678/bookings/123123123"
    "merchantId": "merchant-1"
    "serviceId": "service-2-b"
    "status": "CANCELED"
    "paymentInformation": {
      "prepaymentStatus": "PREPAYMENT_REFUNDED"
    }
    
}

ต้องใช้บัตรเครดิต

บริการอาจต้องใช้บัตรเครดิตเป็นการยืนยันตัวตนเพิ่มเติมของผู้ใช้ อย่างไรก็ตาม ไม่ควรใช้ค่าธรรมเนียมนี้สำหรับการชำระเงินล่วงหน้า เงินฝาก หรือไม่แสดงค่าธรรมเนียมใดๆ หากจําเป็นต้องใช้กรณีการใช้งานดังกล่าว คุณควรกําหนดค่าไว้อย่างชัดเจนโดยใช้ขั้นตอนข้างต้น นอกจากนี้ โปรดทราบว่าการใช้บัตรเครดิตมักทำให้ยอดการจองสำหรับบริการนี้ลดลงอย่างมีนัยสำคัญ

หากต้องการกำหนดให้ระบุบัตรเครดิตระหว่างการชำระเงิน คุณต้องตั้งค่าช่อง require_credit_card เป็น 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"
}

เซิร์ฟเวอร์การจอง

เมื่อประมวลผลคำขอที่มีข้อกำหนดของบัตรเครดิต ระบบจะส่งโทเค็นการชำระเงินไปยังเซิร์ฟเวอร์การจองในการเรียก 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

โปรดทราบว่าหากต้องการลบล้างราคาที่ระดับความพร้อมจำหน่ายสินค้า คุณต้องกำหนดตัวเลือกการชำระเงินที่ระดับผู้ขายก่อน นอกจากนี้ โปรดดูคำแนะนำเกี่ยวกับการเพิ่มกรอบเวลาการยกเลิกในระดับความพร้อมให้บริการ โปรดอ่านคู่มือวิธีเพิ่มช่วงเวลาในการยกเลิก