WebPay APIでカード決済機能をWindowsストアアプリに実装するには:2カ月で160本作った還暦開発者が送る10のアプリ開発ノウハウ(特別編)(4/4 ページ)
開発者向けクレジットカード決済サービスWebPayのAPIの使い方をサンプルアプリとともに解説する。
JSONデータ内に表示される各プロパティを宣言するCustomers.vb
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の「顧客の一覧」内にはデータは追加されないので注意してほしい。
例外が発生したときのWebPayException.vb
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.vb)
次に、[ソリューション・エクスプローラー]内の「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データの値を表示する。
curlやRubyやPHPやJava、Pythonでも
以上で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.
関連記事
- 2カ月で160本作った還暦開発者が送る10のアプリ開発ノウハウ(1):カメラでクラウディア(Webカメラと画像を合成保存)
古(いにしえ)からのVBでWindows 8.1向けのさまざまな機能のアプリを開発する手順やコツを解説していく。初回は、Webカメラの映像と画像を合成保存する方法と一覧表示について。 - 今でしょ! の終わりに安齋、家入らが評価したアプリとは〜「エイっと作ろう! Windowsストア アプリ選手権」授賞式レポート
謎のキャラ今出しょう子をマスコットに据えたコンテストを勝ち上がった10作品のプレゼン模様などをお届け。 - 初のアジャイル/リモート開発体制でも成功できた秘訣とは〜「Windowsタブレット向けアプリ開発」先駆けインタビュー
日本料理のレシピを海外に紹介するアプリ「Ippin」。初物づくしのアプリ開発を成功させた秘訣をディレクターに聞いた。コミュニケーションツールやドキュメントに盛り込んだ数々の工夫とは、どんなものだったのだろうか。 - PC制御UIの最先端Leapアプリ開発入門(3):ProcessingやWindows 8.1アプリでLeapの空間ジェスチャを使うには
画面タッチやマウスなどのように“触れる”ことなく空中ジェスチャでPC操作が可能な新しいデバイスLeap Motionを使い、これまでにないアプリを開発しましょう。今回は、ゲームループやLeapのジェスチャ3種Circle、Swipe、Tap、ProcessingのLeapジェスチャアプリ、そしてMVVMパターンで指の数を検出するC#アプリについて解説します。 - 連載:Windowsストア・アプリ開発入門:第1回 Windowsストア・アプリってどんなもの?
ついにWindows 8.1の正式版がMSDNサブスクライバー向けに公開された。無償アップデートとなるため、今後は新しいWindows 8.1ストア・アプリが一般化するだろう。最新環境向けに新たにアプリ開発を始める人のための連載スタート。 - 特集:次期Windows 8.1&Visual Studio 2013 Preview概説(前編):大きく変わるWindowsストア・アプリ開発 〜 ビュー状態に関連する変更点
Windows 8.1(Preview版)の変更点や新機能を開発者視点で紹介。Windows 8用に作られたWindowsストア・アプリにはどんな影響があるのか? - UXClip(11):これからが本番、Windows 8アプリ開発
12月3日夜、Windows 8のハードウェアやアプリを開発者向けに紹介するイベントが行なわれた - Windows 8提供開始、対応アプリ登場は期待できるか?
マイクロソフトはWindows 8の提供を正式に開始した。Windowsストアもスタートし、いよいよWindows 8プラットフォームが市場投入となる。