المورد: ProductPurchase
يشير مورد ProductPurchase إلى حالة شراء المستخدم لمنتج داخل التطبيق.
| تمثيل JSON |
|---|
{ "kind": string, "purchaseTimeMillis": string, "purchaseState": integer, "consumptionState": integer, "developerPayload": string, "orderId": string, "purchaseType": integer, "acknowledgementState": integer, "purchaseToken": string, "productId": string, "quantity": integer, "obfuscatedExternalAccountId": string, "obfuscatedExternalProfileId": string, "regionCode": string, "refundableQuantity": integer } |
| الحقول | |
|---|---|
kind |
يمثّل هذا النوع عنصر inappPurchase في خدمة androidpublisher. |
purchaseTimeMillis |
الوقت الذي تم فيه شراء المنتج، بالمللي ثانية منذ بداية الحقبة (1 يناير 1970). |
purchaseState |
حالة الشراء للطلب. القيم المحتمَلة هي: 0. تم شراء 1. تم الإلغاء 2. في انتظار الردّ على الدعوة |
consumptionState |
حالة استهلاك المنتج داخل التطبيق. القيم المحتمَلة هي: 0. لم يتم استهلاكها بعد 1 تم الاستهلاك |
developerPayload |
سلسلة يحدّدها المطوّر وتحتوي على معلومات تكميلية حول طلب. |
orderId |
تمثّل هذه السمة معرّف الطلب المرتبط بشراء المنتج داخل التطبيق. |
purchaseType |
نوع عملية شراء المنتج داخل التطبيق. لا يتم ضبط هذا الحقل إلا إذا لم تتم عملية الشراء هذه باستخدام مسار الفوترة العادي داخل التطبيق. القيم المحتمَلة هي: 0. اختبار (أي تم شراؤه من حساب اختبار الترخيص) 1. الرمز الترويجي (أي تم شراؤه باستخدام رمز ترويجي) لا يشمل عمليات الشراء التي تتم باستخدام نقاط Play Points. 2. مكافأة (أي من مشاهدة إعلان فيديو بدلاً من الدفع) |
acknowledgementState |
حالة الإقرار باستلام المنتج داخل التطبيق. القيم المحتمَلة هي: 0. لم يتمّ تأكيد استلامها بعد 1. مواضيع تمت الموافقة عليها |
purchaseToken |
الرمز المميز لعملية الشراء الذي تم إنشاؤه لتحديد عملية الشراء هذه قد لا تكون متوفّرة. |
productId |
تمثّل هذه السمة رمز التخزين التعريفي للمنتج داخل التطبيق. قد لا تكون متوفّرة. |
quantity |
تمثّل هذه السمة كمية المنتج داخل التطبيق المرتبطة بعملية الشراء. إذا لم تكن متوفّرة، تكون الكمية 1. |
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 عند إجراء عملية الشراء. |
regionCode |
تمثّل هذه السمة رمز منطقة الفوترة المكوّن من حرفَين حسب المعيار ISO 3166-1 alpha-2 الخاص بالمستخدم في وقت منح المنتج. |
refundableQuantity |
الكمية المؤهَّلة لاسترداد الأموال، أي الكمية التي لم يتم ردّ الأموال المدفوعة مقابلها تعكس القيمة عمليات ردّ جزء من الأموال استنادًا إلى الكمية وعمليات ردّ الأموال بالكامل. |
الطُرق |
|
|---|---|
|
تُقرّ هذه الطريقة بعملية شراء سلعة داخل التطبيق. |
|
تستهلك عملية شراء لمنتج داخل التطبيق. |
|
تتحقّق هذه الطريقة من حالة شراء واستهلاك منتج داخل التطبيق. |
رموز الخطأ
تعرض عمليات هذا المرجع رموز خطأ HTTP التالية:
| رمز الخطأ | السبب | الوصف | الدقة |
|---|---|---|---|
400 |
invalidPurchaseState |
عملية الشراء ليست في حالة صالحة لتنفيذ العملية المطلوبة. على سبيل المثال، قد تحاول تأكيد عملية شراء تم استهلاكها من قبل أو إلغاء اشتراك غير نشط. | تحقَّق من الحالة الحالية للمرجع باستخدام واجهة برمجة التطبيقات Get المناسبة قبل محاولة إجراء العملية. تأكَّد من أنّ المرجع في حالة مناسبة للإجراء. |
400 |
invalidValue |
تم إدخال قيمة غير صالحة في الطلب. يتم عرض هذا الرمز غالبًا عند تقديم رمز مميّز غير صالح أو غير مكتمل لعملية الشراء. | صحِّح قيمة الحقل غير الصالحة في نص الطلب أو المَعلمات استنادًا إلى مرجع واجهة برمجة التطبيقات. |
400 |
productNotOwnedByUser |
رمز الشراء المقدَّم صالح، ولكن المستخدم لا يملك المنتج حاليًا. يمكن أن يحدث ذلك إذا تم ردّ الأموال المدفوعة مقابل عملية الشراء أو تم إبطالها أو انتهت صلاحيتها قبل تأكيدها. | تحقَّق من الحالة الحالية للمورد باستخدام واجهة برمجة التطبيقات Get المناسبة قبل محاولة تنفيذ العملية. تأكَّد من أنّ المرجع في حالة مناسبة للإجراء. |
400 |
purchaseTokenMismatch |
لا يتطابق رمز الشراء المقدَّم مع عملية الشراء أو اسم الحزمة أو رقم تعريف الاشتراك أو رقم تعريف المنتج. | تأكَّد من صحة جميع التفاصيل الواردة في الطلب ومن تطابقها مع بعضها البعض. |
400 |
required |
لم يتم إدخال حقل أو مَعلمة مطلوبة في الطلب. | راجِع مستندات واجهة برمجة التطبيقات للتأكّد من تضمين جميع الحقول والمَعلمات الإلزامية. |
400 |
unsupportedIabType |
لا تتوفّر هذه العملية لنوع الفوترة داخل التطبيق المحدّد. | تأكَّد من أنّ طريقة واجهة برمجة التطبيقات متوافقة مع نوع العنصر الذي تتم إدارته. |
403 |
userInsufficientPermission |
لا يملك المستخدم الإذن الكافي لتنفيذ العملية المطلوبة. | تأكَّد من أنّ المستخدم المصادَق عليه لديه الأذونات اللازمة في Google Play Console. لمزيد من التفاصيل، يُرجى الاطّلاع على استخدام حساب خدمة. |
404 |
notFound |
تعذَّر العثور على المورد المطلوب. | تأكَّد من صحة المعرّفات (مثل رمز الشراء أو اسم الحزمة أو معرّف المنتج أو معرّف الاشتراك). |
409 |
concurrentUpdate |
تمت محاولة تعديل عنصر يتم تعديله في الوقت نفسه. | أعِد محاولة إرسال الطلب باستخدام خوارزمية الرقود الأسي الثنائي. تجنَّب إجراء تعديلات متزامنة على المرجع نفسه. |
5xx |
Generic error |
حدث خطأ عام في خادم Google Play. | أعِد محاولة إرسال طلبك. إذا استمرت المشكلة، يُرجى التواصل مع مدير حسابك على Google Play أو إرسال طلب دعم. ننصحك بالاطّلاع على لوحة البيانات الخاصة بحالة Play لمعرفة أي انقطاعات معروفة في الخدمة. |