PHPでiOSのレシートを検証したい(超簡易メモ版)
前回はAndroidのレシート検証について超簡易的なメモを残したので、その流れでiOSについても超簡易的なメモを残します。 ohshige.hatenablog.com
参考:
レシート検証プログラミングガイド
iOSの場合、公式の特別なライブラリは無いようなので、PHPからそのままAPIを叩くことにします。
そのためにguzzleを使います。
composer require guzzlehttp/guzzle
開発環境もしくは審査中の場合にはsandbox環境用のURL、本番環境の場合にはproduction環境用のURLが用意されているので、それを使います。
環境 | URL |
---|---|
sandbox | https://sandbox.itunes.apple.com/verifyReceipt |
production | https://buy.itunes.apple.com/verifyReceipt |
// 環境に応じたURL $verify_url = 'https://buy.itunes.apple.com/verifyReceipt'; $client = new GuzzleHttp\Client(); $response = $client->request('POST', $verify_url, [ 'json' => [ 'receipt-data' => [base64でエンコードされたレシートデータ], 'password' => [アプリケーションの共有シークレット], ], ]); if ($response->getStatusCode() !== 200) { // 何かしらの通信エラー return; } $body = json_decode($response->getBody()->getContents(), true); // sandbox用のレシートがproductionに送信された場合の処理 if ($body['status'] === 21007) { // 必要ならsandbox用URLへ再送するなどの処理 } // レシートが有効でなかった場合の処理 if ($body['status'] !== 0) { // 必要なら何かしらの処理 } // バンドルIDが異なる場合の処理 if ($body['receipt']['bundle_id'] !== [バンドルID]) { // 必要なら何かしらの処理 } // レシート検証に成功した場合の処理