مراحل نشاط الشراء لمرة واحدة

تتّسم منتجات عملية الشراء لمرة واحدة بدورة حياة أبسط من منتجات الاشتراك، ولكن لا يزال هناك عدة حالات وأحداث انتقال يجب أن يكون بإمكان نظامك الخلفي التعامل معها بشكل صحيح.

حالات مراحل النشاط وأحداث الانتقال لعمليات الشراء لمرة واحدة
الشكل 1 حالات دورة الحياة وأحداث الانتقال لعمليات الشراء لمرة واحدة.

عمليات شراء جديدة لمنتجات تُشترى لمرة واحدة

بعد أن يكمل المستخدم عملية الفوترة، يمكن لتطبيقك الاطّلاع على معلومات عن عملية الشراء الجديدة بإحدى الطرق التالية:

بعد تلقّي عملية الشراء الجديدة، استخدِم الـ getPurchaseState أو الـ purchases.productsv2.getproductpurchasev2 in Play Developer API

لتحديد حالة الدفع لعملية الشراء الجديدة.

الإشعارات في الوقت الفعلي الخاصة بالمطوّرين

عندما يشتري مستخدم منتجًا مدفوعًا لمرة واحدة أو يلغي عملية شرائه، يرسل Google Play رسالة OneTimeProductNotification. لتعديل حالة الشراء في نظامك الخلفي، استخدِم رمز الشراء المقدَّم في الـ OneTimeProductNotification عنصر لاستدعاء الـ purchases.productsv2.getproductpurchasev2 طريقة. توفّر هذه الطريقة أحدث حالة للشراء والاستهلاك بالاستناد إلى رمز الشراء.

عند استيفاء طلب مسبق وتغيير حالة شرائه إلى PURCHASED، يتم إرسال إشعار في الوقت الفعلي خاص بالمطوّرين إلى عميلك. بعد تلقّي إشعارات في الوقت الفعلي الخاصة بالمطوّرين (RTDN)، عالِج عملية شراء الطلب المسبق كما هو موضّح في مقالة معالجة عمليات شراء المنتجات المدفوعة لمرة واحدة في نظامك الخلفي.

عليك معالجة الإشعارات في الوقت الفعلي الخاصة بالمطوّرين المتعلقة بالمعاملات في نظامك الخلفي الآمن.

معالجة المعاملات المكتملة

عندما يكمل المستخدم عملية شراء منتج مدفوع لمرة واحدة، يرسل Google Play رسالة OneTimeProductNotification من النوع ONE_TIME_PRODUCT_PURCHASED. عند تلقّي إشعار في الوقت الفعلي الخاص بالمطوّرين هذا، عالِج عملية الشراء كما هو موضّح في مقالة معالجة عمليات شراء المنتجات المدفوعة لمرة واحدة في نظامك الخلفي.

معالجة المعاملات الملغاة

عند إلغاء عملية شراء منتج مدفوع لمرة واحدة، يرسل Google Play رسالة OneTimeProductNotification من النوع ONE_TIME_PRODUCT_CANCELED إذا كنت قد ضبطت إعدادات تلقّي الإشعارات في الوقت الفعلي الخاصة بالمطوّرين. على سبيل المثال، يمكن أن يحدث ذلك إذا لم يُكمل المستخدم عملية الدفع خلال الإطار الزمني المطلوب، أو إذا ألغى المطوّر أو العميل عملية الشراء. عندما يتلقّى خادمك الخلفي هذا الإشعار، استدعِ الـ purchases.productsv2.getproductpurchasev2 طريقة للحصول على أحدث حالة للشراء، ثم عدِّل نظامك الخلفي وفقًا لذلك، بما في ذلك حقوق المستخدم.

إذا تم ردّ الأموال المدفوعة مقابل شراء منتج مدفوع لمرة واحدة في الحالة Purchased، سيتم إعلامك أيضًا باستخدام Voided Purchases API.

معالجة عمليات شراء المنتجات المدفوعة لمرة واحدة في نظامك الخلفي

سواء رصدت عملية شراء جديدة باستخدام ONE_TIME_PRODUCT_PURCHASED إشعار في الوقت الفعلي خاص بالمطوّرين أو تم إعلامك داخل التطبيق من خلال PurchasesUpdatedListener أو من خلال جلب عمليات الشراء يدويًا في طريقة onResume() لتطبيقك، عليك معالجة عملية الشراء الجديدة. ننصحك بمعالجة عمليات الشراء في نظامك الخلفي لتعزيز الأمان.

اتّبِع الخطوات التالية لمعالجة عملية شراء جديدة لمنتج يُشترى لمرة واحدة:

  1. استخدِم نقطة النهاية purchases.productsv2.getproductpurchasev2 للاستعلام عن أحدث حالة لعملية شراء منتج مدفوع لمرة واحدة. لاستدعاء هذه الطريقة لعملية شراء، تحتاج إلى purchaseToken المقابل إما من تطبيقك أو من الإشعار في الوقت الفعلي الخاص بالمطوّرين من النوع ONE_TIME_PRODUCT_PURCHASED.
  2. استدعِ طريقة getPurchaseState() وتأكَّد من أنّ حالة الشراء هي PURCHASED.
  3. تحقَّق من عملية الشراء.
  4. امنح المستخدم إذن الوصول إلى المحتوى. يمكن تحديد حساب المستخدم المرتبط بعملية الشراء باستخدام الحقل obfuscatedExternalAccountId من purchases.productsv2.getproductpurchasev2، إذا تم ضبطه باستخدام setObfuscatedAccountId() عند إجراء عملية الشراء.
    1. بالنسبة إلى عمليات شراء المنتجات غير القابلة للاستهلاك، أكِّد تسليم الـ محتوى من خلال استدعاء الـ purchases.products.acknowledge طريقة. تأكَّد من عدم تأكيد عملية الشراء سابقًا من خلال التحقّق من الحقل acknowledgementState.
    2. إذا كان المنتج قابلاً للاستهلاك، ضَع علامة على المنتج على أنّه تم استهلاكه من خلال استدعاء طريقة purchases.products.consume ليتمكّن المستخدم من شراء المنتج مرة أخرى بعد استهلاكه. تؤكّد هذه الطريقة أيضًا عملية الشراء.

تتوفّر أيضًا طريقتان لتأكيد عمليات الشراء واستهلاكها في Play Billing Library تسمحان لك بمعالجة عمليات الشراء من تطبيقك، ولكن ننصحك بمعالجة عمليات الشراء في نظامك الخلفي إذا كان لديك نظام خلفي لتنفيذ عملية أكثر أمانًا.