> For the complete documentation index, see [llms.txt](/llms.txt)

# GS2-Money トランザクションアクション

検証/消費/入手の各トランザクションアクションの仕様





## Consume Action

消費アクション

### Gs2Money:WithdrawByUserId

ユーザーIDを指定してウォレットから残高を消費<br>

指定されたユーザーのウォレットから指定量の通貨を消費します。<br>
paidOnly が false の場合、無償通貨が先に消費され、次に有償通貨が消費されます。

**数量指定可能なアクション：はい**

**反転可能なアクション：はい**

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128文字 | ネームスペース名<br>ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| userId | string |  | ✓|  |  ~ 128文字 | ユーザーID<br>`#{userId}` と設定することでログイン中のユーザーIDに置換されます。 |
| slot | int |  | ✓|  | 0 ~ 100000000 | スロット番号<br>プラットフォームやコンテキストごとにウォレット残高を分離するための識別子。<br>異なるスロットにより、別々の有償通貨プールを管理できます（例: iOS購入はスロット0、Androidはスロット1）。<br>無償通貨はネームスペースの shareFree 設定により、全スロット間で共有することもできます。 |
| count | int |  | ✓|  | 1 ~ 2147483646 | 消費する課金通貨の数量 |
| paidOnly | bool |  | | false |  | 有償通貨のみを対象とするか |
| timeOffsetToken | string |  | |  |  ~ 1024文字 | タイムオフセットトークン |




**JSON**
```json
{
    "action": "Gs2Money:WithdrawByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "userId": "[string]ユーザーID",
        "slot": "[int]スロット番号",
        "count": "[int]消費する課金通貨の数量",
        "paidOnly": "[bool]有償通貨のみを対象とするか",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
```

**YAML**
```yaml

action: Gs2Money:WithdrawByUserId
request:
  namespaceName: "[string]ネームスペース名"
  userId: "[string]ユーザーID"
  slot: "[int]スロット番号"
  count: "[int]消費する課金通貨の数量"
  paidOnly: "[bool]有償通貨のみを対象とするか"
  timeOffsetToken: "[string]タイムオフセットトークン"
```

**GS2-Script**
```lua

transaction.service("money").consume.withdraw_by_user_id({
    namespaceName="[string]ネームスペース名",
    userId="[string]ユーザーID",
    slot="[int]スロット番号",
    count="[int]消費する課金通貨の数量",
    paidOnly="[bool]有償通貨のみを対象とするか",
    timeOffsetToken="[string]タイムオフセットトークン",
})
```


---

### Gs2Money:RecordReceipt

レシートを記録<br>

ストアプラットフォーム（Apple App Store / Google Play）からの購入レシートを記録・検証します。<br>
不正防止のためプラットフォームのサーバーに対してレシートが検証されます。リプレイ攻撃防止のため重複レシートは拒否されます。

**数量指定可能なアクション：いいえ**

**反転可能なアクション：いいえ**

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128文字 | ネームスペース名<br>ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| userId | string |  | ✓|  |  ~ 128文字 | ユーザーID<br>`#{userId}` と設定することでログイン中のユーザーIDに置換されます。 |
| contentsId | string |  | ✓|  |  ~ 1024文字 | ストアプラットフォームで販売されているコンテンツID |
| receipt | string |  | ✓|  |  ~ 524288文字 | レシート |
| timeOffsetToken | string |  | |  |  ~ 1024文字 | タイムオフセットトークン |




**JSON**
```json
{
    "action": "Gs2Money:RecordReceipt",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "userId": "[string]ユーザーID",
        "contentsId": "[string]ストアプラットフォームで販売されているコンテンツID",
        "receipt": "[string]レシート",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
```

**YAML**
```yaml

action: Gs2Money:RecordReceipt
request:
  namespaceName: "[string]ネームスペース名"
  userId: "[string]ユーザーID"
  contentsId: "[string]ストアプラットフォームで販売されているコンテンツID"
  receipt: "[string]レシート"
  timeOffsetToken: "[string]タイムオフセットトークン"
```

**GS2-Script**
```lua

transaction.service("money").consume.record_receipt({
    namespaceName="[string]ネームスペース名",
    userId="[string]ユーザーID",
    contentsId="[string]ストアプラットフォームで販売されているコンテンツID",
    receipt="[string]レシート",
    timeOffsetToken="[string]タイムオフセットトークン",
})
```


---

## Acquire Action

入手アクション

### Gs2Money:DepositByUserId

ユーザーIDを指定してウォレットの残高に加算<br>

指定されたユーザーのウォレットに指定量の通貨を追加します。<br>
価格が 0 の場合は無償通貨として、それ以外の場合は有償通貨として扱われます。

**数量指定可能なアクション：はい**

**反転可能なアクション：はい**

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128文字 | ネームスペース名<br>ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| userId | string |  | ✓|  |  ~ 128文字 | ユーザーID<br>`#{userId}` と設定することでログイン中のユーザーIDに置換されます。 |
| slot | int |  | ✓|  | 0 ~ 100000000 | スロット番号<br>プラットフォームやコンテキストごとにウォレット残高を分離するための識別子。<br>異なるスロットにより、別々の有償通貨プールを管理できます（例: iOS購入はスロット0、Androidはスロット1）。<br>無償通貨はネームスペースの shareFree 設定により、全スロット間で共有することもできます。 |
| price | float |  | ✓|  | 0 ~ 100000.0 | 購入価格 |
| count | int |  | ✓|  | 1 ~ 2147483646 | 付与する課金通貨の数量 |
| timeOffsetToken | string |  | |  |  ~ 1024文字 | タイムオフセットトークン |




**JSON**
```json
{
    "action": "Gs2Money:DepositByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "userId": "[string]ユーザーID",
        "slot": "[int]スロット番号",
        "price": "[float]購入価格",
        "count": "[int]付与する課金通貨の数量",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
```

**YAML**
```yaml

action: Gs2Money:DepositByUserId
request:
  namespaceName: "[string]ネームスペース名"
  userId: "[string]ユーザーID"
  slot: "[int]スロット番号"
  price: "[float]購入価格"
  count: "[int]付与する課金通貨の数量"
  timeOffsetToken: "[string]タイムオフセットトークン"
```

**GS2-Script**
```lua

transaction.service("money").acquire.deposit_by_user_id({
    namespaceName="[string]ネームスペース名",
    userId="[string]ユーザーID",
    slot="[int]スロット番号",
    price="[float]購入価格",
    count="[int]付与する課金通貨の数量",
    timeOffsetToken="[string]タイムオフセットトークン",
})
```


---

### Gs2Money:RevertRecordReceipt

ユーザーIDを指定してレシートの記録を削除<br>

トランザクションIDを抽出して対応するレコードを削除することで、以前に記録されたレシートを取り消します。<br>
ストアプラットフォームからの返金やチャージバック処理に使用します。

**数量指定可能なアクション：いいえ**

**反転可能なアクション：いいえ**

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128文字 | ネームスペース名<br>ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| userId | string |  | ✓|  |  ~ 128文字 | ユーザーID<br>`#{userId}` と設定することでログイン中のユーザーIDに置換されます。 |
| receipt | string |  | ✓|  |  ~ 524288文字 | レシート |
| timeOffsetToken | string |  | |  |  ~ 1024文字 | タイムオフセットトークン |




**JSON**
```json
{
    "action": "Gs2Money:RevertRecordReceipt",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "userId": "[string]ユーザーID",
        "receipt": "[string]レシート",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
```

**YAML**
```yaml

action: Gs2Money:RevertRecordReceipt
request:
  namespaceName: "[string]ネームスペース名"
  userId: "[string]ユーザーID"
  receipt: "[string]レシート"
  timeOffsetToken: "[string]タイムオフセットトークン"
```

**GS2-Script**
```lua

transaction.service("money").acquire.revert_record_receipt({
    namespaceName="[string]ネームスペース名",
    userId="[string]ユーザーID",
    receipt="[string]レシート",
    timeOffsetToken="[string]タイムオフセットトークン",
})
```


---



