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

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

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

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

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

  • Real-time developer notifications تنظیم کنید و Get all notifications for subscriptions and one-time products را فعال کنید تا به‌روزرسانی‌های وضعیت خریدها را دریافت کنید.
  • برای دریافت خودکار به‌روزرسانی‌های خرید، رابط PurchasesUpdatedListener از BillingClient پیاده‌سازی کنید.
  • متد BillingClient.queryPurchasesAsync() را فراخوانی کنید.

پس از دریافت خرید جدید، از روش getPurchaseState یا purchases.products.get in Play Developer API استفاده کنید تا وضعیت پرداخت خرید جدید را مشخص کنید.

اعلان‌های بی‌درنگ توسعه‌دهندگان

هنگامی که کاربری یک محصول یک بار مصرف را خریداری یا لغو می کند، Google Play یک پیام OneTimeProductNotification ارسال می کند. برای به‌روزرسانی وضعیت خرید باطن خود، از رمز خرید ارائه شده در شی OneTimeProductNotification برای فراخوانی روش purchases.products.get استفاده کنید. این روش آخرین وضعیت خرید و مصرف را با یک توکن خرید ارائه می دهد.

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

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

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

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

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

اگر یک بار خرید محصول در حالت Purchased بازپرداخت شود، از طریق API خریدهای باطل نیز مطلع خواهید شد.

خرید یک بار محصول را در باطن خود پردازش کنید

خواه خرید جدیدی را از طریق ONE_TIME_PRODUCT_PURCHASED RTDN شناسایی کرده باشید یا از طریق PurchasesUpdatedListener در داخل برنامه مطلع شده باشید یا به صورت دستی خریدها را در روش onResume() برنامه خود واکشی کنید، باید خرید جدید را پردازش کنید. توصیه می کنیم برای امنیت بهتر، پردازش خرید را در باطن خود انجام دهید.

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

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

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