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