יצירת הזמנות

במדריך הזה תלמדו איך מפתחים פרויקט Actions שמשתמש ב-Orders API כדי לבצע הזמנות.

תהליך העסקה

כשפרויקט Actions עובד על הזמנות, מתבצע התהליך הבא:

  1. אימות הדרישות לגבי טרנזקציות (אופציונלי) – כדאי להשתמש בכלי העזר לדרישות הטרנזקציות בתחילת השיחה כדי לוודא שהמשתמש יכול לבצע עסקה.
  2. יצירת ההזמנה – מדריכים את המשתמש ב"רכבת עגלה", שבה הוא בונה את פרטי ההזמנה.
  3. מציעים את ההזמנה – בסיום ה"עגלת קניות", מציעים למשתמש את ההזמנה "הזמנה" כדי שהוא יוכל לוודא שהיא נכונה. אם ההזמנה תאושר, תקבלו תשובה עם פרטי ההזמנה.
  4. השלמת ההזמנה ושליחת קבלה – לאחר אישור ההזמנה, מעדכנים את מערכת ההזמנות ושולחים למשתמש קבלה.
  5. שליחת עדכונים לגבי הזמנות – במהלך משך החיים של ההזמנה, שולחים בקשות PATCH ל-Orders API כדי לעדכן את סטטוס ההזמנה למשתמש.

הגבלות והנחיות לבדיקה

חשוב לזכור שכללי מדיניות נוספים חלים על פעולות שמשתמשות ב-Transactions וב-Orders API. יכול להיות שיחלפו עד שישה שבועות כדי לבדוק פעולות עם עסקאות, ולכן חשוב לקחת את הזמן בחשבון כשמתכננים את לוח הזמנים להפצה. כדי להקל על תהליך הבדיקה, חשוב להקפיד לפעול בהתאם למדיניות ולהנחיות בנושא עסקאות לפני ששולחים את הפעולה לבדיקה.

אפשר לפרוס את הפעולות שמשתמשות ב-Orders API רק במדינות הבאות:

אוסטרליה
ברזיל
קנדה
אינדונזיה
יפן
מקסיקו
קטאר
רוסיה
סינגפור
שווייץ
תאילנד
טורקיה
בריטניה
ארצות הברית

בניית הפרויקט

לצפייה בדוגמה מקיפה של שיחות הקשורות לטרנזקציות, עיינו בדגימת עסקאות ב-Node.js.

Setup (הגדרה)

כשיוצרים את Action, צריך לציין שרוצים לבצע טרנזקציות ב-Actions Console.

כדי להגדיר את הפרויקט ומילוי ההזמנות:

  1. אפשר ליצור פרויקט חדש או לייבא פרויקט קיים.
  2. מנווטים אל פריסה > פרטי הספרייה.
  3. בקטע מידע נוסף > עסקאות > מסמנים את התיבה שליד המשפט 'האם הפעולות משתמשות ב-Transactions API לביצוע עסקאות של מוצרים פיזיים?'.

אימות הדרישות לגבי עסקאות (אופציונלי)

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

יצירת סצנה לבדיקת הדרישות לגבי העסקה

  1. בכרטיסייה סצנות, מוסיפים סצנה חדשה בשם TransactionRequirementsCheck.
  2. בקטע מילוי משבצת, לוחצים על + כדי להוסיף יחידת קיבולת (Slot) חדשה.
  3. בקטע Select type בוחרים באפשרות actions.type.TransactionRequirementsCheckResult בתור הסוג של יחידת הקיבולת.
  4. בשדה השם של יחידת הקיבולת (Slot), מזינים את השם TransactionRequirementsCheck.
  5. מפעילים את תיבת הסימון התאמה אישית של ערך המשבצת (מופעלת כברירת מחדל).
  6. לוחצים על שמירה.

בדיקת הדרישות לגבי העסקה מובילה לאחת מהתוצאות הבאות:

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

טיפול בתוצאה של בדיקת הדרישות לגבי העסקה

  1. בכרטיסייה סצנות בוחרים את הסצנה החדשה שיצרתם ב-TransactionRequirementsCheck.
  2. בקטע תנאי, לוחצים על + כדי להוסיף תנאי חדש.
  3. בשדה הטקסט, מזינים את תחביר התנאי הבא כדי לבדוק את תנאי ההצלחה:

    scene.slots.status == "FINAL" && session.params.TransactionRequirementsCheck.resultType == "CAN_TRANSACT"
    
  4. מעבירים את העכבר מעל התנאי שהוספת ולוחצים על החץ למעלה כדי להציב אותו לפני if scene.slots.status == "FINAL".

  5. מפעילים את האפשרות שליחת הנחיות ומספקים למשתמשים הודעה פשוטה כשהם מוכנים לבצע עסקה:

    candidates:
      - first_simple:
          variants:
            - speech: >-
                Looks like you're good to go!.
    
  6. בקטע מעבר בוחרים סצנה אחרת, שמאפשרת למשתמש להמשיך את השיחה ולהמשיך בביצוע העסקה.

  7. בוחרים את התנאי else if scene.slots.status == "FINAL".

  8. מפעילים את האפשרות שליחת הנחיות ומספקים למשתמשים הודעה פשוטה שאין להם אפשרות לבצע עסקה:

    candidates:
      - first_simple:
          variants:
            - speech: Transaction requirements check failed.
    
  9. בקטע מעבר, בוחרים באפשרות סיום השיחה כדי לסיים את השיחה אם המשתמש לא יכול לבצע עסקאות.

יצירת ההזמנה

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

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

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

יצירת הזמנה

במהלך השיחה, אוספים את פרטי ההזמנה של המשתמש ויוצרים אובייקט Order.

לכל הפחות, ה-Order שלך צריך להכיל את הפרטים הבאים:

  • buyerInfo - מידע על המשתמש שמבצע את הרכישה.
  • transactionMerchant - מידע על המוכר שאפשר את ההזמנה.
  • contents - התוכן בפועל של ההזמנה שרשום כ-lineItems.

כדי לבנות את עגלת הקניות, קראו את מסמכי התגובה של Order. שימו לב שיכול להיות שתצטרכו לכלול שדות שונים בהתאם להזמנה.

הקוד לדוגמה הבא מציג הזמנת הזמנה מלאה, כולל שדות אופציונליים:

const order = {
   createTime: '2019-09-24T18:00:00.877Z',
   lastUpdateTime: '2019-09-24T18:00:00.877Z',
   merchantOrderId: orderId, // A unique ID String for the order
   userVisibleOrderId: orderId,
   transactionMerchant: {
     id: 'http://www.example.com',
     name: 'Example Merchant',
   },
   contents: {
     lineItems: [
       {
         id: 'LINE_ITEM_ID',
         name: 'Dinner reservation',
         description: 'A world of flavors all in one destination.',
         reservation: {
           status: 'PENDING',
           userVisibleStatusLabel: 'Reservation is pending.',
           type: 'RESTAURANT',
           reservationTime: {
             timeIso8601: '2020-01-16T01:30:15.01Z',
           },
           userAcceptableTimeRange: {
             timeIso8601: '2020-01-15/2020-01-17',
           },
           partySize: 6,
           staffFacilitators: [
             {
               name: 'John Smith',
             },
           ],
           location: {
             zipCode: '94086',
             city: 'Sunnyvale',
             postalAddress: {
               regionCode: 'US',
               postalCode: '94086',
               administrativeArea: 'CA',
               locality: 'Sunnyvale',
               addressLines: [
                 '222, Some other Street',
               ],
             },
           },
         },
       },
     ],
   },
   buyerInfo: {
     email: 'janedoe@gmail.com',
     firstName: 'Jane',
     lastName: 'Doe',
     displayName: 'Jane Doe',
   },
   followUpActions: [
     {
       type: 'VIEW_DETAILS',
       title: 'View details',
       openUrlAction: {
         url: 'http://example.com',
       },
     },
     {
       type: 'CALL',
       title: 'Call us',
       openUrlAction: {
         url: 'tel:+16501112222',
       },
     },
     {
       type: 'EMAIL',
       title: 'Email us',
       openUrlAction: {
         url: 'mailto:person@example.com',
       },
     },
   ],
   termsOfServiceUrl: 'http://www.example.com'
 };

יצירת אפשרויות של סדר ומצגת

const orderOptions = {
      'requestDeliveryAddress': false,
    };

const presentationOptions = {
      'actionDisplayName': 'RESERVE'
    };

שמירה של נתוני ההזמנות בפרמטר של סשן

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

conv.session.params.order = {
    '@type': 'type.googleapis.com/google.actions.transactions.v3.TransactionDecisionValueSpec',
    order: order,
    orderOptions: orderOptions,
    presentationOptions: presentationOptions
};

הצעת ההזמנה

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

יצירת סצנה לקבלת החלטה על עסקה

  1. בכרטיסייה סצנות, מוסיפים סצנה חדשה בשם TransactionDecision.
  2. בקטע מילוי משבצת, לוחצים על + כדי להוסיף יחידת קיבולת (Slot) חדשה.
  3. בקטע Select type בוחרים את הסוג actions.type.TransactionDecisionValue.
  4. בשדה השם של יחידת הקיבולת (Slot), מזינים את השם TransactionDecision.
  5. מפעילים את תיבת הסימון התאמה אישית של ערך המשבצת (מופעלת כברירת מחדל).
  6. בקטע הגדרת מיקום מודעה, בוחרים באפשרות שימוש בפרמטר סשן מהתפריט הנפתח.
  7. בקטע Configure Spot (הגדרת משבצת), מזינים בשדה הטקסט את השם של פרמטר הסשן שמשמש לשמירת ההזמנה (כלומר $session.params.order).
  8. לוחצים על שמירה.

בניסיון למלא משבצת של TransactionDecisionValue, Assistant מתחילה חוויה מובנית שבה Order שעברת מעובד ישירות ל "כרטיס תצוגה מקדימה של עגלת קניות". המשתמש יכול לומר "schedule order", לדחות את העסקה או לבקש לשנות את פרטי ההזמנה.

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

טיפול בתוצאה שהתקבלה לגבי העסקה

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

  • ORDER_ACCEPTED,
  • ORDER_REJECTED,
  • CART_CHANGE_REQUESTED
  • USER_CANNOT_TRANSACT.

כדי לטפל בתוצאה של החלטה לגבי עסקה:

  1. בכרטיסייה סצנות, בוחרים את הסצנה החדשה שיצרתם בTransactionDecision.
  2. בקטע תנאי, לוחצים על + כדי להוסיף תנאי חדש.
  3. בשדה הטקסט, מזינים את תחביר התנאי הבא כדי לבדוק את תנאי ההצלחה:

    scene.slots.status == "FINAL" && session.params.TransactionDecision.transactionDecision == "ORDER_ACCEPTED"
    
  4. מציבים את הסמן מעל התנאי שהוספתם ולוחצים על החץ למעלה כדי להציב אותו לפני if scene.slots.status == "FINAL".

  5. מפעילים את האפשרות שליחת הודעות ומציעים למשתמש הודעה פשוטה שההזמנה הושלמה:

    candidates:
      - first_simple:
          variants:
            - speech: >-
                Transaction completed! Your reservation
                $session.params.TransactionDecision.order.merchantOrderId is all
                set!
    
  6. בקטע מעבר, בוחרים באפשרות סיום השיחה כדי לסיים את השיחה.

  7. בקטע תנאי, לוחצים על + כדי להוסיף תנאי חדש.

  8. בשדה הטקסט, מזינים את תחביר התנאי הבא כדי לבדוק את תנאי הכשל:

      scene.slots.status == "FINAL" && session.params.TransactionDecision.transactionDecision == "ORDER_REJECTED"
    
  9. מציבים את הסמן מעל התנאי שהוספתם ולוחצים על החץ למעלה כדי להציב אותו לפני if scene.slots.status == "FINAL".

  10. מפעילים את האפשרות Send actions (שליחת הנחיות) ושולחים הודעה פשוטה המיידעת את המשתמש שההזמנה נדחתה:

    candidates:
      - first_simple:
          variants:
            - speech: Looks like you don't want to set up a reservation. Goodbye.
    
  11. בקטע מעבר, בוחרים באפשרות סיום השיחה כדי לסיים את השיחה.

  12. בוחרים את התנאי else if scene.slots.status == "FINAL".

  13. מפעילים את האפשרות שליחת הנחיות ושולחים למשתמשים הודעה פשוטה שאין להם אפשרות לבצע עסקה:

    candidates:
      - first_simple:
          variants:
            - speech: >-
                Transaction failed with status
                $session.params.TransactionDecision.transactionDecision
    
  14. בקטע מעבר, בוחרים באפשרות סיום השיחה כדי לסיים את השיחה, אם המשתמש לא מצליח לבצע עסקאות.

השלמת ההזמנה ושליחת קבלה

כשהמשבצת TransactionDecisionValue תחזיר תוצאה של ORDER_ACCEPTED, תצטרכו לבצע מיד את כל העיבוד שנדרש כדי לתזמן את ההזמנה (למשל, לשמור אותה במסד הנתונים שלכם).

כדאי לשלוח תשובה פשוטה כדי להמשיך את השיחה. המשתמש יקבל יחד עם התשובה שלכם "כרטיס קבלה מכווץ".

כדי לשלוח עדכון ראשוני של הזמנה:

  1. בכרטיסייה סצנות, בוחרים את הסצנה TransactionDecision.
  2. בקטע Condition, בוחרים את התנאי שבודק את תוצאת ההצלחה, ORDER_ACCEPTED:

    scene.slots.status == "FINAL" && session.params.TransactionDecision.transactionDecision == "ORDER_ACCEPTED"
    
  3. בתנאי הזה, מפעילים את התכונה Call your webhook ונותנים שם של handler של Intent, כמו update_order.

  4. בקוד של תגובה לפעולה מאתר אחר (webhook), מוסיפים handler של Intent לשליחת עדכון הזמנה ראשוני:

    app.handle('update_order', conv => {
      const currentTime = new Date().toISOString();
      let order = conv.session.params.TransactionDecision.order;
      conv.add(new OrderUpdate({
        'updateMask': {
          'paths': [
            'reservation.status',
            'reservation.user_visible_status_label',
            'reservation.confirmation_code'
          ]
        },
        'order': {
          'merchantOrderId': order.merchantOrderId,
          'lastUpdateTime': currentTime,
          'reservation': {
            'status': 'CONFIRMED',
            'userVisibleStatusLabel': 'Reservation confirmed',
            'confirmationCode': '123ABCDEFGXYZ',
          },
        },
        'reason': 'Reason string'
      }));
    });
    

שליחת עדכונים לגבי הזמנות

סטטוס ההזמנה משתנה במהלך חיי המוצר. שליחת עדכונים של הזמנות משתמשים עם בקשות HTTP PATCH ל-Orders API, שכוללים את סטטוס ההזמנה והפרטים שלה.

הגדרת בקשות אסינכרוניות ל-Orders API

בקשות לעדכון הזמנות ל-Orders API מורשות באמצעות אסימון גישה. כדי לבצע תיקון של עדכון הזמנה ל-Orders API, צריך להוריד מפתח של חשבון שירות JSON שמשויך לפרויקט Actions Console, ואז להחליף את המפתח של חשבון השירות באסימון למוכ"ז שאפשר להעביר אל הכותרת Authorization של בקשת ה-HTTP.

כדי לאחזר את המפתח של חשבון השירות, יש לבצע את השלבים הבאים:

  1. במסוף Google Cloud, נכנסים לתפריט q החלט > ממשקי API ושירותים > פרטי כניסה > יצירת פרטי כניסה > מפתח חשבון שירות.
  2. בקטע חשבון שירות, בוחרים באפשרות חשבון שירות חדש.
  3. מגדירים את חשבון השירות לערך service-account.
  4. מגדירים את התפקיד בתור פרויקט > בעלים.
  5. מגדירים את סוג המפתח כ-JSON.
  6. בוחרים באפשרות יצירה.
  7. תתבצע הורדה של מפתח חשבון שירות פרטי מסוג JSON למחשב המקומי.

בקוד של עדכון ההזמנה, מחליפים את מפתח השירות באסימון למוכ"ז באמצעות ספריית הלקוח של Google APIs וההיקף "https://www.googleapis.com/auth/actions.order.developer". תוכלו למצוא דוגמאות ושלבי התקנה בדף של GitHub בספריית הלקוח של ה-API.

עיינו ב-order-update.js בדוגמת Node.js שלנו לצורך החלפת מפתחות לדוגמה.

שליחת עדכונים לגבי הזמנות

אחרי שמעבירים את המפתח של חשבון השירות באסימון למוכ"ז OAuth, שולחים ל-Orders API עדכונים של הזמנות כבקשות מורשות ל-PATCH.

כתובת ה-URL של Orders API: PATCH https://actions.googleapis.com/v3/orders/${orderId}

כלול בבקשה שלך את הכותרות הבאות:

  • "Authorization: Bearer token" באסימון למוכ"ז OAuth שעבורו המרתם את המפתח של חשבון השירות.
  • "Content-Type: application/json".

בקשת ה-PATCH צריכה לכלול גוף JSON בפורמט הבא:

{ "orderUpdate": OrderUpdate }

האובייקט OrderUpdate מורכב מהשדות הבאים ברמה העליונה:

  • updateMask - השדות בהזמנה שמעדכנים. כדי לעדכן את סטטוס ההזמנה, צריך להגדיר את הערך reservation.status, reservation.userVisibleStatusLabel.
  • order - תוכן העדכון. אם אתם מעדכנים את התוכן של ההזמנה, צריך להגדיר את הערך לאובייקט Order המעודכן. אם אתם רק מעדכנים את הסטטוס של ההזמנה (לדוגמה, מ-"PENDING" ל-"FULFILLED"), האובייקט מכיל את השדות הבאים:

    • merchantOrderId – אותו מזהה שהגדרתם באובייקט Order.
    • lastUpdateTime - חותמת הזמן של העדכון הזה.
    • purchase – אובייקט שמכיל את הרכיבים הבאים:
      • status - סטטוס ההזמנה כ-ReservationStatus, כגון "CONFIRMED" או "CANCELLED".
      • userVisibleStatusLabel – תווית שגלויה למשתמש עם פרטים על סטטוס ההזמנה, כמו 'ההזמנה אושרה'.
  • userNotification שניתן להציג במכשיר של המשתמש כשהעדכון הזה נשלח. שימו לב שהוספה של האובייקט הזה לא מבטיחה שתופיע התראה במכשיר של המשתמש.

הקוד לדוגמה הבא מציג דוגמה OrderUpdate שמעדכנת את הסטטוס של הזמנת ההזמנה ל-FULFILLED:

// Import the 'googleapis' module for authorizing the request.
const {google} = require('googleapis');
// Import the 'request-promise' module for sending an HTTP POST request.
const request = require('request-promise');
// Import the OrderUpdate class from the client library.
const {OrderUpdate} = require('@assistant/conversation');

// Import the service account key used to authorize the request.
// Replacing the string path with a path to your service account key.
// i.e. const serviceAccountKey = require('./service-account.json')

// Create a new JWT client for the Actions API using credentials
// from the service account key.
let jwtClient = new google.auth.JWT(
   serviceAccountKey.client_email,
   null,
   serviceAccountKey.private_key,
   ['https://www.googleapis.com/auth/actions.order.developer'],
   null,
);

// Authorize the client
let tokens = await jwtClient.authorize();

// Declare the ID of the order to update.
const orderId = '<UNIQUE_MERCHANT_ORDER_ID>';

// Declare order update
const orderUpdate = new OrderUpdate({
   updateMask: {
     paths: [
       'contents.lineItems.reservation.status',
       'contents.lineItems.reservation.userVisibleStatusLabel'
     ]
   },
   order: {
     merchantOrderId: orderId, // Specify the ID of the order to update
     lastUpdateTime: new Date().toISOString(),
     contents: {
       lineItems: [
         {
           reservation: {
             status: 'FULFILLED',
             userVisibleStatusLabel: 'Reservation fulfilled',
           },
         }
       ]
     },
   },
   reason: 'Reservation status was updated to fulfilled.',
});

// Set up the PATCH request header and body,
// including the authorized token and order update.
let options = {
 method: 'PATCH',
 uri: `https://actions.googleapis.com/v3/orders/${orderId}`,
 auth: {
   bearer: tokens.access_token,
 },
 body: {
   header: {
     isInSandbox: true,
   },
   orderUpdate,
 },
 json: true,
};

// Send the PATCH request to the Orders API.
try {
 await request(options);
} catch (e) {
 console.log(`Error: ${e}`);
}

הגדרת סטטוס ההזמנה

השדה ReservationStatus של עדכון ההזמנה חייב לתאר את המצב הנוכחי של ההזמנה. בשדה order.ReservationStatus של העדכון, משתמשים באחד מהערכים הבאים:

  • PENDING – ההזמנה 'נוצרה' על ידי הפעולה, אבל נדרש עיבוד נוסף בצד העורפי.
  • CONFIRMED - ההזמנה אושרה בקצה העורפי של התזמון.
  • CANCELLED - המשתמש ביטל את ההזמנה.
  • FULFILLED - השירות מילא את ההזמנה של המשתמש.
  • CHANGE_REQUESTED – המשתמש ביקש לבצע שינוי בהזמנה, והשינוי נמצא בעיבוד.
  • REJECTED - אם לא הצלחתם לעבד את ההזמנה או לאשר אותה בדרך אחרת.

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

בדיקת הפרויקט

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

  1. במסוף הפעולות, לוחצים על בדיקה בתפריט הניווט.
  2. לוחצים על הגדרות.
  3. מפעילים את האפשרות devment Sandbox (ארגז חול לפיתוח).

בעסקאות פיזיות, אפשר גם להגדיר את השדה isInSandbox כ-true בדוגמה. פעולה זו מקבילה להפעלת ההגדרה של מצב ארגז חול במסוף הפעולות. כדי לראות קטע קוד שמשתמש ב-isInSandbox, תוכלו לעיין בקטע Send order updates.

פתרון בעיות

נתקלתם בבעיות במהלך הבדיקה? תוכלו לקרוא את השלבים לפתרון בעיות בעסקאות.