Google API获取购买状态inap正在返回“未找到”

问题描述:

我推荐google play android api来检查应用内商品的购买和消费状态。但返回如下错误:Google API获取购买状态inap正在返回“未找到”

C:\Program Files\VertrigoServ\www\inapp\index.php:74:null Not Found

我不明白他为什么不回我不是一个有效的JSON,它只是返回我的文字说:“未找到”

我使用的功能到getToken(),她的作品完美...但功能 getStatusInapp($pProductIdStr, $lAccessToken)不起作用

我做错了什么?

function getToken(){ 

GLOBAL $lPackageNameStr; // Name of package Name (com.example.app) 
GLOBAL $client_id; // my client id from google 
GLOBAL $client_secret; // my client secret from google 
GLOBAL $refresh_token; // the refresh token 
GLOBAL $pReceiptStr; // token of inap purchase 

$url ="https://accounts.google.com/o/oauth2/token"; 
$fields = array(
    "client_id"=>$client_id, 
    "client_secret"=>$client_secret, 
    "refresh_token"=>$refresh_token, 
    "grant_type"=>"refresh_token"); 

$ch = curl_init($url); 
//set the url, number of POST vars, POST data 
curl_setopt($ch, CURLOPT_POST,count($fields)); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
//execute post 
$lResponse_json = (curl_exec($ch)); 
$lAccessToken = json_decode($lResponse_json)->{'access_token'}; 
//close connection 
curl_close($ch); 
return $lAccessToken; 
} 

function getStatusInapp($pProductIdStr, $lAccessToken){ 

GLOBAL $lPackageNameStr; // Name of package Name (com.example.app) 
GLOBAL $client_id; // my client id from google 
GLOBAL $client_secret; // my client secret from google 
GLOBAL $refresh_token; // the refresh token 
GLOBAL $pReceiptStr; // token of inaap purchase 

/* 
# What is the correct way to sku? 

$pProductIdStr = "teste_01"; 
------------ or -------------- 
$pProductIdStr = "com.example.app.teste_01"; 
------------ or -------------- 
$pProductIdStr = "inap:com.example.app:teste_01"; 

# On Google Play Developer Console the sku is:> teste_01 


*/ 

$lURLStr = ("https://www.googleapis.com/androidpublisher/v2/applications/$lPackageNameStr/purchases/$pProductIdStr/purchases/$pReceiptStr"); 

$curl = curl_init($lURLStr); 

curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
$curlheader[0] = "Authorization: Bearer " . $lAccessToken; 
curl_setopt($curl, CURLOPT_HTTPHEADER, $curlheader); 

$json_response = curl_exec($curl); 
curl_close($curl); 

//echo $json_response; 
$responseObj = json_decode($json_response,true); 
var_dump($responseObj); 
echo $json_response; 
} 

/* 
| Execute... 
*/ 

getStatusInapp($pProductIdStr, getToken()); 

看起来您的API端点路径错误。该Purchases.products: get文档描述了网址为:

https://www.googleapis.com/androidpublisher/v2/applications/的packageName /采购/产品/ 的productId /标记/ 令牌

更改$lURLStr到:

"https://www.googleapis.com/androidpublisher/v2/applications/$lPackageNameStr/purchases/products/$pProductIdStr/tokens/$pReceiptStr" 
+0

真的谢谢!!和productId是 '$ pProductIdStr =“teste_01”; ------------ or -------------- $ pProductIdStr =“com.example.app.teste_01”; ------------ or -------------- $ pProductIdStr =“inap:com.example.app:teste_01”;' –

+0

productId应该是与Google Play开发者控制台中显示的内容完全相同。在名称/ ID列的括号内的应用内产品列表中显示的是您需要设置为$ pProductIdStr的内容。 –