محصولات یکبار خرید چرخه عمر ساده تری نسبت به محصولات اشتراکی دارند، اما هنوز چندین حالت و رویداد انتقالی وجود دارد که باطن شما باید بتواند به درستی از عهده آنها برآید.
خرید یک بار محصول جدید
پس از تکمیل جریان صورتحساب توسط کاربر، برنامه شما میتواند اطلاعات خرید جدید را به یکی از روشهای زیر ببیند:
-
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()
برنامه خود واکشی کنید، باید خرید جدید را پردازش کنید. توصیه می کنیم برای امنیت بهتر، پردازش خرید را در باطن خود انجام دهید.
این مراحل را برای پردازش یک خرید یک بار جدید دنبال کنید:
- برای دریافت آخرین وضعیت خرید یک بار محصول، از نقطه پایانی
purchases.productsv2.getproductpurchasev2
پرس و جو کنید. برای فراخوانی این روش برای خرید، بهpurchaseToken
مربوطه از برنامه خود یا ازONE_TIME_PRODUCT_PURCHASED
RTDN نیاز دارید. - با
getPurchaseState()
تماس بگیرید و مطمئن شوید که وضعیت خریدPURCHASED
است. - خرید را تایید کنید
- به کاربر اجازه دسترسی به محتوا را بدهید. حساب کاربری مرتبط با خرید را میتوان با فیلد
obfuscatedExternalAccountId
ازpurchases.productsv2.getproductpurchasev2
شناسایی کرد، در صورتی که در هنگام خرید با استفادهsetObfuscatedAccountId()
تنظیم شده باشد.- برای خرید محصول غیر مصرفی، با تماس با روش
purchases.products.acknowledge
، تحویل محتوا را تایید کنید. با بررسی قسمتacknowledgementState
اطمینان حاصل کنید که خرید قبلاً تأیید نشده است. - در صورت مصرفی بودن کالا، با فراخوانی روش
purchases.products.consume
کالا را به عنوان مصرف شده علامت بزنید تا کاربر پس از مصرف مجدد کالا را خریداری کند. این روش خرید را نیز تایید می کند.
- برای خرید محصول غیر مصرفی، با تماس با روش
همچنین روشهای تأیید خرید و مصرف در «کتابخانه صورتحساب Play» موجود است که به شما امکان میدهد خریدها را از برنامه خود پردازش کنید، اما توصیه میکنیم اگر برای اجرای ایمنتر، پردازش را در پشتیبان خود انجام دهید.