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도 실행해야 합니다.