الدليل المرجعي لإشعارات المطوِّرين في الوقت الفعلي

يسرد هذا الموضوع أنواع الإشعارات في الوقت الفعلي الخاصة بالمطوّرين التي يمكنك تلقّيها من Google Play ويوضّحها.

التشفير

يحتوي كلّ نشر يتم إجراؤه على موضوع Cloud Pub/Sub على حقل بيانات واحد مُشفَّر بترميز base64.

{
  "message": {
    "attributes": {
      "key": "value"
    },
    "data": "eyAidmVyc2lvbiI6IHN0cmluZywgInBhY2thZ2VOYW1lIjogc3RyaW5nLCAiZXZlbnRUaW1lTWlsbGlzIjogbG9uZywgIm9uZVRpbWVQcm9kdWN0Tm90aWZpY2F0aW9uIjogT25lVGltZVByb2R1Y3ROb3RpZmljYXRpb24sICJzdWJzY3JpcHRpb25Ob3RpZmljYXRpb24iOiBTdWJzY3JpcHRpb25Ob3RpZmljYXRpb24sICJ0ZXN0Tm90aWZpY2F0aW9uIjogVGVzdE5vdGlmaWNhdGlvbiB9",
    "messageId": "136969346945"
  },
  "subscription": "projects/myproject/subscriptions/mysubscription"
}

بعد فك ترميز حقل البيانات المشفَّر بترميز base64، يحتوي DeveloperNotification على الحقول التالية:

{
  "version": string,
  "packageName": string,
  "eventTimeMillis": long,
  "oneTimeProductNotification": OneTimeProductNotification,
  "subscriptionNotification": SubscriptionNotification,
  "voidedPurchaseNotification": VoidedPurchaseNotification,
  "testNotification": TestNotification
}

يتم وصف هذه الحقول في الجدول التالي.

اسم الموقع القيمة الوصف
إصدار سلسلة إصدار هذا الإشعار. في البداية، يكون هذا الإصدار "1.0". يختلف هذا الإصدار عن حقول الإصدار الأخرى.
packageName سلسلة اسم حزمة التطبيق المرتبط بهذا الإشعار (على سبيل المثال، com.some.thing).
eventTimeMillis طويلة الطابع الزمني الذي حدث فيه الحدث، بالمللي ثانية منذ الحقبة
subscriptionNotification SubscriptionNotification إذا كان هذا الحقل متوفّرًا، يعني ذلك أنّ هذا الإشعار مرتبط بأحد الاشتراكات، ويحتوي هذا الحقل على معلومات إضافية مرتبطة بالاشتراك. يُرجى العلم أنّ هذا الحقل يستبعد كلّ من oneTimeProductNotification وvoidedPurchaseNotification و testNotification.
oneTimeProductNotification OneTimeProductNotification إذا كان هذا الحقل متوفّرًا، يعني ذلك أنّ هذا الإشعار مرتبط بعملية شراء لمرة واحدة، ويحتوي هذا الحقل على معلومات إضافية مرتبطة بعملية الشراء. يُرجى العلم أنّ هذا الحقل يستبعد كلّ من subscriptionNotification وvoidedPurchaseNotification وtestNotification.
voidedPurchaseNotification VoidedPurchaseNotification إذا كان هذا الحقل متوفّرًا، يعني ذلك أنّ هذا الإشعار مرتبط بشراء تم إلغاؤه، ويحتوي هذا الحقل على معلومات إضافية مرتبطة بعملية الشراء التي تم إلغاؤها. يُرجى العِلم أنّ هذا الحقل يستبعد كلّ من oneTimeProductNotification وsubscriptionNotification و testNotification.
testNotification TestNotification إذا كان هذا الحقل متوفّرًا، يعني ذلك أنّ هذا الإشعار مرتبط بمحاولة نشر تجريبية. ولا يتم إرسال هذه الرسائل إلا من خلال Google Play Developer Console. يُرجى العلم أنّ هذا الحقل يستبعد كلّ من oneTimeProductNotification وsubscriptionNotification و voidedPurchaseNotification.

SubscriptionNotification

يحتوي SubscriptionNotification على الحقول التالية:

{
  "version": string,
  "notificationType": int,
  "purchaseToken": string
}
اسم الموقع القيمة الوصف
إصدار سلسلة إصدار هذا الإشعار. في البداية، يكون هذا الإصدار هو "1.0". يختلف هذا الإصدار عن حقول الإصدار الأخرى.
notificationType تدخُّل دفاعي يمكن أن يكون لـ notificationType الخاص بالاشتراك القيم التالية:
  • (1) SUBSCRIPTION_RECOVERED - تم استرداد اشتراك من تعليق الحساب.
  • (2) SUBSCRIPTION_RENEWED: تم تجديد اشتراك نشط.
  • (3) SUBSCRIPTION_CANCELED: تم إلغاء الاشتراك إما بشكلٍ طوعي أو غير طوعي. للإلغاء الطوعي، يتم إرسالها عندما يلغيها المستخدم.
  • (4) SUBSCRIPTION_PURCHASED: تم شراء اشتراك جديد.
  • (5) SUBSCRIPTION_ON_HOLD: تم تعليق الاشتراك في الحساب (إذا كان هذا الخيار مفعّلاً).
  • (6) SUBSCRIPTION_IN_GRACE_PERIOD: دخل الاشتراك في فترة السماح (في حال تفعيلها).
  • (7) SUBSCRIPTION_RESTARTED - أعاد المستخدم اشتراكه من Play > الحساب > الاشتراكات. تم إلغاء الاشتراك ولكن لم تنته صلاحيته بعد عندما بدأ العميل عملية الاستعادة. لمزيد من المعلومات، يمكنك الاطّلاع على عمليات الاستعادة.
  • (8) SUBSCRIPTION_PRICE_CHANGE_CONFIRMED (تم إيقافه نهائيًا) - لقد وافق العميل بنجاح على تغيير سعر الاشتراك.
  • (9) SUBSCRIPTION_DEFERRED: تم تمديد مدة تكرار الاشتراك.
  • (10) SUBSCRIPTION_PAUSED - تم إيقاف اشتراك مؤقتًا.
  • (11) SUBSCRIPTION_PAUSE_SCHEDULE_CHANGED - تم تغيير جدول زمني للإيقاف المؤقت للاشتراك
  • (12) SUBSCRIPTION_REVOKED: تم إلغاء اشتراك من العميل قبل انتهاء صلاحيته.
  • (13) SUBSCRIPTION_EXPIRED - انتهت صلاحية اشتراك.
  • ‫(20) SUBSCRIPTION_PENDING_PURCHASE_CANCELED - تم إلغاء معاملة معلّقة لاشتراك.
  • ‫(19) SUBSCRIPTION_PRICE_CHANGE_UPDATED - تم تعديل تفاصيل تغيُّر سعر أحد اشتراكات المنتج
purchaseToken سلسلة الرمز المميّز الذي تم تقديمه لجهاز المستخدم عند شراء الاشتراك

مثال

في ما يلي مثال على إشعار بشراء اشتراك جديد:

{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503349566168",
  "subscriptionNotification":
  {
    "version":"1.0",
    "notificationType":4,
    "purchaseToken":"PURCHASE_TOKEN"
  }
}

OneTimeProductNotification

يحتوي OneTimeProductNotification على الحقول التالية:

{
  "version": string,
  "notificationType": int,
  "purchaseToken": string,
  "sku": string
}
اسم الموقع الإلكتروني القيمة الوصف
إصدار سلسلة إصدار هذا الإشعار. في البداية، سيكون هذا الإصدار "1.0". يختلف هذا الإصدار عن حقول الإصدار الأخرى.
notificationType تدخُّل دفاعي نوع الإشعار يمكن أن تتضمّن القيمة إحدى القيم التالية:
  • (1) ONE_TIME_PRODUCT_PURCHASED: شراء أحد المستخدمين منتجًا يتم تحصيل سعره مرة واحدة
  • (2) ONE_TIME_PRODUCT_CANCELED: تم إلغاء عملية شراء منتج يتم تحصيل سعره مرة واحدة في انتظار المراجعة من قِبل المستخدم.
purchaseToken سلسلة الرمز المميّز الذي تم تقديمه لجهاز المستخدم عند إجراء عملية الشراء
رمز التخزين التعريفي سلسلة معرّف المنتج الذي يتم تحصيل سعره مرة واحدة والذي تم شراؤه (على سبيل المثال، "sword_001")

مثال

في ما يلي مثال على إشعار بعملية شراء جديدة لمرة واحدة:

{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503349566168",
  "oneTimeProductNotification":
  {
    "version":"1.0",
    "notificationType":1,
    "purchaseToken":"PURCHASE_TOKEN",
    "sku":"my.sku"
  }
}

VoidedPurchaseNotification

يحتوي VoidedPurchaseNotification على الحقول التالية:

اسم الموقع الإلكتروني

القيمة

الوصف

purchaseToken

string

الرمز المميّز المرتبط بعملية الشراء التي تم إبطالها يتم تقديم هذه المعلومات للمطوّر عند حدوث عملية شراء جديدة.

orderId

string

المعرّف الفريد للطلب المرتبط بالمعاملة التي تم إلغاؤها. بالنسبة إلى عمليات الشراء لمرة واحدة، يمثّل هذا المعرّف الوحيد الذي تم إنشاؤه للطلب. بالنسبة إلى الاشتراكات التي يتم تجديدها تلقائيًا، يتم إنشاء معرّف طلب جديد لكل معاملة تجديد.

productType

int

يمكن أن يكون productType لعملية شراء مُلغاة إحدى القيم التالية:

  • (1) PRODUCT_TYPE_SUBSCRIPTION - تم إلغاء شراء اشتراك.
  • (2) PRODUCT_TYPE_ONE_TIME - تم إلغاء عملية شراء لمرة واحدة.

refundType

int

يمكن أن يكون refundType لعملية شراء مُلغاة إحدى القيم التالية:

  • (1) REFUND_TYPE_FULL_REFUND - تم إلغاء عملية الشراء بالكامل.
  • (2) REFUND_TYPE_QUANTITY_BASED_PARTIAL_REFUND - تم إلغاء عملية الشراء جزئيًا من خلال ردّ جزء من الأموال استنادًا إلى الكمية، ولا ينطبق ذلك إلا على عمليات الشراء التي تتم بكميات متعدّدة. يمكن أن تتم إلغاء عملية شراء جزئيًا عدة مرات.

يُرجى العلم أنّه عند ردّ الأموال المدفوعة في عملية شراء متعددة الكميات ، سيتم refundType REFUND_TYPE_FULL_REFUND.

مثال

في ما يلي مثال على إشعار بعملية شراء جديدة تم إلغاؤها:

{
  "version":"1.0",
  "packageName":"com.some.app",
  "eventTimeMillis":"1503349566168",
  "voidedPurchaseNotification":
  {
    "purchaseToken":"PURCHASE_TOKEN",
    "orderId":"GS.0000-0000-0000",
    "productType":1
    "refundType":1
  }
}

Consuming VoidedPurchaseNotification

عندما يتلقّى عميل RTDN رسالة VoidedPurchaseNotification، يُرجى مراعاة المعلومات التالية:

  • packageName: يحدِّد هذا العنصر التطبيق.
  • eventTimeMillis: يُعلم هذا المطوِّر بوقت حدوث التغيُّر في الحالة.
  • purchaseToken: الرمز المميّز الذي تم تقديمه لجهاز المستخدم عند شراء المنتج
  • orderId: يحدِّد هذا الحقل الطلب المرتبط بالمعاملة التي تم إلغاؤها.
  • productType: يشير ذلك إلى ما إذا كانت عملية الشراء المُلغاة هي عملية شراء داخل التطبيق أو اشتراكًا.
  • refundType: يوضّح لك هذا الحقل نوع عملية ردّ الأموال التي أبطلت عملية الشراء.

إذا كان كل ما عليك فعله لتعديل الأذونات هو تحديد عملية الشراء والطلب الصحيحَين، ستكون لديك كل المعلومات التي تحتاجها في هذه المرحلة. للتعرّف على كيفية الحصول على معلومات إضافية عن عملية الشراء الملغاة، يمكنك الاطّلاع على Google Play Voided Purchases API، وهو نموذج سحب يقدّم بيانات إضافية عن عمليات الشراء الملغاة بين طابع زمني محدّد.

بالنسبة إلى عمليات الشراء التي تم إلغاؤها جزئيًا والتي تتضمّن عدة كميات، يحتوي الحقل refundableQuantity الذي تقدّمه purchases.products على باقي عدد المنتجات التي تم شراؤها والتي لم يتم إلغاؤها.

TestNotification

يحتوي TestNotification على الحقول التالية:

{
  "version": string
}
اسم الموقع القيمة الوصف
إصدار سلسلة إصدار هذا الإشعار. في البداية، يكون هذا الإصدار هو "1.0". يختلف هذا الإصدار عن حقول الإصدار الأخرى.

مثال

في ما يلي مثال على إشعار اختباري:

{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503350156918",
  "testNotification":
  {
    "version":"1.0"
  }
}