iOS レシートから元のトランザクション ID を取得しようとしていますが、Apple から返されたデータに json_decode を使用すると、奇妙な形式になります。次に例を示します。
//リンゴからのオブジェクト
{
"in_app" =
(
{
"is_trial_period" = false;
"original_purchase_date" = "2014-04-24 15:15:19 Etc/GMT";
"original_purchase_date_ms" = 1398352519000;
"original_purchase_date_pst" = "2014-04-24 08:15:19 America/Los_Angeles";
"original_transaction_id" = 1000000108799609;
"product_id" = Gems500;
"purchase_date" = "2014-04-24 15:15:20 Etc/GMT";
"purchase_date_ms" = 1398352520000;
"purchase_date_pst" = "2014-04-24 08:15:20 America/Los_Angeles";
quantity = 1;
"transaction_id" = 1000000108799609;
}
);
}
in_app が配列であることが他の例でわかりますが、丸括弧で取得しています。何が起こっているのかわからない。これは私のサーバーメソッドです:
// parse the response data
$data = json_decode($response);
$data = json_decode($response);
// ensure response data was a valid JSON string
if (!is_object($data)) {
return 'Invalid response data';
}
// ensure the expected data is present
if (!isset($data->status) || $data->status != 0) {
return "Apple return with error ".$data->status;
}
$in_app = $data->receipt->in_app; //works fine
$original_transaction_id = $in_app['original_transaction_id'];//does not work
丸括弧が表示される理由や何をすべきかはわかりませんが、このタイプの JSON 応答またはおそらく私が間違っていることを認識している場合は、耳を傾けてください。
レシートの他のすべてのフィールドにアクセスできますが、in_app 内の唯一のフィールドにはアクセスできません。