Я использую простой скрипт PHP для проверки заказа Android для разбора загрузки для клиента.InApp Billing Verifying Order на веб-сервере PHP
$receipt = $_GET['purchaseData'];
$billInfo = json_decode($receipt,true);
$signature = $_GET['dataSignature'];
$public_key_base64 = "xxxxxxxxxxxxxxxx";
$key = "-----BEGIN PUBLIC KEY-----\n".
chunk_split($public_key_base64, 64,"\n").
'-----END PUBLIC KEY-----';
$key = openssl_get_publickey($key);
$signature = base64_decode($signature);
//$result = openssl_verify($billInfo, $signature, $key);
$result = openssl_verify($receipt, $signature, $key);
if (0 === $result) {
echo "0";
} else if (1 !== $result) {
echo "1";
} else {
echo "Hello World!";
}
//added the var_dump($result); as asked by A-2-A
var_dump($result);
результат 0int(0)
Я сделал реальный заказ через App после того как я опубликовал его, и при попытке подтвердить заказ я получаю «0» в качестве результата.
Я попытался прямой доступ HTTP
https://domain.com/thankyou.php?purchaseData={"packageName":"com.example.app","orderId":"GPA.1234-5678-1234-98608","productId":"product","developerPayload":"mypurchasetoken","purchaseTime":1455346586453,"purchaseState":0,"developerPayload":"mypurchasetoken","purchaseToken":"ggedobflmccnemedgplmodhp...."}&dataSignature=gwmBf...
Веду первым вопросом, потому что мой результат еще догадка. После дальнейшего расследования я считаю, что подпись не читается красивым чистым способом, как отправляется Google.
signature=gwmBfgGudpG5iPp3L0OnepNlx
пока браузер читает как ƒ ~®v‘¹ˆúw
Как это возможно, чтобы оно было прочитано в правильном направлении?
просто проверьте, что отображается 'var_dump ($ result);'. показать нам также –
@ A-2-A показывает «int (0)», теперь на веб-странице отображается «0 int (0)» –
int (0) относится к неизвестному, насколько я знаю, но какую часть он рассматривает как неизвестный ? –