چرخه عمر خرید یکبار مصرف

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

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

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

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

  • 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 استفاده کنید. این روش آخرین وضعیت خرید و مصرف را با یک توکن خرید ارائه می دهد.

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

شما باید RTDN های مربوط به تراکنش را در باطن امن خود مدیریت کنید.

انجام معاملات تکمیل شده

وقتی کاربر یک بار خرید محصول را تکمیل می‌کند، Google Play یک پیام OneTimeProductNotification با نوع ONE_TIME_PRODUCT_PURCHASED ارسال می‌کند. وقتی این RTDN را دریافت کردید، خرید را همانطور که در فرآیند خریدهای یک‌بار محصول در باطن خود توضیح داده شده است، پردازش کنید.

رسیدگی به تراکنش های لغو شده

وقتی خرید یک‌بار محصول لغو می‌شود، Google Play یک پیام OneTimeProductNotification با نوع ONE_TIME_PRODUCT_CANCELED می‌فرستد، اگر برای دریافت اعلان‌های برنامه‌نویس هم‌زمان پیکربندی کرده باشید. برای مثال، اگر کاربر پرداخت را در بازه زمانی لازم انجام ندهد، یا اگر خرید توسط توسعه‌دهنده یا درخواست مشتری لغو شود، ممکن است این اتفاق بیفتد. هنگامی که سرور بک‌اند شما این اعلان را دریافت کرد، با روش purchases.productsv2.getproductpurchasev2 تماس بگیرید تا آخرین وضعیت خرید را دریافت کنید، سپس باطن خود را بر اساس آن، از جمله حقوق کاربر، به‌روزرسانی کنید.

اگر یک بار خرید محصول در حالت Purchased بازپرداخت شود، با استفاده از 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» موجود است که به شما امکان می‌دهد خریدها را از برنامه خود پردازش کنید، اما توصیه می‌کنیم اگر برای اجرای ایمن‌تر، پردازش را در پشتیبان خود انجام دهید.