การกําหนดค่าการชําระเงิน

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

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

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

  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 ชั่วโมง (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 ที่เกี่ยวข้องของผู้ประมวลผลการชําระเงินเพื่ออัปเกรดโทเค็นนี้เป็นเวอร์ชันที่คุณสามารถเก็บไว้ใช้ภายหลังได้

ไม่จําเป็นต้องมีข้อมูลเพิ่มเติมในการตอบสนองของเซิร์ฟเวอร์การจองที่นอกเหนือจากกรณีการใช้งานแบบเติมเงิน

การลบล้างราคาที่ระดับความพร้อมจําหน่ายสินค้า

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

  • ราคาลดลงในวันอังคารและเพิ่มขึ้นในวันเสาร์
  • ไม่มีค่าใช้จ่ายสําหรับห้องว่างระหว่างช่วง 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

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