-なにかとややこしい課金周り
*用語 [#f5362cd3]
|productId|アプリに対してユニークなID。デバイス別に課金したいなら別にする|
|レシート|Appleから送付されるJSONの購入情報。これを継続課金などの際には再度検証する|
*鉄則 [#x268f6b5]
-シートチェック後の product-id をちゃんと検証
-1個のトランザクションIDで、1回の付与
*レシート検証 [#u33bead0]
-本番とSandbox二種類ある。審査が下りないと本番は使えない。そのため検証は本番で行い、環境違いのエラーが出たら開発にリトライなどの対応が必要。
-Sandboxはパスワードが必要
-他のアプリのレシートも検証はOKになってしまう(Googleはちゃんと弾いてくれる)
-上記対策としてproduct_idが一致するかをチェックする
-transaction_idが決済単位でユニークになるので、これを最初に使ったユーザーが課金OKとして以後の重複登録(不正利用)を防ぐべし。
*処理の流れ [#r7fbe130]
+クライアントアプリでレシートを受け取る
+サーバー側に投げる。失敗しても投げ続ける。
+検証済みレシートのproduct_idの確認
+サーバー側は検証後に、TransactionIdに対して購入済みとして、アイテム付与などを行う。
*参考サイト [#v534f893]
http://tech.vasily.jp/entry/ios_premium_validation
http://melpon.org/blog/ios-consumable-in-app-purchase