রিয়েল-টাইম ডেভেলপার বিজ্ঞপ্তি রেফারেন্স গাইড

এই ডকুমেন্টে Google Play থেকে আপনি যে ধরণের রিয়েল-টাইম ডেভেলপার বিজ্ঞপ্তি পেতে পারেন তার তালিকা এবং বর্ণনা রয়েছে।

এনকোডিং

ক্লাউড পাব/সাব টপিকে করা প্রতিটি পোস্টে একটি একক base64-এনকোডেড ডেটা ফিল্ড থাকে।

{
  "message": {
    "attributes": {
      "key": "value"
    },
    "data": "eyAidmVyc2lvbiI6IHN0cmluZywgInBhY2thZ2VOYW1lIjogc3RyaW5nLCAiZXZlbnRUaW1lTWlsbGlzIjogbG9uZywgIm9uZVRpbWVQcm9kdWN0Tm90aWZpY2F0aW9uIjogT25lVGltZVByb2R1Y3ROb3RpZmljYXRpb24sICJzdWJzY3JpcHRpb25Ob3RpZmljYXRpb24iOiBTdWJzY3JpcHRpb25Ob3RpZmljYXRpb24sICJ0ZXN0Tm90aWZpY2F0aW9uIjogVGVzdE5vdGlmaWNhdGlvbiB9",
    "messageId": "136969346945"
  },
  "subscription": "projects/myproject/subscriptions/mysubscription"
}

base64-এনকোডেড ডেটা ফিল্ডটি ডিকোড করার পরে, DeveloperNotification এ নিম্নলিখিত ফিল্ডগুলি থাকবে:

{
  "version": string,
  "packageName": string,
  "eventTimeMillis": long,
  "oneTimeProductNotification": OneTimeProductNotification,
  "subscriptionNotification": SubscriptionNotification,
  "voidedPurchaseNotification": VoidedPurchaseNotification,
  "testNotification": TestNotification
}

এই ক্ষেত্রগুলি নিম্নলিখিত সারণীতে বর্ণনা করা হয়েছে।

সম্পত্তির নাম মূল্য বিবরণ
সংস্করণ স্ট্রিং এই বিজ্ঞপ্তির সংস্করণ। প্রাথমিকভাবে, এটি "1.0"। এই সংস্করণটি অন্যান্য সংস্করণ ক্ষেত্র থেকে আলাদা।
প্যাকেজের নাম স্ট্রিং এই বিজ্ঞপ্তিটি যে অ্যাপ্লিকেশনের সাথে সম্পর্কিত তার প্যাকেজের নাম (উদাহরণস্বরূপ, `com.some.thing`)।
ইভেন্টটাইমমিলিস দীর্ঘ যুগের পর থেকে মিলিসেকেন্ডে ঘটনাটি সংঘটিত হওয়ার সময়কালের টাইমস্ট্যাম্প।
সাবস্ক্রিপশনবিজ্ঞপ্তি সাবস্ক্রিপশনবিজ্ঞপ্তি যদি এই ক্ষেত্রটি উপস্থিত থাকে, তাহলে এই বিজ্ঞপ্তিটি একটি সাবস্ক্রিপশনের সাথে সম্পর্কিত, এবং এই ক্ষেত্রটিতে সাবস্ক্রিপশন সম্পর্কিত অতিরিক্ত তথ্য রয়েছে। মনে রাখবেন যে এই ক্ষেত্রটি oneTimeProductNotification, voidedPurchaseNotification এবং testNotification এর সাথে পারস্পরিকভাবে একচেটিয়া।
oneTimeProductNotification সম্পর্কে OneTimeProductNotification সম্পর্কে যদি এই ক্ষেত্রটি উপস্থিত থাকে, তাহলে এই বিজ্ঞপ্তিটি এককালীন ক্রয়ের সাথে সম্পর্কিত, এবং এই ক্ষেত্রটিতে ক্রয়ের সাথে সম্পর্কিত অতিরিক্ত তথ্য রয়েছে। মনে রাখবেন যে এই ক্ষেত্রটি subscriptionNotification, voidedPurchaseNotification এবং testNotification এর সাথে পারস্পরিকভাবে একচেটিয়া।
voidedPurchaseNotification সম্পর্কে অকার্যকর ক্রয়বিজ্ঞপ্তি যদি এই ক্ষেত্রটি উপস্থিত থাকে, তাহলে এই বিজ্ঞপ্তিটি একটি বাতিল ক্রয়ের সাথে সম্পর্কিত, এবং এই ক্ষেত্রটিতে বাতিল ক্রয়ের সাথে সম্পর্কিত অতিরিক্ত তথ্য রয়েছে। মনে রাখবেন যে এই ক্ষেত্রটি oneTimeProductNotification, subscriptionNotification এবং testNotification এর সাথে পারস্পরিকভাবে একচেটিয়া।
পরীক্ষাবিজ্ঞপ্তি পরীক্ষা বিজ্ঞপ্তি যদি এই ক্ষেত্রটি উপস্থিত থাকে, তাহলে এই বিজ্ঞপ্তিটি একটি পরীক্ষামূলক প্রকাশনার সাথে সম্পর্কিত। এগুলি শুধুমাত্র Google Play Developer Console এর মাধ্যমে পাঠানো হয়। মনে রাখবেন যে এই ক্ষেত্রটি oneTimeProductNotification, subscriptionNotification এবং voidedPurchaseNotification এর সাথে পারস্পরিকভাবে একচেটিয়া।

সাবস্ক্রিপশনবিজ্ঞপ্তি

একটি SubscriptionNotification নিম্নলিখিত ক্ষেত্রগুলি থাকে:

{
  "version": string,
  "notificationType": int,
  "purchaseToken": string
}
সম্পত্তির নাম মূল্য বিবরণ
সংস্করণ স্ট্রিং এই বিজ্ঞপ্তির সংস্করণ। প্রাথমিকভাবে, এটি "1.0"। এই সংস্করণটি অন্যান্য সংস্করণ ক্ষেত্র থেকে আলাদা।
বিজ্ঞপ্তির ধরণ int-এর বিবরণ সাবস্ক্রিপশনের জন্য notificationType-এর নিম্নলিখিত মান থাকতে পারে:
  • (১) SUBSCRIPTION_RECOVERED - অ্যাকাউন্ট হোল্ড থেকে একটি সাবস্ক্রিপশন পুনরুদ্ধার করা হয়েছে অথবা বিরতি থেকে পুনরায় শুরু করা হয়েছে।
  • (২) SUBSCRIPTION_RENEED - একটি সক্রিয় সাবস্ক্রিপশন পুনর্নবীকরণ করা হয়েছে।
  • (৩) সাবস্ক্রিপশন_ক্যান্সেলড - একটি সাবস্ক্রিপশন স্বেচ্ছায় বা অনিচ্ছাকৃতভাবে বাতিল করা হয়েছে। স্বেচ্ছায় বাতিলের জন্য, ব্যবহারকারী বাতিল করলে পাঠানো হবে।
  • (৪) সাবস্ক্রিপশন_ক্রয় - একটি নতুন সাবস্ক্রিপশন কেনা হয়েছে।
  • (৫) SUBSCRIPTION_ON_HOLD - একটি সাবস্ক্রিপশন অ্যাকাউন্ট হোল্ডে প্রবেশ করেছে (যদি সক্ষম থাকে)।
  • (6) SUBSCRIPTION_IN_GRACE_PERIOD - একটি সাবস্ক্রিপশন গ্রেস পিরিয়ডে প্রবেশ করেছে (যদি সক্ষম থাকে)।
  • (৭) SUBSCRIPTION_RESTARTED - ব্যবহারকারী Play > অ্যাকাউন্ট > সাবস্ক্রিপশন থেকে তাদের সাবস্ক্রিপশন পুনরুদ্ধার করেছেন। সাবস্ক্রিপশন বাতিল করা হয়েছিল কিন্তু ব্যবহারকারী যখন পুনরুদ্ধার করেন তখনও মেয়াদ শেষ হয়নি। আরও তথ্যের জন্য, পুনরুদ্ধার দেখুন।
  • (8) SUBSCRIPTION_PRICE_CHANGE_CONFIRMED (অবঞ্চিত) - ব্যবহারকারী সাবস্ক্রিপশনের মূল্য পরিবর্তন সফলভাবে নিশ্চিত করেছেন।
  • (9) SUBSCRIPTION_DEFERRED - একটি সাবস্ক্রিপশনের পুনরাবৃত্তির সময় বাড়ানো হয়েছে।
  • (১০) সাবস্ক্রিপশন_পজড - একটি সাবস্ক্রিপশন পজ করা হয়েছে।
  • (১১) SUBSCRIPTION_PAUSE_SCHEDULE_CHANGED - একটি সাবস্ক্রিপশন বিরতির সময়সূচী পরিবর্তন করা হয়েছে।
  • (১২) SUBSCRIPTION_REVOKED - মেয়াদ শেষ হওয়ার আগেই ব্যবহারকারীর কাছ থেকে একটি সাবস্ক্রিপশন প্রত্যাহার করা হয়েছে।
  • (১৩) SUBSCRIPTION_EXPIRED - একটি সাবস্ক্রিপশনের মেয়াদ শেষ হয়ে গেছে।
  • (১৭) SUBSCRIPTION_ITEMS_CHANGED - একটি সাবস্ক্রিপশন বান্ডেলের একটি আইটেম পরিবর্তন করা হয়েছে।
  • (১৮) সাবস্ক্রিপশন_ক্যান্সেলেশন_শিডিউল - প্রতিশ্রুতির মেয়াদ শেষে কিস্তিতে সাবস্ক্রিপশন বাতিল করার সময়সূচী কার্যকর হবে।
  • (১৯) SUBSCRIPTION_PRICE_CHANGE_UPDATED - একটি সাবস্ক্রিপশন আইটেমের মূল্য পরিবর্তনের বিবরণ আপডেট করা হয়।
  • (২০) SUBSCRIPTION_PENDING_PURCHASE_CANCELED - একটি সাবস্ক্রিপশনের মুলতুবি থাকা লেনদেন বাতিল করা হয়েছে।
  • (২২) SUBSCRIPTION_PRICE_STEP_UP_CONSENT_UPDATED - মূল্য বৃদ্ধির জন্য সাবস্ক্রিপশনের সম্মতির সময়কাল শুরু হয়েছে অথবা ব্যবহারকারী মূল্য বৃদ্ধির জন্য সম্মতি প্রদান করেছেন। এই RTDN শুধুমাত্র সেই অঞ্চলের সাবস্ক্রিপশনের জন্য পাঠানো হয় যেখানে মূল্য বৃদ্ধি প্রয়োজন।
ক্রয় টোকেন স্ট্রিং সাবস্ক্রিপশন কেনার সময় ব্যবহারকারীর ডিভাইসে প্রদত্ত টোকেন।

উদাহরণ

নতুন সাবস্ক্রিপশন কেনার জন্য বিজ্ঞপ্তির একটি উদাহরণ এখানে দেওয়া হল:

{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503349566168",
  "subscriptionNotification":
  {
    "version":"1.0",
    "notificationType":4,
    "purchaseToken":"PURCHASE_TOKEN"
  }
}

OneTimeProductNotification সম্পর্কে

একটি OneTimeProductNotification নিম্নলিখিত ক্ষেত্রগুলি থাকে:

{
  "version": string,
  "notificationType": int,
  "purchaseToken": string,
  "sku": string
}
সম্পত্তির নাম মূল্য বিবরণ
সংস্করণ স্ট্রিং এই বিজ্ঞপ্তির সংস্করণ। প্রাথমিকভাবে, এটি "1.0" হবে। এই সংস্করণটি অন্যান্য সংস্করণ ক্ষেত্র থেকে আলাদা।
বিজ্ঞপ্তির ধরণ int-এর বিবরণ বিজ্ঞপ্তির ধরণ। এর নিম্নলিখিত মান থাকতে পারে:
  • (১) ONE_TIME_PRODUCT_PURCHASED - একজন ব্যবহারকারী একটি এককালীন পণ্য সফলভাবে কিনেছেন।
  • (২) ONE_TIME_PRODUCT_CANCELED - ব্যবহারকারীর দ্বারা একটি মুলতুবি থাকা এককালীন পণ্য ক্রয় বাতিল করা হয়েছে।
ক্রয় টোকেন স্ট্রিং ক্রয় করার সময় ব্যবহারকারীর ডিভাইসে প্রদত্ত টোকেন।
স্কু স্ট্রিং কেনা এককালীন পণ্য আইডি (উদাহরণস্বরূপ, "sword_001")

উদাহরণ

নতুন এককালীন কেনাকাটার জন্য বিজ্ঞপ্তির একটি উদাহরণ এখানে দেওয়া হল:

{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503349566168",
  "oneTimeProductNotification":
  {
    "version":"1.0",
    "notificationType":1,
    "purchaseToken":"PURCHASE_TOKEN",
    "sku":"my.sku"
  }
}

অকার্যকর ক্রয়বিজ্ঞপ্তি

একটি VoidedPurchaseNotification নিম্নলিখিত ক্ষেত্রগুলি থাকে:

সম্পত্তির নাম

মূল্য

বিবরণ

purchaseToken

string

বাতিল করা ক্রয়ের সাথে সম্পর্কিত টোকেন। নতুন ক্রয়ের সময় এই তথ্য ডেভেলপারকে প্রদান করা হয়।

orderId

string

বাতিল করা লেনদেনের সাথে সম্পর্কিত অনন্য অর্ডার আইডি। একবারের কেনাকাটার জন্য, এটিই একমাত্র অর্ডার আইডি যা ক্রয়ের জন্য তৈরি করা হয়। স্বয়ংক্রিয়ভাবে পুনর্নবীকরণ করা সাবস্ক্রিপশনের জন্য, প্রতিটি পুনর্নবীকরণ লেনদেনের জন্য একটি নতুন অর্ডার আইডি তৈরি করা হয়।

productType

int

একটি বাতিল ক্রয়ের জন্য productType নিম্নলিখিত মান থাকতে পারে:

  • (১) PRODUCT_TYPE_SUBSCRIPTION - একটি সাবস্ক্রিপশন ক্রয় বাতিল করা হয়েছে।
  • (২) PRODUCT_TYPE_ONE_TIME - একটি এককালীন ক্রয় বাতিল করা হয়েছে।

refundType

int

বাতিলকৃত ক্রয়ের জন্য refundType নিম্নলিখিত মান থাকতে পারে:

  • (১) REFUND_TYPE_FULL_REFUND - ক্রয়টি সম্পূর্ণরূপে বাতিল করা হয়েছে।
  • (২) REFUND_TYPE_QUANTITY_BASED_PARTIAL_REFUND - পরিমাণ-ভিত্তিক আংশিক ফেরতের মাধ্যমে ক্রয়টি আংশিকভাবে বাতিল করা হয়েছে, যা কেবলমাত্র বহু-পরিমাণ ক্রয়ের ক্ষেত্রে প্রযোজ্য। একটি ক্রয় একাধিকবার আংশিকভাবে বাতিল করা যেতে পারে।

মনে রাখবেন যখন একাধিক পরিমাণের ক্রয়ের অবশিষ্ট মোট পরিমাণ ফেরত দেওয়া হয়, তখন refundType হবে REFUND_TYPE_FULL_REFUND

উদাহরণ

একটি নতুন বাতিলকৃত ক্রয়ের বিজ্ঞপ্তির একটি উদাহরণ এখানে দেওয়া হল:

{
  "version":"1.0",
  "packageName":"com.some.app",
  "eventTimeMillis":"1503349566168",
  "voidedPurchaseNotification":
  {
    "purchaseToken":"PURCHASE_TOKEN",
    "orderId":"GS.0000-0000-0000",
    "productType":1
    "refundType":1
  }
}

ভয়েডপারচেজনোটিফিকেশন গ্রহণ

যখন আপনার RTDN ক্লায়েন্ট একটি VoidedPurchaseNotification পায়, তখন নিম্নলিখিত তথ্যগুলি নোট করুন:

  • packageName : অ্যাপটি সনাক্ত করে।
  • eventTimeMillis : স্ট্যাটাস পরিবর্তনের সময় সম্পর্কে আপনাকে অবহিত করে।
  • purchaseToken : পণ্য কেনার সময় ব্যবহারকারীর ডিভাইসে প্রদত্ত টোকেন।
  • orderId : বাতিল লেনদেনের সাথে সম্পর্কিত অর্ডারটি সনাক্ত করে।
  • productType : বাতিল করা ক্রয়টি অ্যাপ-মধ্যস্থ ক্রয় নাকি সাবস্ক্রিপশন ছিল তা নির্দেশ করে।
  • refundType : ক্রয় বাতিল করে এমন রিফান্ডের ধরণ নির্দিষ্ট করে।

পরীক্ষা বিজ্ঞপ্তি

একটি TestNotification নিম্নলিখিত ক্ষেত্রগুলি থাকে:

{
  "version": string
}
সম্পত্তির নাম মূল্য বিবরণ
সংস্করণ স্ট্রিং এই বিজ্ঞপ্তির সংস্করণ। প্রাথমিকভাবে, এটি "1.0"। এই সংস্করণটি অন্যান্য সংস্করণ ক্ষেত্র থেকে আলাদা।

উদাহরণ

এখানে একটি পরীক্ষামূলক বিজ্ঞপ্তির একটি উদাহরণ দেওয়া হল:

{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503350156918",
  "testNotification":
  {
    "version":"1.0"
  }
}