Androidアプリでのアプリ内購入

1.それは何であり、なぜ必要なのですか?



大まかに言えば、アプリ内購入は、アプリケーション内で仮想商品(ゲーム通貨、新レベル、ゲームアイテムなど)を購入するためのサービスです。 主にゲームで使用されます。作成時にお金を稼ぐ必要性について疑問が生じますが、有料で配布したくない場合(または意味がありません)。



2. Androidアプリケーションでのアプリ内購入



開発中のゲームでアプリ内購入を使用する必要に直面したとき、このサービスをゲームに結び付ける方法に関する詳細なロシア語の情報を見つけることは非常に困難でした。 最良のサービスはHabrの記事の1つで説明されていますが、この問題に関する私のビジョンを示したいと思います。 そのため、サービスをアプリケーションに接続する方法に関する小さなマニュアルを作成することにしました。



そもそも、このすべてがどのように機能するかを理解しておくといいでしょう。



原則として、機能するプロセス全体は上記の記事で非常によく説明されているので、同じことをもう一度繰り返しても意味がありません。 したがって、私はポイントにまっすぐに行きます。



Androidマーケットに既にデベロッパーアカウントを持っていることを前提としています。



アプリケーション内のショッピングシステムを使用するには、IMarketBillingService.aidlというファイルが必要です。 アプリ内購入を操作するためのサンプルアプリケーションで見つけることができます。アプリ内購入は、Android SDKのダウンロード可能なコンポーネントです。 Android SDKとAVD Managerを起動し、利用可能なパッケージを選択します。 次に、サードパーティのアドオン-> Google Inc.を選択する必要があります。 アドオン-> Google Market Billingパッケージ。



次に、ダウンロードしたサンプルからIMarketBillingService.aidlファイルをプロジェクトにコピーする必要があります。 com.android.vending.billingにあることが重要です。 その後、マニフェストに拡張機能を追加します:<uses-permission android:name = "com.android.vending.BILLING" />。



アプリケーションの例では、上記のファイルに加えて、支払いシステムを操作するために実装されたいくつかのクラスもあります。 それらをプロジェクトにコピーします。 それらのそれぞれは何ですか:



BillingReceiver-市場からすべての非同期応答を受信し、さらにBillingServiceに送信します。

BillingService-リクエストをマーケットに送信します。

Consts-サンプルアプリケーションのすべての定数が含まれています。

ダンジョン-UIを提供し、完了した購入の履歴を表示します。

PurchaseDatabase-ローカルデータベース。

PurchaseObserver-購入に関連する変更の監視。

ResponseHandler-データベースとUIの更新。

セキュリティ-セキュリティ。

Base64およびBase64DecoderException-バイナリシステムからbase64へのエンコード。 Securityクラスの機能に必要です。



Securityクラスで、次の行を探します。

String base64EncodedPublicKey = “…”





Androidマーケットでアカウントを登録するときに取得したPublicKeyをここに入力します。



Dungeonsクラスでは、販売されることになっている製品のリストを探し、それらを自社のものに変更します。 同時に、商品をAndroidマーケットにアップロードして公開する必要があります(アプリケーション自体は公開する必要はありません-ただし、テストする場合は、自分(または他の誰か)を開発者(プロファイル設定で行います)に追加することを忘れないでください)。 次に、インターフェイスを追加すると、原則として、アプリケーションの準備が整います。



ただし、セキュリティに注意する必要があります。 ショッピングの安全性を確保する最善の方法は、サーバー上で適切なサービスを使用することです。 ユーザーが商品の購入を完了すると、市場は購入した商品に関する情報を含むJSON行を送信します。

{ "nonce" : 1836535032137741465,

"orders" :

{ "notificationId" : "android.test.purchased",

"orderId" : "transactionId.android.test.purchased",

"packageName" : "com.example.dungeons",

"productId" : "android.test.purchased",

"developerPayload" : "bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ",

"purchaseTime" : 1290114783411,

"purchaseState" : 0 }

}






リクエストを認証するための署名。



アプリケーションのサーバー側では、返された文字列を署名とキー(RSA暗号化)を使用して確認し、検証結果をクライアントに返す必要があります。 このためにPHPで書かれた小さなオープンライブラリがあります、私はそれを使用しました。



アプリ内購入での作業時のセキュリティに関する詳細は、 こちらに記載されています




All Articles