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