ここでは、GeneXus で開発したスマート デバイス アプリケーションで StoreManager 外部オブジェクトを使用した One-time-purchase のアプリ内課金を実装した例を紹介します。
このアプリケーションは、複数の種類の案内広告に関するものです。ユーザーは自分の自動車、トラック、バイクを売るための広告を掲載できますが、広告掲載 1 件ごとに掲載料 ($ 0.99) を支払う必要があります。この機能は次のように実行されます。
1.このアプリケーションには、広告一覧と、($0.99 支払って) 自分の広告を掲載するための [ Publish Ad ] ボタンが表示されます。
2.「Publish Ad」ボタンが購入取引のトリガーとなります。エンドユーザーは、システムに新しい広告を挿入するために、「New advertising」を購入する必要があります。
3.購入が正常に完了すると、WWSD オブジェクトの Insert パネルが表示され、ユーザーはフォームに入力して、新しい広告を挿入できます。 情報の記入が終了すると、新しい広告が広告一覧に掲載されます。
- GeneXus で開発を始める前に、プラットフォームストアに対してアプリケーションの In-App Purchase (アプリ内課金) を設定します。
- Ads トランザクションを定義します。
- Ads トランザクションに WorkWithDevices pattern を適用します。そして、List ノードで「Publish Ad」と呼ばれるアクションを追加します (既定のアクション「Insert」と置き換えます - 開発者はこのアクションを削除して続ける必要があります)。
- 「Publish Ad」イベントセクションに次のコードを記述します。基本的には、(publish_my_ad_id と呼ばれ、Google developer console や Apple iTunes connect で事前に登録された) 商品アイテムを購入します。プラットフォームストアから検索された情報を使用して、購入が正常に完了した場合、Ads トランザクションオブジェクトに関連付けられた WWDS に Insert を呼びます。
Event 'Publish Ad'
Composite
&ProductId = 'publish_my_ad_id'
&PurchaseResult = StoreManager.PurchaseProduct(&ProductId)
if &PurchaseResult.Success
WorkWithDevicesAds.Ads.Detail.Insert()
else
msg('There was an error making product purchase.')endif
EndComposite
Endevent
ユーザーとストアとのやり取りや決済手続きなどは、すべてプラットフォームストアで管理されるため、心配する必要はありません。また、この例に限って言えば、扱う製品は 1 回だけ購入可能な (one-time-purchase) 製品であるため、同じユーザーが再び機能 (製品) を購入するときは購入手続きを最初からやり直す必要があるため、購入情報をアプリケーションに保存するかどうかは任意となります。
サンプルのダウンロード
In-App Purchase サンプル - My Kitchen
|