TYPESDK手游聚合SDK客户端设计思路以及架构的六:SDK配置文件设计思路

这类型曾经开源,大家产生趣味可以友善研究或者参照项目编制好的聚合SDK
品种地址:https://code.csdn.net/typesdk_code
花色地址:https://github.com/typesdk

 

  作为一个聚合sdk的客户端,势必对各一个不一渠道sdk有雷同模仿好的布置文件。同时,作为聚合sdk客户端本身也会见生出连带的效能配置要求。加上有的娱乐开服和登录等等在线应急力量的需要,也最是需要来同套配置文件。同时这些安排文件有些需要在地面,有些则需放在资源服上读取,有些则使在聚合sdk服务器上读取。
零零总总的游说了这么多,那么让咱来理一下思路,看看究竟要发生那些配置文件。
  从功能分类的话
    1. 对准单个渠道sdk的相关部署
    2. 针对性聚合sdk额外功能的有关安排
  从读取难易来说
    1.
位居地面的配备(读取速度快还自然不负众望,但是出被改动风险,很麻烦开创新)
    2.
放在服务器的布置(读取成功有黄因素,几乎从来不于改风险,很爱做创新)
    3.
写以代码里文件之部署(读取速度快,被改难度大,但是好为难开创新)

       -1:提交的求参数错误

联网下去特地说下关于代码里之安排:coneConfig
因为移动设备本身虽然有问题,之前做项目的当儿,有遇上了ip地址解析不了之景象,所以于读取相关的服务器配置地址下,我们举行了以下的相关设置
  a. 配置文件最好发域名之配备。
  b.
同一个接口,有多套的预备地址,以防发生同样贵服务器无法访问到,而导致逻辑上之中止
  c.
本身若出连带的超时机制,当第一单ip访问不至经常,才起来走访亚只,并且拥有接口应该还循这套逻辑

7.回来内容(JSON格式):

  2. 存放于服务器的配备文件:serverConfig
内部含了以下几点内容
    a. 渠道的回调地址,appkey等重点参数
    b. 游戏登录的白名单列表等
    c. 游戏log的是否开启
    d. 游戏的sdk辅助功能是否被下的开关等
  3. 状在代码文件里的布局:codeConfig
内含了以下几点内容
    a. 从服务器读取文件之下载地址列表,需要发出多单下载地址
    b. 解析本地配置文件的连锁算法(本地配置文件或者加密)
    c. 其他同sdk聚合服通信的地址与接口。

2.调用方式:HTTP POST

关于安排文件之数据格式,这里我们提及一些档次遭到相见的其实情况
咱那儿用的数额格式是json,而于http协议中,”:\”这半个号是不能够下的,必须开展URLEncode,在服务端和客户端通信中,这个小题目常常让忽略。
有关安排文件之有规划思路,我们便先暂时称到此处。同时也接广大看客联系我们typesdk的艺,提出宝贵的意和建议。

 

连下我们来说说,这三类配置文件分别于啊时读取和行使。

5.响应方:SDK服务端

形容以代码文件里之布局:codeConfig
这些安排文件为凡摹写在代码中的,所以无待缓存进内存中,它们本身应当是静态常量,可以每次需要用的下,直接读取就尽。

 

存于服务器的配置文件
这些数据建议先以每个具体的逻辑接口调用前读取一糟糕。这些安排文件被的多寡,有以下这些的相干规划
  a.
这些数量我要发一个默认值,防止在网不好的景象下无数据可用,造成逻辑上的卡死。
  b.
这些数据每次用的时光,都用刷新重新读取一全勤,因为这些数据是的顶酷用场就是是动态的后台更新相关配置
  c.
这些数量每次读取到后来,都需缓存进内存中。如果下次于服务器并未读到有关部署,则运用苏存在内存中之数
  d.
这些数量要以取到/超时后再行调用后面的逻辑,不要做异步的接口调用。

       1:正常返回,结果破产

寄存本地的部署的文件
  这种建议直接当玩乐启动时读取,因为自本土文件转换成外存中的多少,仍然是内需一个输入/输出流的操作,存在非常的破获和拍卖。
地方配置文件应该在sdk功能正式启用前即给加载,换言之,在sdk的初始化之前,需要将地面配置文件读取出来又存到内存中。在属下的sdk初始化过程中,将会见为此到本地配置文件的appid这些渠道sdk配置参数。

-99:未知错误

 

id + name + value

出于上述的这些分析,那么我们开了以下的这些规划
  1. 存放本地的配置的文书:localConfig
内带有了以下几点内容:
    a. 单个渠道sdk的非关键性配置:例如appid,渠道编号,等
    b. 单个游戏包的sdk额外功能;是否加载广告检测,是否用热更新等

D)  
游戏服务端异步将其中充值订单号,该笔订单回调url及连锁充值信息发送给SDK服务端。

 

4.要求方:游戏服务端

 

1.3.2 数据协议

B)   SDK客户端将充值请求转发渠道方

-99:未知错误

响应码说明:

      充值信息存档待查。

1.求地址:http://TypeSDK:PORT/{appid}/{channelid}/Login/

       ·MD5使用RFC1321标准,编码后需换成均小写。

       -2:提交的请改换成渠道参数错误

 

 

 

3.接口描述:

1.4.1 用户会话验证

A)   用户以打闹中为游戏服务端提交充值请求。

C)  
游戏服务端将里面充值订单号以及相关充值信息返回游戏客户端,供其交给渠道方。

              “name” : “test”

       例: http://192.168.0.1:40000/1000/1/SaveOrder/

1:正常返回,存档失败

玩耍客户端在每次用户点击市时为服务端请求生成内部订单。并需使用一定机制(例如早晚时间外禁连续点击市)防止用户频繁操作对服务器造成过高负荷。

 

6.请求内容(JSON格式):

 

              “id” : 123,

G)   游戏服务端向SDK服务端返回处理结果。

 

            本有的重大提供平台SDK服务器和CP方游戏服务器交互的接口规范

 

4.签示例

假如apiKey=aabbcc,则需要进行MD5哈希的字符串为:

2.调用方式:HTTP POST

      
根据不同渠道定义的回字段不同,此三只字段未肯定有价。渠道不回到对许字段时,该字段值为空字符串。

0:正常返回,存档成功

       2:渠道服务端请求错误

      
该地方也充值结果通知地址,由游戏服务端在下文的SaveOrder接口中通过notifyurl字段提交到SDK服务端。

B)    游戏服务端生成中充值订单号和连锁充值信息

 

A)   SDK服务端向娱乐服务端转发充值结果回调。

      
说明:URL中之{appid}代表游戏代码,由打包工具转,{channelid}代表渠道代码,渠道代码列表可以参照打包工具说明,可以由客户端提交的参数中落当前渠道代码。

       0:正常返回,结果成

玩服务端收到该要后可保存该次请求参数,随即赶回code=0,表明成功收信。之后异步处理充值或发放道具逻辑。

游戏服务端生成的具备中订单需要仓储待查。并在获得渠道返回的表订单后异步处理发货操作并坐一定机制通知客户端更新数据显示。

       要求的署名内容为:

 

 

E)    SDK服务端将充值信息存档待查并返处理结果。

       ·appid及apiKey由打包工具分配,打包工具使用办法要参见使用文档。

 

1.4.3 充值信息交到

       请求消息及响应消息的始末都采取JSON表示数据。

1.多少格式

       0:正常返回,获取订单信息成功

       MD5(签名内容 + ”|” + apiKey)

 

3.接口描述:

字段名称

字段说明

类型

备注

id

用户唯一标识

string

对应渠道的用户ID。并非必传,未作说明的情况下传空字符串。

token

用户登录会话标识

string

本次登录标识。并非必传,未作说明的情况下传空字符串。

data

附加信息

JSON

附加信息。并非必传,根据渠道不同,该字段含义不同,未作说明的情况下传空字符串。

sign

签名参数

string

MD5(签名内容 +  ”|”  +  apiKey)

签名内容:

Id + ”|” + token + ”|” + data 

 

字段名称

字段说明

类型

备注

cporder

CP订单号

string

游戏客户端在提交订单时传送的内部订单号。

data

订单信息

string

由CP生成订单时自定义的附加信息,不能为空及空字符串。

sign

签名参数

string

MD5(签名内容 +  ”|”  +  apiKey)

签名内容:

cporder + ”|” + data

notifyurl

订单回调url

string

该笔订单回调通知游戏服务端的url,不参与签名。

verifyurl

订单查询url

string

该笔订单向游戏服务端查询详情的url,不参与签名。

      
·描述签名的表达式中,”+”表示开字符串连接,实际发生的待签名字符串中并无有。

 

3.接口描述:

 

       假设请求数据吧:

-3:签名校验错误

 

              “other” : “blarblar”

      证明:URL中的{appid}代表游戏代码,由打包工具转,{channelid}代表渠道代码,渠道代码列表可以参考打包工具文档,可以自客户端提交的参数中取当前渠道代码。

      
SDK服务器采用HTTP协议作为通信协议,游戏服务器通过组织HTTP请求(POST方式)向SDK服务器发起接口请求。

       说明:

 

2.字符编码

5.响应方:游戏服务端

 

E)   SDK服务端通过该接口将充值结果发送给游戏服务端。

 

 

 

1.3.1 通信协议

B)    游戏服务端向SDK发送充值信息查询请求,目的是承认该充值结果有效。

 

1.4.4 充值信息确认

 

2.调就此艺术:HTTP POST

       “data:{

6.请求内容(JSON格式):

 

 

7.回来内容(JSON格式):

 

1.3 协议说明

5.响应方:SDK服务端

1.伸手地址:http://TypeSDK:PORT/{appid}/{channelid}/SaveOrder/

       通知用户充值结果。

F)    游戏服务端处理充值逻辑。

 

       1:正常返回,没有得到订单信息

尽管如此拼接后得出要签字的情节串为

2.调因此艺术:HTTP POST

 

       例: http://192.168.0.1:40000/1000/1/Login/

 

5.响应方:SDK服务端

       -3:提交的呼吁参数签名错误

              “value” : “something”

 

       请求和相应内容均采取UTF-8字符编码

 

 

-1:系统错误

 

      

H)   SDK服务端向渠道方返回处理结果。

-99:未知错误

 

 

A)   用户以戏受朝SDK客户端提交充值请求。

1 概要
    通常,游戏开发商并无会见只在一个水道及丝他们之嬉戏,接抱越多之沟渠,代表正在可能赢得更多之用户,但与此同时为意味着着更是多的接入SDK工作量、工期和用。一放缓游戏而有足够的用户,甚至需要衔接30家以上的各种渠道,以保障好的商海覆盖率。

       ·签名内容因各级接口请求数据中几字段的拼凑。基本格式为各字段值以
”|”
符号分隔后直接连接。注意,由于”|”符号用作分隔字段,签名内容中待避免出现该符号,换行符(回车或换行)等特殊符号也需要事先剔除。如果对诺字段为空,仍然要保留“|”符号占位。

4.请求方:游戏服务端

 

 

渠道支付接口负责好货币交易操作,生成并蕴藏外部订单,供对账查询利用。

4.请求方:游戏服务端

字段名称

字段说明

类型

备注

code

响应码

int

本次请求结果标志

msg

响应信息

string

如果请求出错,描述错误信息。

 

 

 

B)   游戏客户端将收获之用户登录信息传递到游戏服务端。

D)   渠道方将充值结果发送给SDK服务端

123|test|something

C)   SDK服务端根据提交的其中充值订单号查询充值信息并返游戏服务端。

响应码说明:

1.4 接口说明

8.推荐处理方式

字段名称

字段说明

类型

备注

code

响应码

int

本次请求结果标志

msg

响应信息

string

如果请求出错,描述错误信息。

 

 

 

       验证用户登录结果。

 

      充值信息查询。

 

D)   游戏服务端根据查询结果进行逻辑处理。

       ·计算MD5签名时,应以UTF8编码取字符串的许节值。

 

 

1.4.2 充值结果回调

1.请求地址:

       2:正常返回,获取订单信息错误

 

响应码说明:

1.2   支付基本流程

字段名称

字段说明

类型

备注

code

响应码

int

渠道返回的充值结果。

id

用户唯一标识

string

对应渠道的用户ID。

order

渠道订单号

string

渠道返回的订单号。

cporder

CP订单号

string

游戏客户端在提交订单时传送的内部订单号。如果该渠道未接收该参数,则该字段为空字符串。

info

订单附加信息

string

游戏客户端在提交订单时传送的附加信息。如果该渠道未接收该参数,则该字段为空字符串。

sign

签名参数

string

MD5(签名内容 +  ”|”  +  apiKey)

签名内容:

code + ”|” + id + ”|” + order+ ”|” + cporder + ”|” + info

amount

订单金额

string

该笔订单价值折算为人民币的金额(以分为单位)供服务端校验使用,不参与签名。

美高梅4688.com 1

 

C)  
游戏服务端通过本请求将用户登录信息传递到SDK服务端,验证该登录信息是否中。

 

7.返回内容(JSON格式):

 

证实:部分渠道提供信息查询接口,本接口将优先采取渠道的音信查询接口处理要。如果该水道没有供信息查询接口,则查询 3.3.3 充值信息交到
接口中保存的充值信息,如果创建充值信息经常没调用该接口,或者没有查询到对象订单对应之充值信息,则会回到未查询及对应充值信息。

1.2.2 一般渠道支付流程图

 

 

单个SDK接抱流程在同一位产生经验的全职客户端程序、一各类全职服务端程序员、一各项全职QA处理的情况下,需要3天时间才会做到。因此当一缓缓产品冲30个还还多不同要求的水渠SDK时,人员资金和时间本就会见重增加。所以我们用一个通用接口,来处理各种渠道的求,这就是统一渠道SDK接抱框架。

 

字段名称

字段说明

类型

备注

code

响应码

int

本次请求结果标志

msg

响应信息

string

如果请求出错,描述错误信息。

value

订单详细信息

JSON

根据渠道不同,返回相应订单信息。

 

字段名称

字段说明

类型

备注

cporder

CP订单号

string

游戏客户端在提交订单时传送的内部订单号。

sign

签名参数

string

MD5(签名内容 +  ”|”  +  apiKey)

签名内容:

cporder

 

小心:SaveOrder接口在劳动端生成中订单号时请求。只有得到到该要成功返回,才会允许客户端作后续充值动作。

-2:参数错误

       -99:未知错误

 

 

字段名称

字段说明

类型

备注

code

响应码

int

本次请求结果标志

id

用户唯一标识

string

对应渠道的用户ID

nick

用户在渠道的昵称

string

对应渠道的用户昵称

token

用户登录会话标识

string

本次登录标识

msg

响应信息

string

如果请求出错,描述错误信息。

value

渠道返回信息

JSON

渠道返回的原始结果信息。 

1.请地址:http://TypeSDK:PORT/{appid}/{channelid}/CheckOrder/

1.2.1 渠道支付流程

6.呼吁内容(JSON格式):

 

 

       }

       请求与应中之签美高梅4688.com都以md5哈希进行,算法如下:

-3:签名校验错误

3.接口描述:

 

-2:参数错误

C)   渠道方异步执行充值。

7.返内容(JSON格式):

      说明:URL中之{appid}代表游戏代码,由打包工具转,{channelid}代表渠道代码,渠道代码列表可以参考打包工具文档,可以打客户端提交的参数中得到当前渠道代码。

D)   SDK服务端返回验证结果与另外信息,供游戏服务器使用。

 

 

响应码说明:

       0:渠道正规返回,结果成

6.请求内容(JSON格式):

4.请求方:SDK服务端

id,nick,token说明:

       例: http://192.168.0.1:40000/1000/1/CheckOrder/

 

1.4.5 游戏订单查询

1.恳请地址:

      
该地点也订单查询地址,在SaveOrder接口中经过verifyurl字段提交到SDK服务端。

2.调用方式:HTTP POST

3.接口描述:

       SDK服务端向娱乐服务端查询收到的订单信息。

A)   用户以戏受于SDK客户端提交充值请求。

B)   SDK客户端将充值请求转发渠道方

C)   渠道方异步执行充值。

D)   渠道方将充值结果发送给SDK服务端

E)   SDK服务端通过该接口向游戏服务端查询该充值请求是否合法。

F)    游戏服务端处理查询逻辑。

G)   游戏服务端向SDK服务端返回查询结果。

H)   SDK服务端比对订单信息并依此确定下一样步处理流程。

4.请求方:SDK服务端

5.响应方:游戏服务端

6.求内容(JSON格式):

字段名称

字段说明

类型

备注

code

操作类型

string

预留字段,区分本次查询操作类型。目前统一传0

id

用户唯一标识

string

对应渠道的用户ID。

order

渠道订单号

string

渠道返回的订单号。

cporder

CP订单号

string

游戏客户端在提交订单时传送的内部订单号。如果该渠道未接收该参数,则该字段为空字符串。

info

订单附加信息

string

游戏客户端在提交订单时传送的附加信息。如果该渠道未接收该参数,则该字段为空字符串。

sign

签名参数

string

MD5(签名内容 +  ”|”  +  apiKey)

签名内容:

code + ”|” + id + ”|” + order+ ”|” + cporder + ”|” + info

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7.回来内容(JSON格式):

字段名称

字段说明

类型

备注

code

响应码

int

本次请求结果标志

msg

响应信息

string

如果请求出错,描述错误信息。

id

用户唯一标识

string

对应渠道的用户ID。

order

渠道订单号

string

渠道返回的订单号。

cporder

CP订单号

string

游戏客户端在提交订单时传送的内部订单号。如果该渠道未接收该参数,则该字段为空字符串。

amount

订单金额

string

该笔订单价值折算为人民币的金额(以分为单位)。

createtime

订单创建时间

string

该笔订单创建时间。

Itemid

道具id

string

该笔订单的道具id,如果没有传空字符串。

(该字段标识订单中的商品ID,需要与客户端下订单时对应的字段匹配,验证对比不符时不发货)

Itemquantity

道具数量

Int

该笔订单道具数量,没有传0。

(该字段标识客户端提交的订单中的道具数量,渠道不接受该字段时,客户端提交的订单没有该字段,此时直接传0或1均可)

status

订单状态

int

订单状态码。

info

其他信息

string

备用字段,传送其他可供比对的信息。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

响应码说明:

       0:正常返回,结果成

       1:正常返回,结果失败

-99:未知错误

8.推荐处理方式

游玩服务端收到该要后先为CP订单号为法查询,查询不顶或要中从未CP订单号时因为沟订单号啊原则查询,找到匹配的订单信息并共同返回SDK服务端。

1.5 约定


支付有关接口内部订单号字段长度不能够跳10各,格式使用英文字母和数字的咬合,需要能够区分区服。不可再。

l  渠道返回的用户id用于用户唯一标识。单区服内不可再。

l  支付接口返回的amount是当次支付有的骨子里金额。

拖欠类型既开源,大家发趣味可以协调研究或动接入
类地址:https://code.csdn.net/typesdk\_code
类地址:https://github.com/typesdk

 

 

-1:系统错误

 

123|test|something|aabbcc 

 

       1:渠道正规返回,结果破产

       SDK服务端转发呼吁时额外存储一份订单日志数据,存储其中订单号,外部订单号以及订单状态,供对账及查找BUG时当参照。

3.签约规则

A)   游戏客户端通过SDK客户端的记名动作获得用户登录信息。

发表评论

电子邮件地址不会被公开。 必填项已用*标注