تم استخدام حمولة المطوّر في السابق لأغراض مختلفة، بما في ذلك منع الاحتيال وتحديد المستخدم الصحيح الذي أجرى عملية الشراء. في الإصدارات 2.2 والإصدارات الأحدث من Google Play Billing Library، أصبحت حالات الاستخدام المقصودة التي كانت تعتمد سابقًا على حمولة المطوّر متاحة الآن بالكامل في أجزاء أخرى من المكتبة.
بعد إتاحة هذه الميزة، أوقفنا نهائيًا ميزة "حمولة المطوّر"، بدءًا من الإصدار 2.2 من Google Play Billing Library. تم إيقاف الطرق المرتبطة بحمولة المطوّر نهائيًا في الإصدار 2.2، وتمت إزالتها في الإصدار 3.0. يُرجى العِلم أنّه يمكن لتطبيقك مواصلة استرداد حمولة المطوّر لعمليات الشراء التي تم إجراؤها باستخدام الإصدارات السابقة من المكتبة أو AIDL.
للحصول على قائمة مفصّلة بالتغييرات، يمكنك الاطّلاع على ملاحظات الإصدار 2.2 من مكتبة الفوترة في Google Play وملاحظات الإصدار 3.0 من مكتبة الفوترة في Google Play.
تأكيد عملية الشراء
لضمان صحة عمليات الشراء وعدم تزويرها أو إعادة تنفيذها، تنصح Google باستخدام رمز الشراء المميز (الذي يتم الحصول عليه من خلال الطريقة
getPurchaseToken()
في العنصر
Purchase) مع واجهات برمجة التطبيقات Google Play Developer APIs للتحقّق من صحة عمليات الشراء.
لمزيد من المعلومات، يُرجى الاطّلاع على مقالة مكافحة الاحتيال وإساءة الاستخدام.
تحديد مصدر عمليات الشراء
تحتاج العديد من التطبيقات، وخاصةً الألعاب، إلى التأكّد من أنّ عملية الشراء يتم إسنادها بشكل صحيح إلى الشخصية/الصورة الرمزية داخل اللعبة أو ملف المستخدم داخل التطبيق الذي بدأ عملية الشراء. بدءًا من الإصدار 2.2 من Google Play Billing Library، يمكن لتطبيقك إرسال معرّفات الحسابات وملفات الدفع المشوشة إلى Google عند إطلاق مربّع حوار الشراء، كما يمكن استردادها عند استرجاع عملية شراء.
استخدِم المَعلمتَين
setObfuscatedAccountId()
و
setObfuscatedProfileId()
في
BillingFlowParams
واسترجِعهما باستخدام الطريقة
getAccountIdentifiers()
في الكائن
Purchase.
ربط البيانات الوصفية بعملية شراء
تنصح Google بتخزين البيانات الوصفية لعملية شراء على خادم خلفي آمن تديره أنت. يجب ربط البيانات الوصفية لعملية الشراء برمز الشراء المميز الذي تم الحصول عليه باستخدام طريقة getPurchaseToken في العنصر Purchase. يمكن الاحتفاظ بهذه البيانات من خلال تمرير رمز الشراء والبيانات الوصفية إلى الخلفية عند استدعاء PurchasesUpdatedListener بعد عملية شراء ناجحة.
لضمان ربط البيانات الوصفية في حال حدوث انقطاعات في مسار الشراء، تنصح Google بتخزين البيانات الوصفية على خادم الخلفية قبل عرض مربّع حوار الشراء وربطها برقم تعريف حساب المستخدم ومعرّف SKU الذي يتم شراؤه والطابع الزمني الحالي.
إذا تمّت مقاطعة مسار عملية الشراء قبل استدعاء PurchasesUpdatedListener، سيكتشف تطبيقك عملية الشراء عند استئنافه واستدعاء BillingClient.queryPurchasesAsync().
يمكنك بعد ذلك إرسال القيم التي تم استردادها من العنصر Purchase باستخدام الطرق getPurchaseTime() وgetSku() وgetPurchaseToken() إلى خادم الخلفية للبحث عن البيانات الوصفية وربطها برمز الشراء ومواصلة معالجة عملية الشراء. يُرجى العِلم أنّ الطابع الزمني الذي خزّنته في البداية لن يتطابق تمامًا مع القيمة من PurchasegetPurchaseTime()، لذا عليك مقارنتهما بطريقة تقريبية. على سبيل المثال، يمكنك التحقّق مما إذا كانت القيم ضمن فترة زمنية معيّنة.