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

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

এনকোডিং

Cloud Pub/Sub টপিকে প্রতিটি প্রকাশনায় একটি 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,
  "pendingRefundReviewNotification": PendingRefundReviewNotification,
  "testNotification": TestNotification
}

এইসব ফিল্ডের বিবরণ নিম্নলিখিত টেবিলে দেওয়া হয়েছে।

প্রপার্টির নাম মান বর্ণনা
ভার্সন স্ট্রিং এই বিজ্ঞপ্তির ভার্সন। প্রাথমিকভাবে, এটি "1.0" হয়। এই ভার্সনটি অন্যান্য ভার্সন ফিল্ড থেকে আলাদা।
packageName স্ট্রিং এই বিজ্ঞপ্তি যে অ্যাপ্লিকেশনের সাথে সম্পর্কিত, সেটির প্যাকেজের নাম (যেমন, `com.some.thing`)।
eventTimeMillis দীর্ঘ ইভেন্ট ঘটার টাইমস্ট্যাম্প, Epoch থেকে মিলিসেকেন্ডে।
subscriptionNotification SubscriptionNotification

এই ফিল্ড থাকলে, এই বিজ্ঞপ্তি সাবস্ক্রিপশন সম্পর্কিত এবং এই ফিল্ডে সাবস্ক্রিপশন সম্পর্কিত অতিরিক্ত তথ্য থাকে।

মনে রাখবেন যে এই ফিল্ডটি pendingRefundReviewNotification, oneTimeProductNotification, voidedPurchaseNotification এবং testNotification-এর সাথে পারস্পরিকভাবে এক্সক্লুসিভ।

oneTimeProductNotification OneTimeProductNotification

এই ফিল্ডটি থাকলে, এই বিজ্ঞপ্তিটি এক-বার কেনাকাটার সাথে সম্পর্কিত এবং এই ফিল্ডে কেনাকাটা সম্পর্কিত অতিরিক্ত তথ্য থাকে।

মনে রাখবেন যে এই ফিল্ডটি pendingRefundReviewNotification, subscriptionNotification, voidedPurchaseNotification এবং testNotification-এর সাথে মিউচুয়ালি এক্সক্লুসিভ।

voidedPurchaseNotification VoidedPurchaseNotification

এই ফিল্ডটি থাকলে, এই বিজ্ঞপ্তিটি বাতিল করা কেনাকাটার সাথে সম্পর্কিত এবং এই ফিল্ডে বাতিল করা কেনাকাটার সাথে সম্পর্কিত অতিরিক্ত তথ্য থাকে।

মনে রাখবেন, এই ফিল্ডটি pendingRefundReviewNotification, oneTimeProductNotification, subscriptionNotification এবং testNotification-এর সাথে পারস্পরিকভাবে এক্সক্লুসিভ।

pendingRefundReviewNotification PendingRefundReviewNotification

এই ফিল্ডটি থাকলে, এই বিজ্ঞপ্তিটি একটি চার্জব্যাক অনুরোধের সাথে সম্পর্কিত যার জন্য আপনি একটি সমাধান সাজেস্ট করতে পারেন। `ReviewRefund` API কল করে এই বিজ্ঞপ্তির উত্তর দিন।

মনে রাখবেন, এই ফিল্ডটি subscriptionNotification, oneTimeProductNotification, voidedPurchaseNotification, এবং testNotification-এর সাথে পারস্পরিকভাবে এক্সক্লুসিভ।

testNotification TestNotification

এই ফিল্ডটি থাকলে, এই বিজ্ঞপ্তিটি একটি টেস্ট প্রকাশের সাথে সম্পর্কিত। এগুলি শুধুমাত্র Google Play Developer Console-এর মাধ্যমে পাঠানো হয়।

মনে রাখবেন যে এই ফিল্ডটি pendingRefundReviewNotification, oneTimeProductNotification, subscriptionNotification এবং voidedPurchaseNotification-এর সাথে পারস্পরিকভাবে এক্সক্লুসিভ।

SubscriptionNotification

SubscriptionNotification-এ নিম্নলিখিত ফিল্ড থাকে:

{
  "version": string,
  "notificationType": int,
  "purchaseToken": string
}
প্রপার্টির নাম মান বর্ণনা
ভার্সন স্ট্রিং এই বিজ্ঞপ্তির ভার্সন। প্রাথমিকভাবে, এটি "1.0" হয়। এই ভার্সনটি অন্যান্য ভার্সন ফিল্ডের থেকে আলাদা।
notificationType int সাবস্ক্রিপশনের notificationType-এর নিম্নলিখিত মান থাকতে পারে:
  • (১) SUBSCRIPTION_RECOVERED - অ্যাকাউন্ট হোল্ড থেকে সাবস্ক্রিপশন ফিরিয়ে আনা হয়েছে অথবা পজ থেকে আবার চালু করা হয়েছে।
  • (২) SUBSCRIPTION_RENEWED - একটি অ্যাক্টিভ সাবস্ক্রিপশন রিনিউ করা হয়েছে।
  • (৩) SUBSCRIPTION_CANCELED - কোনও সাবস্ক্রিপশন স্বেচ্ছায় বা অনিচ্ছাকৃতভাবে বাতিল করা হয়েছে। নিজে থেকে বাতিল করার ক্ষেত্রে, ব্যবহারকারী বাতিল করলে পাঠানো হয়।
  • (৪) SUBSCRIPTION_PURCHASED - নতুন সাবস্ক্রিপশন কেনা হয়েছে।
  • (৫) SUBSCRIPTION_ON_HOLD - সাবস্ক্রিপশন অ্যাকাউন্ট হোল্ডে রাখা হয়েছে (চালু করা থাকলে)।
  • (৬) SUBSCRIPTION_IN_GRACE_PERIOD - সাবস্ক্রিপশন অতিরিক্ত সময়কালে প্রবেশ করেছে (চালু করা থাকলে)।
  • (৭) SUBSCRIPTION_RESTARTED - ব্যবহারকারী Play > অ্যাকাউন্ট > সাবস্ক্রিপশন থেকে তার সাবস্ক্রিপশন ফিরিয়ে এনেছেন। সাবস্ক্রিপশনটি বাতিল করা হয়েছিল কিন্তু ব্যবহারকারী সেটি রিস্টোর করার সময় এর মেয়াদ শেষ হয়ে যায়নি। আরও তথ্যের জন্য, মেয়াদ শেষ হওয়ার আগে রিস্টোর করুন।
  • (৮) SUBSCRIPTION_PRICE_CHANGE_CONFIRMED (DEPRECATED) - সাবস্ক্রিপশনের দাম পরিবর্তন করার বিষয়টি ব্যবহারকারী কনফার্ম করেছেন।
  • (৯) SUBSCRIPTION_DEFERRED - A subscription's recurrence time has been extended.
  • (১০) SUBSCRIPTION_PAUSED - সাবস্ক্রিপশন পজ করা হয়েছে।
  • (১১) SUBSCRIPTION_PAUSE_SCHEDULE_CHANGED - A subscription pause schedule has been changed.
  • (১২) SUBSCRIPTION_REVOKED - মেয়াদ শেষ হওয়ার আগেই ব্যবহারকারীর থেকে সাবস্ক্রিপশন তুলে নেওয়া হয়েছে।
  • (১৩) SUBSCRIPTION_EXPIRED - সাবস্ক্রিপশনের মেয়াদ শেষ হয়ে গেছে।
  • (১৭) SUBSCRIPTION_ITEMS_CHANGED - সাবস্ক্রিপশন বান্ডেলের কোনও আইটেম পরিবর্তন করা হয়েছে।
  • (১৮) SUBSCRIPTION_CANCELLATION_SCHEDULED - প্রতিশ্রুতির মেয়াদ শেষ হওয়ার পরে ইনস্টলমেন্ট সাবস্ক্রিপশন বাতিল করার শিডিউল করা হয়েছে।
  • (১৯) SUBSCRIPTION_PRICE_CHANGE_UPDATED - সাবস্ক্রিপশন আইটেমের দাম পরিবর্তন সংক্রান্ত বিবরণ আপডেট করা হয়েছে।
  • (২০) SUBSCRIPTION_PENDING_PURCHASE_CANCELED - সাবস্ক্রিপশনের একটি বাকি থাকা ট্রানজ্যাকশন বাতিল করা হয়েছে।
  • (২২) SUBSCRIPTION_PRICE_STEP_UP_CONSENT_UPDATED - A subscription's consent period for price step-up has begun or the user has provided consent for the price step-up. এই RTDN শুধুমাত্র সেইসব অঞ্চলের সাবস্ক্রিপশনের জন্য পাঠানো হয় যেখানে দাম বাড়ানো প্রয়োজন।
purchaseToken স্ট্রিং সাবস্ক্রিপশন কেনার সময় ব্যবহারকারীর ডিভাইসে যে টোকেন প্রদান করা হয়েছিল।

উদাহরণ

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

{
  "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
}
প্রপার্টির নাম মান বর্ণনা
ভার্সন স্ট্রিং এই বিজ্ঞপ্তির ভার্সন। প্রাথমিকভাবে, এটি "১.০" হবে। এই ভার্সনটি অন্যান্য ভার্সন ফিল্ড থেকে আলাদা।
notificationType int বিজ্ঞপ্তির ধরন। এতে নিম্নলিখিত মান থাকতে পারে:
  • (১) ONE_TIME_PRODUCT_PURCHASED - ব্যবহারকারী এককালীন প্রোডাক্ট কিনেছেন।
  • (২) ONE_TIME_PRODUCT_CANCELED - A one-time product purchase has been canceled or revoked.
purchaseToken স্ট্রিং কেনাকাটা করার সময় ব্যবহারকারীর ডিভাইসে টোকেন প্রদান করা হয়েছে।
sku স্ট্রিং কেনা এককালীন প্রোডাক্ট আইডি (যেমন, "sword_001")

উদাহরণ

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

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

VoidedPurchaseNotification

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 - The purchase has been partially voided by a quantity-based partial refund, applicable only to multi-quantity purchases. কোনও কেনাকাটা একাধিকবার আংশিকভাবে বাতিল করা যেতে পারে।

মনে রাখবেন, একাধিক পরিমাণ কেনাকাটার বাকি থাকা মোট পরিমাণ রিফান্ড করা হলে, 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
  }
}

VoidedPurchaseNotification নেওয়া হচ্ছে

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

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

PendingRefundReviewNotification

কোনও ব্যবহারকারী কেনাকাটার জন্য চার্জব্যাক করার অনুরোধ করলে এবং অনুরোধটি ডেভেলপারকে পর্যালোচনা করতে হলে, একটি PendingRefundReviewNotification পাঠানো হয়। আপনি এই বিজ্ঞপ্তি পেলে, অনুরোধটি মূল্যায়ন করা উচিত এবং ReviewRefund API কল করে ২৪ ঘণ্টার মধ্যে রিফান্ডের পরামর্শ এবং কেনাকাটার ব্যবহারের প্রমাণ প্রদান করা উচিত।

PendingRefundReviewNotification-এ নিম্নলিখিত ফিল্ড থাকে:

{
  "version": string,
  "pendingRefundToken": string,
  "orderId": string,
  "refundReason": int,
  "obfuscatedAccountId": string,
  "obfuscatedProfileId": string
}
প্রপার্টির নাম মান বর্ণনা
ভার্সন স্ট্রিং এই বিজ্ঞপ্তির ভার্সন। প্রাথমিকভাবে, এটি "1.0" হয়। এই ভার্সনটি অন্যান্য ভার্সন ফিল্ড থেকে আলাদা।
pendingRefundToken স্ট্রিং পর্যালোচনাধীন বাকি থাকা রিফান্ডের অনুরোধ শনাক্তকারী অনন্য টোকেন। ReviewRefund API কল করার সময় এই টোকেন পাস করুন।
orderId স্ট্রিং যে কেনাকাটার জন্য রিফান্ড পর্যালোচনা করা হচ্ছে সেটির অর্ডার আইডি।
refundReason int রিফান্ডের অনুরোধের কারণ। পেন্ডিং থাকা রিভিউতে রিফান্ডের কারণ হিসেবে শুধুমাত্র CHARGEBACK (৭) উল্লেখ করা যায়। আপনার কোডকে নতুন নতুন কারণ উপলভ্য হওয়ার সাথে সাথে সেগুলি হ্যান্ডেল করতে হবে।
obfuscatedAccountId স্ট্রিং (প্রযোজ্য হলে) কেনাকাটা করার সময় ডেভেলপার-নির্দিষ্ট ব্যবহারকারীর অ্যাকাউন্টের যে অস্পষ্ট আইডি দেওয়া হয়েছিল।
obfuscatedProfileId স্ট্রিং (প্রযোজ্য হলে) কেনাকাটা করার সময় ডেভেলপার-নির্দিষ্ট প্রোফাইল আইডি যা সরবরাহ করা হয়েছিল।

উদাহরণ

এখানে রিফান্ড সংক্রান্ত পর্যালোচনার বিজ্ঞপ্তি বাকি থাকার একটি উদাহরণ দেওয়া হল:

{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503350156918",
  "pendingRefundReviewNotification":
  {
    "version":"1.0",
    "pendingRefundToken":"example-token",
    "orderId":"GPA.1234-5678-9012-34567",
    "refundReason":7,
    "obfuscatedAccountId":"user-account-id",
    "obfuscatedProfileId":"user-profile-id"
  }
}

TestNotification

TestNotification-এ নিম্নলিখিত ফিল্ড থাকে:

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

উদাহরণ

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

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