# 积分商城
## 文档说明
本文档为游戏接入积分商城模块提供说明。GTarcade官方平台提供积分兑换服务,用户可使用积分兑换游戏资源礼包。
积分来源通常为充值赠送、游戏在线时长奖励和重大节日福利活动赠送。
## 前端接入
> 打开积分商城页面
**通信方式:** 游戏向微端请求(TCP)
**加密方式:** AES
**数据格式:** JSON
**参数内容:**
| 参数名 | 必选 | 类型 | 说明 |
| :-------- | :--- | :--- | :-------------------------------------------- |
| gta_id | 是 | Str | 每次启动 gta 的唯一 ID |
| client_id | 是 | Str | 每一个游戏分配的通信 ID |
| msg_id | 是 | Str | 本地通信的消息 ID,用于分辨每次通信接口,写死6 |
## 后端接入
### 接入前准备
> 1、联系微端后端 获取相关key 找微端后端研发(@奇然)
> 2、配置发货接口
### 业务相关
1. 商品发货接口
**接口功能**
> 商品发货接口
**微端主动请求**
> [游戏方提供接口]()
**HTTP请求方式**
> POST(application/x-www-form-urlencoded)
**特别说明**
> 需要对订单ID(order_id)进行唯一验证
**请求参数**
> | 参数 | 必选 | 类型 | 示例 | 说明 |
> | :--------- | :---- | :----- | :----------------------------------------------------------- | ------------------ |
> | action | ture | string | gtarcade-send-gift | 请求来源 |
> | game_id | true | string | 346 | 游戏id |
> | server_id | true | string | 2625310001 | 服务器id |
> | op_id | true | string | 590 | op_id |
> | role_id | true | string | 18269717137390 | 角色id |
> | account | true | string | qiangwang@yoozoo.com | 用户id |
> | order_id | true | string | PUS1A580111280529823 | 订单号 |
> | goods_list | true | string | [{"type":"1","goods_id":"23","num":"100","extra":""},{"type":"2","goods_id":"22","num":"200","extra":""}] | 商品集合json |
> | timestamp | true | string | 1603425123 | 时间戳(unix时间戳) |
> | ext | false | string | {"title": "积分商城兑换礼包", "content": "您兑换了XXX礼包"} | 扩展字段json |
> | sign | true | string | c81e728d9d4c2f636f067f89cc14862c | sign算法见下方实例 |
**返回字段**
> | 返回字段 | 字段类型 | 实例 | 说明 |
> | :------- | :------- | :------ | :----------------------------------------------------------- |
> | status | int | 0 | 返回结果状态。0:正常(订单重复也算为正常);1:失败 -1 异常 -2 签名失败。 |
> | msg | string | success | 发货原因 |
> | data | array | | order_id,account,game_id,server_id,op_id,role_id |
**接口示例**
````json
{
"status": 0,
"msg": "发货成功",
"data": {
"order_id":"PUS1A580111280529823",
"game_id":"346",
"server_id":"2625310001",
"account":"qiangwang@yoozoo.com",
"op_id":"590",
"role_id":"18269717137390"
}
}
````
**签名算法**
>1.先对需要的参数(除sign外)按key升序排序;
>2.拼作成如(a=1&b=2&c=3&d=4)的格式;
>3.并在尾部接上双方约定的密钥key(a=1&b=2&c=3&d=4key);
>4.最后对上述字符串进行md5加密。
**PHP实例**
````php
private function getSign($data, $key)
{
ksort($data);
$items = array();
foreach ($data as $key => $value) {
$items[] = $key . "=" . $value;
}
return md5(join("&", $items) . $key);
}
````