অ্যান্ড্রয়েড: ইন অ্যাপ ক্রয়ের রশিদ যাচাইকরণ গুগল প্লে


92

আমি আমার পেমেন্ট গেটওয়ের জন্য গুগল ওয়ালেট ব্যবহার করছি, পণ্য গুগল কেনার পরে আমাকে নীচে প্রতিক্রিয়া জানিয়েছে

{ 
 "orderId":"12999763169054705758.1371079406387615", 
 "packageName":"com.example.app",
 "productId":"exampleSku",
 "purchaseTime":1345678900000,
 "purchaseState":0,
 "developerPayload":"bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ",
 "purchaseToken":"rojeslcdyyiapnqcynkjyyjh"
 }

আমি গুগল নতুনভাবে চালু হওয়া রসিদ বৈধকরণটি ব্যবহার করার চেষ্টা করছি Google গুগল বিকাশকারী কনসোলে আমি অনুমতিতে পরিষেবা অ্যাকাউন্টের মাধ্যমে শংসাপত্র কী তৈরি করেছি । তবে গুগল প্লে-স্টোর থেকে কোনও পণ্য কেনার পরে কীভাবে রসিদ বৈধকরণ ব্যবহার করা যায় তা আমি বিভ্রান্ত হয়ে পড়েছি।

করতে পারেন যে কেউ তাই আমাকে সাহায্য করুন কিভাবে করতে হবে রশিদ বৈধতা এর InAppক্রয়।


হ্যালো বিনিল, সাবস্ক্রিপশন ক্রয়ের জন্য আপনি এটি সম্পন্ন করেছেন?
আনশুল তায়াগি

এর পরিচালনা প্রোডাক্ট @ আংশুল তায়াগ
বিনিল সুরেন্দ্রন

@ বিনিলসুরেন্দ্রন .. আমার প্রশ্নটি আপনার প্রশ্নের থেকে আলাদা, তবে অ্যাপ্লিকেশন কেনার জন্য আমার ব্যবহৃত ইমেল আইডিটি জানতে হবে। আমার অ্যাপ্লিকেশনটিতে আরও রেফারেন্সের জন্য আমার এটির প্রয়োজন অনুসারে কীভাবে আমি সেই ইমেলটি পেতে পারি তা দয়া করে সাহায্য করতে পারেন
পল্লাভি

@ পল্লবী। দুঃখিত, ক্রেতা ইমেল আইডি পাওয়ার আমার কাছে ধারণা নেই। কেনার পরে গুগলের দেওয়া প্রতিক্রিয়া হিসাবে কোনও ইমেল_আইড নেই
বিনিল সুরেন্দ্রন

উত্তর:


216

গুগল গুগল প্লে বিকাশকারী এপিআইয়ের মাধ্যমে রসিদ বৈধতা সরবরাহ করে , এপিআই-এর মধ্যে এমন দুটি প্রান্ত রয়েছে যা আপনি সবচেয়ে বেশি আগ্রহী হবেন: ক্রয়.প্রডাক্টগুলি: পান এবং ক্রয় করুন s সাবস্ক্রিপশন: পান

Purchases.products: getঅ-অটো-পুনর্নবীকরণ পণ্য ক্রয় যাচাই করতে ব্যবহার করা যেতে পারে, যেখানে Purchases.subscriptions: getঅটো-পুনর্নবীকরণ পণ্যের সাবস্ক্রিপশন যাচাইকরণ এবং পুনরায় যাচাই করার জন্য।

পারেন শেষবিন্দু আপনি জানতে হবে ব্যবহার করতে packageName, productId, purchaseTokenএই সব পে লোড আপনি ক্রয় প্রাপ্ত খুঁজে পাওয়া যেতে পারে। আপনার access_tokenএকটি গুগল এপিআই পরিষেবা অ্যাকাউন্ট তৈরি করে যা আপনি পেতে পারেন তাও দরকার ।

পরিষেবা অ্যাকাউন্ট দিয়ে শুরু করতে প্রথমে গুগল প্লে বিকাশকারী কনসোল এপিআই অ্যাক্সেস সেটিংস পৃষ্ঠাতে যান এবং নতুন প্রকল্প তৈরি করুন বোতামটি ক্লিক করুন:

একটি নতুন গুগল এপিআই প্রকল্প তৈরি করুন

আপনার এখন একটি নতুন লিঙ্কযুক্ত প্রকল্প এবং পরিষেবা অ্যাকাউন্ট বিভাগে কয়েকটি নতুন বিভাগ দেখতে হবে, পরিষেবা অ্যাকাউন্ট তৈরি করুন বোতামটি ক্লিক করুন।

একটি নতুন পরিষেবা অ্যাকাউন্ট তৈরি করুন

আপনার পরিষেবা অ্যাকাউন্ট তৈরি করার নির্দেশাবলী সহ আপনাকে একটি তথ্য বাক্স উপস্থাপন করা হবে। গুগল বিকাশকারী কনসোলের লিঙ্কটি ক্লিক করুন এবং একটি নতুন ট্যাব ফুটে উঠবে।

গুগল বিকাশকারী কনসোল খুলুন

এখন নতুন ক্লায়েন্ট আইডি তৈরি করুন ক্লিক করুন, অপশনগুলি থেকে পরিষেবা অ্যাকাউন্ট নির্বাচন করুন এবং ক্লায়েন্ট আইডি তৈরি করুন ক্লিক করুন।

একটি নতুন ক্লায়েন্ট আইডি তৈরি করুন

একটি জেএসওএন ফাইল ডাউনলোড করবে, এটি আপনার জাসন ওয়েব টোকেন access_tokenযাতে আপনি এটির জন্য নিরাপদ রাখতে বিনিময় করতে ব্যবহার করবেন ।

এরপরে, গুগল প্লে বিকাশকারী কনসোলে ফিরে ট্যাবগুলি স্যুইচ করুন এবং তথ্য বাক্সে সম্পন্ন ক্লিক করুন। তালিকায় আপনার নতুন পরিষেবা অ্যাকাউন্টটি দেখতে হবে। পরিষেবা অ্যাকাউন্ট ইমেলের পাশের গ্রান্ট অ্যাক্সেসে ক্লিক করুন।

অ্যাক্সেস মঞ্জুর করুন

এই ব্যবহারকারীর জন্য একটি ভূমিকা চয়ন করুন এর অধীনে, অর্থ নির্বাচন করুন এবং ব্যবহারকারী যুক্ত করুন ক্লিক করুন।

ফিনান্সে ভূমিকা সেট করুন

আপনি এখন আপনার পরিষেবা অ্যাকাউন্ট সেট আপ করেছেন এবং এতে রসিদ বৈধতা সম্পাদনের জন্য সমস্ত প্রয়োজনীয় অ্যাক্সেস রয়েছে। নেক্সট আপ আপনার জেডাব্লুটিটি এক্সেস_ টোকেনের জন্য বিনিময় করছে।

access_tokenমেয়াদ শেষ পর বিনিময়ের এক ঘন্টার আপনি এখন কিছু সার্ভার কোডটির এই হ্যান্ডেল করতে এবং গুগল (না সম্পূর্ণ তালিকা) এই হ্যান্ডেল করতে বিভিন্ন ভাষায় বিভিন্ন লাইব্রেরি প্রদান করে প্রয়োজন:

আমি বিস্তারিতভাবে যাব না কারণ এই লাইব্রেরিগুলি কীভাবে ব্যবহার করতে হয় সে সম্পর্কে প্রচুর ডকুমেন্টেশন রয়েছে তবে আমি উল্লেখ করব যে আপনি https://www.googleapis.com/auth/androidpublisherOAuth2 স্কোপ হিসাবে ব্যবহার করতে চান , JWT client_emailথেকে issuerএবং আপনি যে পাবলিক কীটি পেতে পারেন private_keyএবং পাসফ্রেজটি notasecretব্যবহার করা হবে signing_key

একবার আপনার access_tokenভাল হয়ে যাওয়ার পরে (উপরের অনুচ্ছেদে একই প্রক্রিয়াটি অনুসরণ করে অন্তত পরবর্তী ঘন্টা আপনি কোনও নতুনকে অনুরোধ করতে পারবেন)।

গ্রাহ্যযোগ্য (অ-স্বয়ংক্রিয় পুনর্নবীকরণ) ক্রয়ের স্থিতি পরীক্ষা করতে এখানে একটি http getঅনুরোধ করুন:https://www.googleapis.com/androidpublisher/v2/applications/com.example.app/purchases/products/exampleSku/tokens/rojeslcdyyiapnqcynkjyyjh?access_token=your_access_token

যদি আপনি 200 টিএসপি প্রতিক্রিয়া কোড পান তবে সবকিছু প্ল্যানডের মতো হয়ে গেছে এবং আপনার ক্রয়টি বৈধ ছিল। একটি 404 এর অর্থ হল আপনার টোকেনটি অবৈধ তাই ক্রয়টি সম্ভবত প্রতারণার প্রচেষ্টা ছিল। একটি 401 এর অর্থ হবে আপনার অ্যাক্সেস টোকেনটি অবৈধ এবং 403 এর অর্থ আপনার পরিষেবা অ্যাকাউন্টের অপর্যাপ্ত অ্যাক্সেস রয়েছে, Google Play বিকাশকারী কনসোলের অ্যাক্সেস অ্যাকাউন্টের জন্য আপনি অর্থ সক্ষম করেছেন তা পরীক্ষা করে দেখুন ।

200 থেকে প্রাপ্ত প্রতিক্রিয়া এর সাথে একই রকম দেখাবে:

{
  "kind": "androidpublisher#productPurchase",
  "purchaseTimeMillis": long,
  "purchaseState": integer,
  "consumptionState": integer,
  "developerPayload": string
}

প্রতিটি সম্পত্তির ব্যাখ্যার জন্য https://developers.google.com/android-publisher/api-ref/purchases/products দেখুন

সাবস্ক্রিপশনগুলি একই রকম তবে শেষের পয়েন্টটি দেখতে দেখতে এটি:

https://www.googleapis.com/androidpublisher/v2/applications/packageName/purchases/subscriptions/subscriptionId/tokens/token?access_token=you_access_token

এবং প্রতিক্রিয়াতে এই বৈশিষ্ট্যগুলি থাকা উচিত:

{
  "kind": "androidpublisher#subscriptionPurchase",
  "startTimeMillis": long,
  "expiryTimeMillis": long,
  "autoRenewing": boolean
}

সম্পত্তির বিবরণের জন্য https://developers.google.com/android-publisher/api-ref/purchases/subsifications দেখুন এবং নোট করুন startTimeMillisএবং expiryTimeMillisসাবস্ক্রিপশনের সময়কালের উপর নির্ভর করে পরিবর্তিত হতে পারে।

শুভ বৈধতা!


আমি বিকাশকারী কনসোলে একটি নতুন ব্যবহারকারী যুক্ত করেছি এবং আমি একটি জেএসওএন শংসাপত্র পেয়েছি যা কনসোল থেকে পেয়েছে an আপনি দয়া করে আমাকে ডাউনলোড করা ফাইলের সাথে কীভাবে রসিদ যাচাই করতে সাহায্য করতে পারেন @ মার্ক গ্রিনস্টক
বিনিল সুরেন্দ্রন

@ বিনিলস আপনার আরও সুনির্দিষ্ট হতে হবে, আপনি কোন কোডটিতে সার্ভার-সাইডের ভাষা লিখছেন?
মার্ক গ্রিনস্টক

সার্ভারের পাশে জাভা ব্যবহার করছি @ মার্ক গ্রিনস্টক
বিনিল সুরেন্দ্রন

4
অনুসন্ধানের 2 দিনের মধ্যে সার্ভারের অর্থ প্রদানের বৈধতা কার্যকর করার জন্য আমি প্রথমবারের মতো একটি গাইড দেখলাম। থাম্বস আপ। কোথাও সার্ভার কোড ব্যবহার করার জন্য প্রস্তুত? আমি এটি খুব অদ্ভুত বলে মনে করি যে আমি এর মতো কোথাও কোথাও খুঁজে পাচ্ছি না
বেনামে

4
@ মার্কগ্রিনস্টক বিস্তারিত উত্তরের জন্য ধন্যবাদ।
লভাকুশ

28

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

আপনি কীভাবে Publisherসিঙ্গলটন সেটআপ করবেন :

httpTransport = GoogleNetHttpTransport.newTrustedTransport();
jsonFactory = JacksonFactory.getDefaultInstance();      
credential = GoogleCredential.fromStream(getClass().getResourceAsStream("/path/to/your/key.json")).createScoped(Collections.singleton(AndroidPublisherScopes.ANDROIDPUBLISHER));
publisher = new AndroidPublisher.Builder(httpTransport, jsonFactory, credential).setApplicationName(APP_NAME).build();

নিম্নলিখিত কোডটি একটি পণ্য ক্রয়ের বিষয়ে জিজ্ঞাসা করে:

ProductPurchase product = publisher.purchases().products().get(PACKAGE_NAME, sku, token).execute();
Integer purchaseState = product.getPurchaseState();
product.getPurchaseTimeMillis();
product.getConsumptionState();
product.getDeveloperPayload();

আপনি একইভাবে সদস্যতার জন্য জিজ্ঞাসা করতে পারেন:

SubscriptionPurchase sub = publisher.purchases().subscriptions().get(PACKAGE_NAME, sku, token).execute();
sub.getAutoRenewing();
sub.getCancelReason();
...

এটি কোনও জাভা সার্ভারের কোড, বা অ্যান্ড্রয়েডে নির্বিচারে সার্ভারে কল করার আগে মৃত্যুদন্ড কার্যকর করা হয়?
ব্যবহারকারী

4
@ জেশুরুন কোডের জন্য ধন্যবাদ। অন্যান্য পাঠকদের জন্য APP_NAME = APP_PACKAGE_NAME
বরফখণ্ড

4
পাইথন সম্পর্কে কি?
বাবকেন বর্ধন্যান

4
ধন্যবাদ! আমার জন্য পরিবর্তে getClass().getResourceAsStream(...আমি ব্যবহার new FileInputStream(...
আন্তোনিও আলমেডা

ধন্যবাদ খুব দরকারী. তবে, আমাকে যুক্ত করার দরকার ছিল: credential.refreshToken();শংসাপত্র এবং প্রকাশকের মধ্যে getting
খাঁটি

5

@ মার্ক-গ্রিনস্টক একটি দুর্দান্ত উত্তর সরবরাহ করেছে, তবে, গুগল প্লে অ্যান্ড্রয়েড বিকাশকারী এপিআই ব্যবহার করে রসিদ বৈধতা সম্পর্কে একটি খুব গুরুত্বপূর্ণ বিষয় রয়েছে।

আপনার যদি এই এপিআই ব্যবহার করে কোনও সমস্যা হয় এবং আপনি অনুমতি দেওয়ার আগে বা আপনার পরিষেবা অ্যাকাউন্টে লিঙ্ক করার আগে আপনার অ্যাপ্লিকেশন পণ্যটি যুক্ত করেন তবে আপনাকে "অ্যাপ্লিকেশন পণ্যগুলি" খুলতে হবে এবং কিছু আপডেট করতে হবে। আপনি উদাহরণস্বরূপ আপনার পণ্যের বর্ণনা সম্পাদনা করতে পারেন এবং সংরক্ষণ করতে পারেন। আপনার তাত্ক্ষণিকভাবে অনুমতি নেওয়া উচিত।

আমি কী ভুল করেছি তা ভেবে কয়েক ঘন্টা কাটিয়েছি ...


2

এই উত্তরটি দুর্দান্ত। দিকনির্দেশনাটি অনুসরণ করার সময় আমরা আরও একটি বিষয় নিয়ে এসেছি যেটি হল Google Play কনসোলটিতে পরিষেবা অ্যাকাউন্টটি প্রদর্শিত হয়নি। সাহায্যের জন্য আমরা এই সমাধানটি সন্ধান করেছি: সার্ভিস অ্যাকাউন্ট তৈরি হওয়ার পরে গুগল কনসোলে প্রদর্শিত হবে না

মূলত, গুগল এপিআই কনসোলের আইএমে যান এবং নতুন পরিষেবা অ্যাকাউন্ট যুক্ত করুন, তারপরে এটি গুগল প্লে কনসোলটিতে প্রদর্শিত হবে। স্ক্রিনশট


আপনি এখানে বর্ণনা যোগ করতে পারেন? অন্যথায় যদি লিঙ্কটি প্রত্যাহার করা হয় তবে আপনার উত্তরটি অবৈধ হয়ে যায়
ম্যাথিউস সানি

4
অ্যাকাউন্টের ভূমিকা কী যুক্ত করা উচিত?
আদি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.