JSONデータ内に表示される各プロパティを宣言するCustomers.vbクラスを作成する。ここで定義したプロパティはJSONデータのルート要素の直下に表示される。
Imports Newtonsoft.Json Namespace WebPayApplication.WebPay Class Customers ‘ JsonProperty属性で項目名を指定し、プロパティを定義する。 <JsonProperty("id")> _ Public Property Id() As String Get Return m_Id End Get Set(value As String) m_Id = value End Set End Property Private m_Id As String Public Shared Async Function Create(cardRequest As CardRequest) As Task(Of Customers) Dim conn = New Connection() Dim response = Await conn.DoRequest("/customers", "POST", cardRequest.JsonString()) Return JsonConvert.DeserializeObject(Of Customers)(response) End Function End Class End Namespace
プロパティのコードは省略する。詳細はサンプルコード内を参照してほしい。
WebPay APIに接続してリクエストを送信する関数「Create」について解説しておこう。この関数は非同期処理で行われるため、メソッドの先頭にAsyncを追加している。
この関数では、新しいConnectionクラスのインスタンスconnオブジェクトを作成し、Connectionクラス内のDoRequest関数にpathとmethod、dataを指定して、その結果を文字列型変数responseで取得している。
JsonConvert.DeserializeObjectは、取得したJson文字列をオブジェクトにデシリアライズして元のデータに復元し、戻り値とする。ここではpathに「/customers」と指定している。こう指定することで、入力したデータがWebPayの「顧客の一覧」に登録される。
Pathに「/tokens」と指定すると、JSONデータが表示される中にトークンのデータが表示される。ただし、この場合はWebPayの「顧客の一覧」内にはデータは追加されないので注意してほしい。
Namespace WebPayApplication.WebPay Class WebPayException Inherits Exception ‘ HTTPで定義されたステータスコードの値を格納する、パブリック変数statusCodeを宣言する。 Public statusCode As System.Net.HttpStatusCode Friend Sub New(statusCode As System.Net.HttpStatusCode, message As String) MyBase.New(message) Me.statusCode = statusCode End Sub End Class End Namespace
初期処理では、例外が発生した場合に、ステータスコードとメッセージを表示している。
VS2013の[プロジェクト(P)]→[モジュールの追加(M)]と選択して表示される画面から[モジュール]を選択する。[名前(N)]は「Module1.vb」としておく。[追加(A)]ボタンをタップすると、エディター画面が表示されるので、Module.vbのコードを記述する。
Module Module1 Public JsonData As String End Module
ここでは、文字列型パブリック変数JsonDataを宣言している。
モジュールで宣言した変数は、どのプロジェクトからでも参照が可能だ。モジュール変数の多用はコードの可読性が悪くなり、バグの温床ともなるので、あまり勧められないが、今回のように1つの変数の宣言に使用する場合は、全く問題ない。このJsonDataモジュール変数にJSONデータが格納され、画面に表示される。
次に、[ソリューション・エクスプローラー]内の「MainWindow.xaml」を展開して表示される、「MainWindow.xaml.vb」をダブルクリックしてリスト7のコードを記述する。
‘ 各クラスを定義したWebPayApplication.WebPayApplication名前空間をインポートしておく。 Imports WebPayApplication.WebPayApplication Public NotInheritable Class MainPage Inherits Page Public Sub New() Me.InitializeComponent() End Sub Private Async Sub GetJsonDataButton_Click(sender As Object, e As RoutedEventArgs) Handles GetJsonDataButton.Click Dim card As New WebPay.CardRequest() card.Number = numberInput.Text card.Name = nameInput.Text card.ExpMonth = expMonthInput.Text card.ExpYear = expYearInput.Text card.Cvc = cvcInput.Text Await WebPay.Customers.Create(card) resultOutput.Text = JsonData '"作成されたトークン: " & Convert.ToString(token.Id) End Sub End Class
[JSONデータの取得]ボタンがタップされたときの処理「GetJsonDataButton_Click」は、非同期処理で行われるため、メソッドの先頭にAsyncを追加している。
ここでは、新しいWebPay.CardRequestのインスタンスcardオブジェクトを作成し、「Number」「Name」「ExMonth」「ExYear」「Cvc」プロパティに、入力ボックスから入力された値を指定している。
Customersクラス内のCreate関数では、値を指定されたcardオブジェクト顧客のデータを作成する。WebPayの「顧客の一覧」に入力した顧客データが登録される。
resultOutputという名前のTextBlockに、モジュール変数JSONデータの値を表示する。
以上でWebPay APIをWindowsストアアプリに組み込む方法の解説は終わりだ。WebPayのパスに/chargesを使用すると、「課金の履歴」にユーザーの課金の状態を登録することもできるが、今回はそこまで手が回らなかった。
WebPay APIは大変に便利だが、Windowsストアアプリに組み込む方法は、Web上にほとんど情報がないのが残念だ。通常はcurlやRubyやPHPやJava、Pythonで使用するものらしい。これらの言語に関してなら、WebPay APIのページを参考にするだけで、容易に「クレジット決済カードサービス」のページを作成できるのではないだろうか。
PROJECT KySS 薬師寺 国安(やくしじ くにやす)
1950年生まれ。フリーVBプログラマ。高級婦人服メーカーの事務職に在職中、趣味でVBやActiveXに取り組み、記事を執筆。2003年よりフリー。.NETやRIAに関する執筆多数。Windowsストアアプリも多数公開中(約270本)。
Microsoft MVP for Development Platforms - Client App Dev (Oct 2003-Sep 2012)。
Microsoft MVP for Development Platforms - Windows Phone Development(Oct 2012-Sep 2013)。
Microsoft MVP for Development Platforms - Client Development(Oct 2013-Sep 2014)。
PROJECT KySSは、1997年に薬師寺聖と結成したコラボレーション・ユニット
Copyright © ITmedia, Inc. All Rights Reserved.