ตั้งค่าประเภทการชําระเงินอื่น

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

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

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

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

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

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

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

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

นี่คือการกำหนดค่าพื้นฐานสำหรับบริการ ซึ่งมีชื่อ คำอธิบาย และราคา ข้อความนี้เป็นข้อความบริการเดียวภายใน 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 ชั่วโมง (86400 วินาที) วิธีนี้ช่วยให้มั่นใจได้ว่าผู้ขายจะได้รับแจ้งเกี่ยวกับการยกเลิกล่าช้าโดยตรง อย่างไรก็ตาม ผู้ใช้อาจยังคงมีสิทธิ์รับเงินคืนสำหรับเงินมัดจําได้จนถึง 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"
    }
    
}

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

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

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

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