ومع ازدياد رواج تطبيقك، قد يجذب أيضًا الانتباه غير المرغوب فيه إلى المستخدمين الضارين الذين قد يريدون إساءة استخدام تطبيقك. ويوضّح هذا الموضوع الاقتراحات التي يجب عليك استخدامها للمساعدة في منع هذه الهجمات على عملية دمج الفوترة والحد من تأثير إساءة الاستخدام في تطبيقك.
نقل المنطق الحسّاس إلى الخلفية
نقل البيانات الحساسة والمنطق إلى خادم خلفية يمكنك التحكّم فيه، بقدر ما يسمح به تصميم تطبيقك. كلما زادت البيانات والمنطق لديك في جهاز الواجهة الأمامية، كلما قلت تعرّضه للتعديل أو التلاعب به.
على سبيل المثال، يجب أن تتحقّق لعبة الشطرنج على الإنترنت من كل الحركات التي تتم في الخلفية بدلاً من الثقة في أنّ الواجهة الأمامية ترسل تحركات قانونية دائمًا.
علاوة على ذلك، إذا وجدت ثغرات أمنية أو مشاكل أمنية، بناءً على تصميم النظام، قد يكون من الأسهل تصحيح الأخطاء وإصلاحها وطرح التحديثات على الواجهة الخلفية بدلاً من الواجهة الأمامية.
التحقّق من عمليات الشراء قبل منح الاستحقاقات
هناك حالة خاصة من البيانات الحساسة والمنطق الذي يجب التعامل معه في الخلفية هو التحقق من الشراء والإقرار. بعد إجراء المستخدم لعملية شراء، عليك القيام بما يلي:
- أرسِل
purchaseToken
المقابل إلى الخلفية. وبالتالي، يجب الاحتفاظ بسجلّ يضم جميع قيمpurchaseToken
الخاصة بجميع عمليات الشراء. - تأكَّد من أنّ قيمة
purchaseToken
لعملية الشراء الحالية لا تتطابق مع أي قيمpurchaseToken
سابقة.purchaseToken
هي قيمة فريدة عالميًا، لذا يمكنك استخدام هذه القيمة بأمان كمفتاح أساسي في قاعدة البيانات الخاصة بك. - استخدِم نقاط النهاية
Purchases.products:get
أوPurchases.subscriptionsv2:get
في واجهة برمجة التطبيقات Google Play Developer API للتأكّد من صحة عملية الشراء لدى Google. - إذا كانت عملية الشراء مشروعة ولم يتم استخدامها في الماضي، يمكنك عندئذ منح الإذن بالوصول إلى العنصر أو الاشتراك داخل التطبيق بأمان.
- بالنسبة إلى الاشتراكات، عند ضبط قيمة
linkedPurchaseToken
علىPurchases.subscriptionsv2:get
، يجب أيضًا إزالةlinkedPurchaseToken
من قاعدة البيانات وإبطال الأذونات الممنوحة لـlinkedPurchaseToken
، وذلك لضمان عدم حصول عدة مستخدمين على الإذن لعملية الشراء نفسها. - يجب ألا تمنح الإذن إلا عندما تكون حالة الشراء هي
PURCHASED
، وأن تحرص على معالجة عمليات شراءPENDING
بشكل صحيح. إذا ارتفع عدد عمليات شراءCANCELED
، يُحتمَل أنّك تمنح الأذونات إذا كانت عملية الشراء لا تزال في حالةPENDING
. يمكنك الاطّلاع على مزيد من المعلومات في المقالة معالجة المعاملات في انتظار المراجعة. بعد منح الإذن، إذا أردت استهلاك منتج استهلاكي والإقرار به، استخدِم واجهة برمجة تطبيقات
Purchases.products:consume
Play Developer API على الخادم الخلفي الآمن. للإقرار باستلام منتج غير قابل للاستهلاك أو اشتراك، يُرجى الاتصال بنقطة نهاية واجهة برمجة التطبيقات Play Developer API ذات الصلة، إماPurchases.products:acknowledge
أوPurchases.subscriptions:acknowledge
على خادم الخلفية الآمن. الإقرار مطلوب، لأنّه يُعلِم Google Play بأنّ المستخدم قد مُنح الحقّ في عملية الشراء. يجب عليك الإقرار بعملية الشراء فورًا بعد منح الاستحقاق.تجدُر الإشارة إلى أنّه على الرغم من أنّه يمكنك الاطّلاع على عملية الشراء من جهة العميل أو الاطّلاع عليها من خلال التطبيق، توفّر واجهات برمجة التطبيقات من جهة الخادم حماية إضافية ضد مشاكل مثل ضعف الاتصال بالشبكة والنشاط الضار. على سبيل المثال، ضع في اعتبارك ما إذا كان المستخدم قد اشترى منتجًا من تطبيقك ولكنه فقد الاتصال بالشبكة أثناء التحقق من صحة عملية الشراء. بدون إقرار الخادم، قد يحتاجون إلى تسجيل الدخول مرة أخرى من خلال التطبيق لإكمال عملية الإقرار. وبخلاف ذلك، إذا لم يسجّل المستخدم الدخول مرة أخرى خلال ثلاثة أيام، سيتم ردّ أموال عملية الشراء تلقائيًا بسبب عدم إقرار الشراء. يمنع إقرار الخادم هذا السيناريو عن طريق إرسال إقرار بمجرد إشعار Google Play الخادم بأن عملية الشراء صالحة.
لمزيد من المعلومات حول الإقرار بعمليات الشراء واستهلاكها، يُرجى الاطّلاع على معالجة عمليات الشراء.
حماية المحتوى الذي تم فتح قفله
لمنع المستخدمين الضارين من إعادة توزيع المحتوى الذي تم فتح قفله، يجب عدم جمعه في ملف APK. بدلاً من ذلك، يمكنك تنفيذ أحد الإجراءات التالية:
- استخدِم خدمة في الوقت الفعلي لتقديم المحتوى، مثل خلاصة المحتوى. يتيح لك تقديم المحتوى من خلال خدمة الوقت الفعلي أيضًا إبقاء المحتوى محدّثًا.
- استخدِم خادمًا بعيدًا لتسليم المحتوى.
عند إرسال محتوى من خادم بعيد أو خدمة في الوقت الفعلي، يمكنك تخزين المحتوى الذي تم إلغاء قفله في ذاكرة الجهاز أو تخزينه على بطاقة SD للجهاز. إذا كنت تخزّن المحتوى على بطاقة SD، احرص على تشفير المحتوى واستخدام مفتاح تشفير خاص بالجهاز.
رصد عمليات الشراء المُلغاة والتعامل معها
عمليات الشراء المُلغاة هي عمليات شراء تم إلغاؤها أو إبطالها أو استرداد رسومها. إذا منحت عملية شراء ملغية أحد المستخدمين من قبل عناصر داخل التطبيق أو أي محتوى آخر، يمكنك استخدام واجهة برمجة التطبيقات لعمليات الشراء المُلغاة لمعرفة سبب إلغاء عملية الشراء مع أي محتوى مرتبط بها يمكنك استرداده.
يمكن أن يتم إلغاء عمليات شراء المنتجات داخل التطبيقات والاشتراكات لعدة أسباب، منها:
- يتم إلغاء عملية الشراء إما من قِبل المستخدم أو المطوّر أو Google. بالنسبة إلى الاشتراكات، يُرجى العِلم أنّ هذا الإجراء يشير إلى إلغاء شراء اشتراك، بدلاً من إلغاء الاشتراك نفسه.
- ويتمّ ردّ رسوم عملية الشراء.
- يقوم مطوّر التطبيق بإلغاء طلب المستخدم أو ردّ أمواله ويتحقق من خيار "الإبطال" في وحدة التحكم.
استنادًا إلى سبب عملية الشراء المُلغاة، ومراعاة البيانات السلوكية السابقة للمستخدم، يمكنك اتخاذ قرار بشأن الإجراء الذي سيتم اتخاذه. ننصح بتنفيذ خطوة أو أكثر من الإجراءات التالية:
- استرداد العناصر غير المستخدَمة: عند إبطال عملية شراء، يمكنك استرداد السلع غير المستخدَمة كما لو لم يتمّ شراؤها أبدًا. على سبيل المثال، إذا تم إلغاء شراء عملة داخل اللعبة، فيمكنك استرداد عملة تم منحها للمستخدم بالفعل. في حال إنفاق المستخدم العملة بالفعل، فكّر في ضبط رصيد العملة على سلبي وتقييد النشاط على التطبيق وعمليات الشراء المستقبلية إلى أن يصبح رصيد العملة موجبًا.
- تنفيذ الإنذارات المتعددة: ننصحك باتّخاذ إجراءات أقل بحق المخالفين لأول مرة، مثل عرض التحذيرات داخل التطبيق. بالنسبة إلى المخالفين المتكرّرين، ننصحك بتدابير أكثر صرامة.
- إيقاف عمليات الشراء مؤقتًا: مثلما يحدث مع عمليات الشراء المتعدّدة، ننصحك بإيقاف عمليات الشراء التي يجريها المستخدمون الذين ألغوا عمليات الشراء إلى أن تتمكّن من إجراء المزيد من التفاصيل حول سبب إبطال عمليات الشراء.
- منع الوصول إلى تطبيقك مؤقتًا أو نهائيًا: في الحالات القصوى التي تتكرّر فيها الأنشطة الضارة، ننصحك بعدم السماح بالوصول إلى تطبيقك، سواء بشكل مؤقت أو دائم.
- إجراء طلبات متكررة لواجهة برمجة التطبيقات Voided Purchases API: عند رصد عملية شراء واحدة أو أكثر تم إلغاؤها، ننصحك بإجراء طلبات متكررة أكثر على واجهة برمجة التطبيقات عمليات الشراء التي تم إلغاؤها. يمكنك العثور على مزيد من المعلومات حول حصص واجهة برمجة التطبيقات لعمليات الشراء الملغاة في مستندات واجهة برمجة التطبيقات لعمليات الشراء المُلغاة.
مساعدة Google في اكتشاف الاحتيال قبل حدوثه
ترتبط بعض أنواع الاحتيال بالمستخدمين الضارين الذين ينشئون حسابات متعددة على Google وداخل التطبيق لإخفاء نشاطهم.
استخدِم طريقتَي
setObfuscatedAccountId
وsetObfuscatedProfileId
في أداة الإنشاء من أجل
BillingFlowParams
لمساعدة Google في ربط حسابات Google بالحسابات داخل التطبيقات.
تستخدم Google هذه البيانات لرصد السلوكيات المريبة وحظر بعض أنواع المعاملات الاحتيالية قبل اكتمالها.
اتّخاذ إجراءات ضد انتهاك العلامة التجارية وحقوق الطبع والنشر
إذا كنت تستخدم خادمًا بعيدًا لتسليم المحتوى أو إدارته، اجعل تطبيقك يتحقّق من حالة شراء المحتوى الذي تم إلغاء قفله عندما يدخل أي مستخدم إلى المحتوى. ويتيح لك ذلك إبطال الاستخدام عند الضرورة وتقليل القرصنة. إذا لاحظت إعادة توزيع المحتوى على Google Play، احرص على التصرّف بسرعة وحاسم. لمزيد من التفاصيل، يُرجى الاطّلاع على صفحة الأسئلة الشائعة عن حقوق الطبع والنشر في مركز مساعدة حقوق الطبع والنشر.