הגדרת סוגי תשלום שונים

פלטפורמת מרכז הפעולות תומכת במגוון הגדרות לקבלת תשלומים. המדריך להפעלת תשלומים כולל את ההיבטים של השילוב שמשותפים לכל שילוב התשלומים, כולל:

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

עמלת אי-הגעה

אפשר לחייב את המשתמש בעמלות על אי-הגעה אם הוא לא השתתף בהזמנה או אם הוא מבטל אחרי חלון הביטול. אם לא מציינים חלון לביטול, ברירת המחדל היא שעת ההתחלה של יחידת הקיבולת (Slot).

כדי לציין עמלת אי-הצגה, בפיד השירות צריך לכלול את השדה 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

לתשומת ליבכם: כדי לשנות את המחיר ברמת הזמינות, קודם צריך להגדיר אפשרות תשלום ברמת המוכר. בנוסף, לקבלת הנחיות להוספת חלונות ביטול ברמת הזמינות, ניתן לעיין במדריך איך מוסיפים חלונות לביטול.