নেটিভ চেকআউট

নেটিভ ইন্টিগ্রেশনের জন্য আপনাকে একটি RESTful API তৈরি করতে হবে যা Google চেকআউট সেশন তৈরি এবং পরিচালনা করতে কল করতে পারে।

সামগ্রিক প্রবাহ নিম্নরূপ:

  1. চেকআউট সেশন তৈরি করুন: ব্যবহারকারী এবং ঐচ্ছিকভাবে একজন এজেন্ট সেশনে আইটেম যোগ করার জন্য একটি লুপে আছেন।
  2. গুগল ইউআই-তে হস্তান্তর: ব্যবহারকারী চেকআউট করার সিদ্ধান্ত নিলে এজেন্ট (যদি নিযুক্ত থাকে) নিয়ন্ত্রণটি গুগল ইউআই-তে হস্তান্তর করে (চেকআউট সেশন ডেটা প্রেরণ করে)
  3. ম্যানুয়াল চেকআউট: ব্যবহারকারী এখন শুধুমাত্র Google UI এর সাথে যোগাযোগ করে সংবেদনশীল পূরণ এবং অর্থপ্রদানের বিবরণ পূরণ করে অর্ডার জমা দেয়। এজেন্ট এই অংশে জড়িত নয়, যা নির্ধারণ নিশ্চিত করে।
  4. সম্পূর্ণকরণ এবং ফেরত: অর্ডার নিশ্চিত করার জন্য Google UI একটি "ধন্যবাদ" পৃষ্ঠা দেখায়। ঐচ্ছিকভাবে, ব্যবহারকারীকে এজেন্টের কাছে পুনঃনির্দেশিত করা যেতে পারে, যাকে ইতিমধ্যেই সম্পূর্ণ ক্রয়ের বিষয়ে অবহিত করা হতে পারে।

নিম্নলিখিত ধাপগুলি আপনার বাস্তবায়নের জন্য প্রয়োজনীয় API এন্ডপয়েন্ট এবং তাদের আচরণ বর্ণনা করে।

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

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

  • শেষবিন্দু: POST /checkout-sessions
  • ট্রিগার: ব্যবহারকারী কোনও পণ্যের উপর "কিনুন" ক্লিক করেন।

অনুরোধ: গুগল লাইন আইটেম এবং মুদ্রা পাঠায়।

{
  "line_items": [
    {
      "item": {
        "id": "product_12345", // Must match Product Feed ID
        "title": "Running Shoes"
      },
      "quantity": 1
    }
  ],
  "currency": "USD"
}

উত্তর: আপনি মোট, কর (প্রাথমিকভাবে আনুমানিক) এবং পেমেন্ট ক্ষমতা সহ প্রাথমিক সেশনটি ফেরত দেবেন। আপনাকে অবশ্যই আপনার পরিষেবার শর্তাবলী এবং গোপনীয়তা নীতির লিঙ্কগুলি অন্তর্ভুক্ত করতে হবে, যা পেমেন্ট বোতামের নীচে লিঙ্ক করা হবে।

{
  "ucp": {
    "version": "2026-01-11",
    "capabilities": [
      {
        "name": "dev.ucp.shopping.checkout",
        "version": "2026-01-11"
      },
      {
        "name": "dev.ucp.shopping.fulfillment",
        "version": "2026-01-11"
      }
    ]
  },
  "id": "gid://merchant.example.com/Checkout/session_abc123",
  "status": "incomplete",
  "line_items": [
    {
      "id": "line_1",
      "item": {
        "id": "product_12345",
        "title": "Running Shoes",
        "price": 10000
      },
      "quantity": 1,
      "base_amount": 10000,
      "subtotal": 10000,
      "total": 10000
    }
  ],
  "totals": [
    { "type": "subtotal", "amount": 10000 }, // in cents
    { "type": "tax", "amount": 0 },
    { "type": "total", "amount": 10000 }
  ],
  "payment": {
    "handlers": [
      {
        "id": "gpay",
        "name": "com.google.pay",
        "config": {
           "api_version": 2,
           "api_version_minor": 0,
           "merchant_info": {
             "merchant_id": "12345678901234567890",
             "merchant_name": "Example Merchant"
           },
           "allowed_payment_methods": [
             {
               "type": "CARD",
               "parameters": {
                 "allowed_auth_methods": ["PAN_ONLY", "CRYPTOGRAM_3DS"],
                 "allowed_card_networks": ["VISA", "MASTERCARD"]
               },
               "tokenization_specification": {
                 "type": "PAYMENT_GATEWAY",
                 "parameters": {
                   "gateway": "stripe",
                   "gateway_merchant_id": "exampleGatewayMerchantId"
                 }
               }
             }
           ]
        }
      }
    ]
  },
  "links": [
    { "type": "privacy_policy", "url": "https://m.com/privacy" },
    { "type": "terms_of_service", "url": "https://m.com/terms" }
  ]
}

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

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

  • শেষবিন্দু: GET /checkout-sessions/{id}

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

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

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

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

  • শেষবিন্দু: PUT /checkout-sessions/{id}
  • ট্রিগার: ব্যবহারকারী তাদের শিপিং ঠিকানা নির্বাচন বা পরিবর্তন করে, তাদের শিপিং নির্বাচন আপডেট করে, অথবা তাদের পেমেন্ট তথ্য আপডেট করে।

অনুরোধ: গুগল আপডেট করা তথ্য সহ সম্পূর্ণ চেকআউট অবজেক্ট পাঠায়।

{
  "id": "gid://merchant.example.com/Checkout/session_abc123",
  "buyer": {
      "first_name": "John",
      "last_name": "Doe",
      "email": "john@example.com"
  },
  "fulfillment": {
     "methods": [
       {
         "type": "shipping",
         "destinations": [
           {
             "id": "dest_1",
             "postal_code": "94043",
             "country": "US",
             "address_locality": "Mountain View",
             "address_region": "CA"
           }
         ],
         "selected_destination_id": "dest_1"
       }
     ]
  },
  "payment": {
    "selected_instrument_id": "pi_gpay_5678",
    "instruments": [
      {
        "id": "pi_gpay_5678",
        "handler_id": "gpay",
        "type": "card",
        "brand": "mastercard",
        "last_digits": "5678",
        "rich_text_description": "Google Pay •••• 5678"
      }
    ]
  }
  // ... other fields (line_items, currency, etc.)
}

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

{
  "id": "gid://merchant.example.com/Checkout/session_abc123",
  "totals": [
     { "type": "subtotal", "amount": 10000 },
     { "type": "shipping", "display_text": "Ground Shipping", "amount": 500 },
     { "type": "tax", "amount": 850 },
     { "type": "total", "amount": 11350 }
  ],

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

  "fulfillment": {
      "methods": [
          {
            "id": "method_shipping",
            "type": "shipping",
            "line_item_ids": ["line_1"],
            "selected_destination_id": "dest_1",
            "destinations": [
               {
                 "id": "dest_1",
                 "postal_code": "94043",
                 "country": "US",
                 "address_locality": "Mountain View",
                 "address_region": "CA"
               }
            ],
            "groups": [
              {
                "id": "group_1",
                "line_item_ids": ["line_1"],
                "selected_option_id": "ship_ground",
                "options": [
                  {
                    "id": "ship_ground",
                    "title": "Ground (3-5 days)",
                    "total": 500
                  },
                  {
                    "id": "ship_express",
                    "title": "Express (1-2 days)",
                    "total": 1500
                  }
                ]
              }
            ]
          }
      ]
  }
}

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

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

  • শেষবিন্দু: POST /checkout-sessions/{id}/complete
  • ট্রিগার: ব্যবহারকারী "অর্ডার দিন" এ ক্লিক করেন।

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

{
  "payment_data": {
    "id": "pi_gpay_5678",
    "handler_id": "gpay",
    "type": "card",
    "brand": "mastercard",
    "last_digits": "5678",
    "billing_address": {
      "postal_code": "94043",
      "address_country": "US"
    },
    "credential": {
       "type": "PAYMENT_GATEWAY",
       "token": "{\"signature\":\"...\",\"protocolVersion\":\"ECv2\"...}"
    }
  }
}

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

{
  "ucp": {
      "version": "2026-01-11",
      "capabilities": [...]
  },
  "id": "gid://merchant.example.com/Checkout/session_abc123",
  "status": "completed",

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

  "order_id": "gid://merchant.example.com/Order/789",
  "order_permalink_url": "https://merchant.example.com/orders/789"
}

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

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

  • শেষবিন্দু: POST /checkout-sessions/{id}/cancel

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

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