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

يسرد هذا المستند أنواع الإشعارات في الوقت الفعلي الخاصة بالمطوّرين التي يمكنك تلقّيها من 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,
  "pendingRefundReviewNotification": PendingRefundReviewNotification,
  "testNotification": TestNotification
}

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

اسم الموقع القيمة الوصف
الإصدار سلسلة نسخة هذا الإشعار في البداية، تكون هذه النسخة "1.0". تختلف هذه النسخة عن حقول النسخ الأخرى.
packageName سلسلة اسم حزمة التطبيق الذي يرتبط به هذا الإشعار به (مثل `com.some.thing`)
eventTimeMillis طويلة الطابع الزمني لوقوع الحدث، بالملّي ثانية منذ بداية الحقبة الزمنية
subscriptionNotification SubscriptionNotification

إذا كان هذا الحقل متوفّرًا، يعني ذلك أنّ هذا الإشعار مرتبط باشتراك، ويحتوي هذا الحقل على معلومات إضافية ذات صلة بالاشتراك.

يُرجى العِلم أنّ هذا الحقل لا يمكن أن يتوفّر مع pendingRefundReviewNotification وoneTimeProductNotification و voidedPurchaseNotification وtestNotification.

oneTimeProductNotification OneTimeProductNotification

إذا كان هذا الحقل متوفّرًا، يعني ذلك أنّ هذا الإشعار مرتبط بعملية شراء يتم تحصيل سعرها مرة واحدة، ويحتوي هذا الحقل على معلومات إضافية ذات صلة بعملية الشراء.

يُرجى العِلم أنّ هذا الحقل لا يمكن أن يتوفّر مع pendingRefundReviewNotification وsubscriptionNotification وvoidedPurchaseNotification وtestNotification.

voidedPurchaseNotification VoidedPurchaseNotification

إذا كان هذا الحقل متوفّرًا، يعني ذلك أنّ هذا الإشعار مرتبط بعملية شراء تم إبطالها، ويحتوي هذا الحقل على معلومات إضافية ذات صلة بعملية الشراء التي تم إبطالها.

يُرجى العِلم أنّ هذا الحقل لا يمكن أن يتوفّر مع pendingRefundReviewNotification وoneTimeProductNotification وsubscriptionNotification وtestNotification.

pendingRefundReviewNotification PendingRefundReviewNotification

إذا كان هذا الحقل متوفّرًا، يعني ذلك أنّ هذا الإشعار مرتبط بـ طلب ردّ الأموال الذي يمكنك اقتراح حلّ له. يمكنك الردّ على هذا الإشعار من خلال استدعاء واجهة برمجة التطبيقات `ReviewRefund`.

يُرجى العِلم أنّ هذا الحقل لا يمكن أن يتوفّر مع subscriptionNotification و oneTimeProductNotification وvoidedPurchaseNotification و testNotification.

testNotification TestNotification

إذا كان هذا الحقل متوفّرًا، يعني ذلك أنّ هذا الإشعار مرتبط بعملية نشر تجريبية. لا يتم إرسال هذه الإشعارات إلا من خلال Google Play Developer Console.

يُرجى العِلم أنّ هذا الحقل لا يمكن أن يتوفّر مع pendingRefundReviewNotification و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: انتهت صلاحية اشتراك.
  • (17) SUBSCRIPTION_ITEMS_CHANGED: تم تغيير منتج في حزمة اشتراك.
  • (18) SUBSCRIPTION_CANCELLATION_SCHEDULED: تم تحديد موعد لإلغاء اشتراك بالتقسيط في نهاية فترة الالتزام.
  • (19) SUBSCRIPTION_PRICE_CHANGE_UPDATED: تم تعديل تفاصيل تغيير سعر منتج في الاشتراك.
  • (20) SUBSCRIPTION_PENDING_PURCHASE_CANCELED: تم إلغاء معاملة معلّقة لاشتراك.
  • (22) SUBSCRIPTION_PRICE_STEP_UP_CONSENT_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 سلسلة الرمز المميّز الذي تم تقديمه إلى جهاز المستخدم عند إجراء عملية الشراء
sku سلسلة معرّف المنتج الذي يتم تحصيل سعره مرة واحدة والذي تم شراؤه (مثل "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
  }
}

استخدام VoidedPurchaseNotification

عندما يتلقّى عميل الإشعارات في الوقت الفعلي الخاصة بالمطوّرين إشعار VoidedPurchaseNotification، يُرجى العِلم بالمعلومات التالية:

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

PendingRefundReviewNotification

يتم إرسال PendingRefundReviewNotification عندما يطلب المستخدم ردّ الأموال لعملية شراء، ويتطلّب الطلب مراجعة المطوّر. عند تلقّي هذا الإشعار، عليك تقييم الطلب وتقديم اقتراح بردّ الأموال وإثبات استخدام عملية الشراء في غضون 24 ساعة من خلال استدعاء واجهة برمجة التطبيقات ReviewRefund.

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

{
  "version": string,
  "pendingRefundToken": string,
  "orderId": string,
  "refundReason": int,
  "obfuscatedAccountId": string,
  "obfuscatedProfileId": string
}
اسم الموقع القيمة الوصف
الإصدار سلسلة نسخة هذا الإشعار في البداية، تكون هذه النسخة "1.0". تختلف هذه النسخة عن حقول النسخ الأخرى.
pendingRefundToken سلسلة رمز مميّز فريد يحدّد طلب ردّ الأموال في انتظار المراجعة يُرجى تمرير هذا الرمز المميّز عند استدعاء واجهة برمجة التطبيقات ReviewRefund.
orderId سلسلة معرّف الطلب لعملية الشراء الخاضعة لمراجعة ردّ الأموال في انتظار المراجعة
refundReason تدخُّل دفاعي سبب طلب ردّ الأموال لا تتيح المراجعات في انتظار المراجعة سوى CHARGEBACK (7) كسبب لردّ الأموال. على الرمز البرمجي التعامل مع الأسباب الجديدة عند توفّرها.
obfuscatedAccountId سلسلة (إذا كان ذلك منطبقًا) معرّف حساب المستخدم الذي حدّده المطوّر وتم إخفاؤه والذي تم تقديمه عند إجراء عملية الشراء
obfuscatedProfileId سلسلة (إذا كان ذلك منطبقًا) معرّف الملف الشخصي الذي حدّده المطوّر وتم إخفاؤه والذي تم تقديمه عند إجراء عملية الشراء

مثال

في ما يلي مثال على إشعار بشأن مراجعة ردّ الأموال في انتظار المراجعة:

{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503350156918",
  "pendingRefundReviewNotification":
  {
    "version":"1.0",
    "pendingRefundToken":"example-token",
    "orderId":"GPA.1234-5678-9012-34567",
    "refundReason":7,
    "obfuscatedAccountId":"user-account-id",
    "obfuscatedProfileId":"user-profile-id"
  }
}

TestNotification

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

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

مثال

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

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