1. مقدمة
في هذا الدرس العملي، ستركز على إنشاء منتج يتم تحصيل سعره مرة واحدة، وتحديد خيار الشراء الخاص به، وضبط الأسعار على مستوى منطقة معيّنة، واختبار مسار شراء المنتجات التي يتم تحصيل سعرها مرة واحدة.
الجمهور
هذا الدرس العملي موجّه لمطوّري تطبيقات Android الذين يريدون استخدام Play Console لإدارة كتالوج المنتجات التي يتم شراؤها لمرة واحدة.
ما ستتعلمه...
- نموذج عناصر المنتجات التي يتم تحصيل سعرها مرة واحدة
- كيفية التنقّل في Google Play Console واستخدامه لإدارة كتالوج المنتجات التي يتم تحصيل سعرها مرة واحدة
- كيفية ترجمة تفاصيل المنتجات التي يتم تحصيل سعرها مرة واحدة إلى لغات مختلفة بدون أي تكلفة
- كيفية إعداد ميزة ضبط السعر ومدى التوفّر على مستوى منطقة معيّنة للمنتجات التي يتم تحصيل سعرها مرة واحدة
- كيفية استخدام واجهات برمجة التطبيقات في Play Billing Library للاستعلام عن تفاصيل المنتجات التي يتم تحصيل سعرها مرة واحدة
- كيفية اختبار المنتجات التي يتم تحصيل سعرها مرة واحدة باستخدام Play Billing Lab
المتطلبات...
- الوصول إلى Google Play Console باستخدام حساب مطوِّر إذا لم يكن لديك حساب مطوِّر، عليك إنشاء حساب.
- تطبيق نموذجي لهذا الدرس العملي يمكنك تنزيله من GitHub
- استوديو Android
2. العرض الأول لمنتج يتم تحصيل سعره مرة واحدة
يوفّر نموذج عناصر المنتجات التي يتم تحصيل سعرها مرة واحدة مرونة أكبر في طريقة بيع المنتجات، ويقلّل من تعقيد إدارتها. يفصل نموذج العناصر بين المنتج المُباع وطريقة بيعه، ما يتيح توفير المنتج نفسه بعدة نقاط أسعار وطرق مختلفة لتسويقه للمستخدمين. يتضمّن نموذج العناصر ثلاثة مستويات من التسلسل الهرمي:
- المنتج الذي يتم تحصيل سعره مرة واحدة: هو عنصر منتج يحدّد ما يشتريه المستخدم.
- خيار الشراء: يحدّد خيار الشراء طريقة توفير المنتج للمستخدم وسعره ومكانه (منطقة توفُّره). يمكن للمنتج الواحد أن يتضمّن عدة خيارات شراء تمثّل أسعارًا متفاوتة في مناطق مختلفة.
- العرض الترويجي: يمكن أن يؤثر في سعر خيار الشراء المرتبط به، ويمكن استخدامه لتقديم الخصومات أو الطلب المُسبق. ويمكن أن يتضمّن خيار الشراء الواحد عدة عروض.
يوضِّح الرسم البياني التالي نموذج عناصر المنتجات التي يتم تحصيل سعرها مرة واحدة.
الشكل 1: نموذج العناصر التي يتم تحصيل سعرها مرة واحدة
لمزيد من المعلومات، اطّلِع على نظرة عامة على المنتجات التي يتم تحصيل سعرها مرة واحدة.
3- إنشاء نموذج التطبيق
يستخدم هذا الدرس التطبيقي حول الترميز نموذجًا لتطبيق Android يوضّح لك كيفية إدارة المنتجات التي يتم شراؤها لمرة واحدة. تم تصميم التطبيق النموذجي ليكون تطبيق Android يعمل بكامل وظائفه ويتضمّن رمز المصدر الكامل الذي يعرض الجوانب التالية:
- دمج التطبيق مع PBL
- استرداد المنتجات التي يتم تحصيل سعرها مرة واحدة وخيارات الشراء ذات الصلة
- تنفيذ مسارات الشراء باستخدام الأسعار على مستوى المناطق
يوضّح الفيديو التجريبي التالي كيف سيبدو التطبيق النموذجي وكيف سيتصرف بعد نشره وتشغيله.
إذا كنت على دراية بالمنتجات التي يتم تحصيل سعرها مرة واحدة وواجهة برمجة التطبيقات Play Billing Library (PBL)، يمكنك تنزيل التطبيق النموذجي وتجربته.
المتطلّبات الأساسية
قبل إنشاء التطبيق النموذجي ونشره، عليك تنفيذ ما يلي:
- إنشاء حساب مطوِّر على Google Play Console إذا كان لديك حساب مطوِّر، يمكنك تخطّي هذه الخطوة.
- أنشئ تطبيقًا جديدًا في Play Console. عند إنشاء تطبيق، يمكنك تحديد أي اسم للتطبيق النموذجي.
- ثبِّت استوديو Android.
إنشاء
الهدف من خطوة الإنشاء هذه هو إنشاء ملف حزمة تطبيق Android مُوقَّع للتطبيق النموذجي.
لإنشاء حِزمة تطبيق Android، اتّبِع الخطوات التالية:
- نزِّل تطبيقًا نموذجيًا من GitHub.
- إنشاء تطبيق العيّنة: قبل الإنشاء، غيِّر اسم حزمة تطبيق العيّنة ثم أنشئه. إذا كانت لديك حِزم لتطبيقات أخرى في Play Console، تأكَّد من أنّ اسم الحزمة الذي تقدّمه للتطبيق النموذجي فريد.
ملاحظة: لا يؤدي إنشاء التطبيق النموذجي إلا إلى إنشاء ملف APK يمكنك استخدامه للاختبار المحلي. ومع ذلك، لا يؤدي تشغيل التطبيق إلى جلب المنتجات والأسعار لأنّه لم يتم إعداد المنتجات في Play Console. - أنشِئ حزمة تطبيقات Android موقَّعة.
الخطوة التالية هي تحميل حِزمة تطبيق Android إلى Google Play Console.
4. إنشاء منتج يتم تحصيل سعره مرة واحدة في Play Console
لإنشاء منتجات تُباع لمرة واحدة في Google Play Console، يجب أن يكون لديك تطبيق في Play Console. أنشئ تطبيقًا في Play Console، ثم حمِّل حزمة التطبيق الموقَّعة التي تم إنشاؤها سابقًا.
إنشاء تطبيق
لإنشاء تطبيق، اتّبِع الخطوات التالية:
- سجِّل الدخول إلى Google Play Console باستخدام حساب المطوِّر.
- انقر على إنشاء تطبيق. سيؤدي ذلك إلى فتح صفحة إنشاء تطبيق.
- أدخِل اسم التطبيق واختَر اللغة التلقائية وتفاصيل أخرى ذات صلة بالتطبيق.
- انقر على إنشاء تطبيق، ما يؤدي إلى إنشاء تطبيق في Google Play Console.
يمكنك الآن تحميل حِزمة تطبيق العيّنة الموقَّعة.
تحميل حِزمة التطبيق الموقَّعة
- حمِّل حِزمة التطبيق الموقَّعة إلى مسار الاختبار الداخلي في Google Play Console. بعد التحميل فقط، يمكنك ضبط الميزات المتعلّقة بتحقيق الربح في Play Console.
- انقر على الاختبار والإصدار > الاختبار > الإصدار الداخلي > إنشاء إصدار جديد.
- أدخِل اسم إصدار وحمِّل ملف APK الموقَّع.
- انقر على التالي، ثمّ انقر على حفظ ونشر.
يمكنك الآن إنشاء منتجاتك التي تُباع لمرة واحدة.
إنشاء منتج يتم تحصيل سعره مرة واحدة
لإنشاء منتج يتم تحصيل سعره مرة واحدة، اتّبِع الخطوات التالية:
- في Google Play Console، انتقِل من قائمة التنقّل اليمنى إلى تحقيق الربح المادي باستخدام Google Play > المنتجات > المنتجات التي يتم تحصيل سعرها مرة واحدة.
- انقر على إنشاء منتج يتم تحصيل سعره مرة واحدة.
- أدخِل تفاصيل المنتج التالية:
- معرّف المنتج: أدخِل معرّفًا فريدًا. مثلاً:
trending_movie_1 - (اختياري) العلامات: أضِف علامات ذات صلة.
- الاسم: أدخِل اسم منتج. مثلاً:
Product Movie - الوصف: أدخِل وصفًا للمنتج. مثلاً:
Product Description
يكون اسم المنتج ووصفه تلقائيًا باللغة الإنجليزية (الولايات المتحدة) – en-US. يمكنك أيضًا إدخال الاسم والوصف يدويًا بلغات أخرى. لإدخال التفاصيل، انقر على إدارة الترجمات، واختَر اللغات التي تريد إدخال النص المترجَم إليها، ثم انقر على تطبيق. تعرض الصورة التالية الخيار إدارة الترجمات:
الشكل 2: إدارة الترجمة.
ستظهر اللغات التي اخترتها في القائمة المنسدلة للغة. اختَر كل لغة وأدخِل الاسم والوصف المناسبَين باللغة المحدّدة. يمكنك أيضًا ترجمة اسم المنتج ووصفه تلقائيًا بدون أي تكلفة. لمزيد من المعلومات، يُرجى الاطّلاع على قسم ترجمة المنتجات التي يتم تحصيل سعرها مرة واحدة في هذا الدرس العملي.
ملاحظة: لأغراض هذا الدرس العملي، يمكنك تخطّي إعداد الحقل الرمز وقسم الضرائب والامتثال والبرامج. - معرّف المنتج: أدخِل معرّفًا فريدًا. مثلاً:
- انقر على التالي.
- أضِف خيار شراء واضبط مدى توفّره على مستوى منطقة معيّنة. يتطلّب المنتج الذي يتم تحصيل سعره مرة واحدة خيار شراء واحدًا على الأقل يحدّد كيفية توفير المنتج وسعره ومدى توفّره على مستوى منطقة معيّنة. في هذا الدرس العملي، سنضيف خيار شراء العادي للمنتج.
في قسم خيار الشراء، أدخِل التفاصيل التالية:- معرّف خيار الشراء: أدخِل معرّفًا فريدًا. على سبيل المثال
buy-movie. - نوع عملية الشراء: اختَر شراء.
- (اختياري) العلامات: أضِف علامات خاصة بخيار الشراء هذا.
- (اختياري) انقر على خيارات متقدّمة لضبط الخيارات المتقدّمة. لأغراض هذا الدرس البرمجي، يمكنك تخطّي إعداد الخيارات المتقدّمة.
- معرّف خيار الشراء: أدخِل معرّفًا فريدًا. على سبيل المثال
- بعد ذلك، عليك إعداد ميزة "ضبط السعر ومدى التوفّر على مستوى منطقة معيّنة" لخيار الشراء. في قسم "التوفّر على مستوى مناطق معيّنة"، عليك تحديد المناطق التي يتوفّر فيها منتجك، بما في ذلك تلك التي لم يُنشر تطبيقك فيها حتى الآن. سيتوفّر خيار الشراء تلقائيًا في جميع المناطق.
في قسم التوفّر والأسعار، انقر على تعديل مدى التوفّر وإمكانية الوصول > ضبط الحالة على "غير متوفّر". يُرجى العِلم أنّ جميع المناطق يتم ضبطها تلقائيًا على متاحة.- اختَر جميع البلدان باستثناء
FranceوSpainوUnited States، ثم انقر على ضبط الحالة على "غير متوفّر". - من القائمة المنسدلة جميع المناطق، اختَر البلدان والمناطق المتاحة. لا يعرض هذا القسم سوى البلدان التي اخترتها في الخطوة السابقة.
- لكل بلد من البُلدان المتاحة، انقر على رمز التعديل في عمود السعر. يؤدي ذلك إلى عرض مربّع حوار لتعديل السعر. أدخِل الأسعار التالية واحفظها:
- بالنسبة إلى
France، أدخِل 10 يورو - بالنسبة إلى
Spain، أدخِل 8 يورو - بالنسبة إلى
United States، أدخِل 13 دولار أمريكي
- بالنسبة إلى
- اختَر جميع البلدان باستثناء
- انقر على تفعيل. يؤدي ذلك إلى إتاحة منتجك الذي يتم تحصيل سعره مرة واحدة من خلال خيار الشراء شراء.
ملاحظة: تظهر عملة السعر على مستوى منطقة معيّنة استنادًا إلى بلد المستخدم في إعدادات Play. على سبيل المثال، إذا تم ضبط بلد المستخدم على Play على فرنسا، سيتم عرض سعر المنتج الذي يتم تحصيل رسوم مقابل شرائه مرة واحدة باليورو.
فيديو حول إنشاء منتج يتم تحصيل سعره مرة واحدة
يعرض الفيديو التالي خطوات إنشاء المنتج الذي يتم تحصيل سعره مرة واحدة والموضّحة سابقًا.
إضافة خيار الشراء "استئجار"
الآن، أضِف خيار شراء للاستئجار إلى المنتج الذي تم تحصيل سعره مرة واحدة والذي تم إنشاؤه سابقًا.
- في Google Play Console، انتقِل من قائمة التنقّل اليمنى إلى تحقيق الربح المادي باستخدام Google Play > المنتجات > المنتجات التي يتم تحصيل سعرها مرة واحدة.
- انقر على السهم المتّجه لليسار بجانب المنتج الذي يحمل معرّف المنتج
trending_movie_1الذي أنشأته في الخطوة السابقة. - انقر على إضافة خيار شراء.
- في قسم خيار الشراء، أدخِل التفاصيل التالية:
- معرّف خيار الشراء: أدخِل
rent-movie. - نوع عملية الشراء: اختَر استئجار.
- مدة الاستئجار: اختَر 48 ساعة.
- مدة بدء الاستئجار: اختَر 24 ساعة.
- (اختياري) العلامات: أضِف علامات خاصة بخيار الشراء هذا.
- (اختياري) انقر على خيارات متقدّمة لضبط الخيارات المتقدّمة. لأغراض هذا الدرس البرمجي، يمكنك تخطّي إعداد الخيارات المتقدّمة.
- معرّف خيار الشراء: أدخِل
- بعد ذلك، اضبط إمكانية التوفّر على مستوى المنطقة لخيار الشراء "استئجار"، كما هو الحال مع خيار الشراء "شراء". اطّلِع على الخطوتين 6 و7 في القسم السابق. عند تحديد الأسعار على مستوى منطقة معيّنة، يجب تحديد سعر مختلف لعمليات الاستئجار. على سبيل المثال:
France- 5 يوروSpain- 4 يورو-
United States- 7 دولار أمريكي
5- ترجمة تفاصيل المنتج الذي يتم تحصيل سعره مرة واحدة
يمكنك ترجمة اسم منتجك ووصفه بدون أي تكلفة إضافية باستخدام ميزة الترجمة الآلية المتوفّرة في Google Play Console.
لترجمة العنوان والوصف، اتّبِع الخطوات التالية:
- في Google Play Console، انتقِل من قائمة التنقّل اليمنى إلى جذب المستخدمين > الترجمات > المنتجات داخل المتجر والتطبيق.
- انقر على إنشاء طلب.
- اختَر الخيار الترجمة الآلية بدون تكلفة، ثم انقر على التالي.
- من لغات الترجمة إلى، اختَر الفرنسية - fr-FR والإسبانية -es-ES، ثم انقر على التالي.
- اختَر الاشتراكات والمنتجات التي يتم تحصيل سعرها مرة واحدة، ثم انقر على ترجمة المحتوى وعرض الترجمات. يؤدي ذلك إلى عرض بانر بيان إخلاء المسؤولية. وافِق على بيان إخلاء المسؤولية.
- ستظهر لك الآن قائمة باللغات المترجَمة. انقر على المراجعة والتطبيق للغة. راجِع النص، ثم انقر على تطبيق جميع الترجمات. كرِّر هذه الخطوة مع جميع اللغات التي اخترت ترجمتها.
بعد الترجمة، يمكنك تعديل النص المترجَم في Play Console. لتعديل النص المترجَم، اتّبِع الخطوات التالية:
- افتح صفحة المنتجات التي يتم تحصيل سعرها مرة واحدة > [المنتج الذي يتم تحصيل سعره مرة واحدة] > تعديل المنتج الذي يتم تحصيل سعره مرة واحدة > تعديل تفاصيل المنتج الذي يتم تحصيل سعره مرة واحدة.
- اختَر اللغة المطلوبة من القائمة المنسدلة للغات. يؤدي ذلك إلى عرض النص باللغة المحدّدة. تعرض الصورة التالية اختيار لغة لتعديل النص المترجَم:
الشكل 3: تعديل النص المترجَم - عدِّل النص حسب الحاجة، ثم انقر على حفظ التغييرات.
يظهر النص المترجَم للمستخدم استنادًا إلى خيارات اللغة المفضَّلة في هاتفه. على سبيل المثال، إذا تم ضبط لغة هاتف المستخدم على الفرنسية، سيتم عرض عنوان المنتج الذي يتم تحصيل سعر مرة واحدة ووصفه باللغة الفرنسية. تعرض صورة النموذج التالية كيف وأين سيظهر النص المترجَم بلغات مختلفة.
الشكل 4: النص المترجَم في تطبيقك
فيديو حول إعدادات الترجمة
يعرض الفيديو التالي خطوات إعداد الترجمة الموضّحة سابقًا.
6. الدمج مع PBL
لدمج تطبيقك مع مكتبة الفوترة في Play (PBL)، اتّبِع الخطوات التالية:
- أضِف عنصر Play Billing Library التابع إلى التطبيق النموذجي.
dependencies { val billing_version = "8.0.0" implementation("com.android.billingclient:billing-ktx:$billing_version") } - ابدأ BillingClient. BillingClient هي حزمة تطوير البرامج (SDK) الخاصة بالعميل والموجودة في تطبيقك وتتواصل مع "مكتبة الفوترة في Play". يوضّح مقتطف الرمز البرمجي التالي كيفية تهيئة أداة الفوترة.
private BillingClient createBillingClient() { return BillingClient.newBuilder(activity) .enablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build()) // For one-time products, add a listener to process and acknowledge the purchases. This will notify // Google the purchase was processed. // For client-only apps, use billingClient.acknowledgePurchase(). // If you have a secure backend, you must acknowledge purchases on your server using the // server-side API. // See https://developer.android.com/google/play/billing/security#acknowledge // In this sample snippet purchases aren't processed. You must // implement your business logic to process and acknowledge the purchases. .setListener((billingResult, purchases) -> {}) .enableAutoServiceReconnection() .build(); } - الربط بخدمة Google Play: يوضّح مقتطف الرمز التالي كيفية الربط بخدمة Google Play.
/** * Starts the billing connection with Google Play. This method should be called exactly once * before any other methods in this class. * * @param productList The list of products to query for after the connection is established. */ public void startBillingConnection(List<Product> productList) { billingClient.startConnection( new BillingClientStateListener() { @Override public void onBillingSetupFinished(BillingResult billingResult) { if (billingResult.getResponseCode() == BillingResponseCode.OK) { Log.d(TAG, "Billing Client Connection Successful"); queryProductDetails(productList); } else { Log.e(TAG, "Billing Client Connection Failed: " + billingResult.getDebugMessage()); listener.onBillingSetupFailed(billingResult); // Propagate the error to the listener to show a message to the user. } } @Override public void onBillingServiceDisconnected() { Log.e(TAG, "Billing Client Connection Lost"); listener.onBillingError("Billing Connection Lost"); } }); } - استرداد تفاصيل المنتج الذي يتم تحصيل سعره مرة واحدة: بعد دمج تطبيقك مع PBL، عليك استرداد تفاصيل المنتج الذي يتم تحصيل سعره مرة واحدة في تطبيقك. يعرض مقتطف الرمز التالي كيفية استرداد تفاصيل المنتج الذي يتم تحصيل سعره مرة واحدة في تطبيقك.
سيؤدي جلب المنتج الذي يتم تحصيل سعره مرة واحدة (private void queryProductDetails(List<Product> productList) { QueryProductDetailsParams queryProductDetailsParams = QueryProductDetailsParams.newBuilder().setProductList(productList).build(); billingClient.queryProductDetailsAsync( queryProductDetailsParams, new ProductDetailsResponseListener() { @Override public void onProductDetailsResponse( BillingResult billingResult, QueryProductDetailsResult productDetailsResponse) { if (billingResult.getResponseCode() == BillingResponseCode.OK) { List<ProductDetails> productDetailsList = productDetailsResponse.getProductDetailsList(); listener.onProductDetailsResponse(productDetailsList); } else { Log.e(TAG, "QueryProductDetailsAsync Failed: " + billingResult.getDebugMessage()); listener.onBillingError("Query Products Failed: " + billingResult.getResponseCode()); } } }); }trending_movie_1في هذا المثال) فيProductDetailsإلى ظهور ردّ مشابه لما يلي: يُرجى العِلم أنّ خيارَي الشراء والاستئجار متاحان في{ "productId": "trending_movie_1", "type": "inapp", "title": "Purrfect Mayhem: The Rewind Protocol (Movies All Day | Play Samples)", "name": "Purrfect Mayhem: The Rewind Protocol", "description": "Dr. Arid Thorne and a smart tiger named Yolo find a mysterious tape. It's a \"Rewind Protocol\" to fix time. A shadowy group, the Clockinator, hunts them to seize the tape's power.", "skuDetailsToken": "<---skuDetailsToken--->", "oneTimePurchaseOfferDetails": {}, "oneTimePurchaseOfferDetailsList": [ { "priceAmountMicros": 13000000, "priceCurrencyCode": "USD", "formattedPrice": "$13.00", "offerIdToken": "<---buy offerIdToken --->", "purchaseOptionId": "buy-option", "offerTags": [ "adventure", "mystery" ] }, { "priceAmountMicros": 7000000, "priceCurrencyCode": "USD", "formattedPrice": "$7.00", "offerIdToken": "<---rent offerIdToken--->", "purchaseOptionId": "rent-option", "offerTags": [ "adventure", "mystery" ], "rentalDetails": { "rentalPeriod": "P30D", "rentalExpirationPeriod": "PT24H" } } ] }oneTimePurchaseOfferDetailsList. تحتوي هذه القائمة على خيارَي شراء (buy-option وrent-option) تم إعدادهما في Play Console. يمكنك تحديد كل خيار شراء بشكلٍ فريد من خلال offerIdToken. - استرجِع رموز العروض الخاصة بالاستئجار والشراء. تحتاج إلى رموز العرض الترويجي لتشغيل عملية الفوترة في الخطوة 6.
@Override public void onProductDetailsResponse(List<ProductDetails> productDetailsList) { if (productDetailsList != null && !productDetailsList.isEmpty()) { // Iterate over all details of the queried product in step 4. for (ProductDetails productDetails : productDetailsList) { // Get the list of all the offers associated with the product. List<ProductDetails.OneTimePurchaseOfferDetails> offerDetailsList = productDetails.getOneTimePurchaseOfferDetailsList(); // Iterate over the offer details for (ProductDetails.OneTimePurchaseOfferDetails offerDetails : offerDetailsList) { // For a Rent purchase option, the // offerDetails.getRentalDetails() method returns // the rent information. If this information is present, // the offer corresponds to a Rent purchsae option. if (offerDetails.getRentalDetails() != null) { rentFormattedPrice = offerDetails.getFormattedPrice(); // Get the offerIdToken for the Rent purchase option rentOfferToken = offerDetails.getOfferToken(); rentMovieTags = offerDetails.getOfferTags(); } // If the offerDetails.getRentalDetails() returns // null, the offer corresponds to a Buy purchsae option. else { buyFormattedPrice = offerDetails.getFormattedPrice(); // Get the offerIdToken for the Buy purchase option buyOfferToken = offerDetails.getOfferToken(); buyMovieTags = offerDetails.getOfferTags(); } } updateUIButtons(); return; } } else { Log.e(TAG, "No product details found for " + productId); } } - تشغيل مسار الفوترة
/** * Launches the billing flow for the product with the given offer token. * * @param activity The activity instance from which the billing flow will be launched. * @param productDetails The product details of the product to purchase. * @param offerToken The offer token of the product to purchase. * @return The result of the billing flow. */ public void launchPurchase(Activity activity, ProductDetails productDetails, String offerToken) { ImmutableList<BillingFlowParams.ProductDetailsParams> productDetailsParamsList = ImmutableList.of( BillingFlowParams.ProductDetailsParams.newBuilder() .setProductDetails(productDetails) .setOfferToken(offerToken) .build()); BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder() .setProductDetailsParamsList(productDetailsParamsList) .build(); billingClient.launchBillingFlow(activity, billingFlowParams); }
ملاحظة: يمكنك أيضًا إعداد إشعارات في الوقت الفعلي خاصة بالمطوّرين (RTDN) لتنفيذ حملات استعادة المستخدمين واستراتيجيات أخرى لإدارة مراحل نشاط عمليات الشراء. للتعرّف على كيفية إعداد RTDN والتعامل مع الإشعارات من خلال التتبُّع الدقيق وإثبات الملكية، ننصحك بالاطّلاع على الدرس العملي Maximize Your Play Billing Integration.
7. خيارات الشراء التجريبي
قبل إتاحة منتجاتك التي يتم تحصيل سعرها مرة واحدة في تطبيقك المنشور، يمكنك اختبار عملية التكامل مع مكتبة الفوترة في Play باستخدام مختبِري الترخيص وPlay Billing Lab.
ستتعرّف على كيفية اختبار توطين الأسعار ومدى التوفّر في المناطق التي يتوفّر فيها التطبيق فقط، مع تحديد سعر مختلف لكل منطقة.
المتطلّبات الأساسية
- أضِف مختبِر ترخيص في Google Play Console، ثم فعِّل مختبِر الترخيص لإجراء الاختبار الداخلي.
- نزِّل تطبيق Play Billing Lab وثبِّته على هاتفك أو المحاكي.
- شغِّل تطبيق العيّنة الذي أنشأته سابقًا على هاتفك أو المحاكي.
اختبار الأسعار على مستوى مناطق معيّنة لخيارات الشراء
لاختبار ميزة "ضبط السعر على مستوى منطقة معيّنة" لخيارات الشراء، اتّبِع الخطوات التالية:
- افتح تطبيق Play Billing Lab ثم سجِّل الدخول بصفتك مختبِرًا للترخيص.
- في إعدادات الضبط، انقر على تعديل، واختَر البلد
France، ثم انقر على تطبيق. نختار هنا البلد على Play الذي يحدّد العملة التي ستظهر في التطبيق. - أغلِق تطبيق العيّنة وأعِد فتحه. من المفترض أن يعرض الآن عملة الشراء والاستئجار الخاصة بـ
Franceباليورو.
لاختبار بلد مختلف، انقر على Spain في الخطوة 2، ثم نفِّذ الخطوة 3.
فيديو اختبار برنامج الفوترة في Play
يوضّح الفيديو التالي خطوات اختبار الأسعار على مستوى منطقة معيّنة باستخدام التطبيق النموذجي.
8. الخطوات التالية
- كيفية الاستفادة إلى أقصى حدّ من دمج نظام الفوترة في Play
- كيفية تحليل حالات التوقّف عن شراء المنتجات
- تذكَّر اتّباع أفضل الممارسات المتعلّقة بإثبات ملكية عمليات الشراء ومعالجتها في الخلفية الآمنة بعد أن يبدأ المستخدمون في شراء هذه المنتجات.
المستندات المرجعية
9- تهانينا!
تهانينا! لقد تمكّنت بنجاح من التنقّل في Google Play Console لإنشاء منتج جديد يتم تحصيل سعره مرة واحدة، وإعداد خيار شراء، واختبار مسار الشراء باستخدام "مختبر الفوترة في Play". أصبح لديك الآن فهم أعمق لكتالوج المنتجات المرن في Google Play الذي يتيح إجراء عمليات شراء لمرة واحدة.
استطلاع
نقدّر ملاحظاتك بشأن هذا الدرس العملي. يُرجى تخصيص بضع دقائق لإكمال الاستطلاع.