টোকেন লাইফসাইকেল ম্যানেজমেন্ট সংক্রান্ত বিজ্ঞপ্তি

এক নজরে

ভবিষ্যতের টোকেন লাইফসাইকেল ম্যানেজমেন্ট (LCM) বিজ্ঞপ্তি Google Pay Online API থেকে tokenUpdateUrl-এ পাঠানো হয় যা আসল ট্রানজ্যাকশনের সময় প্রদান করা হয়। কোনও টোকেন বন্ধ বা মুছে দেওয়া হলে এগুলি পাঠানো হয়। এছাড়াও, ডেলিভারি না হলে আবার চেষ্টা করার মাধ্যমে যথাসম্ভব দ্রুত ডেলিভার করা হয়। ব্যবহারকারী Google Wallet থেকে কার্ড সরিয়ে দিলে LCM ফ্লো কেমন হয় তার উদাহরণ এখানে দেওয়া হল:

MerchantTokenUpdateNotificationRequest

Google Pay Online API থেকে একটি HTTP POST মেসেজ, একটি JSON বডি বহন করে যা একটি এনক্রিপ্ট করা পেলোডকে এনক্যাপসুলেট করে। আপনার শেয়ার করা পাবলিক এনক্রিপশন কী দিয়ে পে-লোড এনক্রিপ্ট করা হয় এবং Google-এর ব্যক্তিগত কী দিয়ে সাইন করা হয়। আপনি নিজের ব্যক্তিগত এনক্রিপশন কী দিয়ে ডিক্রিপ্ট করতে এবং Google-এর রুট সাইনিং কী দিয়ে যাচাই করতে পারবেন। এই এনক্রিপ্ট করা পেলোড র‍্যাপার ফর্ম্যাটটি আপনি PaymentMethodToken হিসেবে যা পেতে পারেন তার মতোই। এই LCM বিজ্ঞপ্তি ডিক্রিপ্ট করতে আপনি একই লাইব্রেরি ব্যবহার করতে পারবেন। এনক্রিপ্ট করা পেলোডের মধ্যে, একটি MerchantTokenUpdateNotificationRequest অবজেক্ট আছে যেমন এখানে বিস্তারিতভাবে বলা হয়েছে।

প্রপার্টি ধরন প্রয়োজনীয়তা বিবরণ
messageId স্ট্রিং প্রয়োজনীয়

মেসেজ ডিডুপ্লিকেট করতে এবং ডিবাগ করার উদ্দেশ্যে এই বিজ্ঞপ্তির অনন্য আইডি।

এই বিজ্ঞপ্তিটি সফলভাবে ডেলিভার করা না হলে, ভবিষ্যতে আবার চেষ্টা করার জন্য এটি একই থাকে।

targetNotificationUrl স্ট্রিং প্রয়োজনীয়

এই বিজ্ঞপ্তির জন্য উদ্দিষ্ট URL। আপনাকে কনফার্ম করতে হবে যে এই URL-ই হল আপনার কাঙ্ক্ষিত এন্ডপয়েন্ট যেখানে Google Pay থেকে টোকেন LCM বিজ্ঞপ্তি পাবেন।

timestamp স্ট্রিং প্রয়োজনীয়

এই বিজ্ঞপ্তিটি কখন তৈরি করা হয়েছিল তার টাইমস্ট্যাম্প। ভবিষ্যতে আবার চেষ্টা করার জন্য এটি একই থাকে।

আপনি একই টোকেন আইডির জন্য একাধিক বিজ্ঞপ্তি পেলে, শুধুমাত্র লেটেস্ট টাইমস্ট্যাম্প সহ বিজ্ঞপ্তিটি সঠিক বলে বিবেচনা করা হয়।

apiVersion int প্রয়োজনীয় API-এর মেজর ভার্সন।
apiVersionMinor int প্রয়োজনীয় API মাইনর ভার্সন।
merchantTokenId স্ট্রিং প্রয়োজনীয় আপডেট সহ মার্চেন্ট টোকেন আইডি। এটি হল সেই আইডি যা ব্যবহারকারী MIT-এর জন্য Google Pay ফ্লো সম্পূর্ণ করার সময় প্রথমে ফেরত দেওয়া হয়েছিল। এটি এনক্রিপ্ট করা পেলোডের মধ্যে একটি ফিল্ড, যা Card অবজেক্ট।
cardUpdateInfo CardUpdateInfo প্রয়োজনীয় টোকেনের জন্য আপডেট রয়েছে।

CardUpdateInfo

প্রপার্টি ধরন প্রয়োজনীয়তা বিবরণ
fpanSuffix স্ট্রিং সংযোজক অব্যয়

ব্যবহারকারীদের ফান্ডিং প্রাথমিক অ্যাকাউন্ট নম্বর (FPAN) শনাক্ত করতে সাহায্য করার জন্য একটি বিবরণ। এটি চার সংখ্যার স্ট্রিং যাতে FPAN-এর শেষ চারটি অক্ষর থাকে।

এটি থাকলে, টোকেন স্টেট অ্যাক্টিভ আছে বলে ধরে নেওয়া যেতে পারে।

কোনও পরিবর্তন না হলে এটি দেখানো হয় না।

tokenState স্ট্রিং(enum) সংযোজক অব্যয়

প্রাথমিক ট্রানজ্যাকশন বা আগের বিজ্ঞপ্তির পর থেকে টোকেনের স্ট্যাটাস পরিবর্তন হয়ে থাকলে, টোকেনের নতুন স্ট্যাটাস।

কোনও পরিবর্তন না হলে এটি দেখানো হয় না।

সঠিক ভ্যালু হল DISABLED।

MerchantTokenUpdateNotificationResponse

HTTP রেসপন্স কোড

HTTP রেসপন্স কোড ব্যবহার
200 বিজ্ঞপ্তিটি সফলভাবে পাওয়া গেছে। পরবর্তী টেবিলে যেমন বর্ণনা করা হয়েছে, সেই অনুযায়ী JSON অবজেক্ট হিসেবে রেসপন্স বডিতে স্ট্যাটাস সংক্রান্ত অতিরিক্ত তথ্য প্রদান করা যেতে পারে।
401 MerchantTokenUpdateNotificationRequest-এ targetNotificationUrl সঠিক নয়। এই টোকেনের জন্য ভবিষ্যতের সব বিজ্ঞপ্তি বন্ধ করা যেতে পারে।
5xx সার্ভারে সাময়িক সমস্যা। বিজ্ঞপ্তিটি পরে আবার পাঠানো উচিত।
অন্যান্য এমন সমস্যা যার সমাধান করা যাবে না। পরে বিজ্ঞপ্তিটি আবার পাঠানো উচিত নয়।
প্রপার্টি ধরন প্রয়োজনীয়তা বিবরণ
requestMessageId স্ট্রিং প্রয়োজনীয়

অনুরোধ থেকে জেনারেট করা মেসেজ আইডি।

এটি অবশ্যই অনুরোধের মেসেজ আইডির সাথে মিলতে হবে, অন্যথায় উত্তরটি উপেক্ষা করা যেতে পারে এবং এই টোকেনের জন্য ভবিষ্যতের বিজ্ঞপ্তি বন্ধ করা হবে।

status স্ট্রিং(enum) প্রয়োজনীয়

মার্চেন্ট বা পেমেন্ট সার্ভিস প্রোভাইডার (PSP) এমন একটি স্ট্যাটাস পাঠাতে পারে যা থেকে বোঝা যায় যে তারা বিজ্ঞপ্তিটি গ্রহণ করেছে এবং টোকেনটি ব্যবহার করেছে।

সঠিক ভ্যালু হল:

  • SUCCESS
  • TOKEN_NOT_IN_USE
  • TOKEN_NOT_FOUND

উদাহরণ

লাইফসাইকেল বিজ্ঞপ্তি

বিজ্ঞপ্তির অনুরোধ

এটি হল HTTP POST অনুরোধ যাতে টোকেন LCM বিজ্ঞপ্তি থাকে, যা Google Pay থেকে আপনার এন্ডপয়েন্টে পাঠানো হয়। বডি হল এনক্রিপ্ট করা পেলোড।

HTTP অনুরোধ

  HTTP POST /token/notification/123
  Host: api.merchant.com
  Content-Type: application/json

  {
    "protocolVersion":"ECv2",
    "signature":"MEQCIH6Q4OwQ0jAceFEkGF0JID6sJNXxOEi4r+mA7biRxqBQAiAondqoUpU/bdsrAOpZIsrHQS9nwiiNwOrr24RyPeHA0Q\u003d\u003d",
    "intermediateSigningKey":{
      "signedKey": "{\"keyExpiration\":\"1542323393147\",\"keyValue\":\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/1+3HBVSbdv+j7NaArdgMyoSAM43yRydzqdg1TxodSzA96Dj4Mc1EiKroxxunavVIvdxGnJeFViTzFvzFRxyCw\\u003d\\u003d\"}",
      "signatures": ["MEYCIQCO2EIi48s8VTH+ilMEpoXLFfkxAwHjfPSCVED/QDSHmQIhALLJmrUlNAY8hDQRV/y1iKZGsWpeNmIP+z+tCQHQxP0v"]
    },
    "signedMessage":"{\"tag\":\"jpGz1F1Bcoi/fCNxI9n7Qrsw7i7KHrGtTf3NrRclt+U\\u003d\",\"ephemeralPublicKey\":\"BJatyFvFPPD21l8/uLP46Ta1hsKHndf8Z+tAgk+DEPQgYTkhHy19cF3h/bXs0tWTmZtnNm+vlVrKbRU9K8+7cZs\\u003d\",\"encryptedMessage\":\"mKOoXwi8OavZ\"}"
  }

ডিক্রিপ্ট করা MerchantTokenUpdateNotificationRequest

  {  // MerchantTokenUpdateNotificationRequest
    "messageId": "ZlxoWhLC3su",
    "targetNotificationUrl":
      "https://api.merchant.com/token/notification/123",
    "timestamp": "2025-03-28T07:53:12.39Z",
    "apiVersion": 1,
    "apiVersionMinor": 0,
    "merchantTokenId": "123",
    "cardUpdateInfo": {
      "tokenState": "DISABLED"
    }
  }

বিজ্ঞপ্তির উত্তর

  HTTP 200 OK
  Content-Type: application/json

  {  // MerchantTokenUpdateNotificationResponse
    "requestMessageId": "ZlxoWhLC3su",
    "status": "SUCCESS",
  }

আপনার tokenUpdateUrl এন্ডপয়েন্ট দিয়ে পরীক্ষা করুন

টেস্ট মোডে, Google Pay আপনার tokenUpdateUrl-এ টোকেন LCM বিজ্ঞপ্তি পাঠায়। এটি ট্রিগার করতে, এইসব ধাপ অনুসরণ করুন:

  • *TransactionInfo অবজেক্টের সাথে loadPaymentData কল করে একটি টেস্ট ট্রানজ্যাকশন সম্পূর্ণ করুন, আপনার এন্ডপয়েন্ট URL-এর সাথে tokenUpdateUrl ফিল্ড পপুলেট করুন।
  • Google-এর পরিষেবা আপনার এন্ডপয়েন্টে একটি টোকেন LCM বিজ্ঞপ্তি পাঠাবে।
  • আপনার ব্যক্তিগত কী ব্যবহার করে বিজ্ঞপ্তি ডিক্রিপ্ট করতে পারবেন কিনা তা যাচাই করুন। মনে রাখবেন, TEST মোডে, এই বিজ্ঞপ্তি সবসময় কার্ড নম্বরের শেষ ৪টি সংখ্যা পরিবর্তন করে "1234" করে দেবে এবং এতে "tokenState": "DISABLED" থাকবে, অনুরোধে টোকেন যাই থাকুক না কেন।