Google Play বিলিং এর বাইরে নগদীকরণের জন্য ব্যাকএন্ড ইন্টিগ্রেশন নির্দেশিকা

Google Play Developer API-এ এখন একটি বিকল্প বিলিং বা বাহ্যিক অফার সিস্টেম থেকে লেনদেনের প্রতিবেদন করার জন্য অতিরিক্ত কার্যকারিতা অন্তর্ভুক্ত রয়েছে। এই নির্দেশিকা বর্ণনা করে কিভাবে বিকল্প বিলিং বা বহিরাগত অফার লেনদেন রিপোর্ট করতে হয়।

আপনার ব্যাকএন্ড থেকে আপনার অ্যাপ-মধ্যস্থ কেনাকাটা পরিচালনা করার জন্য কিছু উপাদান প্রয়োজন হতে পারে। সেগুলি তৈরি করতে, আপনাকে Google Play Developer API কনফিগার করুন- এ নির্দেশিত হিসাবে আপনার ব্যাকএন্ড ইন্টিগ্রেশন সেট আপ করতে হবে। সমস্ত বিকাশকারী ব্যাকএন্ড কার্যকারিতার জন্য যা বিকল্প বিলিং বা বহিরাগত অফার API-এর জন্য নির্দিষ্ট নয়, Google Play বিলিং সিস্টেম ডকুমেন্টেশনের নির্দেশাবলী প্রযোজ্য।

Google Play-তে নতুন বাহ্যিক লেনদেনের প্রতিবেদন করুন

সমর্থিত দেশগুলিতে Google Play-এর বিলিং সিস্টেমের বাইরে ঘটছে এমন লেনদেনের রিপোর্ট করতে Externaltransactions APIs এর সাথে একীভূত করুন, যার মধ্যে বিনামূল্যে ট্রায়াল কেনার ফলে $0 লেনদেনগুলিও রয়েছে৷ বিকল্প বিলিং বা বহিরাগত অফার সিস্টেমে লেনদেন শুধুমাত্র বিকল্প বিলিং বা বহিরাগত অফার প্রোগ্রামের অধীনে অনুমোদিত যোগ্য ব্যবহারকারী দেশগুলির জন্য শুরু করা উচিত এবং রিপোর্ট করা উচিত, অন্যথায় API কল প্রত্যাখ্যান করা হবে। এটি নতুন কেনাকাটা, পুনর্নবীকরণ, টপ-আপ, আপগ্রেড, ডাউনগ্রেড এবং অন্যান্য সহ সমস্ত লেনদেনের ক্ষেত্রে প্রযোজ্য।

বহিরাগত লেনদেন রিপোর্টিং

বিকল্প বিলিং বা বাহ্যিক অফার সিস্টেমের মাধ্যমে অর্থপ্রদান অনুমোদিত হওয়ার পরে একটি বাহ্যিক লেনদেনের রিপোর্ট করার জন্য আপনার Externaltransactions API কল করা উচিত। এটি প্রাথমিক চার্জ, পুনর্নবীকরণ, ফেরত এবং অন্যান্য সহ সমস্ত লেনদেনের ক্ষেত্রে প্রযোজ্য। লেনদেনের 24 ঘন্টার মধ্যে সমস্ত লেনদেন রিপোর্ট করতে হবে।

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

একটি নতুন ক্রয় রিপোর্ট করুন

প্রতিবার বিকল্প বিলিং বা বাহ্যিক অফার সিস্টেমে একটি নতুন ক্রয় সফল হলে, Externaltransactions API-এ একটি কল প্রয়োজন৷ এই নতুন কেনাকাটার জন্য, আপনাকে একটি ক্যোয়ারী প্যারামিটার হিসাবে আপনার ব্যাকএন্ডে ক্রয়ের সাথে যুক্ত একটি অনন্য externalTransactionId প্রদান করতে হবে। এই externalTransactionId একই অ্যাপের প্যাকেজ আইডির মধ্যে পুনরায় ব্যবহার করা যাবে না।

UserChoiceBillingListener , AlternativeBillingOnlyReportingDetailsListener , বা ExternalOfferReportingDetailsListener কলব্যাকের মাধ্যমে অ্যাপটি প্রাপ্ত externalTransactionToken এককালীন কেনাকাটা এবং প্রথমবার সাবস্ক্রিপশনের লেনদেনের জন্য অনুরোধের অংশ হিসাবে প্রয়োজন। উভয় ক্ষেত্রেই, একে প্রাথমিক লেনদেন বলা হয়। প্রাথমিক লেনদেনের পরে, externalTransactionToken আর প্রয়োজন নেই, এবং আপনি একটি নতুন অনন্য externalTransactionId প্রদান করে পরবর্তী লেনদেনের (যেমন সাবস্ক্রিপশন পুনর্নবীকরণ) রিপোর্ট করেন। পরবর্তী লেনদেনগুলি কীভাবে রিপোর্ট করতে হয় সে সম্পর্কে আরও বিশদ বিবরণের জন্য একটি ক্রয়ের জন্য পরবর্তী লেনদেনের প্রতিবেদন দেখুন৷

উদাহরণ :

  1. একজন বিকাশকারী তাদের অ্যাপে বিকল্প বিলিং কনফিগার করে এবং সক্ষম করে।
  2. ব্যবহারকারী 1 দক্ষিণ কোরিয়াতে রয়েছে, একটি সমর্থিত দেশ, এবং product1 কেনার চেষ্টা করছে, 12634.10KRW/মাসে, এক মাসের বিনামূল্যের ট্রায়াল অফার সহ৷
  3. অ্যাপটি product1 এর জন্য ProductDetails এবং ব্যবহারকারীর নির্বাচিত অফার সহ ক্রয় প্রবাহ চালু করে।
  4. ব্যবহারকারী 1 বিকাশকারীর বিকল্প বিলিং সিস্টেম নির্বাচন করে।
  5. UserChoiceBillingListener externalTransactionToken হিসাবে my_token মানটি পায়।
  6. তারপর ডেভেলপার তাদের ব্যাকএন্ডে প্রাসঙ্গিক তথ্য পাঠায় ( externalTransactionToken মান এবং পণ্য কেনা হচ্ছে)। তারপর, তারা বিকল্প বিলিং সিস্টেমে product1 এর জন্য ক্রয় প্রবাহ চালু করে। এই লেনদেনের জন্য ডেভেলপারের পক্ষ থেকে একটি অনন্য লেনদেন আইডি বরাদ্দ করা হয় যা Google Play-তে রিপোর্ট করতে ব্যবহৃত হয়: 123-456-789 । লেনদেন আইডি প্রয়োজন, যদিও ব্যবহারকারী বিনামূল্যে ট্রায়াল পাচ্ছেন।
  7. বিকল্প বিলিং সিস্টেমে ক্রয়ের জন্য লেনদেন হওয়ার পরে, বিকাশকারী নিম্নলিখিত অনুরোধের সাথে Google Play-তে লেনদেনের প্রতিবেদন করে। এটি প্রাথমিকভাবে একটি শূন্য-ডলার লেনদেন হিসাবে রিপোর্ট করা হয়েছে কারণ ব্যবহারকারী একটি বিনামূল্যে মাস পান।
POST /androidpublisher/v3/applications/com.myapp.android/externalTransactions?externalTransactionId=123-456-789

Body
 {
"originalPreTaxAmount" : {
   "priceMicros": "0",
   "currency": "KRW"
 },
 "originalTaxAmount" : {
   "priceMicros": "0",
   "currency": "KRW"
 },
"transactionTime" : "2022-02-22T12:45:00Z",
 "recurringTransaction" : {
   "externalTransactionToken": "my_token",
   "externalSubscription" {
     "subscriptionType": "RECURRING"
   }
 },
 "userTaxAddress" : {
   "regionCode": "KR"
 }
}

যদি ভারতে বসবাসকারী কোনও ব্যবহারকারীর সাথে লেনদেন করা হয় যেখানে ট্যাক্স তাদের প্রশাসনিক এলাকার (যেমন রাজ্য বা প্রদেশ) উপর নির্ভর করে, তাহলে userTaxAddress-এর অধীনে সেই এলাকাটি অন্তর্ভুক্ত করতে ভুলবেন না। প্রযোজ্য প্রশাসনিক এলাকার জন্য API রেফারেন্স গাইডে স্ট্রিংগুলির পূর্বনির্ধারিত তালিকা পড়ুন।

POST /androidpublisher/v3/applications/com.myapp.android/externalTransactions?externalTransactionId=123-456-789

Body
 {
"originalPreTaxAmount" : {
   "priceMicros": "0",
   "currency": "INR"
 },
 "originalTaxAmount" : {
   "priceMicros": "0",
   "currency": "INR"
 },
"transactionTime" : "2023-11-01T12:45:00Z",
 "recurringTransaction" : {
   "externalTransactionToken": "my_token",
   "externalSubscription" {
     "subscriptionType": "RECURRING"
   }
 },
 "userTaxAddress" : {
   # Tax varies in India based on state, so include that information in
   # administrativeArea
   "regionCode": "IN"
   "administrativeArea": "KERALA"
 }
}

একটি ক্রয়ের জন্য পরবর্তী লেনদেনের প্রতিবেদন করুন

কিছু ক্ষেত্রে, একই বাহ্যিক ক্রয়ের সাথে একাধিক ব্যবহারকারীর অর্থপ্রদান রয়েছে (উদাহরণস্বরূপ, সাবস্ক্রিপশন পুনর্নবীকরণ বা প্রিপেইড প্ল্যান টপ-আপ)। আপনি Externaltransactions একই API ব্যবহার করে এই পরবর্তী লেনদেনের রিপোর্ট করতে পারেন। একটি নতুন ক্রয়ের প্রতিবেদনে বর্ণিত হিসাবে, পরবর্তী লেনদেনের জন্য externalTransactionToken প্রয়োজনীয় নয়৷ পরিবর্তে, প্রতিটি পুনর্নবীকরণ বা টপ-আপ লেনদেনের জন্য কোয়েরি প্যারামিটার হিসাবে একটি নতুন অনন্য externalTransactionId আইডি পাঠানো হয়, প্রাথমিক লেনদেনের আইডি initialExternalTransactionId ক্ষেত্রে অন্তর্ভুক্ত থাকে।

পূর্ববর্তী উদাহরণ অনুসরণ করুন:

  1. ব্যবহারকারী 1 এর প্রথম পুনর্নবীকরণ বিকল্প বিলিং সিস্টেমে ঘটে। প্রাথমিক লেনদেন আইডি ছিল 123-456-789
  2. বিকাশকারী এই নতুন লেনদেনের জন্য বাহ্যিক লেনদেন আইডি হিসাবে URL ক্যোয়ারী প্যারামিটারে লেনদেনের পুনরাবৃত্তির প্রতিবেদন করে, যখন প্রাথমিক লেনদেনের বাহ্যিক লেনদেন আইডি initialExternalTransactionId ক্ষেত্রে উল্লেখ করে।

উদাহরণ অনুরোধ :

POST /androidpublisher/v3/applications/com.myapp.android/externalTransactions?externalTransactionId=abc-def-ghi

Body
 {
"originalPreTaxAmount" : {
   "priceMicros": "12634000000",
   "currency": "KRW"
 },
 "originalTaxAmount" : {
   "priceMicros": "1263000000",
   "currency": "KRW"
 },
"transactionTime" : "2022-02-22T12:45:00Z",
 "recurringTransaction" : {
   "initialExternalTransactionId": "123-456-789",

   "externalSubscription" {
     "subscriptionType": "RECURRING"
   }
 },
 "userTaxAddress" : {
   "regionCode": "KR"
 }
}

একটি আপগ্রেড বা ডাউনগ্রেড রিপোর্ট করুন

একটি আপগ্রেড বা ডাউনগ্রেড রিপোর্ট করতে যখন ব্যবহারকারী বিকল্প বিলিং সিস্টেমে একটি সদস্যতার মালিক হন তখন আপনি Externaltransactions API-এ একই এন্ডপয়েন্ট এবং ফাংশন ব্যবহার করেন, আপগ্রেড বা ডাউনগ্রেড লেনদেনের জন্য অ্যাপে সরবরাহ করা externalTransactionToken পাঠান। এটি একটি নতুন ক্রয়ের রিপোর্ট করার অনুরূপ কাজ করে।

বিকল্প বিলিং লেনদেনের ম্যানুয়াল রিপোর্টিং থেকে স্থানান্তর করুন

আপনি স্বয়ংক্রিয় রিপোর্টিং ছাড়া বিকল্প বিলিং অফার করার সময় শুরু হওয়া সক্রিয় সদস্যতাগুলি স্থানান্তর করতে, একটি initialExternalTransactionId বা externalTransactionToken নির্দিষ্ট করার পরিবর্তে migratedTransactionProgram ফিল্ড ব্যবহার করে একটি নতুন শূন্য-খরচের লেনদেন তৈরি করুন। প্রতিটি সক্রিয় সদস্যতার জন্য ব্যবহারকারী প্রাথমিকভাবে সাইন আপ করার সময়ে transactionTime সেট করুন। তারপরে, এই সাবস্ক্রিপশনগুলির জন্য পরবর্তী প্রতিটি লেনদেনকে API-এর মাধ্যমে স্বাভাবিক হিসাবে রিপোর্ট করুন, পুনর্নবীকরণ লেনদেনগুলি তৈরি করতে উপরে ব্যবহৃত initialExternalTransactionId প্রদান করুন৷ একবার সাবস্ক্রিপশন স্থানান্তরিত হয়ে গেলে, আপনাকে আর সাবস্ক্রিপশনের জন্য পরবর্তী লেনদেনগুলি ম্যানুয়ালি রিপোর্ট করতে হবে না, যদি সেগুলি এই পৃষ্ঠায় বর্ণিত স্বয়ংক্রিয় পদ্ধতির মাধ্যমে রিপোর্ট করা হয়।

সাবস্ক্রিপশন স্থানান্তর করার সময়, স্থানান্তরিত কোটা বিভ্রাটের কারণ না হয় তা নিশ্চিত করতে কোটার সীমা মনে রাখবেন। যদি অনেকগুলি সদস্যতা স্থানান্তরিত করার প্রয়োজন হয়, সেগুলিকে একাধিক দিন জুড়ে ছড়িয়ে দিন বা কোটা বৃদ্ধির জন্য অনুরোধ করুন

migratedTransactionProgram ফিল্ডটি শুধুমাত্র ম্যানুয়াল রিপোর্টিং থেকে মাইগ্রেট করার সময় ব্যবহার করা যেতে পারে। ম্যানুয়াল রিপোর্টিং আর সমর্থিত না হলে এটি অবমূল্যায়িত হবে।

উদাহরণ অনুরোধ :

# Note that the externalTransactionId specified here will used to report subsequent
# transactions.

POST /androidpublisher/v3/applications/com.myapp.android/externalTransactions?externalTransactionId=abc-def-ghi

Body
 {
 # Be sure to set the price to 0 for this transaction since it does not reflect
 # an actual subscription renewal.
 "originalPreTaxAmount" : {
   "priceMicros": "0",
   "currency": "KRW"
 },
 "originalTaxAmount" : {
   "priceMicros": "0",
   "currency": "KRW"
 },

 # The transaction time should be set to when the user signed up for this
 # subscription.
 "transactionTime" : "2022-02-22T12:45:00Z",
  "recurringTransaction" : {
    "migratedTransactionProgram": "USER_CHOICE_BILLING",

    "externalSubscription" {
      "subscriptionType": "RECURRING"
    }
  },
 "userTaxAddress" : {
   "regionCode": "KR"
 }
}

প্লে পার্টনার প্রোগ্রামের প্রতিবেদন করুন

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

Google Play-তে ক্রয় ফেরত রিপোর্ট করুন

Google Play-এর বিলিং সিস্টেমের বাইরের ব্যবহারকারীদের কাছে ফেরত দেওয়া লেনদেনের রিপোর্ট করতে Externaltransactions API-এর সাথে একীভূত করুন। কোন ট্রানজ্যাকশনের টাকা ফেরত দেওয়া হয়েছে তা সঠিকভাবে চিহ্নিত করার জন্য, আপনাকে ইউআরএল প্যারামিটারের অংশ হিসেবে পূর্বে রিপোর্ট করা লেনদেনের জন্য সংশ্লিষ্ট externalTransactionId অন্তর্ভুক্ত করতে হবে।

সাবস্ক্রিপশন কেনাকাটার রিফান্ড রিপোর্ট করার সময়, সাবস্ক্রিপশনের নির্দিষ্ট পুনরাবৃত্তির externalTransactionId ট্রানজ্যাকশনআইডি উল্লেখ করুন যা ফেরত দেওয়া হচ্ছে।

উদাহরণ : ধরুন একটি সাবস্ক্রিপশনের নিম্নলিখিত লেনদেন আছে:

  • বাহ্যিক লেনদেন আইডি ABC.1234-5678-9012-34567 সহ একটি প্রাথমিক লেনদেন
  • বাহ্যিক লেনদেন আইডি ABC.1234-5678-9012-34567..0 এর সাথে প্রথম পুনরাবৃত্ত লেনদেন
  • বাহ্যিক লেনদেন ID ABC.1234-5678-9012-34567..1 সহ দ্বিতীয় পুনরাবৃত্তিমূলক লেনদেন

সাবস্ক্রিপশনের জন্য সমস্ত লেনদেনের একটি ফেরত রিপোর্ট করতে, আপনাকে তিনটি পৃথক অর্থ ফেরতের অনুরোধ করতে হবে: একটি প্রাথমিক লেনদেনের জন্য এবং দুটি পরবর্তী লেনদেনের জন্য।

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

API কোটা

Externaltransactions এপিআই সমস্ত কলের জন্য প্রতিদিনের API কোটার সাপেক্ষে, ঠিক যেমন Google Play ডেভেলপার API-এর অন্য যেকোন এন্ডপয়েন্টের মতো।

অতিরিক্তভাবে, Externaltransactions API-এ Externaltransactions.createexternaltransaction বা Externaltransactions.refundexternaltransaction এ কল করার জন্য প্রতি মিনিটে 1,200 কোয়েরি (QPM) সীমা রয়েছে। Externaltransactions.getexternaltransaction এ করা কল এই 1,200 QPM সীমার মধ্যে গণনা করা হয় না।