منبع: خرید اشتراک
منبع SubscriptionPurchase وضعیت خرید اشتراک کاربر را نشان میدهد.
| نمایش JSON |
|---|
{ "kind": string, "startTimeMillis": string, "expiryTimeMillis": string, "autoResumeTimeMillis": string, "autoRenewing": boolean, "priceCurrencyCode": string, "priceAmountMicros": string, "introductoryPriceInfo": { object ( |
| فیلدها | |
|---|---|
kind | این نوع، یک شیء subscriptionPurchase را در سرویس androidpublisher نشان میدهد. |
startTimeMillis | زمان اعطای اشتراک، بر حسب میلیثانیه از زمان Epoch. |
expiryTimeMillis | زمان انقضای اشتراک، بر حسب میلیثانیه از زمان شروع اشتراک. |
autoResumeTimeMillis | زمانی که اشتراک به طور خودکار از سر گرفته میشود، بر حسب میلیثانیه از زمان Epoch. فقط در صورتی نمایش داده میشود که کاربر درخواست توقف اشتراک را داده باشد. |
autoRenewing | اینکه آیا اشتراک پس از رسیدن به زمان انقضای فعلی، به طور خودکار تمدید شود یا خیر. |
priceCurrencyCode | کد ارزی ISO 4217 برای قیمت اشتراک. برای مثال، اگر قیمت به پوند استرلینگ بریتانیا مشخص شده باشد، کد ارزی priceCurrencyCode برابر با "GBP" است. |
priceAmountMicros | قیمت اشتراک، برای کشورهای مشمول مالیات، قیمت شامل مالیات نمیشود. برای کشورهای مشمول مالیات، قیمت شامل مالیات میشود. قیمت بر حسب واحدهای خرد بیان میشود، که در آن ۱,۰۰۰,۰۰۰ واحد خرد نشان دهنده یک واحد از ارز است. برای مثال، اگر قیمت اشتراک ۱.۹۹ یورو باشد، مقدار قیمت (priceAmountMicros) برابر با ۱۹۹۰۰۰۰ است. |
introductoryPriceInfo | اطلاعات قیمت اولیه اشتراک. این اطلاعات فقط زمانی نمایش داده میشود که اشتراک با قیمت اولیه خریداری شده باشد. این فیلد نشان نمیدهد که اشتراک در حال حاضر در دوره قیمت مقدماتی است. |
countryCode | کد کشور/منطقهی صدور صورتحساب ISO 3166-1 alpha-2 مربوط به کاربر در زمان اعطای اشتراک. |
developerPayload | رشتهای مشخصشده توسط توسعهدهنده که حاوی اطلاعات تکمیلی در مورد یک سفارش است. |
paymentState | وضعیت پرداخت اشتراک. مقادیر ممکن عبارتند از: ۰. پرداخت در انتظار ۱. پرداخت دریافت شد ۲. دوره آزمایشی رایگان ۳. ارتقاء/تنزل سطح در انتظار تعویق برای اشتراکهای لغو شده یا منقضی شده ارائه نمیشود. |
cancelReason | دلیل لغو اشتراک یا عدم تمدید خودکار آن. مقادیر ممکن عبارتند از: ۰. کاربر اشتراک را لغو کرده است. ۱. اشتراک توسط سیستم لغو شده است، مثلاً به دلیل مشکل صورتحساب. ۲. اشتراک با یک اشتراک جدید جایگزین شده است. ۳. اشتراک توسط توسعهدهنده لغو شده است. |
userCancellationTimeMillis | زمانی که اشتراک توسط کاربر لغو شده است، بر حسب میلیثانیه از زمان شروع. فقط در صورتی نمایش داده میشود که cancelReason برابر با ۰ باشد. |
cancelSurveyResult | اطلاعاتی که کاربر هنگام تکمیل فرآیند لغو اشتراک (نظرسنجی دلیل لغو) ارائه میدهد. |
orderId | شناسه سفارش آخرین سفارش تکرارشونده مرتبط با خرید اشتراک. اگر اشتراک به دلیل رد پرداخت لغو شده باشد، این شناسه سفارش از سفارش رد پرداخت خواهد بود. |
linkedPurchaseToken | توکن خرید خرید اولیه در صورتی که این اشتراک یکی از موارد زیر باشد: ۰. ثبت نام مجدد اشتراک لغو شده اما منقضی نشده ۱. ارتقا/تنزل از اشتراک قبلی برای مثال، فرض کنید کاربری در ابتدا ثبتنام میکند و شما توکن خرید X را دریافت میکنید، سپس کاربر انصراف میدهد و (قبل از انقضای اشتراکش) مراحل انصراف را طی میکند و شما توکن خرید Y را دریافت میکنید، و در نهایت کاربر اشتراک خود را ارتقا میدهد و شما توکن خرید Z را دریافت میکنید. اگر این API را با توکن خرید Z فراخوانی کنید، این فیلد روی Y تنظیم میشود. اگر این API را با توکن خرید Y فراخوانی کنید، این فیلد روی X تنظیم میشود. اگر این API را با توکن خرید X فراخوانی کنید، این فیلد تنظیم نمیشود. |
purchaseType | نوع خرید اشتراک. این فیلد فقط در صورتی تنظیم میشود که این خرید با استفاده از جریان استاندارد پرداخت درونبرنامهای انجام نشده باشد. مقادیر ممکن عبارتند از: ۰. آزمایشی (یعنی از یک حساب آزمایشی لایسنس خریداری شده است) ۱. تبلیغاتی (یعنی با استفاده از کد تبلیغاتی خریداری شده است) |
priceChange | آخرین اطلاعات تغییر قیمت موجود است. این اطلاعات فقط زمانی نمایش داده میشود که تغییر قیمت قریبالوقوعی برای اشتراک وجود داشته باشد و هنوز اعمال نشده باشد. پس از تمدید اشتراک با قیمت جدید یا لغو اشتراک، هیچ گونه اطلاعات تغییر قیمت بازگردانده نخواهد شد. |
profileName | نام پروفایل کاربر هنگام خرید اشتراک. فقط برای خریدهای انجام شده با «اشتراک با گوگل» ارائه میشود. |
emailAddress | آدرس ایمیل کاربر هنگام خرید اشتراک. فقط برای خریدهایی که با «اشتراک با گوگل» انجام شدهاند، ارائه میشود. |
givenName | نام کاربری که هنگام خرید اشتراک استفاده شده است. فقط برای خریدهایی که با «اشتراک با گوگل» انجام شده باشد، نمایش داده میشود. |
familyName | نام خانوادگی کاربر هنگام خرید اشتراک. فقط برای خریدهایی که با «اشتراک با گوگل» انجام شده باشد. |
profileId | شناسه نمایه گوگل کاربر هنگام خرید اشتراک. فقط برای خریدهای انجام شده با «اشتراک با گوگل» ارائه میشود. |
acknowledgementState | وضعیت تأیید محصول اشتراک. مقادیر ممکن عبارتند از: ۰. هنوز تأیید نشده ۱. تأیید شده |
externalAccountId | شناسه حساب کاربری در سرویس شخص ثالث. فقط در صورتی ارائه میشود که اتصال حساب به عنوان بخشی از جریان خرید اشتراک انجام شده باشد. |
promotionType | نوع تخفیف اعمال شده روی این خرید. این فیلد فقط در صورتی تنظیم میشود که هنگام خرید اشتراک، تخفیف اعمال شده باشد. مقادیر ممکن عبارتند از: ۰. کد یکبار مصرف ۱. کد تخفیف Vanity |
promotionCode | کد تخفیف اعمال شده برای این خرید. این فیلد فقط در صورتی تنظیم میشود که هنگام خرید اشتراک، کد تخفیف Vanity اعمال شده باشد. |
obfuscatedExternalAccountId | یک نسخه مبهم از شناسه که به طور منحصر به فرد با حساب کاربر در برنامه شما مرتبط است. برای خریدهای زیر ارائه میشود: * اگر اتصال حساب به عنوان بخشی از جریان خرید اشتراک اتفاق افتاده باشد. * هنگام انجام خرید، با استفاده از https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedaccountid مشخص شده باشد. |
obfuscatedExternalProfileId | یک نسخه مبهم از شناسه که به طور منحصر به فرد با پروفایل کاربر در برنامه شما مرتبط است. فقط در صورتی ارائه میشود که هنگام خرید با استفاده از https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedprofileid مشخص شده باشد. |
اطلاعات قیمت مقدماتی
شامل اطلاعات قیمت مقدماتی برای اشتراک است.
| نمایش JSON |
|---|
{ "introductoryPriceCurrencyCode": string, "introductoryPriceAmountMicros": string, "introductoryPricePeriod": string, "introductoryPriceCycles": integer } |
| فیلدها | |
|---|---|
introductoryPriceCurrencyCode | کد ارزی ISO 4217 برای قیمت اشتراک مقدماتی. برای مثال، اگر قیمت به پوند استرلینگ بریتانیا مشخص شده باشد، کد ارزی priceCurrencyCode برابر با "GBP" است. |
introductoryPriceAmountMicros | قیمت اولیه اشتراک، بدون احتساب مالیات. واحد پول همان priceCurrencyCode است. قیمت بر حسب واحدهای خرد بیان میشود، که در آن ۱,۰۰۰,۰۰۰ واحد خرد نشان دهنده یک واحد از ارز است. برای مثال، اگر قیمت اشتراک ۱.۹۹ یورو باشد، priceAmountMicros برابر با ۱۹۹۰۰۰۰ است. |
introductoryPricePeriod | دوره قیمت مقدماتی، مشخص شده در قالب ISO 8601. مقادیر رایج (اما نه محدود به) عبارتند از: "P1W" (یک هفته)، "P1M" (یک ماه)، "P3M" (سه ماه)، "P6M" (شش ماه) و "P1Y" (یک سال). |
introductoryPriceCycles | تعداد دورههای صورتحساب برای ارائه قیمتگذاری مقدماتی. |
اشتراکلغونظرسنجینتیجه
اطلاعاتی که کاربر هنگام تکمیل فرآیند لغو اشتراک (نظرسنجی دلیل لغو) ارائه میدهد.
| نمایش JSON |
|---|
{ "cancelSurveyReason": integer, "userInputCancelReason": string } |
| فیلدها | |
|---|---|
cancelSurveyReason | دلیل لغو انتخاب شده توسط کاربر در نظرسنجی. مقادیر ممکن عبارتند از: ۰. سایر ۱. من به اندازه کافی از این سرویس استفاده نمیکنم ۲. مشکلات فنی ۳. دلایل مربوط به هزینه ۴. من یک برنامه بهتر پیدا کردم |
userInputCancelReason | دلیل لغو ورودی سفارشی از کاربر. فقط زمانی نمایش داده میشود که cancelReason برابر با ۰ باشد. |
اشتراکقیمتتغییر
شامل اطلاعات تغییر قیمت برای یک اشتراک است که میتواند برای کنترل سفر کاربر برای تغییر قیمت در برنامه استفاده شود. این میتواند به شکل درخواست تأیید از کاربر یا تنظیم تجربه برای یک تبدیل موفق باشد.
| نمایش JSON |
|---|
{
"newPrice": {
object ( |
| فیلدها | |
|---|---|
newPrice | قیمت جدیدی که در صورت پذیرش تغییر قیمت توسط کاربر، اشتراک با آن تمدید خواهد شد. |
state | وضعیت فعلی تغییر قیمت. مقادیر ممکن عبارتند از: ۰. برجسته: وضعیت تغییر قیمت در حال بررسی و منتظر موافقت کاربر را نشان میدهد. در این وضعیت، میتوانید به صورت اختیاری با استفاده از API درون برنامهای از کاربر تأیید بگیرید. ۱. پذیرفته شده: وضعیت تغییر قیمت پذیرفته شدهای که اشتراک با آن تمدید میشود، مگر اینکه لغو شود. تغییر قیمت در تاریخ آینده، زمانی که اشتراک تمدید میشود، اعمال میشود. توجه داشته باشید که ممکن است این تغییر در زمان تمدید بعدی اشتراک اعمال نشود. |
روشها | |
|---|---|
| خرید اشتراک را تأیید میکند. |
| خرید اشتراک کاربر را لغو میکند. |
| خرید اشتراک کاربر را تا زمان انقضای مشخصی در آینده به تعویق میاندازد. |
(deprecated) | منسوخ شده: به جای آن از purchases.subscriptionsv2.get استفاده کنید. |
(deprecated) | منسوخ شده: به جای آن از orders.refund استفاده کنید. |
(deprecated) | منسوخ شده: به جای آن از purchases.subscriptionsv2.revoke استفاده کنید. |
کدهای خطا
عملیات این منبع، کدهای خطای HTTP زیر را برمیگرداند:
| کد خطا | دلیل | توضیحات | وضوح تصویر |
|---|---|---|---|
400 / 410 | subscriptionExpired | اشتراک منقضی شده است و عملیات درخواستی قابل انجام نیست. | زمان انقضای اشتراک را بررسی کنید. این عملیات برای اشتراکهای منقضی شده مجاز نیست. |
400 | subscriptionInvalidArgument | یک استدلال نامعتبر در درخواست اشتراک ارائه شده است. | مستندات API را بررسی کنید و مطمئن شوید که تمام فیلدهای مورد نیاز ارائه شده و به درستی قالببندی شدهاند. |
400 | invalidPurchaseState | خرید در وضعیت معتبری برای انجام عملیات درخواستی نیست. برای مثال، ممکن است بخواهید خریدی را که قبلاً انجام شده است تأیید کنید یا اشتراکی را که فعال نیست لغو کنید. | قبل از انجام عملیات، وضعیت فعلی منبع را با استفاده از Get API مربوطه بررسی کنید. مطمئن شوید که منبع در وضعیت مناسبی برای انجام عملیات قرار دارد. |
400 | invalidValue | مقدار نامعتبری در درخواست ارائه شده است. این اغلب به عنوان یک توکن خرید ناقص یا نامعتبر برگردانده میشود. | مقدار فیلد نامعتبر را در بدنه درخواست یا پارامترها بر اساس مرجع API اصلاح کنید. |
400 | prepaidSubscriptionNotSupported | عملیات درخواستی برای اشتراکهای پیشپرداخت پشتیبانی نمیشود. | مطمئن شوید که عملیات مربوط به نوع اشتراک باشد. این خطا مختص روشهایی مانند لغو، تعویق، بازپرداخت یا لغو اشتراک است. |
400 | productNotOwnedByUser | توکن خرید ارائه شده معتبر است، اما کاربر در حال حاضر مالک محصول نیست. این اتفاق میتواند در صورتی رخ دهد که خرید قبل از تأیید، بازپرداخت، لغو یا منقضی شده باشد. | قبل از انجام عملیات، وضعیت فعلی منبع را با استفاده از Get API مربوطه بررسی کنید. مطمئن شوید که منبع در وضعیت مناسبی برای انجام عملیات قرار دارد. |
400 | purchaseTokenMismatch | توکن خرید ارائه شده با خرید، نام بسته، شناسه اشتراک یا شناسه محصول مطابقت ندارد. | تأیید کنید که تمام جزئیات موجود در درخواست صحیح و با یکدیگر مطابقت دارند. |
400 | required | یک فیلد یا پارامتر الزامی در درخواست وجود ندارد. | برای اطمینان از وجود تمام فیلدها و پارامترهای اجباری، به مستندات API مراجعه کنید. |
400 | unsupportedIabType | این عملیات برای نوع پرداخت درونبرنامهای ارائه شده پشتیبانی نمیشود. | مطمئن شوید که متد API با نوع آیتمی که مدیریت میشود سازگار است. |
403 | userInsufficientPermission | کاربر مجوز کافی برای انجام عملیات درخواستی را ندارد. | مطمئن شوید که کاربر احراز هویت شده مجوزهای لازم را در کنسول گوگل پلی دارد. برای جزئیات بیشتر به بخش «استفاده از حساب کاربری سرویس» مراجعه کنید. |
404 | notFound | منبع مورد نظر یافت نشد. | تأیید کنید که شناسهها (مثلاً توکن خرید، نام بسته، شناسه محصول، شناسه اشتراک) صحیح باشند. |
409 | concurrentUpdate | تلاشی برای بهروزرسانی شیءای که بهطور همزمان بهروزرسانی میشود، صورت گرفته است. | درخواست را با backoff نمایی دوباره امتحان کنید. از تغییرات همزمان در همان منبع خودداری کنید. |
410 | purchaseTokenNoLongerValid | توکن خرید به طور دائم نامعتبر است زیرا حساب کاربری مرتبط حذف شده است یا سابقه خرید دیگر وجود ندارد. | استفاده از این توکن خرید را متوقف کنید. |
410 | subscriptionNoLongerAvailable | خرید اشتراک دیگر برای استعلام در دسترس نیست زیرا مدت زیادی است که منقضی شده است. | این خطا نشان میدهد که اشتراک بیش از ۶۰ روز منقضی شده است. دیگر نباید این اشتراکها را درخواست کنید. |
5xx | Generic error | خطای عمومی در سرور گوگل پلی. | درخواست خود را دوباره امتحان کنید. اگر مشکل همچنان ادامه داشت، با مدیر حساب Google Play خود تماس بگیرید یا درخواست پشتیبانی ارسال کنید. داشبورد وضعیت Play را برای هرگونه قطعی شناخته شده بررسی کنید. |