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

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

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

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

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

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

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

عندما يشتري أحد المستخدمين منتجًا يُستخدم لمرة واحدة أو يلغي شراءه، يرسل Google Play رسالة OneTimeProductNotification. لتعديل حالة الشراء في الخلفية، استخدِم الرمز المميّز للشراء المقدَّم في كائن OneTimeProductNotification لاستدعاء طريقة purchases.products.get. توفّر هذه الطريقة آخر حالة شراء واستهلاك وفقًا للرمز المميّز للشراء.

يجب التعامل مع أرقام RTDN المرتبطة بالمعاملات في الخلفية الآمنة.

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

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

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

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

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

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

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

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

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

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