NovaSDK 开发文档

NovaSDK 开发文档
MeteorCat最近接触到公司游戏聚合的项目, 突然想结合之前公司开发经验来考虑自己应该怎么从而完善设计, 从而方便其他人借鉴处理
首先这里介绍下具体的字段参考表, 需要明确规则: 传递字段必须有默认值, 不允许为 null 值
| 类型 | 默认值 | 取值范围 | 说明 |
|---|---|---|---|
string |
‘’ | - | 字符串类型, 默认只允许为空字符串, 一般从数据库性能考虑建议字符串控制在 varchar(255) 之中 |
boolean |
0 / 1 | - | 布尔类型, 一般来说建议采用数值1和0来区分(数据库采用 tinyint(1) 类型), 主要部分数据清洗或者转化成字符串, 也就是 true 和 "true" 的问题 |
number |
0 | int64 | 数值类型, 数值方面建议安装 int64 范围取值(数据库采用 bigint 类型), 部分开发语言最大值需要特定 BigInt 类型 |
time |
0 | int64 | 时间戳类型, 推荐采用 bigint 类型保存 UTC 时间的毫秒时间戳, 因为基于0时区开始的时间戳方便直接做全球化跨时区换算, 所有开发语言都内置支持 |
country |
‘CN’ | - | 字符串类型, 全球化的来源地区码(数据库采用 char(2) 类型, 入库必须强制转大写), 基于 ISO 3166-1 的地区统一标准码, 海外部分支付渠道需要支付的地区来源标识 |
currency |
‘CNY’ | - | 字符串类型, 全球化的地区货币码(数据库采用 char(3) 类型, 入库必须强制转大写), 基于 ISO 4217 的地区货币标准码, 海外部分支付渠道需要支付的地区货币标识 |
scale |
2 | uint8 | 数值类型, 全球币种小数位(数据库采用 unsigned tinyint 类型), 大部分国家采用以 分 为货币单位, 而部分海外国家是没有 分 单位(日本/韩国最小单位为 日元/韩元), 可以通过计算换算最小货币金额 |
日常规范差不多是这样, 实际上可以日常动态调整部分需求
-
有的业务系统喜欢直接采用
秒级时间戳从而节省性能, 但是后续面向全球化还是要扩展发起的地区时区字段 -
有的业务系统不需要货币和地区码, 可能单一国家业务不需要通过美元/日元/韩元结算金额
这部分没有什么具体定式, 都是可以按照各自业务需求来动态调整, 接下来就是表结构设计(这里是 MariaDB(MYSQL Fork的分支))
1 |
|
这就是游戏应用主体表设计, 注意: 一个游戏是关联多个渠道(也包含官方服), 渠道游戏唯一关联标识 = ({渠道ID} + {游戏ID})
1 | # 聚合渠道部分也是共享表, 可以放在统一的数据库 |
至此就获得自定义的 {APP_ID = {10000}, CHANNEL_IDENT = {novagame}} 的渠道专服游戏, 现在就是做进一步规划设计
聚合的游戏应用常采用类似链路设计: https://{API_URL}/business/{3RD_CHANNEL}/{METHOD}/{APP_ID}/{CHANNEL_IDENT}
-
{API_URL}: 对外开放的API服务域名 -
{3RD_CHANNEL}: 对接的第三方渠道SDK, 比如QQ腾讯大厅/360游戏大厅/QuickSDK/百度等对接渠道 -
{METHOD}: 调用第三方渠道 SDK 方法, 主要对接应用初始化/验证授权/发起支付/支付回调/信息上报 -
{APP_ID}: 渠道对应的游戏应用ID, 也就是聚合系统内部的游戏ID -
{CHANNEL_IDENT}: 聚合系统当中自己划分的特殊渠道标识
聚合系统主要目标就是对接
QQ腾讯大厅/360游戏大厅/QuickSDK/百度等 SDK 从而集成到自己的系统



