GS2-Money 트랜잭션 액션
검증/소비/입수 각 트랜잭션 액션의 사양
Consume Action
소비 액션
Gs2Money:WithdrawByUserId
사용자 ID를 지정하여 지갑에서 잔액 소비
지정한 사용자의 지갑에서 지정한 양의 통화를 소비합니다.
paidOnly가 false인 경우, 무료 통화가 먼저 소비되고 그다음 유료 통화가 소비됩니다.
수량 지정 가능한 액션: 예
반전 가능한 액션: 예
| 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128자 | 네임스페이스 이름 네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. | ||
| userId | string | ✓ | ~ 128자 | 사용자ID#{userId}로 설정하면 로그인 중인 사용자ID로 치환됩니다. | ||
| slot | int | ✓ | 0 ~ 100000000 | 슬롯 번호 플랫폼이나 컨텍스트별로 지갑 잔액을 분리하기 위한 식별자입니다. 슬롯을 달리하면 서로 다른 유료 통화 풀을 관리할 수 있습니다(예: iOS 구매는 슬롯 0, Android는 슬롯 1). 무료 통화는 네임스페이스의 shareFree 설정에 따라 모든 슬롯 간에 공유할 수도 있습니다. | ||
| count | int | ✓ | 1 ~ 2147483646 | 소비할 유료 통화 수량 | ||
| paidOnly | bool | false | 유료 통화만을 대상으로 할지 여부 | |||
| timeOffsetToken | string | ~ 1024자 | 타임 오프셋 토큰 |
{
"action": "Gs2Money:WithdrawByUserId",
"request": {
"namespaceName": "[string]네임스페이스 이름",
"userId": "[string]사용자ID",
"slot": "[int]슬롯 번호",
"count": "[int]소비할 유료 통화 수량",
"paidOnly": "[bool]유료 통화만을 대상으로 할지 여부",
"timeOffsetToken": "[string]타임 오프셋 토큰"
}
}action: Gs2Money:WithdrawByUserId
request:
namespaceName: "[string]네임스페이스 이름"
userId: "[string]사용자ID"
slot: "[int]슬롯 번호"
count: "[int]소비할 유료 통화 수량"
paidOnly: "[bool]유료 통화만을 대상으로 할지 여부"
timeOffsetToken: "[string]타임 오프셋 토큰"transaction.service("money").consume.withdraw_by_user_id({
namespaceName="[string]네임스페이스 이름",
userId="[string]사용자ID",
slot="[int]슬롯 번호",
count="[int]소비할 유료 통화 수량",
paidOnly="[bool]유료 통화만을 대상으로 할지 여부",
timeOffsetToken="[string]타임 오프셋 토큰",
})Gs2Money:RecordReceipt
영수증 기록
스토어 플랫폼(Apple App Store / Google Play)으로부터의 구매 영수증을 기록·검증합니다.
부정 방지를 위해 플랫폼 서버에 대해 영수증이 검증됩니다. 재전송 공격 방지를 위해 중복된 영수증은 거부됩니다.
수량 지정 가능한 액션: 아니오
반전 가능한 액션: 아니오
| 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128자 | 네임스페이스 이름 네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. | ||
| userId | string | ✓ | ~ 128자 | 사용자ID#{userId}로 설정하면 로그인 중인 사용자ID로 치환됩니다. | ||
| contentsId | string | ✓ | ~ 1024자 | 스토어 플랫폼에서 판매되는 콘텐츠 ID | ||
| receipt | string | ✓ | ~ 524288자 | 영수증 | ||
| timeOffsetToken | string | ~ 1024자 | 타임 오프셋 토큰 |
{
"action": "Gs2Money:RecordReceipt",
"request": {
"namespaceName": "[string]네임스페이스 이름",
"userId": "[string]사용자ID",
"contentsId": "[string]스토어 플랫폼에서 판매되는 콘텐츠 ID",
"receipt": "[string]영수증",
"timeOffsetToken": "[string]타임 오프셋 토큰"
}
}action: Gs2Money:RecordReceipt
request:
namespaceName: "[string]네임스페이스 이름"
userId: "[string]사용자ID"
contentsId: "[string]스토어 플랫폼에서 판매되는 콘텐츠 ID"
receipt: "[string]영수증"
timeOffsetToken: "[string]타임 오프셋 토큰"transaction.service("money").consume.record_receipt({
namespaceName="[string]네임스페이스 이름",
userId="[string]사용자ID",
contentsId="[string]스토어 플랫폼에서 판매되는 콘텐츠 ID",
receipt="[string]영수증",
timeOffsetToken="[string]타임 오프셋 토큰",
})Acquire Action
입수 액션
Gs2Money:DepositByUserId
사용자 ID를 지정하여 지갑 잔액에 가산
지정한 사용자의 지갑에 지정한 양의 통화를 추가합니다.
가격이 0인 경우는 무료 통화로, 그 외의 경우는 유료 통화로 취급됩니다.
수량 지정 가능한 액션: 예
반전 가능한 액션: 예
| 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128자 | 네임스페이스 이름 네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. | ||
| userId | string | ✓ | ~ 128자 | 사용자ID#{userId}로 설정하면 로그인 중인 사용자ID로 치환됩니다. | ||
| slot | int | ✓ | 0 ~ 100000000 | 슬롯 번호 플랫폼이나 컨텍스트별로 지갑 잔액을 분리하기 위한 식별자입니다. 슬롯을 달리하면 서로 다른 유료 통화 풀을 관리할 수 있습니다(예: iOS 구매는 슬롯 0, Android는 슬롯 1). 무료 통화는 네임스페이스의 shareFree 설정에 따라 모든 슬롯 간에 공유할 수도 있습니다. | ||
| price | float | ✓ | 0 ~ 100000.0 | 구매 가격 | ||
| count | int | ✓ | 1 ~ 2147483646 | 지급할 유료 통화 수량 | ||
| timeOffsetToken | string | ~ 1024자 | 타임 오프셋 토큰 |
{
"action": "Gs2Money:DepositByUserId",
"request": {
"namespaceName": "[string]네임스페이스 이름",
"userId": "[string]사용자ID",
"slot": "[int]슬롯 번호",
"price": "[float]구매 가격",
"count": "[int]지급할 유료 통화 수량",
"timeOffsetToken": "[string]타임 오프셋 토큰"
}
}action: Gs2Money:DepositByUserId
request:
namespaceName: "[string]네임스페이스 이름"
userId: "[string]사용자ID"
slot: "[int]슬롯 번호"
price: "[float]구매 가격"
count: "[int]지급할 유료 통화 수량"
timeOffsetToken: "[string]타임 오프셋 토큰"transaction.service("money").acquire.deposit_by_user_id({
namespaceName="[string]네임스페이스 이름",
userId="[string]사용자ID",
slot="[int]슬롯 번호",
price="[float]구매 가격",
count="[int]지급할 유료 통화 수량",
timeOffsetToken="[string]타임 오프셋 토큰",
})Gs2Money:RevertRecordReceipt
사용자 ID를 지정하여 영수증 기록 삭제
트랜잭션 ID를 추출하여 해당하는 레코드를 삭제함으로써, 이전에 기록된 영수증을 취소합니다.
스토어 플랫폼으로부터의 환불이나 차지백 처리에 사용합니다.
수량 지정 가능한 액션: 아니오
반전 가능한 액션: 아니오
| 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128자 | 네임스페이스 이름 네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. | ||
| userId | string | ✓ | ~ 128자 | 사용자ID#{userId}로 설정하면 로그인 중인 사용자ID로 치환됩니다. | ||
| receipt | string | ✓ | ~ 524288자 | 영수증 | ||
| timeOffsetToken | string | ~ 1024자 | 타임 오프셋 토큰 |
{
"action": "Gs2Money:RevertRecordReceipt",
"request": {
"namespaceName": "[string]네임스페이스 이름",
"userId": "[string]사용자ID",
"receipt": "[string]영수증",
"timeOffsetToken": "[string]타임 오프셋 토큰"
}
}action: Gs2Money:RevertRecordReceipt
request:
namespaceName: "[string]네임스페이스 이름"
userId: "[string]사용자ID"
receipt: "[string]영수증"
timeOffsetToken: "[string]타임 오프셋 토큰"transaction.service("money").acquire.revert_record_receipt({
namespaceName="[string]네임스페이스 이름",
userId="[string]사용자ID",
receipt="[string]영수증",
timeOffsetToken="[string]타임 오프셋 토큰",
})