

iOSの継続課金のレシート検証では、  
アプリ側からbase64でエンコードされたレシート情報(文字列)をサーバーが受け取り、  
それをApple検証サーバーに投げてそのレスポンスを検証すると思います。

サーバーの課金バリデーションロジックが通ったら、  
ユーザー情報やレシート情報(transactionIdや有効期限等)をデータベースに保持すると思います。その時、最初にアプリから受け取った生レシート(base64でエンコードされた文字列)もサーバーのデータベースに保持すべきでしょうか？

継続課金レシートのエンコードデータは課金更新されるたびに履歴が増えるのでDBに保持しても容量を取り、そもそも使用する機会はあまりないと思っていたのですが、ユーザーの課金で何か不具合があったときにその時必要な情報を参照できるように大元は残しておいたほうがよいのか、という点で保持すべきかどうかを迷っています。課金で不具合があった際に(保持しなかったことで)問題解決できないことを避けたいというのが今回の質問の背景になります。

[code]

    // エンコードされたレシート(例)
    WDGldlGDEwASAgIGrwIBAQQJAgcDjX6kGKkdkkSekgkFSkkgkdkdgkgdFSMjAxOC0wNy0yM
    VowHwICBqoCAQESIgSUgaKDKgNy0yMlQwOVowggF8AgERAgEBBIIBcjGgegeGAMjAxOC0wd
    E0yMFQxOToxMTo0OVowggF8AgERAgEBBIIBcjGgegeGwCwICBq0CAQEEAgwAMGaFlgdFAgB
    DGdGwCwGDYCAQEEAgwAMAwCAgalAgEBBAMFCAQEwDAICBqsCAQEEAwIBAzAMAgIGrgIBAQS
    QDAgEAMgEUKkkfkeolgakmMgDwDAICBrcCAQEEAwIBADASAgIGrwIBAQQJAgcDjX6nIpJnM
    (以下続く)
    
[/code]


CC BY-SA 4.0
2018-07-23T22:38:18.647
46884
2018-07-24T01:15:54.367
2018-07-24T01:15:54.367
28503
28503
question
ios データベース設計 アプリ内課金 database base64
iOSアプリ継続課金(レシート検証)でサーバーがデータベースに保持すべきもの