-なにかとややこしい課金周り

*用語 [#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

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS