জমা অর্ডার সেট আপ করুন

চেকআউট কলের পরে, ব্যবহারকারী ট্যাক্স, ডেলিভারি ফি, ডিসকাউন্ট এবং আপনি ফেরত দেওয়া অন্যান্য চার্জ সহ আপডেট করা কার্ট পর্যালোচনা করে। ব্যবহারকারী অর্ডারটি নিশ্চিত করে এবং জমা দেয় এবং Google আপনার পূরণের শেষ পয়েন্ট একটি JSON অনুরোধ পাঠায় যাতে অর্ডারের তথ্য রয়েছে। আপনার ওয়েব পরিষেবাকে অবশ্যই এই অর্ডারটি গ্রহণ করতে হবে, এটি প্রক্রিয়া করতে হবে এবং অর্ডারের অবস্থার সাথে Google এর কাছে প্রতিক্রিয়া জানাতে হবে৷

এই বিভাগটি Google দ্বারা পাঠানো অর্ডার অনুরোধের বার্তা বিন্যাসকে বর্ণনা করে, যাকে বলা হয় SubmitOrderRequestMessage , এবং আপনাকে যে প্রতিক্রিয়া বার্তাটি প্রদান করতে হবে, তাকে SubmitOrderResponseMessage বলা হয়। অর্ডার পূরণের জীবনচক্র সম্পর্কে আরও তথ্যের জন্য, পূর্ণতা ওভারভিউ দেখুন।

আদেশ পূর্ণতা বাস্তবায়ন

অর্ডারিং এন্ড-টু-এন্ডের সাথে কাজ করার জন্য আপনি যে অর্ডারিং এন্ড-টু-এন্ড ওয়েব পরিষেবা তৈরি করেন তাতে অবশ্যই Google থেকে অর্ডার বার্তা পাওয়ার জন্য একটি URL এন্ডপয়েন্ট অন্তর্ভুক্ত থাকতে হবে। অর্ডার প্রক্রিয়াকরণের জন্য, আপনার ওয়েব পরিষেবা Google থেকে পোস্ট অনুরোধ হিসাবে JSON ফর্ম্যাটে একটি SubmitOrderRequestMessage পায়। এই অনুরোধে ট্যাক্স, ফি এবং অর্থপ্রদানের তথ্য সহ একটি গ্রাহকের অর্ডার রয়েছে। সাবমিট অর্ডার রিকোয়েস্ট পাওয়ার পর, আপনার ওয়েব সার্ভিসকে অবশ্যই নিম্নলিখিতগুলি করতে হবে:

  • লেনদেনের যোগ্যতা পরীক্ষা করুন, যেমন কার্ড যাচাই বা জালিয়াতি সনাক্তকরণ।
  • আপনার সিস্টেমে একটি অর্ডার তৈরি করুন।
  • পেমেন্ট পদ্ধতি অনুমোদন করুন এবং প্রযোজ্য হলে আপনার পেমেন্ট প্রসেসরের চার্জ API কল করুন।
  • অর্ডারের উপযুক্ত অবস্থার সাথে সাড়া দিন: CREATED , CONFIRMED বা REJECTED

অর্ডার প্রসেস করার পরে, আপনার পূর্ণতা কোডটি অবশ্যই একটি SubmitOrderResponseMessage JSON বার্তার আকারে Google-এ একটি প্রতিক্রিয়া প্রদান করবে।

অর্ডারিং এন্ড-টু-এন্ড পরিপূর্ণতা ওয়েব পরিষেবা বাস্তবায়নের প্রয়োজনীয়তা সম্পর্কে আরও তথ্যের জন্য, পূরণ ওভারভিউ দেখুন।

অর্ডার অনুরোধ বার্তা

যখন একজন গ্রাহক অর্ডার করার এন্ড-টু-এন্ড ফ্লো চলাকালীন একটি অর্ডার দিতে বেছে নেন, তখন Google আপনার ওয়েব পরিষেবাতে একটি অনুরোধ পাঠায় JSON মেসেজ সহ একটি SubmitOrderRequestMessage যা নিম্নলিখিত ডেটা ধারণ করে:

  1. অভিপ্রায়: প্রতিটি জমা অর্ডার অনুরোধের বডির inputs[0].intent ফিল্ডে actions.intent.TRANSACTION_DECISION স্ট্রিং মান থাকে।
  2. অর্ডার: inputs[0].arguments[0].transactionDecisionValue ফিল্ডে একটি সাবমিট অর্ডার রিকোয়েস্টের একটি Order অবজেক্ট থাকে যা পেমেন্টের বিশদ সহ গ্রাহকের অর্ডার দেওয়ার প্রতিনিধিত্ব করে।
  3. স্যান্ডবক্স পতাকা: একটি জমা অর্ডার অনুরোধের isInSandbox ক্ষেত্র নির্দেশ করে যে লেনদেন স্যান্ডবক্স অর্থপ্রদান ব্যবহার করে কিনা।

অর্ডার অনুরোধের উদাহরণ

নিম্নলিখিত একটি উদাহরণ SubmitOrderRequestMessage :

JSON

{
    "user": {},
    "conversation": {
        "conversationId": "CTKbKfUlHCyDEdcz_5PBJTtf"
    },
    "inputs": [
        {
            "intent": "actions.intent.TRANSACTION_DECISION",
            "arguments": [
                {
                    "transactionDecisionValue": {
                        "order": {
                            "finalOrder": {
                                "cart": {
                                    "merchant": {
                                        "id": "restaurant/Restaurant/QWERTY",
                                        "name": "Tep Tep Chicken Club"
                                    },
                                    "lineItems": [
                                        {
                                            "name": "Spicy Fried Chicken",
                                            "type": "REGULAR",
                                            "id": "299977679",
                                            "quantity": 2,
                                            "price": {
                                                "type": "ESTIMATE",
                                                "amount": {
                                                    "currencyCode": "AUD",
                                                    "units": "39",
                                                    "nanos": 600000000
                                                }
                                            },
                                            "offerId": "MenuItemOffer/QWERTY/scheduleId/496/itemId/143",
                                            "extension": {
                                                "@type": "type.googleapis.com/google.actions.v2.orders.FoodItemExtension"
                                            }
                                        }
                                    ],
                                    "extension": {
                                        "@type": "type.googleapis.com/google.actions.v2.orders.FoodCartExtension",
                                        "fulfillmentPreference": {
                                            "fulfillmentInfo": {
                                                "delivery": {
                                                    "deliveryTimeIso8601": "P0M"
                                                }
                                            }
                                        },
                                        "location": {
                                            "coordinates": {
                                                "latitude": -33.8376441,
                                                "longitude": 151.0868736
                                            },
                                            "formattedAddress": "Killoola St, 1, Concord West NSW 2138",
                                            "zipCode": "2138",
                                            "city": "Concord West",
                                            "postalAddress": {
                                                "regionCode": "AU",
                                                "postalCode": "2138",
                                                "administrativeArea": "NSW",
                                                "locality": "Concord West",
                                                "addressLines": [
                                                    "Killoola St",
                                                    "1"
                                                ]
                                            }
                                        },
                                        "contact": {
                                            "displayName": "Hab Sy",
                                            "email": "hab9878.sy@gmail.com",
                                            "phoneNumber": "+61000000000",
                                            "firstName": "Hab",
                                            "lastName": "Sy"
                                        }
                                    }
                                },
                                "otherItems": [
                                    {
                                        "name": "Delivery fee",
                                        "type": "DELIVERY",
                                        "price": {
                                            "type": "ESTIMATE",
                                            "amount": {
                                                "currencyCode": "AUD",
                                                "units": "3",
                                                "nanos": 500000000
                                            }
                                        }
                                    },
                                    {
                                        "name": "Subtotal",
                                        "type": "SUBTOTAL",
                                        "price": {
                                            "type": "ESTIMATE",
                                            "amount": {
                                                "currencyCode": "AUD",
                                                "units": "39",
                                                "nanos": 600000000
                                            }
                                        }
                                    }
                                ],
                                "totalPrice": {
                                    "type": "ESTIMATE",
                                    "amount": {
                                        "currencyCode": "AUD",
                                        "units": "43",
                                        "nanos": 100000000
                                    }
                                },
                                "extension": {
                                    "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderExtension"
                                }
                            },
                            "googleOrderId": "01412971004192156198",
                            "orderDate": "2020-10-22T09:02:06.173Z",
                            "paymentInfo": {
                                "displayName": "Pay when you get your food",
                                "paymentType": "ON_FULFILLMENT"
                            }
                        }
                    }
                }
            ]
        }
    ],
    "directActionOnly": true,
    "isInSandbox": true
}
    

অর্ডার প্রতিক্রিয়া বার্তা

একটি অনুরোধ পাওয়ার পরে, আপনার অর্ডারিং এন্ড-টু-এন্ড ওয়েব পরিষেবা অনুরোধটি প্রক্রিয়া করে এবং একটি SubmitOrderResponseMessage ফেরত পাঠায় যাতে নিম্নলিখিত ডেটা অন্তর্ভুক্ত থাকে:

  • OrderUpdate : অর্ডারের অবস্থা সম্বলিত একটি বস্তু, এবং ব্যবহারকারীর কাছে উপলব্ধ যেকোনো পোস্ট-অর্ডার অ্যাকশন, যেমন সহায়তার সাথে যোগাযোগ করা এবং অর্ডারের বিবরণ দেখা, যা আপনি finalResponse.richResponse.items[0].structuredResponse.orderUpdate ফিল্ডে সংজ্ঞায়িত করেছেন প্রতিক্রিয়া.

অর্ডার আপডেট ক্ষেত্র

যখন আপনার ওয়েব পরিষেবা একটি SubmitOrderResponseMessage পাঠায়, এতে একটি OrderUpdate ক্ষেত্র থাকে যাতে নিম্নলিখিত ক্ষেত্রগুলি অন্তর্ভুক্ত থাকে:

  • actionOrderId : অর্ডারের অনন্য আইডি, যা আপনার সিস্টেমে অর্ডারটিকে অনন্যভাবে সনাক্ত করতে এবং পরবর্তী অর্ডার আপডেট পাঠানোর সময় এটি উল্লেখ করতে ব্যবহৃত হয়।
  • orderState : অর্ডারের অবস্থার প্রতিনিধিত্বকারী একটি OrderState বস্তু।
  • orderManagementActions : ব্যবহারকারীর জন্য উপলব্ধ পোস্ট-অর্ডার অ্যাকশন, যেমন গ্রাহক সহায়তার সাথে যোগাযোগ করা এবং অর্ডারের বিবরণ দেখা।
  • totalPrice : অর্ডারের মোট মূল্য। এটি ঐচ্ছিক। অর্ডার জমা দেওয়ার পর অর্ডারের মোট মূল্য পরিবর্তন হলেই পাঠান।

একটি আদেশ নিম্নলিখিত রাজ্যগুলির মধ্যে একটি হতে পারে:

  • CREATED : আপনার পূর্ণতা শেষ পয়েন্ট অর্ডারটি সফলভাবে প্রক্রিয়া করেছে, কিন্তু প্রদানকারী এখনও অর্ডারটি নিশ্চিত করেনি।
  • CONFIRMED : আপনার পূর্ণতা শেষ পয়েন্ট সফলভাবে অর্ডার প্রক্রিয়া করেছে, এবং প্রদানকারী অর্ডার নিশ্চিত করেছে.
  • REJECTED : একটি সমস্যা ছিল এবং আপনার পূর্ণতা শেষ পয়েন্ট অর্ডারটি তৈরি বা নিশ্চিত করতে পারেনি, যার মধ্যে অর্থপ্রদানের সমস্যা থাকতে পারে।

আপনি যদি একটি REJECTED অবস্থায় একটি অর্ডার সেট করেন, তাহলে OrderUpdate এর rejectionInfo ক্ষেত্রে কারণটি উল্লেখ করুন। FoodOrderUpdateExtension.FoodOrderErrors মানগুলি UNKNOWN প্রকারের rejectionInfo সাথে ব্যবহার করুন এবং একটি বিবরণ প্রদান করুন।

আদেশ প্রতিক্রিয়া উদাহরণ

নিম্নলিখিত একটি উদাহরণ SubmitOrderResponseMessage :

JSON

{
  "finalResponse": {
    "richResponse": {
      "items": [
        {
          "structuredResponse": {
            "orderUpdate": {
              "actionOrderId": "1603357328160",
              "orderState": {
                "state": "CONFIRMED",
                "label": "Pending"
              },
              "updateTime": "2020-10-22T02:02:08-07:00",
              "orderManagementActions": [
                {
                  "type": "CUSTOMER_SERVICE",
                  "button": {
                    "title": "Call customer service",
                    "openUrlAction": {
                      "url": "tel:+61234561000"
                    }
                  }
                },
                {
                  "type": "VIEW_DETAILS",
                  "button": {
                    "title": "View order details",
                    "openUrlAction": {
                      "url": "https://partner.com/view/orderstatus"
                    }
                  }
                }
              ],
              "receipt": {
                "userVisibleOrderId": "BXZ-1603357328"
              }
            }
          }
        }
      ]
    }
  }
}

অসফল অনুরোধ

যদি একটি জমা দেওয়ার অনুরোধ অসফল হয়, SubmitOrderResponseMessage কে OrderState সেট করতে হবে। REJECTED state প্রতিক্রিয়াটিতে অবশ্যই RejectionInfo অন্তর্ভুক্ত থাকতে হবে, যাতে ত্রুটির ধরন বর্ণনা করার জন্য একটি RejectionType অবজেক্ট থাকে।

অসফল প্রতিক্রিয়া উদাহরণ

JSON

{
  "expectUserResponse": false,
  "finalResponse": {
    "richResponse": {
      "items": [
        {
          "structuredResponse": {
            "orderUpdate": {
              "actionOrderId": "sample_action_order_id",
              "orderState": {
                "state": "REJECTED",
                "label": "Order rejected"
              },
              "updateTime": "2017-05-10T02:30:00.000Z",
              "rejectionInfo": {
                "type": "PAYMENT_DECLINED",
                "reason": "Insufficient funds"
              },
              "orderManagementActions": [
                {
                  "type": "CUSTOMER_SERVICE",
                  "button": {
                    "title": "Contact customer service",
                    "openUrlAction": {
                      "url": "mailto:support@example.com"
                    }
                  }
                },
                {
                  "type": "EMAIL",
                  "button": {
                    "title": "Email restaurant",
                    "openUrlAction": {
                      "url": "mailto:person@example.com"
                    }
                  }
                },
                {
                  "type": "CALL",
                  "button": {
                    "title": "Call restaurant",
                    "openUrlAction": {
                      "url": "tel:+16505554679"
                    }
                  }
                },
                {
                  "type": "VIEW_DETAILS",
                  "button": {
                    "title": "View order",
                    "openUrlAction": {
                      "url": "https://orderview.partner.com?orderid=sample_action_order_id"
                    }
                  }
                }
              ]
            }
          }
        }
      ]
    }
  }
}
    

আদেশ বাস্তবায়ন জমা দিন

সাবমিট অর্ডার API বাস্তবায়ন করার সময় নিম্নলিখিত পদক্ষেপগুলি গ্রহণ করা উচিত।

বৈধতা

  1. চেকআউট সেট আপে সম্পন্ন পরিষেবা, কার্ট এবং প্রচারের বৈধতা সম্পাদন করুন৷
  2. প্রয়োজনে নিম্নোক্ত প্রকারের একটি দিয়ে প্রত্যাখ্যান তথ্য ফেরত দিন:
প্রত্যাখ্যান ইনফো টাইপ ব্যবহারের ক্ষেত্রে
UNAVAILABLE_SLOT পূরণের সময় আর বৈধ নয়।
PROMO_USER_INELIGIBLE ব্যবহারকারীর জন্য প্রচারের যোগ্যতা যাচাই করার অনুরোধে যোগাযোগ অবজেক্টে ইমেলটি ব্যবহার করুন। পদোন্নতির সাথে সাবমিট অর্ডার বাস্তবায়নের উদাহরণ দেখুন।
INELIGIBLE
  • ব্যবহারকারীর তথ্য যেমন ফোন নম্বর বা ইমেল বৈধ নয়।
  • আপনার ঝুঁকি ইঞ্জিন জালিয়াতি সনাক্ত করে.
PAYMENT_DECLINED পেমেন্ট প্রক্রিয়া করা যাবে না. উদাহরণস্বরূপ, এটি অপর্যাপ্ত তহবিলের কারণে হতে পারে।
UNKNOWN অন্য কোনো বৈধতা ত্রুটির জন্য.

অর্ডার স্টেট সেট করুন। বৈধতা ত্রুটির সম্মুখীন হলে REJECTED state । ঐচ্ছিকভাবে, আপনি FoodOrderUpdateExtension ব্যবহার করে একটি নির্দিষ্ট প্রত্যাখ্যানের কারণ প্রদান করতে পারেন। foodOrderErrorsসাবমিট অর্ডার ভ্যালিডেশনে উদাহরণ দেখুন।

পেমেন্ট প্রক্রিয়া

  1. কার্টের মূল্য, ফি, ​​ডিসকাউন্ট, ট্যাক্স এবং গ্র্যাচুইটি যোগ করে totalPrice গণনা করুন। CheckoutResponseMessage- এ প্রত্যাবর্তিত টোটালপ্রাইস এবং গ্র্যাচুইটির পরিমাণের পরিবর্তন যদি ব্যবহারকারীর দ্বারা গ্র্যাচুইটি পরিবর্তন করা যায় তাহলে totalPrice totalPrice একই হওয়া উচিত। আরো বিস্তারিত জানার জন্য সাবমিট অর্ডার চলাকালীন মূল্য পরিবর্তন দেখুন.
  2. আপনি CREATED বা CONFIRMED অর্ডার স্টেট সহ একটি প্রতিক্রিয়া ফেরত দিলে অর্ডার এবং পেমেন্ট প্রক্রিয়া করুন।
  3. জেনারেট ক্লায়েন্ট লাইব্রেরিতে বর্ণিত স্কিমা থেকে তৈরি জেনারেট টাইপ ব্যবহার করে একটি বৈধ প্রতিক্রিয়া বিন্যাস ফেরত দেওয়া হয়েছে তা নিশ্চিত করুন।
  4. GoogleProvidedPaymentInstrument ব্যবহার করুন। অর্থপ্রদান প্রক্রিয়া করার জন্য instrumentToken । পেমেন্ট প্রসেস করা না গেলে PAYMENT_DECLINED টাইপ সহ প্রত্যাখ্যান তথ্য ফেরত দিন। আরও বিস্তারিত জানার জন্য প্রসেস পেমেন্ট দেখুন।
  5. অর্ডারটি ইমেল বা এসএমএস দ্বারা প্রক্রিয়াকরণের পর অবিলম্বে ব্যবহারকারীকে অবহিত করুন।

প্রতিক্রিয়া ফেরত দিন

  1. অর্ডার স্টেট সেট করুন। কোনো ত্রুটি না থাকলে CREATED বা CONFIRMED state
  2. অর্ডার স্টেট সেট করুন। ত্রুটির সম্মুখীন হলে REJECTED state এবং সংশ্লিষ্ট RejectionInfoType- এর সাথে RejectionInfo অবজেক্ট অন্তর্ভুক্ত করুন।
  3. অর্ডার আপডেট সেট করুন। orderManagementActions