2013年5月27日月曜日

Amazon App Store In-App Purchasing API (アプリ内課金) 説明

 以前、Amazon app storeにアプリ内課金(サブスクリプション)を実装したアプリを提供した。
その時、Amazon SDKにおける In-App Purchasing APIを使用してアプリ内課金処理を実装したのでその仕組みのメモ。

Amazon App Store

 PC、KindleやAndroidスマートフォン/タブレット向けのアプリマーケット。
(Amazon版 Play Store的なもの)
ユーザーはいつものAmazonアカウントで、いつものお買い物と同じようにアプリやコンテンツを購入することが可能。アプリ提供の他、おすすめ機能、カスタマーレビュー、1-Click決済を含むAmazon同等のショッピング機能が用意されている。
Androidデバイスでこのサービスを利用する為には、Amazon App Store(Client)アプリ(Googleでいうところの Play Storeアプリ的なもの)が必要。

課金の概要

 Amazon App Storeでは、アプリの中からゲーム内通貨、拡張パック、アップグレード、雑誌の購入などをできるようにする仕組みとして、IAP (In-App Purchasing) APIを公開しています。
(AmazonSDKとしてJARライブラリとして公開されており、ポータルサイトからダウンロードできます。)
IAP APIを利用するとデジタルコンテンツやサブスクリプション(定期購読などのこと)をアプリ内で販売することが可能になります。

課金の仕組み

  1. Amazon App Store (Client) と Amazon Service
     Kindle, Androidデバイスにおける Amazon App Storeの課金は、amazon app clientアプリが Amazonのサーバーへ3G/Wi-Fi回線を使用してリクエストを行い、領収書(レシート)を取得してアプリへ返すことで実現しています。

  2. Amazon Clientが担う機能
    • アプリ側で実装しなければならない機能
      1. ユーザーが購入できるようにアプリ内のアイテムのカタログを提示する。
      2. 購入されたアイテム・コンテンツのロック解除。
      3. 購入された消耗アイテムのトラッキング。
      4. 購入したデジタルコンテンツの使用。
    • Amazon App Store (Client)側で行われる機能
      1. 購入手順の管理。
      2. 支払処理の実施。
      3. 決済のセキュリティを含め、Amazon Platformとのセキュアな通信を行う。
      4. 資格を確認し、購入した領収書を検証する。
      5. サブスクリプションの自動更新や取り消しを含む管理を行う。
  3. コンテンツの販売方法
    1. ローカルコンテンツのロック解除方式
    2. リモートコンテンツのダウンロード方式
  4. SKU (technically a stock-keeping unit)
    • 購入可能なアイテムのユニーク(一意)識別子。
    • amazon Distribution Portalの開発者アカウント内で一意である必要がる。
    • ユーザが購入する直接のアイテム定義である。
購入可能なアイテム

Amazon App Storeで購入可能なアイテムは3種類。
  1. Consumable Content(消費型コンテンツ)
    使用に資格やアクセス権を必要とせず、何度でも購入可能。
    そのデバイスでのみ利用可能なコンテンツ。
  2. Entitled Content(買いきり型コンテンツ)
    使用する権利やアクセス権を必要とするコンテンツ。
    1度だけ購入しユーザアカウントが登録されている全ての互換性のあるデバイスで使用することができる。
  3. Subscription Content(期間購入型コンテンツ)
    一定の期間、資格やアクセス権を必要とするコンテンツ。 一定の期間その権利を持ち、自動で更新される。購入したユーザアカウントが登録されている全ての互換性のあるデバイスで使用することができる。
※名称等が若干違う場合があります。

処理のフローや実装、API(PurchasingManagerやBasePurchasingObserver)の詳細はまた別の記事で記載していきたいと思います。
記事内容に誤り等がありましたらご指摘願います。

0 件のコメント:

コメントを投稿