הגדרת תשלומים

פלטפורמת Reserve with 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

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