محصولات خرید یکباره چرخه حیات سادهتری نسبتبه محصولات اشتراکی دارند، اما هنوز چندین وضعیت و رویداد انتقال وجود دارد که باطن شما باید بتواند بهدرستی آنها را مدیریت کند.
خریدهای محصول یکباره جدید
پساز اینکه کاربر جریان صورتحساب را تکمیل کرد، برنامهتان میتواند اطلاعات مربوط به خرید جدید را به یکی از روشهای زیر ببیند:
Real-time developer notificationsرا راهاندازی کنید وGet all notifications for subscriptions and one-time productsرا فعال کنید تا بهروزرسانیهای وضعیت خریدها را دریافت کنید.- میانای
PurchasesUpdatedListenerرا ازBillingClientپیادهسازی کنید تا بهروزرسانیهای خرید را بهطور خودکار دریافت کنید. - روش
BillingClient.queryPurchasesAsync()را فراخوانی کنید.
پساز دریافت خرید جدید، از روش
getPurchaseState یا
purchases.productsv2.getproductpurchasev2 in Play Developer API استفاده کنید
تا وضعیت پرداخت خرید جدید را تعیین کند.
اعلانهای بیدرنگ برنامهنویس
وقتی کاربری محصولی یکباره را خریداری میکند یا خرید آن را لغو میکند، Google Play
پیام OneTimeProductNotification ارسال میکند.
برای بهروزرسانی وضعیت خرید پسنهایی، از کد خرید ارائهشده در شیء
OneTimeProductNotification برای فراخوانی روش
purchases.productsv2.getproductpurchasev2
استفاده کنید. این روش جدیدترین وضعیت خرید و مصرف را با ارائه یک
ژتون خرید ارائه میدهد.
وقتی پیشسفارش انجام میشود و وضعیت خرید آن به «خریداریشده» تغییر میکند، RTDN به مشتری شما ارسال میشود. پساز دریافت RTDN، خرید پیشسفارش را همانطور که در پردازش خریدهای محصول یکباره در باطن شرح داده شده است پردازش کنید.
باید «اعلانهای لحظهای شبکه» مربوط به تراکنش را در زیرینه امن خودتان مدیریت کنید.
رسیدگی به تراکنشهای تکمیلشده
وقتی کاربر خرید محصول یکباره را تکمیل میکند، Google Play پیام
OneTimeProductNotification با نوع ONE_TIME_PRODUCT_PURCHASED ارسال میکند.
وقتی این RTDN را دریافت کردید، خرید را همانطور که در پردازش
خرید محصولات یکباره در پسای شما شرح داده شده است پردازش کنید.
مدیریت تراکنشهای لغوشده
وقتی خرید محصول یکباره لغو میشود، اگر دریافت اعلانهای بیدرنگ توسعهدهنده را پیکربندی کرده باشید، Google Play پیام OneTimeProductNotification با نوع ONE_TIME_PRODUCT_CANCELED ارسال میکند. برای مثال، این وضعیت ممکن است زمانی رخ دهد که کاربر پرداخت را در بازه زمانی موردنیاز تکمیل نکند، یا اگر توسعهدهنده یا کاربر درخواست استرداد مبلغ کند و خرید لغو شود. وقتی سرور زیرینه شما این اعلان را دریافت میکند،
purchases.productsv2.getproductpurchasev2
روش را برای دریافت جدیدترین وضعیت خرید فراخوانی کنید، سپس زیرینهتان را مطابق با آن بهروز کنید،
ازجمله حقوق کاربر.
اگر خرید محصول یکباره در وضعیت Purchased مسترد شود، بااستفاده از Voided Purchases API نیز مطلع خواهید شد.
پردازش خریدهای یکباره محصول در زیرینه
چه خرید جدیدی را بااستفاده از ONE_TIME_PRODUCT_PURCHASED
RTDN
شناسایی کرده باشید
یا ازطریق
PurchasesUpdatedListener یا واکشی دستی
خریدها در روش onResume() برنامهتان در درون برنامه مطلع شده باشید، باید
خرید جدید را پردازش کنید. توصیه میکنیم برای امنیت بیشتر، پردازش خرید را در
بخش پشتیتان انجام دهید.
برای پردازش خرید یکباره جدید، این مراحل را دنبال کنید:
- برای دریافت جدیدترین وضعیت خرید محصول یکباره، نقطه پایانی
purchases.productsv2.getproductpurchasev2را پُرسمان کنید. برای فراخوانی این روش برای خرید، بهpurchaseTokenمربوطه از برنامه یا ازONE_TIME_PRODUCT_PURCHASEDRTDN نیاز دارید. - با
getPurchaseState()تماس بگیرید و مطمئن شوید که وضعیت خریدPURCHASEDاست. - خرید را بهتأیید برسانید.
- به کاربر اجازه دهید به محتوا دسترسی داشته باشد. حساب کاربری مرتبط با خرید را میتوان با فیلد
obfuscatedExternalAccountIdازpurchases.productsv2.getproductpurchasev2شناسایی کرد، اگر یکی بااستفاده ازsetObfuscatedAccountId()هنگام خرید تنظیم شده باشد.- برای خریدهای محصول غیرمصرفی، تحویل محتوا را با فراخوانی روش
purchases.products.acknowledgeتصدیق کنید. با بررسی فیلدacknowledgementStateمطمئن شوید که خرید قبلاً تأیید نشده باشد. - اگر محصول مصرفی است، با فراخوانی روش
purchases.products.consume، محصول را بهعنوان مصرفشده علامتگذاری کنید تا کاربر بتواند پساز مصرف محصول، آن را دوباره خریداری کند. این روش همچنین خرید را تأیید میکند.
- برای خریدهای محصول غیرمصرفی، تحویل محتوا را با فراخوانی روش
همچنین روشهای تصدیق خرید و مصرف در «کتابخانه خدمات صورتحساب Play» دردسترس است که به شما امکان میدهد خریدهای برنامه را پردازش کنید، اما توصیه میکنیم اگر زیرینه دارید، پردازش را در آن انجام دهید تا پیادهسازی امنتری داشته باشید.