CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Android : Vérifier les achats in-apps server-side

VivreUnEldorado
VivreUnEldorado
Niveau 45
14 juillet 2019 à 14:02:56

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
Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware