-なにかとややこしい課金周り *用語 [#f5362cd3] |productId|アプリに対してユニークなID。デバイス別に課金したいなら別にする| |レシート|Appleから送付されるJSONの購入情報。これを継続課金などの際には再度検証する| *鉄則 [#x268f6b5] -シートチェック後の product-id をちゃんと検証 -1個のトランザクションIDで、1回の付与 *レシート検証 [#u33bead0] -本番と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