# 创建赠送免费活动 ## 描述 > 通过此方法,运营商可以为游戏创建免费回合奖励活动。出现网络错误时,运营商可以发送重复的创建免费回合请求。如果存在奖励代码相同的有效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" } ```