# <font >创建赠送免费活动</font>
## 描述

> 通过此方法，运营商可以为游戏创建免费回合奖励活动。出现网络错误时，运营商可以发送重复的创建免费回合请求。如果存在奖励代码相同的有效FR奖励，则系统不会创建新的RF奖励。

> 请求方式（ Host-> BeSoft）:post 

> 编码方式：application/x-www-form-urlencoded

> Besoft响应的数据格式是: application/json

## 网址
```
{besoftapi}/api/bonus/create
```

## 哈希计算
哈希代码通过以下步骤来计算:
从请求 POST参数获取所有参数(预期哈希)并附加到字符串:
- 1.按字母表顺序对所有参数排序。
- 2.在 key1=value1&key2=value2 中附加它们(如果值不为空)
- 3.附加密钥，即: 
  ```
  key1=value1&key2=value&hashkey=3m@K#9zPxL$%Yb*8C    
  ```
- 4.使用 MD5 计算哈希,转为全部大写。
- 5.用"hash"为名字附加到参数中,代替hashkey字段,最终参数为:
    ```
    key1=value1&key2=value&hash=3E8ABC6949A0A0CFF9110CF1128FBE25
    ```
- 6.如果平台与哈希参数对比失败。发送错误代码1008。


## 请求参数

 |      名称      |    类型     | 必要 |                        描述                        |
 | :------------: | :---------: | :--: | :------------------------------------------------: |
 |   extension1   |   string    |  Y   |                      代理账号                      |
 |      cert      |   string    |  Y   |                      安全代码                      |
 |   bonuscode    | String(128) |  Y   |            运营商系统中的奖励唯一标识符            |
 |     rounds     |    int32    |  Y   |                     免费回合数                     |
 |    maxscore    |    int64    |  Y   |           玩家在本活动总能获取的分数上限           |
 |   startdata    |    int64    |  Y   |           奖励活动参与的开始时间戳(毫秒)           |
 |    enddata     |    int64    |  Y   |           奖励活动参与的结束时间戳(毫秒)           |
 |  validitydata  |    int64    |  Y   |            玩家生效后的截至时间戳(毫秒)            |
 |     games      |   string    |  Y   | json数组字符串，配置能参与的游戏，以及游戏投注信息 |
 |   games.gid    |   string    |  Y   |                      游戏gid                       |
 | games.betindex |    int32    |  Y   |                    游戏投注索引                    |
 |  games.betmu   |    int32    |  Y   |                    游戏投注倍数                    |
 |      hash      |   string    |  Y   |                  请求的哈希代码                  |




**游戏下注配置可通过接口获取:** [获取游戏下注配置](zh/freespin_gamebetconfi)

## 示例
- URL:
    - http://127.0.0.1:8000/api/bonus/create
- HTTP Method
    -   POST
- 表单数据
    > Content-Type: application/x-www-form-urlencoded
    ``` 
    extension1:     adminweb
    cert:           v8VMKKzlPpD0te4rX99Hgefs3PQrBFWJKiuUqg6Y
    bonuscode:      aaabbbccc
    rounds:         11
    maxscore:       1000
    startdata:      1752042214512
    enddata:        1752052214512
    validitydata:   1752152214512
    games:          [
                        {
                            "gid": "be001",
                            "betindex": 0,
                            "betmul": 1
                        },
                        {
                            "gid": "be022",
                            "betmul": 1,
                            "betindex": 0
                        }
                    ]
    hash:           3E8ABC6949A0A0CFF9110CF1128FBE25
    ```
	
	
## 返回结果

 | 名称 | 类型 | 描述 |
 |:--------:|:-----:|:--------:|
 | ret | int | 状态代码 |
 | info | string | 状态说明 |


 ### 成功的结果

```
{
	"ret": -1,
	"info": "ok"
}
```


 ### 失败的结果

```
{
	"ret": 1008,
	"info": "param erro"
}
```