アプリ内購入の領収書の検証
アプリ内購入は、多くの iOS アプリにとって重要な収益源となります。これらの取引の正当性を保証するために、アプリ開発者は Apple の App Store で領収書を検証する必要があります。ただし、このプロセスは複雑でエラーが発生しやすい可能性があります。
領収書検証: 概要
クライアント側で領収書を検証するには、開発者は領収書をSKPaymentTransaction オブジェクトを作成し、base64 でエンコードします。次に、エンコードされたレシートが開発者のサーバーに送信されます。
サーバー側の検証
サーバーは、HTTP POST リクエストを使用して、エンコードされたレシートを Apple の App Store に転送します。 Apple の応答には、領収書が有効かどうかと、取引のステータス (購入、返金など) が示されます。
クライアント側の統合
領収書が受信されたらサーバー上で検証されている場合、クライアント側アプリはデータを取得してローカルに保存できます。このレコードは、コンテンツのロックを解除したり、アプリ内の機能へのアクセスを許可したりするために使用できます。
サンプル コード
コードでレシートを確認するには、次の手順が必要です。
Objective-C クライアント側:
<code class="objective-c">- (void)verifyReceipt:(SKPaymentTransaction *)transaction { NSString *receiptData = [self encode:transaction.transactionReceipt.bytes length:transaction.transactionReceipt.length]; // Combine with server URL and query string, perform HTTP request }</code>
Base64 エンコーディング:
<code class="objective-c">- (NSString *)encode:(const uint8_t *)input length:(NSInteger)length { // Encode the receipt data using base64 }</code>
サーバー側 PHP :
<code class="php">$url = "https://sandbox.itunes.apple.com/verifyReceipt"; $receipt = json_encode(array("receipt-data" => $_GET["receipt"])); $response = json_decode(postToURL($url, $receipt)); // Parse and process the Apple response</code>
トラブルシューティングと注意事項
Apple に送信する前に、レシート データが適切にフォーマットされ、エンコードされていることを確認してください。最新バージョンの iOS と App Store SDK を使用してください。 UI スレッドのブロックを避けるために、非同期 HTTP リクエストの使用を検討してください。クライアント側とサーバー側の両方の通信には安全な HTTPS 接続を使用することをお勧めします。
以上がアプリ内購入の領収書を検証するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。