Верификация данных In-app Billing

SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
Ответить
ikozlov
Сообщения: 1
Зарегистрирован: 22 июл 2015, 16:47

Верификация данных In-app Billing

Сообщение ikozlov » 22 июл 2015, 17:00

Добрый день!
После покупки "продукта"

Код: Выделить всё

Bundle buyIntentBundle = mService.getBuyIntent(3, activity.getPackageName(), "my_sku", "inapp", orderId);
PendingIntent pendingIntent = buyIntentBundle.getParcelable("BUY_INTENT");
activity.startIntentSenderForResult(pendingIntent.getIntentSender(), 1001, new Intent(), Integer.valueOf(0), Integer.valueOf(0), Integer.valueOf(0));
В Activity в onActivityResult приходит ответ

Код: Выделить всё

String purchaseData = data.getStringExtra("INAPP_PURCHASE_DATA");
String dataSignature = data.getStringExtra("INAPP_DATA_SIGNATURE");
Полученные данные нужно верифицировать на сервере, использую код

Код: Выделить всё

function verify_market_in_app($purchaseData, $dataSignature, $public_key_base64) {
	$key = "-----BEGIN PUBLIC KEY-----\n".chunk_split($public_key_base64, 64,"\n").'-----END PUBLIC KEY-----';   
	//using PHP to create an RSA key
	$key = openssl_get_publickey($key);
	//$signature should be in binary format, but it comes as BASE64. 
	//So, I'll convert it.
	$dataSignature = base64_decode($signature);   
	//using PHP's native support to verify the signature
	$result = openssl_verify($purchaseData,$dataSignature,$key,OPENSSL_ALGO_SHA1);
	if (0 === $result) {
		return false;
	}
	else if (1 !== $result) {
		return false;
	}
	else {
		return true;
	}
} 
Метод возвращает false. При этом $key = "Resource id #5"

Ответить