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

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

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

عمليات شراء جديدة لمنتجات يتم تحصيل سعرها مرة واحدة

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

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

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

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

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

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

يجب التعامل مع إشعارات 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 RTDN أو تم إعلامك بها داخل التطبيق من خلال PurchasesUpdatedListener أو استرجاع عمليات الشراء يدويًا في طريقة onResume() بتطبيقك، عليك معالجة عملية الشراء الجديدة. ننصحك بالتعامل مع معالجة عمليات الشراء في الخلفية لتحقيق أمان أفضل.

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

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

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