Technologies utilisées : Android, Managed products in-app purchases, Cloud Functions, NodeJS, Firestore
___
Salut à tous !
Je souhaite mettre en place des achats in-apps dans mon appli Android. Et donc vérifier qu'un achat effectué par l'utilisateur est valide, avant d'offrir à ce dernier la fonctionnalité qu'il a demandée.
- J'ai donc lu ça : https://developer.android.com/google/play/billing/billing_library_overview#Verify-purchase
- J'en suis rendu à l'étape d. " The secure backend server uses the user account credential received in step 1 to associate the purchase token with the user of the app instance where the purchase was made. "
Ma question : Je ne comprends pas ce qu'il faut faire pour réaliser cette association, ni où la stocker, ni à quoi elle peut servir... ???
___
Important : j'utilise Google Cloud Functions pour stocker et exécuter le programme de vérification d'achat, écrit en JavaScript avec NodeJS. Voici le code que j'ai pour l'instant écrit. Les étapes a. à c. (toutes deux incluses) du lien que j'ai précédemment donné sont mises en place.
const functions = require('firebase-functions');
const admin = require('firebase-admin');
const request = require('request');
exports.verifyInAppManagedProductsPurchases = functions.https.onRequest(async(req, res) => {
const product_id = req.query.product_id; // Defining the constants with their received values
const purchase_token = req.query.purchase_token;
const user_account_credential = req.query.user_account_credential;
const package_name = 'com.XYZ';
const url = 'https://www.googleapis.com/androidpublisher/v3/applications/' + package_name + '/purchases/products/' + product_id + '/tokens/' + purchase_token;
request({url: remote_url}, function(error, response, body) { // Querying Google Play Developer API (Purchases.products.GET)
if(error) {
console.log(error);
return;
}
if(response.statusCode != 200) {
console.log('Error: response.statusCode = ' + response.statusCode);
return;
}
const parsed_json_body = JSON.parse(body);
const order_id = parsed_json_body.orderId;
const admin_firestore = admin.firestore();
admin_firestore.collection('invoices').whereEqualTo('order_id', order_id).get().then(querySnapshot => {
if(!querySnapshot.empty()) {
res.send({error: -1});
return;
}
});
});
});
Message édité le 14 juillet 2019 à 14:05:18 par VivreUnEldorado