---
# System prepended metadata

title: 充值系統 - SP Define

---

# 充值系統 - SP Define

# 發送充值物品 

## SP_SendIAPItem
1. 發送的同時寫交易紀錄, 周/月卡紀錄, 限購紀錄
- 資料庫: `RYRechargeDB`

### 輸入參數

| 參數              | 型別          | 必填 | 註解                                                              |
|:----------------- |:------------- |:---- |:----------------------------------------------------------------- |
| @UserID           | INTEGER       | Y    | 玩家ID                                                            |
| @IAPOrderID       | NVARCHAR(50)  | Y    | 平台那邊的訂單ID                                                  |
| @IAPProductID     | NVARCHAR(200) | Y    | 產品ID                                                            |
| @IAPPurchaseToken | NVARCHAR(200) | Y    | 平台那邊的購買憑證                                                |
| @IsTestOrder      | BIT           | Y    | 是否為測試購買, 0: 否(真實購買), 1: 是(測試購買)                  |

### 輸出參數

| 參數                 | 型別          | 註解         |
| -------------------- | ------------- | ------------ |
| @OutputResultMessage | NVARCHAR(255) | 執行結果訊息    |
| @OutputRedDotNotify  | TINYINT       | 是否需要紅點通知, 0:否, 1:是 |

---

# 領取周/月卡物品 

## SP_ClaimSubscribeItem

- 資料庫: `RYRechargeDB`

### 輸入參數

| 參數       | 型別    | 必填 | 註解         |
|:---------- |:------- | ---- |:------------ |
| @UserID    | INTEGER | Y    | 玩家ID       |
| @ProductID | BIGINT  | Y    | 商品的流水號 |

### 輸出參數

| 參數                 | 型別          | 註解         |
| -------------------- | ------------- | ------------ |
| @OutputResultMessage | NVARCHAR(255) | 執行結果訊息 |
---

# 充值商城 - 兌換代幣商品 

## SP_ExchangeTokenProduct

- 資料庫: `RYTreasureDB`

### 輸入參數

| 參數            | 型別    | 必填 | 註解                                                                                                                                               |
|:--------------- |:------- | ---- |:-------------------------------------------------------------------------------------------------------------------------------------------------- |
| @UserID         | INTEGER | Y    | 玩家ID                                                                                                                                             |
| @OsType         | TINYINT | Y    | 平台資訊1:Android, 2:IOS                                                                                                                           |
| @TokenProductID | INTEGER | Y    | 商品ID(RYTreasureDB.GameStoreTokenProduct)                                                                                                         |
| @ExchageUnits   | INTEGER | N    | 要兌換的單位, 預設1, 假設TokenProductID的商品代表 5鑽換1票, 那這就是一個單位, 兩個單位的意思就是 10鑽換2票, 三個單位的意思就是 15鑽換3票, 依此類推 |

### 輸出參數

| 參數                 | 型別          | 註解         |
| -------------------- | ------------- | ------------ |
| @OutputResultMessage | NVARCHAR(255) | 執行結果訊息 |

---

# 根據代幣匯率表兌換 

## SP_ExchangeToken

- 資料庫: `RYTreasureDB`

### 輸入參數

| 參數               | 型別    | 必填 | 註解                                                                                                                                                         |
|:------------------ |:------- | ---- |:------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| @UserID            | INTEGER | Y    | 玩家ID                                                                                                                                                       |
| @SourceTokenTypeID | INTEGER | Y    | 來源的類型, 1:獎券/2:鑽石/3:初級門票/4:中級門票/5:高級門票/99:金幣, 對應RYTreatureDB -> GameStoreTokenType                                                   |
| @TargetTokenTypeID | INTEGER | Y    | 目標的類型, 1:獎券/2:鑽石/3:初級門票/4:中級門票/5:高級門票/99:金幣, 對應RYTreatureDB -> GameStoreTokenType                                                   |
| @ExchageUnits      | INTEGER | N    | 要兌換的單位, 預設1, 假設現在兌換匯率為 1鑽換100金幣, 一個單位的意思就是 5鑽換50金, 兩個單位的意思就是 10鑽換100金, 三個單位的意思就是 15鑽換150金, 依此類推 |

---

# 查詢玩家限購紀錄 

## SP_CheckUserLimitBuyRecord

- 資料庫: `RYTreasureDB`

### 輸入參數

| 參數       | 型別    | 必填 | 註解   |
|:---------- |:------- | ---- |:------ |
| @UserID    | INTEGER | Y    | 玩家ID |
| @ProductID | INTEGER | Y    | 產品ID (IAPProduct/IAPSubscribeProduct/TokenProduct 的 流水號ID) |
| @ProductType | SMALLINT | Y | 商品類型 1:一般充值商品/2:訂閱型商品/3:代幣商品|

### 輸出參數

| 參數                 | 型別          | 註解           |
|:-------------------- | ------------- |:-------------- |
| @OutputResultMessage | NVARCHAR(255) | 執行結果訊息   |
| @OutputRemainBuyTimes     | INTEGER       | 剩餘可購買次數 |

---


# 錯誤訊息列表
| 參數 | 型別                        |
| ---- | --------------------------- |
| 0    | 成功                        |
| 3000 | SP程式錯誤                  |
| 3001 | 找不到用戶                  |
| 3002 | 用戶已被停用                |
| 3013 | 操作權限錯誤                |
| 3014 | 請求參數錯誤                |
| 3018 | 沒任何符合的獎勵/獎勵已領取 |
| 3019 | REPEAT_REQUEST, 重複請求    |
| 3020 | 促銷商品 - 不在促銷時段     |
| 3021 | 周/月卡 - 已經買過了        |
| 3022 | 已達限購次數上限            |
| 3023 | 發送請求失敗             |
| 3024 | DB Query Fail.           |
| 3025 | Get AccessToken Fail     |

