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

এই ডকুমেন্টে রিয়েল-টাইম ডেভেলপার বিজ্ঞপ্তির ধরন তালিকাভুক্ত করা হয়েছে এবং বর্ণনা করা হয়েছে যা আপনি 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 - A subscription was recovered from account hold or resumed from pause.
  • (২) SUBSCRIPTION_RENEWED - একটি চালু সাবস্ক্রিপশন রিনিউ করা হয়েছে।
  • (৩) SUBSCRIPTION_CANCELED - কোনও সাবস্ক্রিপশন স্বেচ্ছায় বা অনিচ্ছাকৃতভাবে বাতিল করা হয়েছে। স্বেচ্ছায় বাতিল করার ক্ষেত্রে, ব্যবহারকারী বাতিল করলে এই ইমেল পাঠানো হয়।
  • (৪) SUBSCRIPTION_PURCHASED - একটি নতুন সাবস্ক্রিপশন কেনা হয়েছে।
  • (৫) SUBSCRIPTION_ON_HOLD - কোনও সাবস্ক্রিপশন অ্যাকাউন্ট হোল্ডে (চালু করা থাকলে) চলে গেছে।
  • (৬) SUBSCRIPTION_IN_GRACE_PERIOD - A subscription has entered grace period (if enabled).
  • (৭) SUBSCRIPTION_RESTARTED - ব্যবহারকারী Play > অ্যাকাউন্ট > সাবস্ক্রিপশন থেকে তার সাবস্ক্রিপশন ফিরিয়ে এনেছেন। ব্যবহারকারী রিস্টোর করার সময় সাবস্ক্রিপশনটি বাতিল করা হয়েছিল, তবে সেটির মেয়াদ শেষ হয়নি। আরও তথ্যের জন্য, মেয়াদ শেষ হওয়ার আগে রিস্টোর করুন।
  • (৮) SUBSCRIPTION_PRICE_CHANGE_CONFIRMED (DEPRECATED) - A subscription price change has successfully been confirmed by the user.
  • (৯) 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 - A subscription has expired.
  • (১৭) SUBSCRIPTION_ITEMS_CHANGED - সাবস্ক্রিপশন বান্ডেলের কোনও আইটেম পরিবর্তন করা হয়েছে।
  • (১৮) SUBSCRIPTION_CANCELLATION_SCHEDULED - A cancellation for an installment subscription has been scheduled to take effect at the end of the commitment period.
  • (১৯) SUBSCRIPTION_PRICE_CHANGE_UPDATED - A subscription item's price change details are updated.
  • (২০) SUBSCRIPTION_PENDING_PURCHASE_CANCELED - A pending transaction of a subscription has been canceled.
  • (২২) SUBSCRIPTION_PRICE_STEP_UP_CONSENT_UPDATED - কোনও সাবস্ক্রিপশনের দাম বাড়ানোর জন্য সম্মতির মেয়াদ শুরু হয়েছে অথবা ব্যবহারকারী দাম বাড়ানোর জন্য সম্মতি দিয়েছেন। যেসব অঞ্চলে দাম বাড়ানোর প্রয়োজন হয়, শুধুমাত্র সেইসব অঞ্চলের সাবস্ক্রিপশনের ক্ষেত্রেই এই 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
}
প্রপার্টির নাম মান বর্ণনা
ভার্সন স্ট্রিং এই বিজ্ঞপ্তির ভার্সন। প্রাথমিকভাবে, এটি "1.0" হবে। এই ভার্সনটি অন্যান্য ভার্সন ফিল্ডের থেকে আলাদা।
notificationType int বিজ্ঞপ্তির ধরন। এর নিম্নলিখিত ভ্যালু থাকতে পারে:
  • (১) ONE_TIME_PRODUCT_PURCHASED - A one-time product was successfully purchased by a user.
  • (২) ONE_TIME_PRODUCT_CANCELED - A pending one-time product purchase has been canceled by the user.
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
  }
}

Consuming 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"
  }
}