Підписки в додатках стають все більш популярними, забезпечуючи стабільний дохід для розробників та безперервний доступ для користувачів до преміум-контенту та функцій. Однак, інтеграція таких підписок у додатки може бути викликом, особливо коли мова йде про обробку та перевірку оплати. В цій статті ми розглянемо процес розшифрування serverVerificationData для підписок у Flutter за допомогою ASN.1.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
InAppPurchaseStoreKitPlatformAddition iosPlatformAddition = _inAppPurchase .getPlatformAddition<InAppPurchaseStoreKitPlatformAddition>(); await iosPlatformAddition.refreshPurchaseVerificationData().then((value){ storeReceipt = value!.serverVerificationData; }); debugPrint("store data $storeReceipt"); Uint8List binaryData = base64.decode(storeReceipt); debugPrint("bin data $binaryData"); ASN1Parser parser = ASN1Parser(binaryData); debugPrint("par $parser"); ASN1Sequence sequence = parser.nextObject() as ASN1Sequence; debugPrint("seq $sequence"); for (var item in sequence.elements) { debugPrint("items is $item"); } |
Підписки на Flutter можуть бути реалізовані за допомогою плагіну in_app_purchase, який забезпечує інтерфейс для взаємодії з магазинами додатків Apple та Google. Коли користувач придбає підписку, додаток отримує serverVerificationData, який необхідно розшифрувати та перевірити перед подальшою обробкою.
У випадку з Android, отримання минулих покупок здійснюється за допомогою InAppPurchaseAndroidPlatformAddition, але на iOS процес трохи складніший. Інформацію, яку отримуємо від App Store, необхідно розкодувати та перевірити. Одним із методів розшифрування є використання ASN.1.
ASN.1 (Abstract Syntax Notation One) – це стандарт, який визначає відомі структури даних та правила їх кодування, що використовуються для обміну даними між системами. В даному випадку, serverVerificationData представляє собою дані, закодовані за допомогою ASN.1, тому їх потрібно розкодувати, щоб отримати корисну інформацію про підписку.
Для розшифрування serverVerificationData у Flutter використовується плагін asn1lib, який надає зручний інтерфейс для роботи з ASN.1. Після отримання serverVerificationData він спочатку розкодується з base64 у байтовий масив, а потім цей масив передається в ASN1Parser. Після цього використовується парсер для розшифрування послідовності даних та отримання необхідних елементів.
У нашому коді ми отримуємо serverVerificationData, розкодуємо його та передаємо отриманий байтовий масив в ASN1Parser. Потім ми проходимо по послідовності даних та отримуємо необхідну інформацію про підписку.
Результатом виконання цього коду буде розкодована інформація про підписку, яку можна використовувати для подальшої обробки в додатку. Важливо пам’ятати, що цей процес потребує належного тестування та перевірки, оскільки правильність розшифрування може вплинути на функціональність додатку та безпеку користувачів.