@khan-lau
2015-06-16T05:53:19.000000Z
字数 3086
阅读 2433
购物车协议
--response{"ret": "S_OK","data": {"array":[] //此处,根据需求返回不同类型数据.}}
--response{"ret": "err_code","error": "err_message"}
https://url:port/interface
其他协议字段使用 form 提交
通过https 协议保证安全性.
建议使用 Go Daddy Secure Certificate Authority - G2证书
连接使用 tls 1.0+ 进行加密, 避开 ssl 的漏洞
token 有时效限制, 过期后返回对应err_code.(参考协议1.5)
login成功, header 中返回 cookie, 后续请求都需携带对应 cookie
协议中约定所有请求必须使用 utf8编码. 涉及 url-encode, 也需使用 utf8.
涉及分页的接口 暂定每页50条记录.
ret字段
S_OK - 表示操作成功,同时返回对应的Session ID和用于cookie校验的值
FA_UNAUTHORIZED - 表示用户名或者密码不匹配,或者用户不存在
FA_INVALID_VERIFY_CODE - 校验码不正确 (备用)
FA_INVALID_SESSION - Session不合法,通常是校验码已过期
FA_NEED_VERIFY_CODE - 需要校验码 (备用)
FA_USER_LOCKED - 用户处于锁定状态 (备用)
FA_USER_SUSPENDED - 用户被禁用 (备用)
FA_USER_WRONG_STATUS - 用户状态错误 (备用)
"book":{"id":51ul, //ul代表unsigned long"name":"erlang语言入门","memo":"简介","type":1, //1为普通商品, 2为购物卡"class":23, //商品分类, 如: 计算机类, 文学类"price":25.5f, //价格, 如果价格为负, 则表示从总价中减去的金额, 以实现优惠, 折扣, 和虚拟支付."from":书店id, //见协议2.3"num" : 56, //数量. 在商品展示时, 当做库存数量.... //其他字段,可自行扩展}
"store":{"id":123ul,"name":"新华书店","memo":"介绍",... //其他字段, 可自行扩展.}
"class":{"id":33,"name":"文学类","memo":"古典, 现代",.... //其他字段, 可自行扩展.}
"order":{"num" : 3, //在购物车中, 当做交易商品的数量"book" : book, //见协议2.1"istax" : true, //是否已开具发票... //自行扩展}
"card":{"id":1231, // id"name":"1345-123-444-151", //卡号"money":15.34, // 代币金额, 支付时, 总价中减去该金额"memo": "",.... // 自行扩展}
鉴权接口.
注意事项: 该接口 response 时需要 set-cookie,并在 http header 中返回对应的 cookie, 鉴权成功后, 后续接口提交请求时, 必须在 header 中携带该cookie.
参数
| Name | Description | |
|---|---|---|
sid |
token | |
user |
用户id | |
passwd |
密码 |
response
请求成功:
{"ret": "S_OK","data": {"sid" : <string>}}
请求失败
{"ret": "FA_UNAUTHORIZED","error": "用户名或者密码不匹配"}
取消鉴权
参数
| Name | Description | |
|---|---|---|
sid |
token |
response
请求成功:
{"ret": "S_OK",}
请求失败
{"ret": "FA_UNAUTHORIZED","error": "用户名或者密码不匹配"}
根据关键字查询商品列表
URL:
https://url:port/searchBooks
参数
| Name | Description | |
|---|---|---|
sid |
token | |
class |
Optional | 商品分类id (见协议2.3) |
keyword |
Optional | 搜索关键字, 可用空格区分多关键字 |
num |
Optional | 商品数量 >= num, 可用于限定是否显示无库存商品 |
page |
Optional | 页码 |
response
请求成功:
{"ret": "S_OK","data": {"page" : 0, //当前为第一页"count" : 5, //共5页."books":[book, --book定义见协议 2.1book,......]}}
将商品加入购物车
参数
| Name | Description | |
|---|---|---|
sid |
token | |
bookId |
商品id (见协议2.1) | |
num |
Optional | 商品数量, 默认为1 |
response
请求成功:
{"ret": "S_OK",}
将商品移出购物车
参数
| Name | Description | |
|---|---|---|
sid |
token | |
bookId |
商品id (见协议2.1) | |
num |
Optional | 商品数量, 默认为1 |
response
请求成功:
{"ret": "S_OK",}
''' 可存本地 '''
''' 如需服务器存储 再订协议 '''
根据关键字查询历史订单列表
URL:
https://url:port/searchHistory
参数
| Name | Description | |
|---|---|---|
sid |
token | |
keyword |
Optional | 搜索关键字, 可用空格区分多关键字 |
page |
Optional | 页码 |
response
请求成功:
{"ret": "S_OK","data": {"page" : 0, //当前为第一页"count" : 5, //共5页."orders":[order, --order定义见协议 2.4order,......]}}
完成支付.
参数
| Name | Description | |
|---|---|---|
sid |
token |
response
请求成功:
{"ret": "S_OK","data": {"cards":[card, --card定义见协议 2.5card,......]}}
完成支付.
注意事项, 支付时, cards 金额汇总 - orders 价格汇总 , 结果 == 0 , 直接完成支付, 进入配送流程
结果 > 0 , 存储余额, 多种虚拟支付手段的支付比例, 和运营人员商议.
结果 < 0 , 进入真实货币支付流程.
URL:
https://url:port/pay
参数
| Name | Description | |
|---|---|---|
sid |
token | |
orders |
订单(order)数组 (见协议2.1) |
|
cards |
购物卡(card)数组 (见协议2.5) |
|
reciver |
收货人信息 |
response
请求成功:
{"ret": "S_OK",}
包含真实姓名, 收货地址, 邮编, 电话.
身份证号. 身份证照片管理
发票抬头管理