fc2ブログ

記事一覧

Xamarin.InAppBilling で Android 用の課金アプリを作る (決済機能) | Xamarin.Forms


Android 用のアプリに決済機能を構築する手順を以下に説明します。
今回は Xamarin.forms を用いての開発に基づき、Xamarin.InAppBilling を導入します。

※2023/07/17追記
この記事は、Google Play Billing Library V2 の内容になっています。
Google Play Billing Library V5 に対応するには次の記事「Google Play Billing Library V5 の対応方法」をご参考ください。



前提条件
・Windows10
・Visual Studio 2015 Community Update3
・Xamarin.forms 4.2.0.695
・Google Play Developer Console への登録


1.Google Play Billing Libraryをインストール

VisualStudio 2015 のメニュー「ツール」→「Android」→「Android SDK Manager」から Google Play Billing Library にチェックをつけてインストールします。

appbilling5.png


2.パーミッションの追加

AndroidManifest.xml に以下の1文を追加します。
<uses-permission android:name="com.android.vending.BILLING" />


3.Google Play Developer Consoleでアプリ内アイテムを追加する

Google Play Developer Console にパーミッションを追加したapkをアップロードします。
アプリ内アイテムから新しいアイテムを追加します。

appbilling6.png


アイテムIDは後程コーディングにて使用する文字列になり、一意のIDを半角小文字英数記号で入力する必要があります。

appbilling7.png


4.Xamarin.InAppBillingをコンポーネントに追加します

Android プロジェクトの Compornent を右クリックして
「Get More Compornents...」をクリック

inappbilling_1.png


左上の検索欄に 「inappbilling」 と入力すると Xamarin.InAppBilling が表示されます。

inappbilling_2.png

Xamarin.InAppBilling をクリックすると、Xamarin のホームページが表示され、「Add To App」ボタンが表示されますので、
バージョンだけ確認して、ボタンを押下します。

inappbilling_3.png

Compornentに追加されると同時に、参照設定にも追加されていることが確認できます。

inappbilling_4.png


※Visual Studio 2017 からはコンポーネントが使用できなくなりました。その場合は、ダウンロードしたコンポーネントのディレクトリに含まれている DLL を直接参照設定する事でも使用が可能です。
以下のURLからダウンロード可能です。
https://github.com/lruval/Xamarin-IAP/tree/master/Android/Components/xamarin.inappbilling-2.2/lib/android
または、NuGet パッケージマネージャから Plugin.InAppBilling をインストールして処理を実装します。




5.PublicKeyについて

コーディングで GooglePlay サービスとのコネクションを作る際に必要な PublicKey を取得します。
Google Play Developer Console の「サービスとAPI」→「ライセンスとアプリ内課金」 からコピーします。

appbilling8.png


次にメモリ上のデータ暗号化して保護します。
Xamarin.InAppBilling.Utilities の Security.Unify を使用します。
string publicKey = Security.Unify(
                        new string[] { "分割したキー1/4", 
"分割したキー2/4",
"分割したキー3/4",
"分割したキー4/4"
}, new int[] { 0,1,2,3 });


6.コーディング

コーディングのサンプルは以下のURLからダウンロードした Xamarin.InAppBillingのフォルダにありますので、参考にしてください。
https://components.xamarin.com/view/xamarin.inappbilling

保存ディレクトリ\xamarin.inappbilling-2.2\samples\InAppBillingTesting\InAppBillingTesting.sln


ポイントは
InAppBilling の InAppBillingServiceConnection.Connect() は コンストラクタなどに記述し、
InAppBillingServiceConnection.BillingHandler.BuyProduct() はボタンイベントなどに記述することで、
一連の処理を分離することが重要です。
※もしも同じスレッド処理内に記述した場合、BillingHandler が null だという Excepiton になります。
Obejct reference not set to an instance of an object.

※2016/10/08 購入履歴処理の記述注意点について追記のブログを掲載しました。
https://itblog.dynaspo.com/blog-entry-58.html


7.デバッグ

Google Play Developer Console にAPKをアルファ版ベータ版にアップし、
設定ボタン→「テスト用のアクセス権がある Gmail アカウント」にテスト用アカウントを追加します。※2019年現在ではアルファ版にアップしないとテストできません。(ベータ版ではテストができません。)
テスト用アカウントでアプリを起動します。

尚、Visual Studio で直接デバッグすると apk に署名の無いアプリとなるため、「このバージョンのアプリには、Google Play を通じたお支払いはご利用になれません。詳しくはヘルプセンターをご覧ください。」というエラーになります。

xamarin_android_inapp_01.png



8.実行結果

inappbilling_5.png

※テスト用アカウントは購入ボタンを押下しても実際に請求は来ません。そのかわり、そのアカウントでは、他のアプリの購入もできなくなります。




当ブログの内容をまとめた Xamarin逆引きメニュー は以下のURLからご覧になれます。
https://itblog.dynaspo.com/blog-entry-81.html


関連記事

コメント

コメントの投稿

※名前とタイトルが入力されていないコメントでは他のコメントとの区別ができません。

 入力されていないコメントには返信しませんのであらかじめご了承くださいませ。

※ニックネームでも良いので必ずご入力ください。

    

※必ずご入力ください。

    
    

※必ずご入力ください。

※技術的な質問には環境やエラーについて正確かつ詳細にお教えください。

・正確なエラーの内容

・Windowsのバージョン番号

・Visual Studioのバージョン

・機器の型番

・アプリやソフトのバージョン

    

カテゴリ別記事一覧

広告

プロフィール

石河 純


著者名 :石河 純
自己紹介:素人上がりのIT技術者。趣味は卓球・車・ボウリング

IT関連の知識はざっくりとこんな感じです。
【OS関連】
WindowsServer: 2012/2008R2/2003/2000/NT4
Windows: 10/8/7/XP/2000/me/NT4/98
Linux: CentOS RedHatLinux9
Mac: macOS Catalina 10.15 / Mojave 10.14 / High Sierra 10.13 / Sierra 10.12 / OSX Lion 10.7.5 / OSX Snow Leopard 10.6.8
【言語】
VB.net ASP.NET C#.net Java VBA
Xamarin.Forms
【データベース】
Oracle 10g/9i
SQLServer 2016/2008R2/2005/2000
SQLAnywhere 16/11/8
【BI/レポートツール】
Cognos ReportNet (IBM)
Microsoft PowerBI
ActiveReport (GrapeCity)
CrystalReport
【OCX関連】
GrapeCity InputMan SPREAD MultiRow GridView
【ネットワーク関連】
CCNP シスコ技術者認定
Cisco Catalyst シリーズ
Yamaha RTXシリーズ
FireWall関連
【WEB関連】
SEO SEM CSS jQuery IIS6/7 apache2

休みの日は卓球をやっています。
現在、卓球用品通販ショップは休業中です。