নেটিভ চেকআউট REST API বাস্তবায়ন, নেটিভ চেকআউট REST API বাস্তবায়ন

এই নির্দেশিকাটি ইউনিভার্সাল কমার্স প্রোটোকল (ইউসিপি) নেটিভ চেকআউটের সংস্করণ 2026-01-23 এর জন্য প্রযুক্তিগত এপিআই রেফারেন্স এবং পেলোড স্কিমা প্রদান করে।

আপনার এন্ডপয়েন্টগুলি তৈরি করার আগে, উচ্চ-স্তরের চেকআউট ফ্লো, প্রমাণীকরণের প্রয়োজনীয়তা এবং ডেভেলপার টুলস সম্পর্কে জানতে নেটিভ চেকআউট ওভারভিউ পর্যালোচনা করেছেন কিনা তা নিশ্চিত করুন।

চেকআউট সেশন তৈরি করুন

এই এন্ডপয়েন্টটি ব্যবহারকারীর কিনতে আগ্রহী পণ্যগুলো সম্বলিত একটি চেকআউট সেশন তৈরি করার সুযোগ দেয়।

  • এন্ডপয়েন্ট: POST /checkout-sessions
  • ট্রিগার: ব্যবহারকারী কোনো পণ্যের "এখনই কিনুন" বোতামে অথবা কার্ট থেকে "গুগলে চেকআউট করুন" বোতামে ক্লিক করলে।

অনুরোধ: গুগল ক্রেতার বিবরণ এবং সীমিত ঠিকানা-সংক্রান্ত তথ্য পাঠায়, যার মধ্যে শহর, রাজ্য এবং জিপ কোড অন্তর্ভুক্ত থাকে।

// Request Example: Create checkout with multiple items.
{
  "line_items": [
    {
      "item": {
        // Must match ID in product feed
        "id": "product_12345"
      },
      "quantity": 1
    },
    {
      "item": {
        // Must match ID in product feed
        "id": "product_67890"
      },
      "quantity": 1
    }
  ],
  "fulfillment": {
    "methods": [
      {
        "type": "shipping",
        "destinations": [
          {
            "address_locality": "Sunnyvale",
            "address_region": "CA",
            "postal_code": "94089",
            "address_country": "US"
          }
        ]
      }
    ]
  }
}

প্রতিক্রিয়া: আপনি মোট পরিমাণ, কর (প্রাথমিকভাবে আনুমানিক) এবং অর্থপ্রদানের সুবিধাসহ প্রারম্ভিক সেশনটি ফেরত দেন।

// Response Example: Initialize Session with multiple items.
{
  "ucp": {
    "version": "2026-01-23",
    "capabilities": {
      "dev.ucp.shopping.checkout": [ { "version": "2026-01-23" } ],
      "dev.ucp.shopping.fulfillment": [ { "version": "2026-01-23", "extends": "dev.ucp.shopping.checkout" } ]
    },
    "payment_handlers": {
      "com.google.pay": [
        {
          "id": "8c9202bd-63cc-4241-8d24-d57ce69ea31c",
          "version": "2026-01-23",
          "spec": "https://pay.google.com/gp/p/ucp/2026-01-23/",
          "schema": "https://pay.google.com/gp/p/ucp/2026-01-23/schemas/config.json",
          "config": {
            "api_version": 2,
            "api_version_minor": 0,
            "environment": "TEST",
            "merchant_info": {
              "merchant_name": "Example Merchant",
              "merchant_id": "KWMZPRLQFTYNXSDB",
              "merchant_origin": "checkout.merchant.com"
            },
            "allowed_payment_methods": [
              {
                "type": "CARD",
                "parameters": {
                  "allowed_auth_methods": [ "PAN_ONLY" ],
                  "allowed_card_networks": [
                    "AMEX",
                    "DISCOVER",
                    "JCB",
                    "MASTERCARD",
                    "VISA"
                  ],
                  "billing_address_required": true,
                  "billing_address_parameters": {
                    "format": "FULL",
                    "phone_number_required": true
                  }
                },
                "tokenization_specification": {
                  "type": "PAYMENT_GATEWAY",
                  "parameters": {
                    "gateway": "example",
                    "gatewayMerchantId": "exampleGatewayMerchantId"
                  }
                }
              }
            ]
          }
        }
      ]
    }
  },
  "id": "da2e25ec-eef8-41b7-a439-4e62dea41bdc",
  "status": "incomplete",
  "messages": [
    {
      "type": "error",
      "code": "missing_buyer_info",
      "path": "$.buyer",
      "content_type": "plain",
      "content": "Buyer information is required for checkout",
      "severity": "recoverable"
    },
    {
      "type": "error",
      "code": "missing_fulfillment_info",
      "path": "$.fulfillment.methods[0].destinations[0]",
      "content_type": "plain",
      "content": "Shipping address is incomplete",
      "severity": "recoverable"
    }
  ],
  "currency": "USD",
  "line_items": [
    {
      "id": "line_1",
      "item": {
        "id": "product_12345",
        "title": "Running Shoes",
        "price": 10000,
        "image_url": "https://merchant.example.com/images/product_12345.png"
      },
      "quantity": 1,
      "totals": [
        {
          "type": "subtotal",
          "amount": 10000
        },
        {
          "type": "total",
          "amount": 10000
        }
      ]
    },
    {
      "id": "line_2",
      "item": {
        "id": "product_67890",
        "title": "T-Shirt",
        "price": 2500,
        "image_url": "https://merchant.example.com/images/product_67890.png"
      },
      "quantity": 1,
      "totals": [
        {
          "type": "subtotal",
          "amount": 2500
        },
        {
          "type": "total",
          "amount": 2500
        }
      ]
    }
  ],
  "totals": [
    {
      "type": "subtotal",
      "display_text": "Subtotal", // Tax-inclusive markets: Set to "Subtotal (including taxes)".
      "amount": 12500 // Tax-inclusive markets: Amount must include tax.
    },
    {
      "type": "fulfillment",
      "display_text": "Shipping", // Tax-inclusive markets: Provide display text for fulfillment totals.
      "amount": 0
    },
    {
      "type": "tax", // Tax-inclusive markets: Omit this entry.
      "display_text": "Estimated Tax",
      "amount": 100
    },
    {
      "type": "total",
      "amount": 12600
    }
  ],
  "fulfillment": {
    "methods": [
      {
        "id": "method1",
        "type": "shipping",
        "line_item_ids": [
          "line_1",
          "line_2"
        ],
        "destinations": [
          {
            "id": "addr_1",
            "address_locality": "Sunnyvale",
            "address_region": "CA",
            "postal_code": "94089",
            "address_country": "US"
          }
        ],
        "selected_destination_id": "addr_1",
        "groups": [
          {
            "id": "fg1",
            "line_item_ids": [
              "line_1",
              "line_2"
            ],
            "options": [
              {
                "id": "ship_ground",
                "title": "Ground (3-5 days)",
                "description": "Estimated Delivery: Fri 5/8", // Maximum length: 200 characters.
                "totals": [ {"type": "total", "amount": 500} ]
              },
              {
                "id": "ship_express",
                "title": "Express (1-2 days)",
                "description": "Estimated Delivery: Wed 5/6", // Maximum length: 200 characters.
                "totals": [ {"type": "total", "amount": 1500} ]
              }
            ],
            "selected_option_id": "ship_ground"
          }
        ]
      }
    ]
  },
  "links": [
    {
      "type": "terms_of_service",
      "url": "https://m.com/terms",
      "title": "Terms of Service"
    },
    {
      "type": "privacy_policy",
      "url": "https://m.com/privacy",
      "title": "Privacy Policy"
    }
  ]
}

কর-সহ মূল্য

যেসব বাজারে কর আলাদাভাবে উল্লেখ না করে প্রদর্শিত মোট মূল্যের মধ্যেই অন্তর্ভুক্ত থাকে, সেখানে চেকআউট সেশন ডেটা প্রদানের সময় আপনার বাস্তবায়নকে অবশ্যই নিম্নলিখিত শর্তাবলী মেনে চলতে হবে:

  • উপমোটে কর অন্তর্ভুক্ত করুন: subtotal এন্ট্রির জন্য amount ফিল্ডে অবশ্যই সমস্ত প্রযোজ্য কর অন্তর্ভুক্ত করতে হবে।
  • পৃথক কর এন্ট্রি বাদ দিন: totals অ্যারেতে type: "tax" কোনো ডেডিকেটেড অবজেক্ট অন্তর্ভুক্ত করবেন না।
  • নিজস্ব প্রদর্শনের জন্য টেক্সট দিন: আপনাকে অবশ্যই সাবটোটাল অবজেক্টের মধ্যে একটি display_text অ্যাট্রিবিউট অন্তর্ভুক্ত করতে হবে, যা স্পষ্টভাবে উল্লেখ করবে যে ট্যাক্স অন্তর্ভুক্ত আছে, যেমন "Subtotal (including taxes)" । আপনাকে ফুলফিলমেন্ট এন্ট্রিগুলির জন্যও একটি display_text অ্যাট্রিবিউট অন্তর্ভুক্ত করতে হবে (যেমন "Shipping" )।

উদাহরণ: কর-সহ মোট সংখ্যার অ্যারে

নিম্নলিখিত উদাহরণটি একটি কর-অন্তর্ভুক্ত বাজারের একজন ব্যবসায়ীর জন্য একটি totals অ্যারে প্রদর্শন করে:

"totals": [
  {
    "type": "subtotal",
    "display_text": "Subtotal (including taxes)",
    "amount": 12500
  },
  {
    "type": "fulfillment",
    "display_text": "Shipping",
    "amount": 399
  },
  {
    "type": "total",
    "display_text": "Total",
    "amount": 12899
  }
]

চেকআউট সেশন পান

এই এন্ডপয়েন্টটি একটি চেকআউট সেশন পুনরুদ্ধার করার সুযোগ দেয়।

  • এন্ডপয়েন্ট: GET /checkout-sessions/{id}

অনুরোধ: গুগল চেকআউট সেশনের আইডি পাঠায়। আপনি যদি গ্লোবাল আইডি ব্যবহার করেন (যেমন, gid://merchant.example.com/Checkout/session_abc123 ), তাহলে মনে রাখবেন যে রিকোয়েস্ট পাথের আইডিটি শুধুমাত্র এই আইডির শেষ অংশটি হবে (যেমন, session_abc123 )।

প্রতিক্রিয়া: আপনি সম্পূর্ণ চেকআউট অবজেক্টটি ফেরত দেন। 2026-01-23 বা তার পরবর্তী সংস্করণে তৈরি একাধিক-আইটেম সেশনের ক্ষেত্রে, line_items অ্যারেতে একাধিক আইটেম এন্ট্রি থাকবে।

চেকআউট সেশন আপডেট করুন

এই এন্ডপয়েন্টটি একটি চেকআউট সেশন আপডেট করার সুযোগ দেয়। যখন শিপিং ঠিকানা আপডেট করা হয়, তখন এটিকে অবশ্যই ট্যাক্স এবং শিপিং অপশনগুলো পুনরায় গণনা করে ফেরত দিতে হবে।

  • এন্ডপয়েন্ট: PUT /checkout-sessions/{id}

শিপিং ঠিকানা আপডেট করুন

  • ট্রিগার: ব্যবহারকারী তার শিপিং ঠিকানা নির্বাচন বা পরিবর্তন করেন।

অনুরোধ: ব্যবহারকারী যখন তাঁর শিপিং ঠিকানা পরিবর্তন করেন, তখন গুগল যেন ফুলফিলমেন্ট ঠিকানাটি আপডেট করে।

// Request Example: Update shipping address with multiple items.
{
  "line_items": [
    {
      // line_items id from Create Checkout response
      "id": "line_1",
      "item": {
        "id": "product_12345"
      },
      "quantity": 1
    },
    {
      // line_items id from Create Checkout response
      "id": "line_2",
      "item": {
        "id": "product_67890"
      },
      "quantity": 1
    }
  ],
  "fulfillment": {
    "methods": [
      {
        "type": "shipping",
        "line_item_ids": [
          "line_1",
          "line_2"
        ],
        "destinations": [
          {
            "address_locality": "Mountain View",
            "address_region": "CA",
            "postal_code": "94043",
            "address_country": "US"
          }
        ],
        "groups": [
          {
            "id": "group1",
             "line_item_ids": [
              "line_1",
              "line_2"
            ],
            "options": [
              {
                "id": "ship_ground"
              }
            ],
            "selected_option_id": "ship_ground"
          }
        ]
      }
    ]
  }
}

প্রতিক্রিয়া: আপনি প্রয়োজন অনুযায়ী কর এবং শিপিং বিকল্পগুলি পুনরায় গণনা করুন এবং সম্পূর্ণ চেকআউট অবজেক্টটি ফেরত দিন।

// Response Example: Updated session with new address for multiple items.
{
  "id": "da2e25ec-eef8-41b7-a439-4e62dea41bdc",
  "currency": "USD",
  "line_items": [
    {
      "id": "line_1",
      "item": {
        "id": "product_12345",
        "title": "Running Shoes",
        "price": 10000,
        "image_url": "https://merchant.example.com/images/product_12345.png"
      },
      "quantity": 1,
      "totals": [
        { "type": "subtotal", "amount": 10000 },
        { "type": "total", "amount": 10000 }
      ]
    },
    {
      "id": "line_2",
      "item": {
        "id": "product_67890",
        "title": "T-Shirt",
        "price": 2500,
        "image_url": "https://merchant.example.com/images/product_67890.png"
      },
      "quantity": 1,
      "totals": [
        { "type": "subtotal", "amount": 2500 },
        { "type": "total", "amount": 2500 }
      ]
    }
  ],
  "totals": [
     { "type": "subtotal", "amount": 12500 },
     // Shipping cost might change based on new address
     { "type": "fulfillment", "display_text": "Ground Shipping", "amount": 600 },
     // Tax will likely change based on new address
     { "type": "tax", "amount": 1120 },
     { "type": "total", "amount": 14220 }
  ],
  "fulfillment": {
    "methods": [
      {
        "id": "method_shipping",
        "type": "shipping",
        "line_item_ids": ["line_1", "line_2"],
        "selected_destination_id": "addr_1",
        "destinations": [
          {
            "id": "addr_1",
            "address_locality": "Mountain View",
            "address_region": "CA",
            "postal_code": "94043",
            "address_country": "US"
          }
        ],
        "groups": [
          {
            "id": "group_1",
            "line_item_ids": ["line_1", "line_2"],
            "selected_option_id": "ship_ground",
            "options": [
              {
                "id": "ship_ground",
                "title": "Ground (3-5 days)",
                "description": "Estimated Delivery: Fri 5/8", // Maximum length: 200 characters.
                "totals": [ { "type": "total", "amount": 600 } ]
              }
            ]
          }
        ]
      }
    ]
  }
  // ... other fields like ucp, status, messages, links
}

সম্পূর্ণ চেকআউট বস্তুর হাইড্রেশন

অনুরোধ: ক্রেতা যখন "Pay with GPay" বোতামে ক্লিক করেন, তখন গুগল আপডেট করা তথ্যসহ (সম্পূর্ণ ফুলফিলমেন্ট ঠিকানা এবং পেমেন্ট মাধ্যম সহ) সম্পূর্ণ চেকআউট ফর্মটি পাঠায়।

// Request Example: full checkout object hydration for multiple items.
{
  "buyer": {
    "first_name": "John",
    "last_name": "Buyer",
    "email": "johnbuyer@example.com",
    "phone_number": "+18888888888"
  },
  "line_items": [
    {
      "id": "line_1",
      "item": { "id": "product_12345" },
      "quantity": 1
    },
    {
      "id": "line_2",
      "item": { "id": "product_67890" },
      "quantity": 1
    }
  ],
  "payment": {
    "instruments": [
      {
        "id": "gpay",
        "handler_id": "8c9202bd-63cc-4241-8d24-d57ce69ea31c",
        "type": "com.google.pay",
        "selected": true
      }
    ]
  },
  "fulfillment": {
    "methods": [
      {
        "type": "shipping",
        "line_item_ids": ["line_1", "line_2"],
        "destinations": [
          {
            "id": "addr_1",
            "first_name": "Alice",
            "last_name": "Receiver",
            "street_address": "1600 Amphitheatre Pkwy",
            "extended_address": "Suite #60",
            "address_locality": "Mountain View",
            "address_region": "CA",
            "postal_code": "94043",
            "address_country": "US"
          }
        ],
        "groups": [
          {
            "id": "group_1",
             "line_item_ids": ["line_1", "line_2"],
            "options": [ { "id": "ship_ground" } ],
            "selected_option_id": "ship_ground"
          }
        ]
      }
    ]
  }
}

প্রতিক্রিয়া: আপনি প্রয়োজন অনুযায়ী কর এবং শিপিং বিকল্পগুলি পুনরায় গণনা করুন এবং সম্পূর্ণ চেকআউট অবজেক্টটি ফেরত দিন।

// Response Example: Session after full hydration with multiple items.
{
  "ucp": {
    "version": "2026-01-23",
    "capabilities": {
      "dev.ucp.shopping.checkout": [ { "version": "2026-01-23" } ],
      "dev.ucp.shopping.fulfillment": [ { "version": "2026-01-23", "extends": "dev.ucp.shopping.checkout" } ]
    },
    "payment_handlers": {
      "com.google.pay": [
        {
          "id": "8c9202bd-63cc-4241-8d24-d57ce69ea31c",
          "version": "2026-01-23",
          "spec": "https://pay.google.com/gp/p/ucp/2026-01-23/",
          "schema": "https://pay.google.com/gp/p/ucp/2026-01-23/schemas/config.json",
          "config": {
            "api_version": 2,
            "api_version_minor": 0,
            "environment": "TEST",
            "merchant_info": {
              "merchant_name": "Example Merchant",
              "merchant_id": "KWMZPRLQFTYNXSDB",
              "merchant_origin": "checkout.merchant.com"
            },
            "allowed_payment_methods": [
              {
                "type": "CARD",
                "parameters": {
                  "allowed_auth_methods": [ "PAN_ONLY" ],
                  "allowed_card_networks": [ "AMEX", "DISCOVER", "JCB", "MASTERCARD", "VISA" ],
                  "billing_address_required": true,
                  "billing_address_parameters": {
                    "format": "FULL",
                    "phone_number_required": true
                  }
                },
                "tokenization_specification": {
                  "type": "PAYMENT_GATEWAY",
                  "parameters": {
                    "gateway": "example",
                    "gatewayMerchantId": "exampleGatewayMerchantId"
                  }
                }
              }
            ]
          }
        }
      ]
    }
  },
  "id": "da2e25ec-eef8-41b7-a439-4e62dea41bdc",
  "status": "ready_for_complete",
  "currency": "USD",
  "buyer": {
    "first_name": "John",
    "last_name": "Buyer",
    "email": "johnbuyer@example.com",
    "phone_number": "+18888888888"
  },
  "line_items": [
    {
      "id": "line_1",
      "item": {
        "id": "product_12345",
        "title": "Running Shoes",
        "price": 10000,
        "image_url": "https://merchant.example.com/images/product_12345.png"
      },
      "quantity": 1,
      "totals": [
        { "type": "subtotal", "amount": 10000 },
        { "type": "total", "amount": 10000 }
      ]
    },
    {
      "id": "line_2",
      "item": {
        "id": "product_67890",
        "title": "T-Shirt",
        "price": 2500,
        "image_url": "https://merchant.example.com/images/product_67890.png"
      },
      "quantity": 1,
      "totals": [
        { "type": "subtotal", "amount": 2500 },
        { "type": "total", "amount": 2500 }
      ]
    }
  ],
  "totals": [
     { "type": "subtotal", "display_text": "Subtotal", "amount": 12500 },
     { "type": "fulfillment", "display_text": "Ground Shipping", "amount": 600 },
     { "type": "tax", "display_text": "Estimated Tax", "amount": 1120 },
     { "type": "total", "display_text": "Total", "amount": 14220 }
  ],
  "payment": {
    "instruments": [
      {
        "id": "gpay",
        "handler_id": "8c9202bd-63cc-4241-8d24-d57ce69ea31c",
        "type": "com.google.pay",
        "selected": true
      }
    ]
  },
  "fulfillment": {
    "methods": [
      {
        "id": "method_shipping",
        "type": "shipping",
        "line_item_ids": ["line_1", "line_2"],
        "selected_destination_id": "addr_1",
        "destinations": [
          {
            "id": "addr_1",
            "first_name": "Alice",
            "last_name": "Receiver",
            "street_address": "1600 Amphitheatre Pkwy",
            "extended_address": "Suite #60",
            "address_locality": "Mountain View",
            "address_region": "CA",
            "postal_code": "94043",
            "address_country": "US"
          }
        ],
        "groups": [
          {
            "id": "group_1",
            "line_item_ids": ["line_1", "line_2"],
            "selected_option_id": "ship_ground",
            "options": [
              {
                "id": "ship_ground",
                "title": "Ground (3-5 days)",
                "description": "Estimated Delivery: Fri 5/8", // Maximum length: 200 characters.
                "totals": [ { "type": "total", "amount": 600 } ]
              }
            ]
          }
        ]
      }
    ]
  },
  "links": [
    {
      "type": "terms_of_service",
      "url": "https://m.com/terms",
      "title": "Terms of Service"
    },
    {
      "type": "privacy_policy",
      "url": "https://m.com/privacy",
      "title": "Privacy Policy"
    }
  ]
}

চেকআউট সেশন সম্পূর্ণ করুন

এই এন্ডপয়েন্টটি একটি চেকআউট সেশন সম্পন্ন করতে এবং অর্ডার দেওয়ার সুযোগ দেয়। এটির উচিত সম্পন্ন হওয়া চেকআউট সেশনটি ফেরত দেওয়া এবং তাতে অর্ডারের তথ্য অন্তর্ভুক্ত করা। এই কলটি গ্রহণ করার পরেই পেমেন্ট প্রসেসিং শুরু হওয়া উচিত।

অনুরোধ: আপনার নিজস্ব জালিয়াতি শনাক্তকরণের জন্য, গুগল পেমেন্ট হ্যান্ডলারের মাধ্যমে আপনার নির্বাচিত পেমেন্ট ইন্সট্রুমেন্টটি পাঠায়, যার মধ্যে ক্রেডেনশিয়াল (যেমন গুগল পে টোকেনাইজেশন ডেটা ) এবং ক্রেতা সম্পর্কিত ঝুঁকির সংকেত অন্তর্ভুক্ত থাকে। টোকেনের বিষয়বস্তু আপনার পেমেন্টস সার্ভিস প্রোভাইডারের উপর নির্ভর করবে।

{
  "payment": {
    "instruments": [
      {
        "billing_address": {
          "first_name": "John",
          "last_name": "Buyer",
          "street_address": "1600 Amphitheatre Pkwy",
          "address_locality": "Mountain View",
          "address_region": "CA",
          "postal_code": "94043",
          "address_country": "US"
        },
        "credential": {
          "token": "examplePaymentMethodToken",
          "type": "PAYMENT_GATEWAY"
        },
        "display": {
          "brand": "VISA",
          "description": "Visa •••• 1234",
          "last_digits": "1234"
        },
        "handler_id": "8c9202bd-63cc-4241-8d24-d57ce69ea31c",
        "id": "94e7fee0-1a82-4c2a-9ef4-0861a3c829b2",
        "selected": true,
        "type": "CARD"
      }
    ]
  },
  "signals": {} // Placeholder for risk signals
}

চেকআউট সম্পন্ন করার জন্য যদি এমন কোনো আবশ্যিক তথ্যের প্রয়োজন হয় যা চেকআউট সেশনে প্রদান করা হয়নি, তাহলে আপনি রেসপন্সে একটি 'অসম্পূর্ণ' স্ট্যাটাস ফেরত দিয়ে চেকআউট সম্পন্ন হওয়া আটকাতে এবং সেই তথ্যের জন্য অনুরোধ করতে পারেন।

যদি গুগল UCP-সংজ্ঞায়িত ফিল্ড ব্যবহার করে অনুপস্থিত তথ্য সংগ্রহ করতে পারে (উদাহরণস্বরূপ, ক্রেতার ইমেল ঠিকানা), তাহলে status incomplete ) হিসেবে সেট করুন এবং messages ) অ্যারেতে ' recoverable ) severity সহ এক বা একাধিক মেসেজ অন্তর্ভুক্ত করুন, যা নির্দেশ করবে কোন তথ্য অনুপস্থিত।

{
  "id": "da2e25ec-eef8-41b7-a439-4e62dea41bdc",
  "status": "incomplete",
  "messages": [
    {
      "type": "error",
      "code": "missing_buyer_info",
      "severity": "recoverable",
      "content": "Buyer email is required"
    },
    {
      "type": "error",
      "code": "missing_fulfillment_info",
      "severity": "recoverable",
      "content": "Select delivery window for your purchase"
    }
  ]
}

Google Pay পেমেন্ট ইন্সট্রুমেন্ট গ্রহণ করার পর, আপনাকে অবশ্যই:

  1. হ্যান্ডলার যাচাই করুন: নিশ্চিত করুন যে handler_id Google Pay পেমেন্ট হ্যান্ডলারের সাথে সঙ্গতিপূর্ণ।
  2. টোকেন সংগ্রহ করুন: payment_data.credential.token থেকে তৈরি হওয়া পেমেন্ট পদ্ধতির টোকেনটি সংগ্রহ করুন।
  3. পেমেন্ট প্রক্রিয়া করুন: পেমেন্ট সম্পন্ন করতে টোকেন এবং লেনদেনের বিবরণ ব্যবহার করুন। টোকেনাইজেশন স্পেসিফিকেশন এবং হ্যান্ডলিং সম্পর্কিত বিস্তারিত তথ্যের জন্য Google Pay API ডকুমেন্টেশন দেখুন।

প্রতিক্রিয়া: যদি চেকআউট সম্পন্ন করা যায় এবং আপনি পেমেন্ট করে থাকেন, তাহলে আপনি সম্পূর্ণ চেকআউট অবজেক্টটি ফেরত দেবেন, যা নির্দেশ করে যে অর্ডারটি সম্পন্ন হয়েছে। এতে অর্ডার আইডি এবং অর্ডারের একটি পারমালিঙ্ক ইউআরএল অন্তর্ভুক্ত থাকবে।

{
  "ucp": {
      "version": "2026-01-23",
      "capabilities": [...]
  },
  "id": "da2e25ec-eef8-41b7-a439-4e62dea41bdc",
  "status": "completed",

  // ... other fields (line_items, currency, etc.)

  "order": {
    "id": "ORD1773956535.2727807",
    // Example customer-facing order number
    "label": "#100",
    "permalink_url": "https://merchant.example.com/orders/789"
  }
}

চেকআউট সেশন বাতিল করুন

এই এন্ডপয়েন্টটি একটি চেকআউট সেশন বাতিল করে।

  • এন্ডপয়েন্ট: POST /checkout-sessions/{id}/cancel

অনুরোধ: গুগল চেকআউট সেশনের আইডি পাঠায়।

প্রতিক্রিয়া: আপনি স্ট্যাটাসটি canceled হিসেবে আপডেট করে সম্পূর্ণ চেকআউট অবজেক্টটি ফেরত দেন।

ত্রুটি পরিচালনা

এরর মেসেজ কীভাবে ফরম্যাট করতে হয় এবং প্রোটোকল ও বিজনেস লজিক এররের মধ্যে পার্থক্য সম্পর্কে সম্পূর্ণ নির্দেশনার জন্য, এরর কোড ওভারভিউ দেখুন।

অপ্রত্যাহারযোগ্য ত্রুটি

2026-01-23 সংস্করণের জন্য, যখন কোনো অপূরণীয় ব্যবসায়িক যুক্তির ত্রুটির কারণে চেকআউট সেশন তৈরি করা যায় না (যেমন, সমস্ত আইটেম স্টকের বাইরে), তখন একটি HTTP 200 OK ফেরত দিন।

2026-01-23 সংস্করণে, আপনাকে অবশ্যই চেকআউট সেশন আইডি বাদ দিয়ে এবং messages অ্যারের মধ্যে "severity": "unrecoverable" উল্লেখ করে চূড়ান্ত ব্যর্থতা নির্দেশ করতে হবে। এটি গুগলকে জানায় যে অনুরোধটি বৈধ ছিল, কিন্তু একটি ব্যবসায়িক নিয়ম সেশন তৈরি হতে বাধা দিয়েছে।

HTTP/1.1 200 OK
Content-Type: application/json

{
  "ucp": {
    "version": "2026-01-23"
  },
  "messages": [
    {
      "type": "error",
      "code": "out_of_stock",
      "content": "All requested items are currently out of stock",
      "severity": "unrecoverable"
    }
  ],
  "continue_url": "https://merchant.com/"
}
,

এই নির্দেশিকাটি ইউনিভার্সাল কমার্স প্রোটোকল (ইউসিপি) নেটিভ চেকআউটের সংস্করণ 2026-01-23 এর জন্য প্রযুক্তিগত এপিআই রেফারেন্স এবং পেলোড স্কিমা প্রদান করে।

আপনার এন্ডপয়েন্টগুলি তৈরি করার আগে, উচ্চ-স্তরের চেকআউট ফ্লো, প্রমাণীকরণের প্রয়োজনীয়তা এবং ডেভেলপার টুলস সম্পর্কে জানতে নেটিভ চেকআউট ওভারভিউ পর্যালোচনা করেছেন কিনা তা নিশ্চিত করুন।

চেকআউট সেশন তৈরি করুন

এই এন্ডপয়েন্টটি ব্যবহারকারীর কিনতে আগ্রহী পণ্যগুলো সম্বলিত একটি চেকআউট সেশন তৈরি করার সুযোগ দেয়।

  • এন্ডপয়েন্ট: POST /checkout-sessions
  • ট্রিগার: ব্যবহারকারী কোনো পণ্যের "এখনই কিনুন" বোতামে অথবা কার্ট থেকে "গুগলে চেকআউট করুন" বোতামে ক্লিক করলে।

অনুরোধ: গুগল ক্রেতার বিবরণ এবং সীমিত ঠিকানা-সংক্রান্ত তথ্য পাঠায়, যার মধ্যে শহর, রাজ্য এবং জিপ কোড অন্তর্ভুক্ত থাকে।

// Request Example: Create checkout with multiple items.
{
  "line_items": [
    {
      "item": {
        // Must match ID in product feed
        "id": "product_12345"
      },
      "quantity": 1
    },
    {
      "item": {
        // Must match ID in product feed
        "id": "product_67890"
      },
      "quantity": 1
    }
  ],
  "fulfillment": {
    "methods": [
      {
        "type": "shipping",
        "destinations": [
          {
            "address_locality": "Sunnyvale",
            "address_region": "CA",
            "postal_code": "94089",
            "address_country": "US"
          }
        ]
      }
    ]
  }
}

প্রতিক্রিয়া: আপনি মোট পরিমাণ, কর (প্রাথমিকভাবে আনুমানিক) এবং অর্থপ্রদানের সুবিধাসহ প্রারম্ভিক সেশনটি ফেরত দেন।

// Response Example: Initialize Session with multiple items.
{
  "ucp": {
    "version": "2026-01-23",
    "capabilities": {
      "dev.ucp.shopping.checkout": [ { "version": "2026-01-23" } ],
      "dev.ucp.shopping.fulfillment": [ { "version": "2026-01-23", "extends": "dev.ucp.shopping.checkout" } ]
    },
    "payment_handlers": {
      "com.google.pay": [
        {
          "id": "8c9202bd-63cc-4241-8d24-d57ce69ea31c",
          "version": "2026-01-23",
          "spec": "https://pay.google.com/gp/p/ucp/2026-01-23/",
          "schema": "https://pay.google.com/gp/p/ucp/2026-01-23/schemas/config.json",
          "config": {
            "api_version": 2,
            "api_version_minor": 0,
            "environment": "TEST",
            "merchant_info": {
              "merchant_name": "Example Merchant",
              "merchant_id": "KWMZPRLQFTYNXSDB",
              "merchant_origin": "checkout.merchant.com"
            },
            "allowed_payment_methods": [
              {
                "type": "CARD",
                "parameters": {
                  "allowed_auth_methods": [ "PAN_ONLY" ],
                  "allowed_card_networks": [
                    "AMEX",
                    "DISCOVER",
                    "JCB",
                    "MASTERCARD",
                    "VISA"
                  ],
                  "billing_address_required": true,
                  "billing_address_parameters": {
                    "format": "FULL",
                    "phone_number_required": true
                  }
                },
                "tokenization_specification": {
                  "type": "PAYMENT_GATEWAY",
                  "parameters": {
                    "gateway": "example",
                    "gatewayMerchantId": "exampleGatewayMerchantId"
                  }
                }
              }
            ]
          }
        }
      ]
    }
  },
  "id": "da2e25ec-eef8-41b7-a439-4e62dea41bdc",
  "status": "incomplete",
  "messages": [
    {
      "type": "error",
      "code": "missing_buyer_info",
      "path": "$.buyer",
      "content_type": "plain",
      "content": "Buyer information is required for checkout",
      "severity": "recoverable"
    },
    {
      "type": "error",
      "code": "missing_fulfillment_info",
      "path": "$.fulfillment.methods[0].destinations[0]",
      "content_type": "plain",
      "content": "Shipping address is incomplete",
      "severity": "recoverable"
    }
  ],
  "currency": "USD",
  "line_items": [
    {
      "id": "line_1",
      "item": {
        "id": "product_12345",
        "title": "Running Shoes",
        "price": 10000,
        "image_url": "https://merchant.example.com/images/product_12345.png"
      },
      "quantity": 1,
      "totals": [
        {
          "type": "subtotal",
          "amount": 10000
        },
        {
          "type": "total",
          "amount": 10000
        }
      ]
    },
    {
      "id": "line_2",
      "item": {
        "id": "product_67890",
        "title": "T-Shirt",
        "price": 2500,
        "image_url": "https://merchant.example.com/images/product_67890.png"
      },
      "quantity": 1,
      "totals": [
        {
          "type": "subtotal",
          "amount": 2500
        },
        {
          "type": "total",
          "amount": 2500
        }
      ]
    }
  ],
  "totals": [
    {
      "type": "subtotal",
      "display_text": "Subtotal", // Tax-inclusive markets: Set to "Subtotal (including taxes)".
      "amount": 12500 // Tax-inclusive markets: Amount must include tax.
    },
    {
      "type": "fulfillment",
      "display_text": "Shipping", // Tax-inclusive markets: Provide display text for fulfillment totals.
      "amount": 0
    },
    {
      "type": "tax", // Tax-inclusive markets: Omit this entry.
      "display_text": "Estimated Tax",
      "amount": 100
    },
    {
      "type": "total",
      "amount": 12600
    }
  ],
  "fulfillment": {
    "methods": [
      {
        "id": "method1",
        "type": "shipping",
        "line_item_ids": [
          "line_1",
          "line_2"
        ],
        "destinations": [
          {
            "id": "addr_1",
            "address_locality": "Sunnyvale",
            "address_region": "CA",
            "postal_code": "94089",
            "address_country": "US"
          }
        ],
        "selected_destination_id": "addr_1",
        "groups": [
          {
            "id": "fg1",
            "line_item_ids": [
              "line_1",
              "line_2"
            ],
            "options": [
              {
                "id": "ship_ground",
                "title": "Ground (3-5 days)",
                "description": "Estimated Delivery: Fri 5/8", // Maximum length: 200 characters.
                "totals": [ {"type": "total", "amount": 500} ]
              },
              {
                "id": "ship_express",
                "title": "Express (1-2 days)",
                "description": "Estimated Delivery: Wed 5/6", // Maximum length: 200 characters.
                "totals": [ {"type": "total", "amount": 1500} ]
              }
            ],
            "selected_option_id": "ship_ground"
          }
        ]
      }
    ]
  },
  "links": [
    {
      "type": "terms_of_service",
      "url": "https://m.com/terms",
      "title": "Terms of Service"
    },
    {
      "type": "privacy_policy",
      "url": "https://m.com/privacy",
      "title": "Privacy Policy"
    }
  ]
}

কর-সহ মূল্য

যেসব বাজারে কর আলাদাভাবে উল্লেখ না করে প্রদর্শিত মোট মূল্যের মধ্যেই অন্তর্ভুক্ত থাকে, সেখানে চেকআউট সেশন ডেটা প্রদানের সময় আপনার বাস্তবায়নকে অবশ্যই নিম্নলিখিত শর্তাবলী মেনে চলতে হবে:

  • উপমোটে কর অন্তর্ভুক্ত করুন: subtotal এন্ট্রির জন্য amount ফিল্ডে অবশ্যই সমস্ত প্রযোজ্য কর অন্তর্ভুক্ত করতে হবে।
  • পৃথক কর এন্ট্রি বাদ দিন: totals অ্যারেতে type: "tax" কোনো ডেডিকেটেড অবজেক্ট অন্তর্ভুক্ত করবেন না।
  • নিজস্ব প্রদর্শনের জন্য টেক্সট দিন: আপনাকে অবশ্যই সাবটোটাল অবজেক্টের মধ্যে একটি display_text অ্যাট্রিবিউট অন্তর্ভুক্ত করতে হবে, যা স্পষ্টভাবে উল্লেখ করবে যে ট্যাক্স অন্তর্ভুক্ত আছে, যেমন "Subtotal (including taxes)" । আপনাকে ফুলফিলমেন্ট এন্ট্রিগুলির জন্যও একটি display_text অ্যাট্রিবিউট অন্তর্ভুক্ত করতে হবে (যেমন "Shipping" )।

উদাহরণ: কর-সহ মোট সংখ্যার অ্যারে

নিম্নলিখিত উদাহরণটি একটি কর-অন্তর্ভুক্ত বাজারের একজন ব্যবসায়ীর জন্য একটি totals অ্যারে প্রদর্শন করে:

"totals": [
  {
    "type": "subtotal",
    "display_text": "Subtotal (including taxes)",
    "amount": 12500
  },
  {
    "type": "fulfillment",
    "display_text": "Shipping",
    "amount": 399
  },
  {
    "type": "total",
    "display_text": "Total",
    "amount": 12899
  }
]

চেকআউট সেশন পান

এই এন্ডপয়েন্টটি একটি চেকআউট সেশন পুনরুদ্ধার করার সুযোগ দেয়।

  • এন্ডপয়েন্ট: GET /checkout-sessions/{id}

অনুরোধ: গুগল চেকআউট সেশনের আইডি পাঠায়। আপনি যদি গ্লোবাল আইডি ব্যবহার করেন (যেমন, gid://merchant.example.com/Checkout/session_abc123 ), তাহলে মনে রাখবেন যে রিকোয়েস্ট পাথের আইডিটি শুধুমাত্র এই আইডির শেষ অংশটি হবে (যেমন, session_abc123 )।

প্রতিক্রিয়া: আপনি সম্পূর্ণ চেকআউট অবজেক্টটি ফেরত দেন। 2026-01-23 বা তার পরবর্তী সংস্করণে তৈরি একাধিক-আইটেম সেশনের ক্ষেত্রে, line_items অ্যারেতে একাধিক আইটেম এন্ট্রি থাকবে।

চেকআউট সেশন আপডেট করুন

এই এন্ডপয়েন্টটি একটি চেকআউট সেশন আপডেট করার সুযোগ দেয়। যখন শিপিং ঠিকানা আপডেট করা হয়, তখন এটিকে অবশ্যই ট্যাক্স এবং শিপিং অপশনগুলো পুনরায় গণনা করে ফেরত দিতে হবে।

  • এন্ডপয়েন্ট: PUT /checkout-sessions/{id}

শিপিং ঠিকানা আপডেট করুন

  • ট্রিগার: ব্যবহারকারী তার শিপিং ঠিকানা নির্বাচন বা পরিবর্তন করেন।

অনুরোধ: ব্যবহারকারী যখন তাঁর শিপিং ঠিকানা পরিবর্তন করেন, তখন গুগল যেন ফুলফিলমেন্ট ঠিকানাটি আপডেট করে।

// Request Example: Update shipping address with multiple items.
{
  "line_items": [
    {
      // line_items id from Create Checkout response
      "id": "line_1",
      "item": {
        "id": "product_12345"
      },
      "quantity": 1
    },
    {
      // line_items id from Create Checkout response
      "id": "line_2",
      "item": {
        "id": "product_67890"
      },
      "quantity": 1
    }
  ],
  "fulfillment": {
    "methods": [
      {
        "type": "shipping",
        "line_item_ids": [
          "line_1",
          "line_2"
        ],
        "destinations": [
          {
            "address_locality": "Mountain View",
            "address_region": "CA",
            "postal_code": "94043",
            "address_country": "US"
          }
        ],
        "groups": [
          {
            "id": "group1",
             "line_item_ids": [
              "line_1",
              "line_2"
            ],
            "options": [
              {
                "id": "ship_ground"
              }
            ],
            "selected_option_id": "ship_ground"
          }
        ]
      }
    ]
  }
}

প্রতিক্রিয়া: আপনি প্রয়োজন অনুযায়ী কর এবং শিপিং বিকল্পগুলি পুনরায় গণনা করুন এবং সম্পূর্ণ চেকআউট অবজেক্টটি ফেরত দিন।

// Response Example: Updated session with new address for multiple items.
{
  "id": "da2e25ec-eef8-41b7-a439-4e62dea41bdc",
  "currency": "USD",
  "line_items": [
    {
      "id": "line_1",
      "item": {
        "id": "product_12345",
        "title": "Running Shoes",
        "price": 10000,
        "image_url": "https://merchant.example.com/images/product_12345.png"
      },
      "quantity": 1,
      "totals": [
        { "type": "subtotal", "amount": 10000 },
        { "type": "total", "amount": 10000 }
      ]
    },
    {
      "id": "line_2",
      "item": {
        "id": "product_67890",
        "title": "T-Shirt",
        "price": 2500,
        "image_url": "https://merchant.example.com/images/product_67890.png"
      },
      "quantity": 1,
      "totals": [
        { "type": "subtotal", "amount": 2500 },
        { "type": "total", "amount": 2500 }
      ]
    }
  ],
  "totals": [
     { "type": "subtotal", "amount": 12500 },
     // Shipping cost might change based on new address
     { "type": "fulfillment", "display_text": "Ground Shipping", "amount": 600 },
     // Tax will likely change based on new address
     { "type": "tax", "amount": 1120 },
     { "type": "total", "amount": 14220 }
  ],
  "fulfillment": {
    "methods": [
      {
        "id": "method_shipping",
        "type": "shipping",
        "line_item_ids": ["line_1", "line_2"],
        "selected_destination_id": "addr_1",
        "destinations": [
          {
            "id": "addr_1",
            "address_locality": "Mountain View",
            "address_region": "CA",
            "postal_code": "94043",
            "address_country": "US"
          }
        ],
        "groups": [
          {
            "id": "group_1",
            "line_item_ids": ["line_1", "line_2"],
            "selected_option_id": "ship_ground",
            "options": [
              {
                "id": "ship_ground",
                "title": "Ground (3-5 days)",
                "description": "Estimated Delivery: Fri 5/8", // Maximum length: 200 characters.
                "totals": [ { "type": "total", "amount": 600 } ]
              }
            ]
          }
        ]
      }
    ]
  }
  // ... other fields like ucp, status, messages, links
}

সম্পূর্ণ চেকআউট বস্তুর হাইড্রেশন

অনুরোধ: ক্রেতা যখন "Pay with GPay" বোতামে ক্লিক করেন, তখন গুগল আপডেট করা তথ্যসহ (সম্পূর্ণ ফুলফিলমেন্ট ঠিকানা এবং পেমেন্ট মাধ্যম সহ) সম্পূর্ণ চেকআউট ফর্মটি পাঠায়।

// Request Example: full checkout object hydration for multiple items.
{
  "buyer": {
    "first_name": "John",
    "last_name": "Buyer",
    "email": "johnbuyer@example.com",
    "phone_number": "+18888888888"
  },
  "line_items": [
    {
      "id": "line_1",
      "item": { "id": "product_12345" },
      "quantity": 1
    },
    {
      "id": "line_2",
      "item": { "id": "product_67890" },
      "quantity": 1
    }
  ],
  "payment": {
    "instruments": [
      {
        "id": "gpay",
        "handler_id": "8c9202bd-63cc-4241-8d24-d57ce69ea31c",
        "type": "com.google.pay",
        "selected": true
      }
    ]
  },
  "fulfillment": {
    "methods": [
      {
        "type": "shipping",
        "line_item_ids": ["line_1", "line_2"],
        "destinations": [
          {
            "id": "addr_1",
            "first_name": "Alice",
            "last_name": "Receiver",
            "street_address": "1600 Amphitheatre Pkwy",
            "extended_address": "Suite #60",
            "address_locality": "Mountain View",
            "address_region": "CA",
            "postal_code": "94043",
            "address_country": "US"
          }
        ],
        "groups": [
          {
            "id": "group_1",
             "line_item_ids": ["line_1", "line_2"],
            "options": [ { "id": "ship_ground" } ],
            "selected_option_id": "ship_ground"
          }
        ]
      }
    ]
  }
}

প্রতিক্রিয়া: আপনি প্রয়োজন অনুযায়ী কর এবং শিপিং বিকল্পগুলি পুনরায় গণনা করুন এবং সম্পূর্ণ চেকআউট অবজেক্টটি ফেরত দিন।

// Response Example: Session after full hydration with multiple items.
{
  "ucp": {
    "version": "2026-01-23",
    "capabilities": {
      "dev.ucp.shopping.checkout": [ { "version": "2026-01-23" } ],
      "dev.ucp.shopping.fulfillment": [ { "version": "2026-01-23", "extends": "dev.ucp.shopping.checkout" } ]
    },
    "payment_handlers": {
      "com.google.pay": [
        {
          "id": "8c9202bd-63cc-4241-8d24-d57ce69ea31c",
          "version": "2026-01-23",
          "spec": "https://pay.google.com/gp/p/ucp/2026-01-23/",
          "schema": "https://pay.google.com/gp/p/ucp/2026-01-23/schemas/config.json",
          "config": {
            "api_version": 2,
            "api_version_minor": 0,
            "environment": "TEST",
            "merchant_info": {
              "merchant_name": "Example Merchant",
              "merchant_id": "KWMZPRLQFTYNXSDB",
              "merchant_origin": "checkout.merchant.com"
            },
            "allowed_payment_methods": [
              {
                "type": "CARD",
                "parameters": {
                  "allowed_auth_methods": [ "PAN_ONLY" ],
                  "allowed_card_networks": [ "AMEX", "DISCOVER", "JCB", "MASTERCARD", "VISA" ],
                  "billing_address_required": true,
                  "billing_address_parameters": {
                    "format": "FULL",
                    "phone_number_required": true
                  }
                },
                "tokenization_specification": {
                  "type": "PAYMENT_GATEWAY",
                  "parameters": {
                    "gateway": "example",
                    "gatewayMerchantId": "exampleGatewayMerchantId"
                  }
                }
              }
            ]
          }
        }
      ]
    }
  },
  "id": "da2e25ec-eef8-41b7-a439-4e62dea41bdc",
  "status": "ready_for_complete",
  "currency": "USD",
  "buyer": {
    "first_name": "John",
    "last_name": "Buyer",
    "email": "johnbuyer@example.com",
    "phone_number": "+18888888888"
  },
  "line_items": [
    {
      "id": "line_1",
      "item": {
        "id": "product_12345",
        "title": "Running Shoes",
        "price": 10000,
        "image_url": "https://merchant.example.com/images/product_12345.png"
      },
      "quantity": 1,
      "totals": [
        { "type": "subtotal", "amount": 10000 },
        { "type": "total", "amount": 10000 }
      ]
    },
    {
      "id": "line_2",
      "item": {
        "id": "product_67890",
        "title": "T-Shirt",
        "price": 2500,
        "image_url": "https://merchant.example.com/images/product_67890.png"
      },
      "quantity": 1,
      "totals": [
        { "type": "subtotal", "amount": 2500 },
        { "type": "total", "amount": 2500 }
      ]
    }
  ],
  "totals": [
     { "type": "subtotal", "display_text": "Subtotal", "amount": 12500 },
     { "type": "fulfillment", "display_text": "Ground Shipping", "amount": 600 },
     { "type": "tax", "display_text": "Estimated Tax", "amount": 1120 },
     { "type": "total", "display_text": "Total", "amount": 14220 }
  ],
  "payment": {
    "instruments": [
      {
        "id": "gpay",
        "handler_id": "8c9202bd-63cc-4241-8d24-d57ce69ea31c",
        "type": "com.google.pay",
        "selected": true
      }
    ]
  },
  "fulfillment": {
    "methods": [
      {
        "id": "method_shipping",
        "type": "shipping",
        "line_item_ids": ["line_1", "line_2"],
        "selected_destination_id": "addr_1",
        "destinations": [
          {
            "id": "addr_1",
            "first_name": "Alice",
            "last_name": "Receiver",
            "street_address": "1600 Amphitheatre Pkwy",
            "extended_address": "Suite #60",
            "address_locality": "Mountain View",
            "address_region": "CA",
            "postal_code": "94043",
            "address_country": "US"
          }
        ],
        "groups": [
          {
            "id": "group_1",
            "line_item_ids": ["line_1", "line_2"],
            "selected_option_id": "ship_ground",
            "options": [
              {
                "id": "ship_ground",
                "title": "Ground (3-5 days)",
                "description": "Estimated Delivery: Fri 5/8", // Maximum length: 200 characters.
                "totals": [ { "type": "total", "amount": 600 } ]
              }
            ]
          }
        ]
      }
    ]
  },
  "links": [
    {
      "type": "terms_of_service",
      "url": "https://m.com/terms",
      "title": "Terms of Service"
    },
    {
      "type": "privacy_policy",
      "url": "https://m.com/privacy",
      "title": "Privacy Policy"
    }
  ]
}

চেকআউট সেশন সম্পূর্ণ করুন

এই এন্ডপয়েন্টটি একটি চেকআউট সেশন সম্পন্ন করতে এবং অর্ডার দেওয়ার সুযোগ দেয়। এটির উচিত সম্পন্ন হওয়া চেকআউট সেশনটি ফেরত দেওয়া এবং তাতে অর্ডারের তথ্য অন্তর্ভুক্ত করা। এই কলটি গ্রহণ করার পরেই পেমেন্ট প্রসেসিং শুরু হওয়া উচিত।

অনুরোধ: আপনার নিজস্ব জালিয়াতি শনাক্তকরণের জন্য, গুগল পেমেন্ট হ্যান্ডলারের মাধ্যমে আপনার নির্বাচিত পেমেন্ট ইন্সট্রুমেন্টটি পাঠায়, যার মধ্যে ক্রেডেনশিয়াল (যেমন গুগল পে টোকেনাইজেশন ডেটা ) এবং ক্রেতা সম্পর্কিত ঝুঁকির সংকেত অন্তর্ভুক্ত থাকে। টোকেনের বিষয়বস্তু আপনার পেমেন্টস সার্ভিস প্রোভাইডারের উপর নির্ভর করবে।

{
  "payment": {
    "instruments": [
      {
        "billing_address": {
          "first_name": "John",
          "last_name": "Buyer",
          "street_address": "1600 Amphitheatre Pkwy",
          "address_locality": "Mountain View",
          "address_region": "CA",
          "postal_code": "94043",
          "address_country": "US"
        },
        "credential": {
          "token": "examplePaymentMethodToken",
          "type": "PAYMENT_GATEWAY"
        },
        "display": {
          "brand": "VISA",
          "description": "Visa •••• 1234",
          "last_digits": "1234"
        },
        "handler_id": "8c9202bd-63cc-4241-8d24-d57ce69ea31c",
        "id": "94e7fee0-1a82-4c2a-9ef4-0861a3c829b2",
        "selected": true,
        "type": "CARD"
      }
    ]
  },
  "signals": {} // Placeholder for risk signals
}

চেকআউট সম্পন্ন করার জন্য যদি এমন কোনো আবশ্যিক তথ্যের প্রয়োজন হয় যা চেকআউট সেশনে প্রদান করা হয়নি, তাহলে আপনি রেসপন্সে একটি 'অসম্পূর্ণ' স্ট্যাটাস ফেরত দিয়ে চেকআউট সম্পন্ন হওয়া আটকাতে এবং সেই তথ্যের জন্য অনুরোধ করতে পারেন।

যদি গুগল UCP-সংজ্ঞায়িত ফিল্ড ব্যবহার করে অনুপস্থিত তথ্য সংগ্রহ করতে পারে (উদাহরণস্বরূপ, ক্রেতার ইমেল ঠিকানা), তাহলে status incomplete ) হিসেবে সেট করুন এবং messages ) অ্যারেতে ' recoverable ) severity সহ এক বা একাধিক মেসেজ অন্তর্ভুক্ত করুন, যা নির্দেশ করবে কোন তথ্য অনুপস্থিত।

{
  "id": "da2e25ec-eef8-41b7-a439-4e62dea41bdc",
  "status": "incomplete",
  "messages": [
    {
      "type": "error",
      "code": "missing_buyer_info",
      "severity": "recoverable",
      "content": "Buyer email is required"
    },
    {
      "type": "error",
      "code": "missing_fulfillment_info",
      "severity": "recoverable",
      "content": "Select delivery window for your purchase"
    }
  ]
}

Google Pay পেমেন্ট ইন্সট্রুমেন্ট গ্রহণ করার পর, আপনাকে অবশ্যই:

  1. হ্যান্ডলার যাচাই করুন: নিশ্চিত করুন যে handler_id Google Pay পেমেন্ট হ্যান্ডলারের সাথে সঙ্গতিপূর্ণ।
  2. টোকেন সংগ্রহ করুন: payment_data.credential.token থেকে তৈরি হওয়া পেমেন্ট পদ্ধতির টোকেনটি সংগ্রহ করুন।
  3. পেমেন্ট প্রক্রিয়া করুন: পেমেন্ট সম্পন্ন করতে টোকেন এবং লেনদেনের বিবরণ ব্যবহার করুন। টোকেনাইজেশন স্পেসিফিকেশন এবং হ্যান্ডলিং সম্পর্কিত বিস্তারিত তথ্যের জন্য Google Pay API ডকুমেন্টেশন দেখুন।

প্রতিক্রিয়া: যদি চেকআউট সম্পন্ন করা যায় এবং আপনি পেমেন্ট করে থাকেন, তাহলে আপনি সম্পূর্ণ চেকআউট অবজেক্টটি ফেরত দেবেন, যা নির্দেশ করে যে অর্ডারটি সম্পন্ন হয়েছে। এতে অর্ডার আইডি এবং অর্ডারের একটি পারমালিঙ্ক ইউআরএল অন্তর্ভুক্ত থাকবে।

{
  "ucp": {
      "version": "2026-01-23",
      "capabilities": [...]
  },
  "id": "da2e25ec-eef8-41b7-a439-4e62dea41bdc",
  "status": "completed",

  // ... other fields (line_items, currency, etc.)

  "order": {
    "id": "ORD1773956535.2727807",
    // Example customer-facing order number
    "label": "#100",
    "permalink_url": "https://merchant.example.com/orders/789"
  }
}

চেকআউট সেশন বাতিল করুন

এই এন্ডপয়েন্টটি একটি চেকআউট সেশন বাতিল করে।

  • এন্ডপয়েন্ট: POST /checkout-sessions/{id}/cancel

অনুরোধ: গুগল চেকআউট সেশনের আইডি পাঠায়।

প্রতিক্রিয়া: আপনি স্ট্যাটাসটি canceled হিসেবে আপডেট করে সম্পূর্ণ চেকআউট অবজেক্টটি ফেরত দেন।

ত্রুটি পরিচালনা

এরর মেসেজ কীভাবে ফরম্যাট করতে হয় এবং প্রোটোকল ও বিজনেস লজিক এররের মধ্যে পার্থক্য সম্পর্কে সম্পূর্ণ নির্দেশনার জন্য, এরর কোড ওভারভিউ দেখুন।

অপ্রত্যাহারযোগ্য ত্রুটি

2026-01-23 সংস্করণের জন্য, যখন কোনো অপূরণীয় ব্যবসায়িক যুক্তির ত্রুটির কারণে চেকআউট সেশন তৈরি করা যায় না (যেমন, সমস্ত আইটেম স্টকের বাইরে), তখন একটি HTTP 200 OK ফেরত দিন।

2026-01-23 সংস্করণে, আপনাকে অবশ্যই চেকআউট সেশন আইডি বাদ দিয়ে এবং messages অ্যারের মধ্যে "severity": "unrecoverable" উল্লেখ করে চূড়ান্ত ব্যর্থতা নির্দেশ করতে হবে। এটি গুগলকে জানায় যে অনুরোধটি বৈধ ছিল, কিন্তু একটি ব্যবসায়িক নিয়ম সেশন তৈরি হতে বাধা দিয়েছে।

HTTP/1.1 200 OK
Content-Type: application/json

{
  "ucp": {
    "version": "2026-01-23"
  },
  "messages": [
    {
      "type": "error",
      "code": "out_of_stock",
      "content": "All requested items are currently out of stock",
      "severity": "unrecoverable"
    }
  ],
  "continue_url": "https://merchant.com/"
}