چرخه حیات خرید یک‌باره

محصولات خرید یک‌باره چرخه حیات ساده‌تری نسبت‌به محصولات اشتراکی دارند، اما هنوز چندین وضعیت و رویداد انتقال وجود دارد که باطن شما باید بتواند به‌درستی آن‌ها را مدیریت کند.

وضعیت‌های چرخه حیات و رویدادهای انتقال برای خریدهای یک‌باره.
شکل ۱ وضعیت‌های چرخه حیات و رویدادهای انتقال برای خریدهای یک‌باره.

خریدهای محصول یک‌باره جدید

پس‌از اینکه کاربر جریان صورت‌حساب را تکمیل کرد، برنامه‌تان می‌تواند اطلاعات مربوط به خرید جدید را به یکی از روش‌های زیر ببیند:

  • 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() برنامه‌تان در درون برنامه مطلع شده باشید، باید خرید جدید را پردازش کنید. توصیه می‌کنیم برای امنیت بیشتر، پردازش خرید را در بخش پشتی‌تان انجام دهید.

برای پردازش خرید یک‌باره جدید، این مراحل را دنبال کنید:

  1. برای دریافت جدیدترین وضعیت خرید محصول یک‌باره، نقطه پایانی purchases.productsv2.getproductpurchasev2 را پُرسمان کنید. برای فراخوانی این روش برای خرید، به purchaseToken مربوطه از برنامه یا از ONE_TIME_PRODUCT_PURCHASED RTDN نیاز دارید.
  2. با getPurchaseState() تماس بگیرید و مطمئن شوید که وضعیت خرید PURCHASED است.
  3. خرید را به‌تأیید برسانید.
  4. به کاربر اجازه دهید به محتوا دسترسی داشته باشد. حساب کاربری مرتبط با خرید را می‌توان با فیلد obfuscatedExternalAccountId از purchases.productsv2.getproductpurchasev2 شناسایی کرد، اگر یکی بااستفاده از setObfuscatedAccountId() هنگام خرید تنظیم شده باشد.
    1. برای خریدهای محصول غیرمصرفی، تحویل محتوا را با فراخوانی روش purchases.products.acknowledge تصدیق کنید. با بررسی فیلد acknowledgementState مطمئن شوید که خرید قبلاً تأیید نشده باشد.
    2. اگر محصول مصرفی است، با فراخوانی روش purchases.products.consume، محصول را به‌عنوان مصرف‌شده علامت‌گذاری کنید تا کاربر بتواند پس‌از مصرف محصول، آن را دوباره خریداری کند. این روش همچنین خرید را تأیید می‌کند.

همچنین روش‌های تصدیق خرید و مصرف در «کتابخانه خدمات صورت‌حساب Play» دردسترس است که به شما امکان می‌دهد خریدهای برنامه را پردازش کنید، اما توصیه می‌کنیم اگر زیرینه دارید، پردازش را در آن انجام دهید تا پیاده‌سازی امن‌تری داشته باشید.