Skip to content

红利系统

红利系统指的是对特定用户发放 免费旋转 或者 Feature, 相应旋转产生的奖励可以是现金或者红利, 如果奖励为红利, 那么需要用户完成一定的打码任务后, 红利转换为现金加入用户的账户中。

交互流程如下:

uml diagram

注意⚠️: 发放奖励时,无缝钱包则需要OP提供一个单独的派奖接口,转账钱包则无需提供。

2J 侧提供的接口

接口名称描述路径
查询红利配置查询红利游戏相关配置/open2j/g/grantify/conf
创建红利创建红利/open2j/g/grantify/create
取消红利取消已经创建红利/open2j/g/grantify/cancel
查询红利状态/进度查询已经创建红利状态/进度/open2j/g/grantify/query

1. 查询红利配置

Method: POST

URI:: /open2j/g/grantify/conf

Description: 查询红利游戏相关配置,包括支持的红利游戏列表,以及红利的某些默认值。

Request Body:

Content-Type: application/json

json
{}

Response Body:

Content-Type: application/json

json
{
    "header": {
        "code": 0, // 错误编码,0表示正常, 非0表示异常
        "msg": "",
        "timestamp":1709716095516,
    },
    "result": {
        "validaty_hours": 168, // 红利有效期,单位小时
        "award_type": 1,       // 1: 现金, 2: 红利
        "spin_type": 1,        // 1: 免费旋转, 2: Feature
        "spin_times": 10,      // 免费旋转次数
        "mosaic_multiple": 8,     // 红利所需打码倍数
        "odds_limit": 1000,   // spin 奖励上限倍数
        "game_ids": [1007, 1008, 1009], // 支持的红利游戏列表
    }
}

2. 创建红利

Method: POST

URI:: /open2j/g/grantify/create

Description: 创建红利

Request Body:

Content-Type: application/json

json
{
    "op_ids": [
        "op123", 
        "op124",
    ],        // 用户 ID
    "game_id": 1007,         // 红利游戏 ID
    "bet": 1,                // 每次旋转的下注金额
    "spin_type": 1,          // 红利类型
    "spin_times": 10,        // 免费旋转次数
    "award_type": 1,         // 奖励类型
    "mosaic_multiple": 8,       // 红利打码倍数
    "validaty_hours": 168,   // 红利有效期(小时)
    "odds_limit": 1000       // spin 奖励上限倍数
}

参数说明:

参数类型必填描述
op_idsstring[]用户 ID 列表。一次最多100条
game_idint红利游戏 ID, 必须在查询红利配置接口返回的 game_ids 中
betint每次旋转的下注金额, 默认值为游戏的最小下注金额
spin_typeint红利类型, 1: 免费旋转, 2: Feature , 默认值为查询红利配置接口返回的 spin_type
spin_timesint免费旋转次数 [1, 100], 默认值为查询红利配置接口返回的 spin_times
award_typeint奖励类型, 1: 现金, 2: 红利, 默认值为查询红利配置接口返回的 award_type
mosaic_multipleint红利打码倍数 [1, 100], 默认值为查询红利配置接口返回的 mosaic_multiple
validaty_hoursint红利有效期(小时) [1, 168] 默认值为查询红利配置接口返回的 validaty_hours
odds_limitintspin 奖励上限, 默认值为查询红利配置接口返回的 odds_limit

Response Body:

Content-Type: application/json

json
{
    "header": {
        "code": 0, // 错误编码,0表示正常, 非0表示异常
        "msg": "",
        "timestamp":1709716095516,
    },
    "result": [
        {
            "op_id": "op123",          // OP 侧红利 ID
            "grantify_id": "9995ed28d4e3882c", // 红利
        },
        {
            "op_id": "op124",
            "grantify_id": "d03ba03818860d0a",
        }
    ]
}

3. 取消红利

Method: POST

URI:: /open2j/g/grantify/cancel

Description: 取消已经创建红利

Request Body:

Content-Type: application/json

json
{
    "grantify_ids": [
        "9995ed28d4e3882c",
        "d03ba03818860d0a"
    ] // 红利 ID 列表
}

参数说明:

参数类型必填描述
grantify_idsstring[]红利 ID 列表, 一次最多100条

Response Body:

Content-Type: application/json

json
{
    "header": {
        "code": 0, // 错误编码,0表示正常, 非0表示异常
        "msg": "",
        "timestamp":1709716095516,
    },
    "result": {
        "grantify_ids": [
            "9995ed28d4e3882c",
            "d03ba03818860d0a"
        ] // 成功取消的红利 ID 列表
}

4. 查询红利状态/进度

Method: POST

URI:: /open2j/g/grantify/query

Description: 查询已经创建红利状态/进度

Request Body:

Content-Type: application/json

json
{
    "op_ids": [
        "op123",
        "op124"
    ],                       // 用户 ID 列表
    "grantify_ids": [
        "9995ed28d4e3882c",
        "d03ba03818860d0a"
    ],                       // 红利 ID 列表
    "game_id": 1007,         // 红利游戏 ID
    "created_from": 1,       // 创建来源: 1: OP 接口创建, 2: 2J 后台创建 3: 2J 系统创建
    "state": 1,              // 红利状态: 1: 进行中, 2: 打码中, 3: 已完成 4: 已取消, 5: 已过期
    "limit": 20,             // 返回结果数量限制, 默认20, 最大100
    "offset": 0              // 返回结果偏移, 默认0
}

参数说明:

参数类型必填描述
op_idsstring[]用户 ID 列表, 一次最多100条
grantify_idsstring[]红利 ID 列表, 一次最多100条
game_idint红利游戏 ID, 必须在查询红利配置接口返回的 game_ids 中。默认全部
created_fromint创建来源: 1: OP 接口创建, 2: 2J 后台创建 3: 2J 系统创建。默认全部
stateint红利状态: 1: 进行中, 2: 打码中, 3: 已完成 4: 已取消, 5: 已过期。默认全部
limitint返回结果数量限制, 默认20, 最大100
offsetint返回结果偏移, 默认0

注意⚠️: op_ids 和 grantify_ids 不能同时为空; 如果两者都不为空, 则表示两者的交集。

Response Body:

Content-Type: application/json

json
{
    "header": {
        "code": 0, // 错误编码,0表示正常, 非0表示异常
        "msg": "",
        "timestamp":1709716095516,
    },
    "result": [
        {
            "grantify_id": "68bff8183377cc948464efb0", // 红利 ID
            "op_id": "126012",
            "game_id": 1066,
            "left_hours": 1,       // 剩余有效时间(不足1小时按1小时返回), 单位小时
            "expired_at": 1758016152, // 过期时间戳
            "created_at": 1757411352, // 创建时间戳
            "created_from": 1,    // 创建来源: 1: OP 接口创建, 2: 2J 后台创建 3: 2J 系统创建
            "spin_type": 1,       // 红利类型, 1: 免费旋转, 2: Feature
            "spin_times": 3,      // 免费旋转次数
            "award_type": 1,      // 奖励类型
            "award_amount": 0,    // 奖励金额
            "odds_limit": 1000,   // 奖励上限倍数
            "mosaic_type": 1,     // 打码类型, 1: 现金, 2: Bonus
            "mosaic_multiple": 10, // 打码倍数
            "bet": 1000,          // 每次旋转的下注金额
            "state": 3,           // 红利状态: 1: 进行中, 2: 打码中, 3: 已完成 4: 已取消, 5: 已过期
            "activated": false    // 是否已激活
        }
    ]
}

OP 侧提供的接口

如果使用无缝钱包, 则需要 OP 提供一个派奖接口, 由 2J 在用户完成红利时调用, 将奖励发放到用户账户中。

接口名称描述路径
派奖接口向用户派发奖励/grantify/reward

1. 红利派奖接口

Method: POST

URI:: /grantify/reward

Description: 向(使用无缝钱包模式接入)OP 商户的用户派发红利奖励

OP 需要实现此接口的幂等性,避免重复派发; 同时如果收到重复的派奖请求, 请返回成功 (code = 0)。

Request Body:

Content-Type: application/json

json
{
    "op_id": "op123",        // 用户 ID
    "timestamp": 1709716095, // 请求时间戳, 毫秒
    "award_amount": 100,               // 派发金额
    "grantify_id": "9995ed28d4e3882c", // 红利 ID
}

参数说明:

参数类型必填描述
op_idstring用户 ID
timestampint请求时间戳, 毫秒
amountint派发金额
grantify_idstring红利 ID

Response Body:

Content-Type: application/json

json
{
    "header": {
        "code": 0, // 错误编码,0表示正常,非0表示异常
        "msg": "",
        "timestamp":1709716095516,
    },
    "result": {
       "op_id": "op123",        // 用户 ID
    }
}

2J Game Inc.