تتسم المنتجات التي يتم شراؤها لمرة واحدة بدورة حياة أبسط من المنتجات التي تتطلب اشتراكًا، ولكن لا يزال هناك العديد من الحالات وأحداث الانتقال التي يجب أن يتمكّن الخلفية من التعامل معها بشكل صحيح.
عمليات شراء جديدة لمنتجات يتم تحصيل سعرها مرة واحدة
بعد أن يكمل المستخدم عملية الفوترة، يمكن لتطبيقك الاطّلاع على معلومات حول عملية الشراء الجديدة بإحدى الطرق التالية:
- اضبط
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) إلى العميل. بعد تلقّي إشعار 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()
بتطبيقك، عليك معالجة
عملية الشراء الجديدة. ننصحك بالتعامل مع معالجة عمليات الشراء في الخلفية لتحقيق أمان أفضل.
اتّبِع الخطوات التالية لإجراء عملية شراء جديدة لمرة واحدة:
- أرسِل طلب بحث إلى نقطة النهاية
purchases.productsv2.getproductpurchasev2
للحصول على أحدث حالة لعملية شراء منتج لمرة واحدة. لاستدعاء هذه الطريقة لعملية شراء، يجب توفُّرpurchaseToken
المقابل إما من تطبيقك أو منONE_TIME_PRODUCT_PURCHASED
RTDN. - اتّصِل بالرقم
getPurchaseState()
وتأكَّد من أنّ حالة الشراء هيPURCHASED
. - تأكيد عملية الشراء
- امنح المستخدم إذن الوصول إلى المحتوى. يمكن تحديد حساب المستخدم المرتبط بعملية الشراء باستخدام الحقل
obfuscatedExternalAccountId
منpurchases.productsv2.getproductpurchasev2
، إذا تم ضبطه باستخدامsetObfuscatedAccountId()
عند إجراء عملية الشراء.- بالنسبة إلى عمليات شراء المنتجات غير الاستهلاكية، يجب الإقرار بتسليم المحتوى من خلال استدعاء الطريقة
purchases.products.acknowledge
. تأكَّد من عدم التصديق على عملية الشراء مسبقًا من خلال التحقّق من الحقلacknowledgementState
. - إذا كان المنتج استهلاكيًا، ضَع علامة على المنتج بأنه مستهلك من خلال استدعاء طريقة
purchases.products.consume
، ليتمكّن المستخدم من شراء المنتج مرة أخرى بعد استهلاكه. تؤكّد هذه الطريقة أيضًا عملية الشراء.
- بالنسبة إلى عمليات شراء المنتجات غير الاستهلاكية، يجب الإقرار بتسليم المحتوى من خلال استدعاء الطريقة
تتوفّر أيضًا طريقتان لتأكيد عمليات الشراء والاستهلاك في Play Billing Library تتيحان لك معالجة عمليات الشراء من تطبيقك، ولكننا ننصحك بالتعامل مع المعالجة في الخلفية إذا كان لديك واحدة لتنفيذ أكثر أمانًا.