פלטפורמת מרכז הפעולות תומכת במגוון הגדרות לקבלת תשלומים. המדריך להפעלת תשלומים כולל את ההיבטים של השילוב שמשותפים לכל שילוב התשלומים, כולל:
- הגדרת פידים כך שיכללו מידע על
tokenization_parameter
- מתבצע עדכון של שרת ההזמנות לקבלת
payment_method_token
אובייקטים - סקירה כללית של המידע שמועבר בין המשתמש, מרכז הפעולות, השותף / המוכר וספק שירותי התשלומים.
במדריך הזה נסביר בפירוט איך להגדיר את הפידים כדי לציין אילו מהסוגים השונים של הגדרות התשלומים רלוונטיים למוכרים ולשירותים שלך.
- לא משלמים / לא משלמים בהגעה
- תשלום מראש מלא
- אין דמי הופעה / עמלת ביטול
- הפקדה
כל התרחישים לדוגמה של תשלומים הם תוספות לתרחישים של 'אין תשלומים' / 'תשלום בזמן ההגעה' (שאין בהם צורך בהגדרת תשלום). המדריך הזה יתחיל בתיאור ההגדרות האלה ויתייחס אליהן כתוספים.
כל קטע כולל גם את השדות למעקב בשרת ההזמנות כדי לאשר את הגדרת התשלום הספציפית.
לא משלמים / לא משלמים בהגעה
עבור שירותים שלא נדרש תשלום עבורם בזמן ההזמנה, אין צורך להגדיר תשלומים ברמת המוכר או ברמת השירות. עם זאת, עדיין נדרשים מחירים.
זוהי ההגדרה הבסיסית של השירות, שכוללת שם, תיאור ומחיר. זו תהיה הודעת שירות אחת בתוך 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
|
לתשומת ליבכם: כדי לשנות את המחיר ברמת הזמינות, קודם צריך להגדיר אפשרות תשלום ברמת המוכר. בנוסף, לקבלת הנחיות להוספת חלונות ביטול ברמת הזמינות, ניתן לעיין במדריך איך מוסיפים חלונות לביטול.