حمولة مطوّري البرامج

وقد تم استخدام حمولة بيانات المطوّر في الماضي لأغراض مختلفة، بما في ذلك منع الاحتيال وإسناد المشتريات إلى المستخدم الصحيح. في الإصدار 2.2 أو الإصدارات الأحدث من Google Play Billing Library، أصبحت حالات الاستخدام المقصودة التي كانت تعتمد في السابق على حمولة البيانات متاحة للمطوّرين بشكل كامل في أجزاء أخرى من المكتبة.

وبعد تفعيل هذا الدعم، سنوقف نهائيًا حمولة المطوّرين، بدءًا من الإصدار 2.2 من "مكتبة الفوترة في Google Play". إنّ الطرق المرتبطة بحمولة المطورين تم إيقافها في الإصدار 2.2 وتمت إزالتها في الإصدار 3.0. تجدر الإشارة إلى أنّ تطبيقك يواصل استرداد حمولة البيانات للمطوّرين مقابل عمليات الشراء التي تتم باستخدام إصدارات سابقة من المكتبة أو AIDL.

للحصول على قائمة مفصّلة بالتغييرات، يمكنك الاطّلاع على ملاحظات الإصدار 2.2 من Google Play Billing Library وملاحظات الإصدار 3.0 من Google Play Billing Library.

إثبات ملكية الحساب أثناء عمليات الشراء

لضمان أن تكون عمليات الشراء أصلية وليست مزورة أو إعادة تشغيلها، تنصح Google باستخدام الرمز المميّز للشراء (الذي تم الحصول عليه من طريقة getPurchaseToken() في عنصر Purchase) مع واجهات برمجة تطبيقات Google Play Developer API، وذلك للتحقّق من صحة عمليات الشراء. لمزيد من المعلومات، يُرجى الاطّلاع على مقالة مكافحة الاحتيال وإساءة الاستخدام.

تحديد مصدر الشراء

تحتاج العديد من التطبيقات، لا سيما الألعاب، إلى التأكّد من أنّ عملية الشراء قد تمّت إحالتها بشكل صحيح إلى الشخصية أو الصورة الرمزية داخل اللعبة أو الملف الشخصي للمستخدِم داخل التطبيق الذي بدأ عملية الشراء. بدءًا من الإصدار 2.2 من Google Play Billing Library، يمكن لتطبيقك تمرير معرّفات الحساب والملف الشخصي التي تم إخفاء مفاتيح فك تشفيرها إلى Google عند فتح مربّع حوار الشراء وإعادتها عند استرداد عملية شراء.

استخدِم المَعلمتَين setObfuscatedAccountId() وsetObfuscatedProfileId() في BillingFlowParams واسترِدهما باستخدام الطريقة getAccountIdentifiers() في الكائن Purchase.

ربط البيانات الوصفية بعملية شراء

تنصح Google بتخزين البيانات الوصفية لعملية الشراء على خادم خلفية آمن يخضع لإشرافك. يجب ربط البيانات الوصفية للشراء هذه بالرمز المميّز للشراء الذي تم الحصول عليه باستخدام طريقة getPurchaseToken في الكائن Purchase. يمكن الاحتفاظ بهذه البيانات من خلال تمرير الرمز المميّز للشراء والبيانات الوصفية إلى الخلفية عند استدعاء PurchasesUpdatedListener بعد عملية شراء ناجحة.

لضمان ربط البيانات الوصفية في حال انقطاع عملية الشراء، تنصح Google بتخزين البيانات الوصفية على الخادم الخلفي قبل إطلاق مربّع حوار الشراء وربطه برقم تعريف حساب المستخدم ورمز التخزين التعريفي الذي يتم شراؤه والطابع الزمني الحالي.

إذا توقّف مسار الشراء قبل طلب PurchasesUpdatedListener، سيكتشف التطبيق عملية الشراء بعد أن يستأنف التطبيق ويتصل BillingClient.queryPurchasesAsync(). يمكنك بعد ذلك إرسال القيم التي تم استردادها من طرق العنصر Purchase getPurchaseTime() وgetSku() وgetPurchaseToken() إلى خادم الخلفية للبحث عن البيانات الوصفية وربط البيانات الوصفية بالرمز المميّز للشراء، ومواصلة معالجة عملية الشراء. يُرجى العِلم أنّ الطابع الزمني الذي خزّنته في البداية لن يتطابق تمامًا مع القيمة الواردة في getPurchaseTime() في عنصر Purchase، لذا عليك المقارنة بينهما بطريقة تقريبية. على سبيل المثال، يمكنك التحقق مما إذا كانت القيم ضمن فترة زمنية معينة من بعضها البعض.