2016-07-23 10 views
0

Google PlayアンドロイドAPIを使用して、アプリ内アイテムの購入と消費状況を確認しました。彼は有効なJSONを私はしませ返さない理由を私は理解できないGoogle APIのInap購入ステータスが「見つからない」

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

、それはちょうど私

私は関数を使用する「見つかりません」と言ってテキストを返しますが、以下のようにエラーを返します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()); 

答えて

2

APIのエンドポイントパスが間違っているようです。 Purchases.products: getドキュメントはとしてURLを説明します

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 "; ------------または-------------- $ pProductIdStr = "com.example.app.teste_01"; ------------または-------------- $ pProductIdStr = "inap:com.example.app:teste_01"; ' –

+0

productIdはGoogle Playデベロッパーコンソールに表示されている内容とまったく同じです。名前/ ID列の括弧内のアプリ内アイテムのリストに表示されているものは、$ pProductIdStrとして設定する必要があります。 –

関連する問題