決済処理開始(トランザクションの作成)

処理の概要

purchase.php で表示される「アイテム購入ボタン」が押下されたら、トランザクションを作成します。
 
以下のようにトランザクションを作成します。

  1. Client から Game Server へトランザクション作成リクエストを送信する
  2. Game Server が Mobage Bank Debit API を利用してトランザクションを作成する
  3. Game Server が Order DB に Order データを作成する
  4. Game Server から Client へレスポンスを送信する
     
     
    これらの処理のシーケンス図が下記になります。

Client から Game Server へトランザクション作成リクエストを送信する

ユーザーが「アイテム購入ボタン」を押下すると、 Client から Game Server に決済トランザクション作成リクエストが送信される、といった処理を実装します。

 

Mobage Connectへのログイン状況の確認

モバコインによるアイテム購入では、ユーザーが Mobage Connect にログインしていることが必須となります。
ユーザーがこの状態であるか確認するために、mobage.oauth.getConnectedStatusメソッドを利用します。
また、「アイテム購入ボタン」がクリックされたら決済トランザクションの作成リクエストを送信するようにイベントリスナーを設定します。

mobage-jssdk-sample-payment/purchase_without_item_setting/purchase.js

 

ユーザーが「アイテム購入ボタン」を押下すると、特定のアイテムをいくつ購入するか、Client から Game Server にリクエストを送ります。
 

mobage-jssdk-sample-payment/purchase_without_item_setting/purchase.js

 

Game Server が Mobage Bank Debit API を利用してトランザクションを作成する

Developers Siteにてアイテム情報の登録を行ってない場合、Bank Debit API を呼び出して以下のようなリクエストを送信します。

imageUrl には、https プロトコルの画像を指定して下さい。http プロトコルを指定するとブラウザで警告が出る場合があります。

なお、Bank Debit API の Endpoint は下記になります。

環境

Base Endpoint

sandbox

https://sb-app.mobage.jp/social/api/restful/v2.02

service

https://app.mobage.jp/social/api/restful/v2.02

 

Bank Debit APIの呼び出しを行うにあたり、OAuth 2.0 Bearer Tokenを利用します。
OAuth 2.0のBearer Tokenとしてセッションデータに関連付けたaccess_tokenを利用して、Bank Debit APIを呼び出す準備をします。

mobage-jssdk-sample-payment/bank_api_connectors/bank_debit_post.php

 

決済トランザクション作成のレスポンス受け取り

このチュートリアルではcurlを使ってBank Debit API を呼び出します。
Bank Debit API のレスポンスから、決済トランザクションを取得します。

mobage-jssdk-sample-payment/bank_api_connectors/bank_debit_post.php

 
 

Game Server が Order DB に Order データを作成する

Game Server では、決済処理に応じてアイテム受注処理を管理する為のデータベースとして、Order DB を作成します。
Order DB の Order データは、Bank Debit API から受け取ったTransaction ID に紐づけ、Order DB に格納します。
このチュートリアルでは、下記のような Order DB を定義して処理を進めます。

order_db

なお、このOrder DB の order_state は、下記のようにアイテム受注処理の状態を示しています。

order_state

状態

決済処理の状態

authorized

アイテム未付与

処理途中

error

エラーによりアイテム付与しない

処理完了

canceled

アイテム付与処理はキャンセル済み

処理完了

closed

アイテム付与済み

処理完了

上記に定義した Order DB は、あくまでこのチュートリアル用のサンプルであり、一例です。実際にゲームに実装する際には、ゲームの要件に従ったテーブルを定義してください。

Order IDを発行する

Platform から受け取った Transaction ID と紐付ける、Order データの識別子を Order ID と呼びます。
このチュートリアルではOrder ID が Unique となるように連番で発行しました。
 

mobage-jssdk-sample-payment/purchase_without_item_setting/order.php

Order 情報を Order DB に格納する

Transaction ID と紐付く Order データを、Order DB に保存します。
 
 

Game Server から Client へレスポンスを送信する

 

Transaction ID と Order ID のレスポンス

Transaction ID の発行と、Order データの作成が完了したら、Clientに下記のようなレスポンスを返します。

 
 

開発したコード

このチュートリアルで開発したコードは Github から clone できます。

 

更新履歴

  • 2015/06/30
    • 画像 URL に https の画像を設定するのがすいしょ

 

PREVIOUS

概要

NEXT

コインの引き落とし(トランザクションのクローズ)