# WT-Game  使用操作文档

## 概述

欢迎使用 WT-Game 。本文档将介绍如何安装、初始化和使用登录SDK、订单支付SDK以及订单退款SDK。这些SDK提供了用户登录验证、订单支付签名生成和订单退款签名生成的功能。

## 安装

通过Go模块管理工具`go get`安装SDK:

```bash
go get gitea.weitiangame.com/sdk/wt-game
```

## 登录SDK

### 初始化

```go
import (
    "gitea.weitiangame.com/sdk/wt-game/wt_sdk"
)

// 初始化SDK,传入密钥secretKey
loginSdk := sdk.NewLogin("your_secret_key")
```

### 使用方法

#### 验证Token

```go
err := loginSdk.VerifyToken(accessKey, uid)
if err != nil {
    // 处理错误
    return
}
// 验证通过,进行后续操作
```

### 错误码

- `ACCESS_TOKEN_ERROR`: 访问令牌错误
- `INVALID_TIMESTAMP`: 无效的时间戳
- `TIMESTAMP_ERROR`: 时间戳错误

### 示例代码

```go
package main

import (
    "fmt"
    "gitea.weitiangame.com/sdk/wt-game/wt_sdk"
)

func main() {
    loginSdk := wt_sdk.NewLogin("your_secret_key")
    accessKey := "keyPart.timestamp.md5Part"
    uid := "user_unique_id"

    err := loginSdk.VerifyToken(accessKey, uid)
    if err != nil {
        fmt.Println("验证失败,错误码:", err.Error())
        return
    }
    fmt.Println("验证通过,用户身份合法")
}
```

## 订单支付SDK

### 初始化

```go
// 初始化SDK实例
sdkInstance := wt_sdk.NewOrderPayment("your_secret_key")
```

### 生成签名

```go
order := &wt_sdk.Order{
    Uid:         "12345",
    BsTradeNo:   "TRADE20231010001",
    // 设置其他字段
}

sign, err := sdkInstance.SignParam(order)
if err != nil {
    // 处理错误
}
```

### 示例代码

```go
package main

import (
    "fmt"
    "gitea.weitiangame.com/sdk/wt-game/wt_sdk"
)

func main() {
    sdkInstance := wt_sdk.NewOrderPayment("your_secret_key")
    order := &sdk.Order{
        Uid:         "12345",
        BsTradeNo:   "TRADE20231010001",
        // 设置其他字段
    }

    sign, err := sdkInstance.SignParam(order)
    if err != nil {
        fmt.Println("生成签名失败:", err)
        return
    }
    fmt.Println("签名:", sign)
}
```

## 订单退款SDK

### 初始化

```go
refundSdkInstance := wt_sdk.NewRefundSDK("your_secret_key")
```

### 生成签名

```go
orderRefund := &wt_sdk.OrderRefund{
    OutTradeNo: "OUT20231010001",
    // 设置其他字段
}

sign := refundSdkInstance.SignParam(orderRefund)
```

### 示例代码

```go
package main

import (
    "fmt"
    "gitea.weitiangame.com/sdk/wt-game/wt_sdk"
)

func main() {
    refundSdkInstance := wt_sdk.NewRefundSDK("your_secret_key")
    orderRefund := &wt_sdk.OrderRefund{
        OutTradeNo: "OUT20231010001",
        // 设置其他字段
    }

    sign := refundSdkInstance.SignParam(orderRefund)
    fmt.Println("签名:", sign)
}
```

## 共同注意事项

1. **密钥保管**: 确保密钥安全,避免泄露。
2. **参数格式**: 确保参数格式正确,特别是时间戳和金额字段。
3. **签名一致性**: 确保签名生成的参数和顺序与对方系统一致。

## 附录

### Order 结构体字段说明

| 字段名          | 说明                     |
|-----------------|--------------------------|
| Uid             | 用户ID                   |
| BsTradeNo       | 交易编号                 |
| Role            | 用户角色                 |
| RoleId          | 角色ID                   |
| ServerId        | 服务器ID                 |
| GoodsName       | 商品名称                 |
| OutTradeNo      | 外部交易编号             |
| Body            | 商品描述                 |
| CpExtraInfo     | 扩展信息                 |
| TradeState      | 交易状态                 |
| TotalFee        | 总费用                   |
| PayFee          | 支付费用                 |
| PayTime         | 支付时间                 |

### OrderRefund 结构体字段说明

| 字段名      | 说明           |
|-------------|----------------|
| OutTradeNo  | 订单号         |
| RoleId      | 角色ID         |
| Status      | 订单状态       |
| RefundFee   | 退款金额       |
| Timestamp   | 时间戳         |

通过以上步骤,您可顺利使用WT-Game SDK进行用户身份验证、订单支付和订单退款操作。