# 第三方接入线上会员接口
[TOC]
## 基本格式说明
1,所有请求都会带上一个 `token`,用于身份验证,`token`由双方系统约定,每个第三方接入商都会有不同的token表明身份,每次请求时,将token放到请求头的AUTHORIZATION属性,当前token默认使用代理商系统登录名称
2,每个餐厅都有一个餐厅ID,新建会员系统时生成,不可更改,请求需要把此餐厅ID放到请求头的CUSTOMERGUID属性以对该餐厅做操作
3,所有POST请求参数为json格式
测试服务器host: http://vip.sandyvip.com
上线需要换正式服务器host: http://vip.sandypos.com
测试代理商登录名:test
测试商户ID:{DEFAULT-AUTO-8E5A-BDE2-34ABA1BD956C9}
测试商户分店ID: {DEFAULT-AUTO-E207-8CC9-44AD86AEEB6DD}
curl示例:
```
curl -X POST -H 'CUSTOMERGUID: {DEFAULT-AUTO-8E5A-BDE2-34ABA1BD956C9}' -H 'AUTHORIZATION: test' -i 'http://vip.sandyvip.com/api2/member-cjb/getrechargerules' --data '{"card_id": "000001" }'
```
4,出错返回数据结构:
```
{
"errcode": "", // 错误代码
"errmsg": "" // 错误信息
}
```
`errcode`:
* `1` - 参数不足
* `2` - 卡不存在
* `3` - 卡已存在
* `4` - 余额不足
* `300` - 系统过期
* `400` - 参数错误
* `500` - 内部错误
## 公共请求
### 获取卡等级
`GET /api2/member-cjb/cardlevellist`
成功返回数据结构
```
[{
"card_lel_name": "普通会员",
"id": 1
}, {
"card_lel_name": "高级会员",
"id": 2
}]
```
字段解释:
* id - 卡等级ID
* card_lel_name - 卡等级名称
### 获取充值规格&充值方式
`POST /api2/member-cjb/getrechargerules`
请求参数
```
{
"card_id“: "000001"
}
```
字段解释:
* card_id - 需要充值的卡号
成功返回数据结构:
```
{
"rules": [{
"money": 1,
"add_score": 0.0,
"description": "充值送10%",
"add_money": 0.1
}, {
"money": 500,
"add_score": 0.0,
"description": "冲500送100",
"add_money": 100.0
}],
"paytypes": [
[1, "现金"],
[2, "银行卡"],
[4, "支付宝"],
[3, "微信"]
]
}
```
字段解释:
* money - 充值金额,0为每次充值生效,1为按百分比生效
* add_score - 赠送积分
* add_money - 赠送金额
* description - 规则名称
* paytypes - 可选支付方式
### 根据关键字查询会员列表
`POST /api2/member-cjb/getcards`
请求参数
```
{
"key": "123"
}
```
字段解释
* key - 查询关键字,可以部分匹配卡号、姓名、手机号
成功返回数据结构
```
{
"cards": [{
"cur_score": 2555,
"phone": "66538536",
"amount": 14493.80,
"uname": "Chan Kan Seng",
"card_level_name": "普通卡",
"card_status": "正常",
"id": 200889,
"card_id": "M000123"
},
...
]
}
```
字段解释
* cur_score - 当前积分
* phone - 手机号码
* amount - 余额
* uname - 持卡者姓名
* card_level_name - 卡等级
* card_status - 卡状态
* id - 卡id
* card_id - 卡号
## 1. 开卡
`POST /api2/member-cjb/cardopen`
请求参数
```
{
"cardID": "12345",
"cardLevelID": "1",
"uname": "Mr.Wang",
"phone": "186xxxxxxxx",
"gender": "1"
}
```
字段解释
* cardID - 卡号
* cardLevelID - 卡等级ID
* uname - 会员姓名
* phone -会员手机
* gender - 性别 1-男,0-女
成功返回数据结构:
```
{
"org_name": "ASDFG",
"phone": "186xxxxxxxx",
"amount": 100,
"card_id": "12345",
"cur_score": 0
}
```
字段解释
* org_name - 开卡商户名称
* phone - 会员手机号
* amount -当前余额
* card_id - 卡号
* cur_score -当前积分
## 2. 充值
`POST /api2/member-cjb/recharge`
请求参数
```
{
"card_id": "wx001", // 卡号
"money": "100", // 充值金额
"pay_type": 1 //充值方式
}
```
字段解释
* card_id - 卡号
* money - 充值金额
* pay_type -充值方式,根据公共接口“获取充值规格&充值方式”获取
成功返回数据结构:
```
{
"cur_score": 0,
"add_money": 10.0,
"amount": "1420.00",
"add_score": 0.0,
"card_id": "12345"
}
```
字段解释
* card_id - 卡号
* money - 充值金额
* amount - 当前余额
* add_money - 赠送金额
* add_score - 赠送积分
## 3. 消费
`POST /api2/member-cjb/consume`
请求参数
```
{
"card_id": "wx001",
"money": 100,
"money_discount": 100
}
```
字段解释
* card_id - 卡号
* money - 消费金额
* money_discount - 可打折金额,可选。默认全部打折
成功返回数据结构:
```
{
"cur_score": 2555,
"ori_money": 100.0,
"amount": "14493.80",
"discount_money": 20.0,
"card_money": 80.0,
"discount": 0.8,
"depot_money": 0,
"card_id": "M000123",
"act_money": 80.0
}
```
字段解释
* card_id - 卡号
* cur_score - 当前积分
* ori_money - 原始消费金额
* act_money - 实际消费金额
* amount - 当前余额
* discount - 折扣,0.8表示8折
* discount_money - 折扣金额
* card_money - 卡内扣款
* depot_money - 应付款项(某些场景下,余额不足时出现)
## 4. 获取会员信息
`POST /api2/member-cjb/getcardinfo`
备注:此接口根据卡号精确查询特定卡信息,如果不能确定会员卡号,先使用公共请求“根据关键字查询会员列表”查找信息,以确定卡号
```
{
"card_id": "wx001"
}
```
字段解释
* card_id - 卡号
成功返回数据结构
```
{
"cur_score": 2555,
"phone": "66538536",
"amount": 14493.80,
"birthday": "",
"uname": "Chan Kan Seng",
"gender": 0,
"card_level_name": "普通卡",
"card_id": "M000123",
"sum_consume": 1000,
"sum_recharge": 529
}
```
字段解释
* cur_score - 当前积分
* phone - 手机号码
* amount - 余额
* birthday - 生日,格式为YYYY-mm-dd,没记录时为空
* uname - 持卡者姓名,
* gender - 性别 0-女,1-男
* card_level_name - 卡等级,
* card_id - 卡号
* sum_consume - 累计消费金额
* sum_recharge - 累计充值金额
## 5. 修改会员信息
`POST /api2/member-cjb/modcardinfo`
请求参数
```
{
"card_id": "M000123",
"uname": "huang",
"phone": "1234",
"birthday": "1999-9-9",
"gender": 1
}
```
字段解释
* card_id - 卡号,必填
* uname - 新名称,可选,不传该字段则不做修改
* phone - 新的手机号,可选,不传该字段则不做修改
* birthday - 新的生日,不传该字段则不做修改
* gender - 新的性别, 0-女,1-男,不传该字段则不做修改
成功返回数据结构
```
{
"cur_score": 2555,
"phone": "66538536",
"amount": 14493.80,
"birthday": "",
"uname": "Chan Kan Seng",
"gender": 0,
"card_level_name": "普通卡",
"card_id": "M000123"
}
```
字段解释
* cur_score - 当前积分
* phone - 手机号码
* amount - 余额
* birthday - 生日,格式为YYYY-mm-dd,没记录时为空
* uname - 持卡者姓名,
* gender - 性别 0-女,1-男
* card_level_name - 卡等级,
* card_id - 卡号
## 6. 查询使用历史
`POST /api2/member-cjb/getcardhis`
请求参数
```
{
"card_id": "M000123",
"only_score_change": 1,
"start_timestamp": 1570761560,
"end_timestamp": 1570761560,
"event_type": 0,
"page_size": 20,
"page": 1
}
```
字段解释
* card_id - 卡号,必填
* only_score_change - 可选,仅列出有积分变动的记录1-仅列出积分变动
* start_timestamp - 可选,查询起始时间,秒级时间戳
* end_timestamp - 可选,查询截止时间,秒级时间戳
* page_size - 每页显示的条数,可选,默认值20
* page - 查询的页数,默认第一页
* event_type - 记录类型,可选,默认查询全部,类型列表如下
event_type 值 | 类型描述
---|---
1 | 开卡
2 | 退卡
3 | 换卡
4 | 挂失
5 | 解挂
6 | 充值
7 | 消费
20 | 转出
21 | 转入
30 | 提现
成功返回数据结构
```
{
"data": [{
"ori_money": 100.0,
"act_money": 115.0,
"amount": 14608.8,
"score": 2560,
"pay_type_text": "现金",
"description": "充值送10%:充值100.0赠送金额10.0<br/>单次送5元:充值100.0赠送金额5.0赠送积分5.0",
"time": 1570592439,
"type": 6,
"org_name": "聚客西餐",
"id": 1003
}, {
"ori_money": 100.0,
"act_money": 80.0,
"amount": 14493.8,
"score": 2555,
"pay_type_text": "",
"description": "8折(0.8)<br/>消费80.0,获得积分80\n",
"time": 1570592439,
"type": 7,
"org_name": "聚客西餐",
"id": 1000
}],
"pages": 30.0,
"page_size": 2,
"page": 1
}
```
字段解释
* ori_money - 原始金额
* act_money - 实际金额
* description - 记录描述
* org_name - 商户名称
* amount - 余额
* time - 时间,秒级时间戳格式
* type - 类型,见参数列表解释
* pages - 记录总计条数
* page_size - 每页显示条数
* page - 当前页
* id - 记录的数据库ID值
## 7. 消费积分
`POST /api2/member-cjb/consume_score`
请求参数
```
{
"card_id": "wx001",
"score": 100
}
```
字段解释
* card_id - 卡号
* score - 消费积分,如果有小数部分,将忽略
成功返回数据结构:
```
{
"cur_score": 2555,
"amount": 80.0,
"card_id": "M000123",
}
```
字段解释
* card_id - 卡号
* cur_score - 当前积分
* amount - 当前余额