SDK
GS2-SDK for Game Engine のトランザクション処理について
基本的な考え方や処理の流れは for Game Engine
のドキュメントを参照してください。
一方で、GS2-SDK では for Game Engine
ほど手厚いサポートはありません。
具体的にはキャッシュ機能や EzTransactionDomain のような仕組みは用意されていません。
トランザクションの実行
自動実行が有効な場合
完了通知を受け取るためには明示的に GS2-Gateway にユーザーIDを設定する必要があります。
完了通知をハンドリングする必要があります。 Gs2WebSocketSession クラスに通知のハンドリング関数が用意されていますので、そちらを利用してください。 プログラミング言語によっては WebSocket クライアントの実装が無い可能性もあります。
GS2-Distributor からトランザクションの実行完了通知を受け取ったら、明示的に結果を取得する必要があります。 実行結果にはエラーが含まれている可能性があり、成功するまで実行結果は更新される可能性があります。
GS2-Distributor::getStampSheetResult
GS2-JobQueue からジョブの実行完了通知を受け取ったら、明示的に結果を取得する必要があります。 実行結果にはエラーが含まれている可能性があり、tryNumber を指定しなければ最新の結果を取得できるため、それを利用して成功するまで待つ必要があります。
自動実行が無効な場合
GS2-Showcase::Buy のようなトランザクション発行APIを呼び出すと、stampSheet
変数にトランザクションデータが、stampSheetEncryptionKeyId
にトランザクションデータの署名計算に使用した暗号鍵のIDが応答されます。
トランザクションデータと暗号鍵の情報を GS2-Distributor に渡して、明示的にトランザクションを実行する必要があります。 GS2-Log にログを残したい場合は、ログの書き出し設定を行った GS2-Distributor のネームスペースを指定して runStampSheetExpress を呼び出し、必要ない場合は runStampSheetExpressWithoutNamespace を呼び出します。
GS2-Distributor::runStampSheetExpress GS2-Distributor::runStampSheetExpressWithoutNamespace
runStampSheetExpress または runStampSheetExpressWithoutNamespace の実行結果に stampSheet
が含まれる場合はそのトランザクションも明示的に実行する必要があります。
スタンプシートの入手アクションが「Gs2JobQueue:PushByUserId」だった場合は、GS2-JobQueue も実行する必要があります。