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