شما به تازگی Play Billing را در برنامه اندروید یا برنامه وب پیشرونده خود پیادهسازی کردهاید و کاربران شما قادر به خرید کالاهای دیجیتال شما هستند. اکنون زمان آن رسیده است که برخی از اجزای کلیدی Play Billing را در سرور backend خود پیادهسازی کنید.
رابط برنامهنویسی کاربردی گوگل پلی
API توسعهدهندگان گوگل پلی دو جزء دارد: API اشتراکها و خریدهای درونبرنامهای و API انتشار . API اشتراکها و خریدهای درونبرنامهای شامل منابع REST زیر برای کمک به مدیریت محصولات و خریدها است:
-
inappproducts: مدیریت کاتالوگ محصولات و اشتراکهای درونبرنامهای -
purchases.products: وضعیت خرید محصولات درونبرنامهای -
purchases.subscriptions: وضعیت خرید و مدیریت اشتراکها
شما میتوانید مستقیماً از API توسعهدهنده گوگل پلی به عنوان یک API REST استفاده کنید، یا کتابخانههای کلاینت میتوانند به شما کمک کنند تا به سرعت توسعه را شروع کنید. کتابخانههای کلاینت برای همه زبانهای پشتیبانی شده را میتوانید اینجا پیدا کنید. برای پیوند دادن پروژه API خود و تنظیم کلاینتهای دسترسی به API، راهنمای شروع به کار با API توسعهدهنده گوگل پلی را دنبال کنید.
فهرست کردن تمام محصولات درونبرنامهای
هنگام جستجوی جزئیات محصول موجود در frontend (در برنامه اندروید یا برنامه وب پیشرونده خود)، باید لیست شناسههای محصول را مشخص کنید. میتوانید این کار را در سرور backend خود با استفاده از متد inappproducts.list از API توسعهدهنده Play پیادهسازی کنید که تمام محصولات درونبرنامهای و اشتراکهایی را که در کنسول Play ایجاد کردهاید، فهرست میکند. حتماً status هر محصول را بررسی کنید و فقط موارد active را به کلاینت برنامه خود ارسال کنید.
قبل از اعطای مجوز، خریدها را تأیید کنید
بخش مهمی از پیادهسازی Play Billing در برنامه اندروید یا برنامه وب پیشرونده شما، اطمینان از تأیید خریدها قبل از اعطای مجوز به کاربر است. وقتی به یک کاربر مجوز میدهید، به مزایا یا محتوای مرتبط با کالای خریداری شده دسترسی میدهید. از آنجا که این امر مستلزم مدیریت دادههای حساس است، باید در سرور backend مدیریت شود.
رابط برنامهنویسی کاربردی توسعهدهندگان گوگل پلی (Google Play Developer API) متدهای purchases.products:get و purchases.subscriptions:get را ارائه میدهد. از این متدها به همراه توکنهای خرید بازیابیشده در برنامه یا ذخیرهشده در سرور بکاند خود برای تأیید قانونی بودن خرید استفاده کنید. شما باید توکنهای خرید را در سرور بکاند خود برای خریدهای اضافی و تأیید حقوق کاربر پیگیری کنید. برای جزئیات بیشتر در مورد مراحلی که باید انجام دهید، مستندات صورتحساب گوگل پلی را در مورد تأیید خریدها بررسی کنید.
خریدهای درون برنامهای
پس از دریافت توکن خرید از کلاینت، بکاند شما باید Google Play Developer API را فراخوانی کند و تأیید کند که قبلاً مصرف نشده است. فیلد purchaseState یک خرید معتبر، عدد ۱ است.
اگر خرید معتبر باشد، کلاینت باید خرید را تأیید کند و پس از دریافت پاسخ از سرور، مجوز را اعطا کند.
خرید اشتراک
مشابه تأیید خریدهای درونبرنامهای، سرور بکاند شما باید پس از دریافت توکن خرید از کلاینت، رابط برنامهنویسی کاربردی توسعهدهندگان گوگل پلی را فراخوانی کند و اعتبار اشتراک را تأیید کند.
اگر فیلد expiryTimeMillis اشتراک بزرگتر از زمان فعلی باشد، کلاینت شما باید مجوز را اعطا کند.
همچنین الان زمان خوبی است که فیلد linkedPurchaseToken را بررسی کنید و پایگاه داده اشتراک خود را به طور مناسب بهروزرسانی کنید تا بتوانید ارتقاها، تنزلها و سایر جریانهای اشتراک را مدیریت کنید. در ادامه این صفحه به جزئیات بیشتر خواهیم پرداخت.
وضعیت backend را بهروز نگه دارید
اگر برنامه شما در پلتفرمهای مختلف موجود است (که ممکن است از روشهای پرداخت متفاوتی نیز استفاده کنند)، پیگیری کاربران و خریدهای آنها در سرور back-end شما تضمین میکند که کاربران شما میتوانند به حقوق یکسان خود در دستگاهها و پلتفرمهایی که از برنامه شما استفاده میکنند، دسترسی داشته باشند.
این میتواند به سادگی داشتن یک پایگاه داده باشد که در آن سابقهای از کاربران و حقوق فعلی آنها را نگه دارید. سپس وقتی آنها خرید میکنند یا حقوق خود را مصرف میکنند، آن را متناسب با آن بهروزرسانی میکنید. دفعه بعد که آنها از یک پلتفرم دیگر به برنامه شما دسترسی پیدا میکنند، میتوانید حقوق مناسب آنها را از backend خود بازیابی کنید تا کاربر شما بتواند به آن دسترسی پیدا کند.
مدیریت تغییرات وضعیت اشتراک
یک اشتراک میتواند در طول چرخه حیات خود تغییرات وضعیت مختلفی را تجربه کند و شما باید مطمئن شوید که به هر یک از آنها پاسخ مناسب میدهید. برای بهروز نگه داشتن backend خود، درباره مدیریت چرخه حیات اشتراک بیشتر بیاموزید.
اشتراک مرتبطخرید توکن
همانطور که در مستندات اشتراکها ذکر شده است، هر جریان خرید جدید در گوگل پلی (خرید اولیه، ارتقا یا تنزل) یک توکن خرید جدید ایجاد میکند. فیلد linkedPurchaseToken امکان تشخیص اینکه چه زمانی چندین توکن خرید متعلق به یک اشتراک هستند را فراهم میکند.
هر بار که اشتراکی را تأیید میکنید، بخش مدیریت شما باید بررسی کند که آیا فیلد linkedPurchaseToken تنظیم شده است یا خیر. اگر تنظیم شده باشد، مقدار موجود در آن فیلد نشان دهنده توکن قبلی است که اکنون جایگزین شده است. شما باید فوراً آن توکن قبلی را به عنوان نامعتبر علامت گذاری کنید تا کاربران نتوانند از آن برای دسترسی به محتوای شما استفاده کنند.
برای مثال، وقتی بکاند توکن خرید A را برای خرید اولیه دریافت میکند، با یک فیلد خالی linkedPurchaseToken ، حق امتیاز را برای آن توکن فعال میکند. بعداً، وقتی بکاند توکن خرید جدید B را پس از ارتقا دریافت میکند، فیلد linkedPurchaseToken را بررسی میکند، میبیند که روی A تنظیم شده است و حق امتیاز را برای توکن خرید A غیرفعال میکند.

برای بحث مفصل در مورد پیادهسازی linkedPurchaseToken ، به «پیادهسازی صحیح linkedPurchaseToken برای جلوگیری از اشتراکهای تکراری» مراجعه کنید.
اعلانهای توسعهدهنده در لحظه
متد purchases.subscriptions:get از API توسعهدهندگان گوگل پلی، منبع اصلی مدیریت اشتراکهای کاربران است. اگر وضعیت مشترکین خود را روی یک سرور امن مدیریت میکنید، باید وضعیت آن را با سرورهای گوگل همگام نگه دارید. با این حال، نظرسنجی مکرر از API توسعهدهندگان گوگل پلی میتواند منجر به نقض محدودیتهای سهمیه API و تأخیر در دریافت اعلانها برای اقدامات مهم کاربر (مانند لغو یا ارتقاء اشتراک) شود.
اعلانهای توسعهدهندهی بلادرنگ (RTDN) یک ویژگی صورتحساب گوگل پلی است که وقتی وضعیت حق اشتراک مشترک تغییر میکند (مثلاً اشتراک خریداری شده، اشتراک لغو شده، اشتراک در حالت انتظار) یک اعلان فوری به سرور شما ارسال میکند. با RTDN، میتوانید پایگاه دادهی مشترکین خود را فقط با پاسخ دادن به این اعلانها همگام نگه دارید، به جای اینکه مرتباً API توسعهدهندهی گوگل پلی را بررسی کنید.
سرور بکاند شما برای رویدادهایی که بر وضعیت اشتراک تأثیر میگذارند، مانند تمدید و لغو، یک SubscriptionNotification دریافت میکند. سپس، API توسعهدهنده Google Play را با توکن خرید موجود در اعلان فراخوانی کنید تا وضعیت کامل را دریافت کرده و وضعیت بکاند خود را بهروزرسانی کنید.
شما میتوانید با دنبال کردن این دستورالعملها، RTDN را برای برنامه خود پیکربندی کنید. سپس باید سرور back-end خود را برای دریافت این پیامها تنظیم کنید.
برای اطلاعات بیشتر ، مرجع کامل RTDN را بررسی کنید.