ممکن است لازم باشد اقدامات مدیریتی در مورد اشتراک ها یا خریدهای یکباره به عنوان بخشی از کسب و کار روزانه انجام دهید. به عنوان مثال، خدمات مشتری شما ممکن است نیاز به بازپرداخت کلی یا جزئی برای کاربران داشته باشد، یا ممکن است در موارد خاصی نیاز به لغو حقوق داشته باشید. میتوانید سفارشها را از کنسول Play مدیریت کنید ، یا اگر میخواهید آنها را از سیستم خودتان مدیریت کنید، میتوانید با استفاده از Google Play Developer API این کار را انجام دهید.
لغو اشتراک ها
لغو اشتراک می تواند توسط کاربران یا توسعه دهندگان آغاز شود.
لغو لغو توسط کاربر
کاربران می توانند اشتراک Google Play را در هر زمان با استفاده از فروشگاه Play لغو کنند. در صورت وجود، باید گزینهای را نیز در اختیار کاربران قرار دهید تا اشتراک خود را در برنامه و وبسایت خود لغو کنند.
ساده ترین راه برای فعال کردن کاربران برای لغو داوطلبانه این است که با ارائه پیوندهای عمیق در برنامه خود به فروشگاه Play ، جایی که آنها می توانند اشتراک خود را مشاهده و مدیریت کنند.
برنامهنویس لغو را آغاز کرد
بهعنوان یک توسعهدهنده، ممکن است نیاز باشد که لغو را از باطن خود فعال کنید. API purchases.subscriptions.cancel
به شما امکان می دهد خرید اشتراک را لغو کنید. برای مثال، میتوانید از این روش برای رد کردن یک سرویس قدیمی استفاده کنید. لغو اشتراک، بازپرداختی را به همراه ندارد و کاربر تا پایان دوره صورتحساب فعلی خود، دسترسی خود را حفظ میکند.
این روش به شما امکان می دهد انواع لغوهای زیر را در پارامتر بدنه درخواست cancellationType
مشخص کنید:
USER_REQUESTED_STOP_RENEWALS : اشتراک را لغو میکند، انگار که کاربران از فروشگاه Play لغو اشتراک کردهاند. هرگونه پرداخت اقساطی تا پایان دوره تعهد جاری ادامه خواهد داشت. از فروشگاه Play، کاربران ممکن است اشتراک را قبل از انقضا بازیابی کنند، یا اگر برای طرح پایه فعال باشد، پس از انقضا مجدداً مشترک شوند.
DEVELOPER_REQUESTED_STOP_PAYMENTS : اشتراک را لغو می کند و از هرگونه پرداخت بیشتر جلوگیری می کند. کاربران نمیتوانند اشتراک را از Play Store بازیابی یا مجدداً مشترک شوند، اما میتوانید آنها را فعال کنید تا دوباره در برنامه خود مشترک شوند.
کاربران را قادر می سازد تا اشتراک های منقضی نشده را بازیابی کنند
در برخی از سناریوها، ممکن است مفید باشد که به کاربران اجازه دهید اشتراکهای منقضی نشده را از مرکز اشتراک Play پس از اینکه بهعنوان برنامهنویس لغو را فعال کردید، بازیابی کنند. برای مثال، ممکن است بخواهید یک جریان لغو سفارشی در برنامه ارائه دهید. بر اساس منطق کسبوکارتان، میتوانید تصمیم بگیرید کدام لغوهایی که از باطن شما ایجاد میشوند توسط کاربران قابل بازیابی هستند.
برای نشان دادن اینکه کاربر میتواند لغو را بازیابی کند، یک درخواست POST به API purchases.subscriptions.cancel
صادر کنید و پارامتر درخواست cancellationType
را روی مقدار USER_REQUESTED_STOP_RENEWAL
تنظیم کنید.
مثال:
- خرید رمز اشتراک
1a2b3c4d5e6f7g8h9i0j
- نام بسته برنامه
com.your.app
- شناسه اشتراک
your-subscription-product
درخواست HTTP POST:
https://androidpublisher.googleapis.com/androidpublisher/v3/applications/com.your.app/purchases/subscriptions/your-subscription-product/tokens/1a2b3c4d5e6f7g8h9i0j:cancel
بدن درخواستی:
{
"cancellationType": "USER_REQUESTED_STOP_RENEWAL"
}
کاربران را قادر می سازد اشتراک های منقضی شده را مجدداً مشترک کنند
برای اجازه اشتراک مجدد یک اشتراک منقضی شده، باید گزینه Resubscribe را در طرح پایه اشتراک فعال کنید و سپس با تنظیم پارامتر cancellationType
روی مقدار USER_REQUESTED_STOP_RENEWAL
اشتراک را لغو کنید.
کاربران را فعال کنید تا فقط در برنامه شما دوباره اشتراک کنند
اگر پارامتر cancellationType
را روی DEVELOPER_REQUESTED_STOP _PAYMENTS
تنظیم کرده باشید یا پارامتر cancellationType
تنظیم نکرده باشید، کاربران نمی توانند اشتراک خود را از مرکز اشتراک Play بازیابی کنند. با این حال، در صورت لزوم، کاربران می توانند از طریق برنامه شما دوباره برای اشتراک ثبت نام کنند.
انجام این اقدام یک اعلان برنامهنویس SUBSCRIPTION_CANCELED
در زمان واقعی را راهاندازی میکند. این لغوها را همانطور که در لغو توضیح داده شده است انجام دهید.
به تعویق انداختن صورتحساب
از subscriptions.defer
برای تمدید دوره حق اشتراک استفاده کنید. در طول دوره تعویق، کاربر همچنان در محتوای شما مشترک میماند، هرچند برای زمان اضافی هزینهای دریافت نمیشود. وقتی صورتحساب اشتراک را به تعویق میاندازید، اطلاعات وضعیت بر اساس آن بهروزرسانی میشود و آن را در قسمت expiryTime
در اطلاعات وضعیت خرید منعکس میکنید:
- برای اشتراکهای تکراری فعال، صورتحساب معوق تاریخ تمدید بعدی را تمدید میکند.
- برای طرح های پیش پرداخت، صورتحساب معوق زمان انقضا را افزایش می دهد.
چند مثال در مورد نحوه استفاده از صورتحساب معوق عبارتند از:
- به عنوان یک پیشنهاد ویژه به کاربران دسترسی بدون هزینه بدهید، مانند دادن یک هفته رایگان به مشترکین فعلی برای تکمیل نظرسنجی بازخورد.
- به مشتریان به عنوان یک اقدام مراقبت از مشتری، به عنوان مثال پس از قطعی طولانی مدت که ممکن است بر توانایی آنها در استفاده از خدمات شما تأثیر بگذارد، به آنها دسترسی بدون هزینه بدهید.
صدور صورتحساب میتواند بهازای هر تماس API تا یک روز و تا یک سال به تعویق بیفتد. برای به تعویق انداختن بیشتر از پایان حق، قبل از رسیدن تاریخ انقضای جدید دوباره با API تماس بگیرید.
انجام این اقدام یک اعلان برنامهنویس SUBSCRIPTION_DEFERRED
در زمان واقعی را راهاندازی میکند. برای آشنایی با نحوه مدیریت این رویدادها، به تعویق صدور صورتحساب برای یک مشترک در درباره اشتراکها مراجعه کنید.
مثال:
سرویس پخش FitnessGoals می خواهد تبلیغاتی را برای تشویق ورزش منظم در ماه فوریه اجرا کند.
آنها تصمیم می گیرند یک ماه خدمات اضافی را به هر مشترکی که حداقل 10 بار در طول ماه فوریه با FitnessGoals ورزش می کند، ارائه دهند.
آنها نتایج چالش را دنبال میکنند و در 1 مارس برای هر خرید اشتراک فعال متعلق به کاربرانی که در ماه فوریه با چالش مواجه شدهاند، API
subscriptions.defer
را فراخوانی میکنند.این کاربران از یک ماه کامل ویدیوی تمرینی منظم بدون هیچ هزینه ای بهره مند می شوند و کاربران به همه دوستان خود می گویند که چگونه FitnessGoals به آنها کمک می کند تا سالم بمانند!
صدور بازپرداخت و ابطال
موقعیتهای زیادی وجود دارد که ممکن است بخواهید برای یک اشتراک یا خرید یکباره، بازپرداختی صادر کنید یا دسترسی به آن را لغو کنید.
بازپرداخت کامل سفارش با شناسه سفارش
با orders.refund
API، میتوانید برای هر سفارشی ظرف سه سال پس از خرید، بازپرداخت کامل را صادر کنید. روش orders.refund
یک پارامتر ابطال دریافت می کند که نشان می دهد علاوه بر ارائه بازپرداخت، دسترسی باید لغو شود یا خیر.
اگر با تماس بازپرداخت برای خرید اشتراک، لغو صادر کنید، اشتراک فوراً خاتمه مییابد و یک اعلان برنامهنویس SUBSCRIPTION_REVOKED
بلادرنگ ایجاد میکند. راهنمای مدیریت چرخه عمر اشتراک بخش Revocations را بخوانید تا نحوه مدیریت این رویدادها را بیاموزید.
مثال:
به منظور جشن گرفتن آغاز جام جهانی جدید، برنامه ورزش الکترونیک Football-Not-Soccer تصمیم گرفت برای همه کاربرانی که لباس های تیم جدید را در 24 ساعت اول خریداری می کنند، پیراهن های مجازی رایگان را به قید قرعه بکشد.
Football-Not-Soccer از
orders.refund
API بدون ارسال پارامتر ابطال برای بازپرداخت خرید پیراهن به برندگان استفاده می کند.
لغو و بازپرداخت اشتراک با رمز خرید
برای موارد استفاده خاص، ممکن است لازم باشد دسترسی به اشتراک کاربر را لغو کنید و بازپرداخت را ارائه دهید. Play Billing روشهای ابطال شامل بازپرداخت کامل و بازپرداخت نسبتاً از طریق subscriptionsv2.revoke
API را ارائه میدهد. با این نقطه پایانی، می توانید revocationContext
برای تعیین نحوه محاسبه بازپرداخت مشخص کنید.
انجام این اقدام یک اعلان برنامهنویس SUBSCRIPTION_REVOKED
بیدرنگ را راهاندازی میکند. برنامه شما باید این لغوها را همانطور که در Revocations توضیح داده شده است انجام دهد.
مثال:
- خرید با توکن خرید
1a2b3c4d5e6f7g8h9i0j
- برنامه با نام بسته
com.your.app
- قصد صدور بازپرداخت متناسب
درخواست HTTP POST:
https://androidpublisher.googleapis.com/androidpublisher/v3/applications/com.your.app/purchases/subscriptionsv2/tokens/1a2b3c4d5e6f7g8h9i0j:revoke
بدن درخواستی:
{
"revocationContext": {
"proratedRefund": {}
}
}
بازپرداخت کامل
اگر نیاز به پایان اشتراک و بازپرداخت کل مبلغ دوره صورتحساب فعلی دارید، بازپرداخت کامل را صادر کنید. از تابع purchases.subscriptionsv2.revoke
استفاده کنید و "fullRefund": {}
را به عنوان نوع بازپرداخت تنظیم کنید.
مثال:
ماریا اشتراک 30 روزه تمدید خودکار برنامه ماهانه پخش SuperMovies دارد. ماریا با برخی مشکلات فنی مواجه شد که او را از دسترسی به محتوا باز می دارد. او در روز 3 چرخه صورتحساب خود با خدمات مشتری تماس می گیرد و بیان می کند که هرگز به اشتراک دسترسی نداشته است.
خدمات مشتری جزئیات خرید اشتراک ماریا را در سیستم خود پیدا می کند و یک تماس با
purchases.subscriptionsv2.revoke
برای درخواست بازپرداخت کامل ایجاد می کند.خدمات مشتری به ماریا میگوید که او باید 100٪ از قیمت اشتراک خود را بازپرداخت کند و او دیگر در طرح مشترک نیست.
بازپرداخت متناسب
اگر نیاز به پایان اشتراک و بازپرداخت بخشی از زمان باقیمانده استحقاق دارید، بازپرداخت متناسبی را صادر کنید. از تابع purchases.subscriptionsv2.revoke
استفاده کنید و "proratedRefund": {}
را به عنوان نوع بازپرداخت تنظیم کنید.
مثال:
ماریا اشتراک 30 روزه تمدید خودکار برنامه ماهانه پخش SuperMovies دارد. او مدتی است که با خوشحالی از این سرویس استفاده کرده است. ماریا در روز 15 چرخه صورتحساب خود با خدمات مشتری تماس میگیرد و بیان میکند که در حال نقل مکان به خارج از کشور است و از روز بعد دیگر نمیتواند از خدمات استفاده کند.
خدمات مشتری جزئیات خرید اشتراک ماریا را در سیستم خود پیدا میکند و تماسی را با
purchases.subscriptionsv2.revoke
برای درخواست بازپرداخت نسبتاً آغاز میکند.خدمات مشتری به ماریا میگوید که او باید حدود 50 درصد از هزینه اشتراکش را بازپرداخت کند و دسترسی به این سرویس بلافاصله قطع میشود.