টোকেন জীবনচক্র ব্যবস্থাপনার বিজ্ঞপ্তি

সংক্ষিপ্ত বিবরণ

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

মার্চেন্ট টোকেন আপডেট বিজ্ঞপ্তি অনুরোধ

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

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

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

এই বিজ্ঞপ্তিটি সফলভাবে বিতরণ না হলে, পরবর্তী চেষ্টাগুলোর ক্ষেত্রেও এটি অপরিবর্তিত থাকবে।

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

এই নোটিফিকেশনের জন্য উদ্দিষ্ট URL। আপনাকে অবশ্যই নিশ্চিত করতে হবে যে Google Pay থেকে টোকেন LCM নোটিফিকেশন পাওয়ার জন্য এই URL-টিই আপনার উদ্দিষ্ট এন্ডপয়েন্ট।

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

এই নোটিফিকেশনটি মূলত কখন তৈরি করা হয়েছিল তার টাইমস্ট্যাম্প। পরবর্তী চেষ্টাগুলোর ক্ষেত্রেও এটি একই থাকবে।

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

apiVersion int প্রয়োজনীয় এপিআই প্রধান সংস্করণ।
apiVersionMinor int প্রয়োজনীয় এপিআই ক্ষুদ্র সংস্করণ।
merchantTokenId স্ট্রিং প্রয়োজনীয় আপডেট সহ মার্চেন্ট টোকেন আইডি। এটি সেই আইডি যা মূলত ফেরত দেওয়া হয়েছিল যখন ব্যবহারকারী এমআইটি-এর জন্য গুগল পে ফ্লো সম্পন্ন করেছিলেন। এটি এনক্রিপ্টেড পেলোডের মধ্যে থাকা একটি ফিল্ড, যা পাঠানো হয়। Card বস্তু।
cardUpdateInfo কার্ডআপডেটইনফো প্রয়োজনীয় টোকেনটির জন্য আপডেট রয়েছে।

কার্ডআপডেটইনফো

সম্পত্তি প্রকার প্রয়োজনীয়তা বর্ণনা
fpanSuffix স্ট্রিং শর্তসাপেক্ষ

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

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

পরিবর্তন না হলে তা উপস্থিত থাকে না।

tokenState স্ট্রিং(এনাম) শর্তসাপেক্ষ

প্রাথমিক লেনদেন বা পূর্ববর্তী বিজ্ঞপ্তির পর টোকেনটির কোনো পরিবর্তন হয়ে থাকলে, তার নতুন অবস্থা।

পরিবর্তন না হলে তা উপস্থিত থাকে না।

বৈধ মান হলো DISABLED

মার্চেন্ট টোকেন আপডেট নোটিফিকেশন প্রতিক্রিয়া

HTTP প্রতিক্রিয়া কোড

HTTP প্রতিক্রিয়া কোড ব্যবহার
২০০ নোটিফিকেশনটি সফলভাবে গৃহীত হয়েছে। পরবর্তী টেবিলে বর্ণিত পদ্ধতি অনুযায়ী, রেসপন্স বডিতে একটি JSON অবজেক্ট হিসেবে অতিরিক্ত স্ট্যাটাস তথ্য প্রদান করা যেতে পারে।
৪০১ MerchantTokenUpdateNotificationRequest এ থাকা targetNotificationUrl টি অবৈধ। এই টোকেনের জন্য ভবিষ্যতের সমস্ত বিজ্ঞপ্তি নিষ্ক্রিয় করা যেতে পারে।
৫xx সাময়িক সার্ভার ত্রুটি। বিজ্ঞপ্তিটি পরবর্তীতে আবার পাঠানো হবে।
অন্যান্য পুনরায় পাঠানো যাবে না এমন ত্রুটি। বিজ্ঞপ্তিটি পরবর্তীতে আর পাঠানো উচিত নয়।
সম্পত্তি প্রকার প্রয়োজনীয়তা বর্ণনা
requestMessageId স্ট্রিং প্রয়োজনীয়

অনুরোধ থেকে তৈরি হওয়া মেসেজ আইডি।

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

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

মার্চেন্ট বা পেমেন্ট সার্ভিস প্রোভাইডার (পিএসপি) একটি স্ট্যাটাস জানাতে পারে, যা নোটিফিকেশনটি গ্রহণ এবং টোকেনটির ব্যবহারের বিষয়টি প্রতিফলিত করে।

বৈধ মানগুলি হলো:

  • SUCCESS
  • TOKEN_NOT_IN_USE
  • TOKEN_NOT_FOUND

উদাহরণ

জীবনচক্র বিজ্ঞপ্তি

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

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

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
    "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 এন্ডপয়েন্ট দিয়ে পরীক্ষা করুন

টেস্ট মোডে, গুগল পে আপনার tokenUpdateUrl এ একটি টোকেন এলসিএম নোটিফিকেশন পাঠায়। এটি চালু করতে, এই ধাপগুলো অনুসরণ করুন:

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