تتّسم منتجات عملية الشراء لمرة واحدة بدورة حياة أبسط من منتجات الاشتراك، ولكن لا يزال هناك عدة حالات وأحداث انتقال يجب أن يكون بإمكان نظامك الخلفي التعامل معها بشكل صحيح.
عمليات شراء جديدة لمنتجات تُشترى لمرة واحدة
بعد أن يكمل المستخدم عملية الفوترة، يمكن لتطبيقك الاطّلاع على معلومات عن عملية الشراء الجديدة بإحدى الطرق التالية:
- إعداد
Real-time developer notificationsوتفعيلGet all notifications for subscriptions and one-time productsلتلقّي آخر الأخبار عن حالة عمليات الشراء - تنفيذ الواجهة
PurchasesUpdatedListenerمنBillingClientلتلقّي آخر الأخبار عن عمليات الشراء تلقائيًا - استدعاء
BillingClient.queryPurchasesAsync()طريقة.
بعد تلقّي عملية الشراء الجديدة، استخدِم الـ
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() لتطبيقك، عليك معالجة
عملية الشراء الجديدة. ننصحك بمعالجة عمليات الشراء في نظامك الخلفي لتعزيز الأمان.
اتّبِع الخطوات التالية لمعالجة عملية شراء جديدة لمنتج يُشترى لمرة واحدة:
- استخدِم نقطة النهاية
purchases.productsv2.getproductpurchasev2للاستعلام عن أحدث حالة لعملية شراء منتج مدفوع لمرة واحدة. لاستدعاء هذه الطريقة لعملية شراء، تحتاج إلىpurchaseTokenالمقابل إما من تطبيقك أو من الإشعار في الوقت الفعلي الخاص بالمطوّرين من النوعONE_TIME_PRODUCT_PURCHASED. - استدعِ طريقة
getPurchaseState()وتأكَّد من أنّ حالة الشراء هيPURCHASED. - تحقَّق من عملية الشراء.
- امنح المستخدم إذن الوصول إلى المحتوى. يمكن تحديد حساب المستخدم المرتبط بعملية الشراء باستخدام الحقل
obfuscatedExternalAccountIdمنpurchases.productsv2.getproductpurchasev2، إذا تم ضبطه باستخدامsetObfuscatedAccountId()عند إجراء عملية الشراء.- بالنسبة إلى عمليات شراء المنتجات غير القابلة للاستهلاك، أكِّد تسليم الـ
محتوى من خلال استدعاء الـ
purchases.products.acknowledgeطريقة. تأكَّد من عدم تأكيد عملية الشراء سابقًا من خلال التحقّق من الحقلacknowledgementState. - إذا كان المنتج قابلاً للاستهلاك، ضَع علامة على المنتج على أنّه تم استهلاكه من خلال استدعاء طريقة
purchases.products.consumeليتمكّن المستخدم من شراء المنتج مرة أخرى بعد استهلاكه. تؤكّد هذه الطريقة أيضًا عملية الشراء.
- بالنسبة إلى عمليات شراء المنتجات غير القابلة للاستهلاك، أكِّد تسليم الـ
محتوى من خلال استدعاء الـ
تتوفّر أيضًا طريقتان لتأكيد عمليات الشراء واستهلاكها في Play Billing Library تسمحان لك بمعالجة عمليات الشراء من تطبيقك، ولكن ننصحك بمعالجة عمليات الشراء في نظامك الخلفي إذا كان لديك نظام خلفي لتنفيذ عملية أكثر أمانًا.