Google забезпечує перевірку квитанцій через API розробника Google Play , в межах API є дві кінцеві точки, які вас найбільше зацікавлять: Purchases.products: get та Purchases.subscriptions: get .
Purchases.products: getможе використовуватися для перевірки придбання товару, що не поновлюється автоматично, де Purchases.subscriptions: getце для перевірки та повторної перевірки підписок на продукти, що поновлюються автоматично.
Для того, щоб використовувати будь-яку кінцеву точку ви повинні знати packageName, productId, purchaseTokenвсе це можна знайти в корисне навантаження ви отримали на покупку. Вам також потрібен такий, access_tokenякий ви можете отримати, створивши обліковий запис служби Google API.
Щоб розпочати роботу зі службовим обліковим записом, спочатку перейдіть на сторінку налаштувань доступу до API консолі розробника Google Play і натисніть кнопку Створити новий проект:

Тепер ви повинні побачити новий зв’язаний проект та кілька нових розділів, у розділі «Обліковий запис послуги» натисніть кнопку «Створити обліковий запис служби».

Ви отримаєте інформаційне вікно з інструкціями щодо створення облікового запису служби. Натисніть посилання на Google Developers Console, і з’явиться нова вкладка.

Тепер натисніть Створити новий ідентифікатор клієнта, оберіть обліковий запис служби з опцій і натисніть Створити ідентифікатор клієнта.

Завантажиться файл JSON, це ваш веб-маркер JSON, який ви будете використовувати для обміну на, access_tokenтому захистіть його.
Потім поверніть вкладки назад на консоль розробника Google play і натисніть Готово в інформаційному полі. Ви повинні побачити свій новий обліковий запис служби у списку. Натисніть Надати доступ поруч із електронною адресою облікового запису служби.

Далі в розділі Виберіть роль для цього користувача виберіть Фінанси та натисніть Додати користувача.

Тепер ви створили свій обліковий запис служби, і він має весь необхідний доступ для перевірки квитанцій. Далі відбувається обмін вашого JWT на маркер доступу_.
access_tokenЗавершується через одну годину обміну ви так потрібні деякий код сервера впоратися з цим і Google представив кілька бібліотек на різних мовах , щоб впоратися з цим (перелік не є вичерпним):
Я не буду вдаватися в подробиці, тому що існує безліч документації про те, як користуватися цими бібліотеками, але я зазначу, що ви хочете використовувати https://www.googleapis.com/auth/androidpublisherяк область OAuth2, як client_emailіз JWT як issuerі відкритий ключ, який ви можете отримати з private_keyі парольна фраза notasecretбуде використана для signing_key.
Як тільки у вас буде все access_tokenготово (принаймні, протягом наступної години, після чого ви захочете запросити новий, виконуючи той самий процес, описаний у вищезазначеному абзаці).
Щоб перевірити статус покупки витратного матеріалу (що не поновлюється автоматично), зробіть getзапит http :https://www.googleapis.com/androidpublisher/v2/applications/com.example.app/purchases/products/exampleSku/tokens/rojeslcdyyiapnqcynkjyyjh?access_token=your_access_token
Якщо ви отримаєте код відповіді 200 http, все пройшло заплановано, і ваша покупка була дійсною. 404 означатиме, що ваш маркер недійсний, тому покупка, швидше за все, була спробою шахрайства. 401 означає, що ваш маркер доступу недійсний, а 403 означає, що ваш обліковий запис служби має недостатній доступ, перевірте, чи увімкнули ви Фінанси для облікового запису доступу на консолі розробника Google Play.
Відповідь 200 буде виглядати приблизно так:
{
"kind": "androidpublisher#productPurchase",
"purchaseTimeMillis": long,
"purchaseState": integer,
"consumptionState": integer,
"developerPayload": string
}
Пояснення щодо кожного властивості див. На https://developers.google.com/android-publisher/api-ref/purchases/products .
Підписки подібні, проте кінцева точка виглядає так:
https://www.googleapis.com/androidpublisher/v2/applications/packageName/purchases/subscriptions/subscriptionId/tokens/token?access_token=you_access_token
І відповідь повинна містити такі властивості:
{
"kind": "androidpublisher#subscriptionPurchase",
"startTimeMillis": long,
"expiryTimeMillis": long,
"autoRenewing": boolean
}
Опис властивостей див. На https://developers.google.com/android-publisher/api-ref/purchases/subscriptions та зауважте, що startTimeMillisіexpiryTimeMillis буде змінюватися в залежності від тривалості підписки.
Щасливого підтвердження!