雅座开放平台(简称OpenAPI)是基于OAuth2.0的认证授权开放体系,针对用户需求,为用户提供的数据分享对接平台。以此,用户可以通过开放平台建立与第三方系统的快速集成,如收银对接、预定等位、POS或自助点餐、自建网站等。
基本职能
雅座开放平台是“会员数据共享”理念实践的重要基础设施,由理念成为现实的资源整合与运营管理后台,承载着对接并服务于第三方服务厂商、用户信息平台、数据资源整合者等的基本职能。推动会员数据在餐饮行业发挥更大价值,为企业用户创造完整的数据链路。在经用户授权通过的前提下,对外共享CRM核心价值数据,包括会员信息、卡信息、积分、储值、优惠券、交易流水;整合第三方点餐订单、菜品数据,为用户提供全面的数据分析增值服务。
价值与意义
客户通过雅座开放平台,可以整合原有预定系统、排队系统、收银系统、外卖平台、网上商城等,扩大会员来源渠道,纳入雅座CRM管理体系,为会员提供预订、等位、点餐、结账、积分兑换全方位的精细化运营服务,精准分析顾客消费行为、喜好及门店经营状况,提高顾客综合满意度,为餐饮品牌客户提高核心竞争力。
技术原理
雅座开放平台完全基于OAuth2.0开放授权协议,提供第三方登录页面(类似QQ、微信的第三方登录)和登录接口,用户登陆后获取Token调用业务接口进行数据交换。所有接口均采用HTTPS网络通讯协议,为用户提供基于身份认证的、更为安全的网络数据传输。
HTTP/POST,所有数据整体打包成 JSON 格式传输,且字符编码为 UTF-8 (暂不考虑加密,如需后续可扩展) ,数据结构如下,ciphertext 字段为数据字段,其他字段为协议字段
{ "timestamp": 1429704178, "version": 1, "access_token" : "8ddee38fd03446c59ff8c8f15bd2ff37", "ciphertext" : { } }
注:下一节 OAuth授权接口使用POST application/x-www-form-urlencoded提交数据
调用方需判断http的响应码:
POST请求或GET请求
当http响应200时,接口返回的数据格式如下
{"code": 错误码, "message": "success", "data":""}
注: 更多错误码参看附录 错误码列表
雅座开放接口的调用,都是需要获取用户身份认证的。目前开放平台用户身份鉴权主要采用的是OAuth2.0。
OAuth2.0概述
关于OAuth2.0协议的授权流程可以参考下面的流程图,其中Client指第三方应用,Resource Owner指用户,Authorization Server是我们的授权服务器,Resource Server是API服务器。
开发者可以先浏览OAuth2.0的接口文档,熟悉OAuth2.0的接口及参数的含义,不同应用场景各自如何使用OAuth2.0请阅读OAuth授权接口。
第三方开发者可以使用AppID和AppSecret调用本接口来获取access_token,相关信息由雅座技术在接口对接时提供。
access_token是雅座OpenAPI的全局唯一票据,第三方开发者调用各接口时都需使用access_token。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。
此方式推荐传统收银公司使用,在收银员签到时实现用户登录功能,登录成功后保存对应信息用于后续接口操作
请求参数
参数说明
返回值说明
此方式推荐第三方WEB应用使用,建议提前联系雅座技术对接门店关系导入及配置回调地址
如雅座授权通过后会导向客户端事先指定的"重定向URI"(redirection URI),同时附上一个授权码等参数信息,具体参数如下:
请求参数说明
参数请求示例
{ "access_token": "${access_token}", "ciphertext": { "categoryId": "100000000001", "categoryName": "凉菜", "parentId": "0", "categorySort": "100", "thirdpartyMerchantNo": "MD000001", "status": 1 } }
返回结果示例
{ "message": "添加成功", "code": 0 }
{ "access_token": "${access_token}", "ciphertext": { "brandId": "${brand_id}" } }
{ "message": "查询成功", "code": 0, "data": { "total": "10", "categories": [ { "id": "1", "catetoryId": "1", "catetoryName": "凉菜", "catetoryCode": "A01", "parentId": "0", "categorySort": 100 }, ... ] } }
data属性说明
{ "access_token": "${access_token}", "ciphertext": { "dishCode": "A00008", "dishName": "宫保鸡丁", "dishMainCode": "A00008", "sellPrice": "22", "vipPrice": "20", "theoMargin": "5", "theoCost": "15", "dishPic": "http://z.url/j.jpg", "description": "家常菜", "typeId": "11", "typeName": "家常菜", "unit": "盘", "thirdpartyStoreNo": "MD000001", "isCombo": "false", "isNew": "false", "isRecommend": "false", "recommendLevel": "1", "sort": "1", "heat": "100卡", "ingredients": "猪肉、胡萝卜", "spicy": "微辣", "flavor": "鱼香味", "cuisine": "川菜", "dishList": null, "dishTagList": [ { "tagId": 1, "tagName": "微辣", "tagTypeId": "spicy" }, { "tagId": 2, "tagName": "川菜", "tagTypeId": "cuisine" } ], "status": 1 } }
{ "message": "查询成功", "code": 0 }
{ "access_token": "${access_token}", "ciphertext": { "dishesList": [ { "dishCode": "A00008", "dishName": "宫保鸡丁", "dishMainCode": "A00008", "sellPrice": "22", "vipPrice": "20", "theoMargin": "5", "theoCost": "15", "dishPic": "http://z.url/j.jpg", "description": "家常菜", "typeId": "11", "typeName": "家常菜", "unit": "盘", "thirdpartyStoreNo": "MD000001", "isCombo": "false", "isNew": "false", "isRecommend": "false", "recommendLevel": "1", "sort": "1", "heat": "100卡", "ingredients": "猪肉、胡萝卜", "spicy": "微辣", "flavor": "鱼香味", "cuisine": "川菜", "dishList": null, "dishTagList": [ { "tagId": 1, "tagName": "微辣", "tagTypeId": "spicy" }, { "tagId": 2, "tagName": "川菜", "tagTypeId": "cuisine" } ], "status": 1 } ] } }
{ "access_token": "${access_token}", "ciphertext": { "thirdPartyMerchantNo": "MD000000001" } }
{ "code": 0, "message": "获取商户成功", "data": { "rules": { "isExchangeIntegral": "true", "integralRate": 1 }, "list": [ { "merchantId": 16456, "merchantName": "雅座在线测试商户992", "brand": "雅座在线", "merchantNo": "222222222222222", "status": 1, "brandId": 15, "type": 3, "parent": 15, "thirdpartyMerchantNo": "1111111" } ], "pageSize": 2, "currentPage": 1, "total": 10 } }
data(嵌套)属性
Rules(嵌套)属性
Merchant(嵌套)属性
{ "message": "查询卡类型成功", "data": { "list": [ { "id": 1397, "merchantId": 15, "cardtype": "测试卡", "description": "测试卡", "status": 1, "price": 0, "isTradePassword": true, "isSimplePassword": true } ], "total": 1 }, "code": 0 }
Cardtype对象属性说明
{ "access_token": "${access_token}", "ciphertext": { "merchantId": "${merchantId}", "transCode": "3", "brandId": "${brandId}" } }
{ "code": 0, "message": "获取门店奖励规则成功", "data": { "pageSize": 2, "currentPage": 1, "total": 2, "list": [ { "id": 180004528, "lowerLimit": 3.3, "upperLimit": 4.3, "awardAmount": 4, "transCode": "2002", "couponTypeId": null, "cardtypeId": null, "awardType": 1, "awardAmountType": 1, "birthdayDoubleFlag": 0, "birthmonthDoubleFlag": 0, "birthweekDoubleFlag": 0, "payWay": null, "membershipLevel": null, "firstDoubleFlag": null, "membershipType": null, "benefitsId": null, "crowdId": null, "userWeekList": [ 3, 4, 6, 7 ] } ] } }
AwardRule对象描述
mutexRuleExtends属性
couponConsumeOpenDTO属性
couponConsumeOpen属性
couponConsumeOpenChilds属性
{ "access_token": "${access_token}", "ciphertext": { "brandId": "${brandId}", "merchantId": "${merchantId}", "merchantNo": "666660000277610" } }
{ "code": 0, "message": "获取积分限制 规则成功", "data": { "integralAsCash": true, "integralExchangeRate": 1, "integralPercentLimit": 6, "integralUpperLimit"": 5, "integralDivisible": false, "storeLimitValueRate": null, "aloneUseCoupon": true, "couponMaxUse": null, "integralAndCouponUsed": false } }
limitRules属性
返回参数说明
data(嵌套)属性【MemberExtend】
membership属性
{ "access_token": "${access_token}", "ciphertext": { "brandId": "${brand_id}", "thirtyType": 1, "thirtyMemberId": "23012340001", "membership": { "gender": 0, "birthType": 1, "name": "modify", "mobile": "23012340001", "birthday": null, "merchantId": 14068, "email": null, "joinDate": "2016-10-18 00:00:00", "status": 1, "description": null, "address": null, "idNumber": null, "postcode": null, "phone": null, "typeId": null, "brandId": "${brand_id}", "constellation": null, "microMessageId": null, "unionId":null } } }
{ "message": "查询会员成功", "data": { "list": [ { "id": 9021317, "gender": 1, "birthType": 1, "name": "张三", "mobile": "13412345678", "birthday": "1987-11-07", "merchantId": 21, "email": null, "joinDate": "2013-08-31", "status": 1, "description": null, "address": null, "idNumber": null, "postcode": null, "phone": null, "typeId": null, "constellation": null, "brandId": 15 } ], "total": 2 }, "code": 0 }
{ "access_token": "${access_token}", "ciphertext": { "membershipId": 30110501, "gender": 0, "birthType": 1, "name": "modify", "mobile": "23012340001", "birthday": null, "merchantId": 14068, "email": null, "joinDate": "2016-10-18 00:00:00", "status": 1, "description": "测试", "address": null, "idNumber": null, "postcode": null, "phone": null, "typeId": null, "brandId": "${brand_id}", "constellation": null, "unionId":null } }
{ "message": "修改会员成功", "data": { "membership": { "id": 9021317, "gender": 1, "birthType": 1, "name": "闰丰", "mobile": "23766924372", "birthday": "1987-11-07", "merchantId": 21, "email": null, "joinDate": "2013-08-31", "status": 1, "description": null, "address": null, "idNumber": null, "postcode": null, "phone": null, "typeId": null, "brandId": 15 } }, "code": 0 }
{ "access_token": "${access_token}", "ciphertext": { "brandId": "${brand_id}", "membershipId": 30110501 } }
{ "message": "查询卡成功", "data": { "list": [ { "cardNo": "6201300193506808", "merchantNo": "666660000000021", "activeDate": 1397145600000, "expiredDate": null, "storeBalance": 0, "integralBalance": 0, "integralAvailable": 0, "merchantId": 15, "cardtypeId": null, "membershipId": 11671221, "brandId": 15 } ], "total": 1 }, "code": 0 }
{ "access_token": "${access_token}", "ciphertext": { "queryMobile": "18451391523", "brandId": "${brand_id}" } }
{ "code": 0, "message": "查询会员卡成功", "data": { "list": [ { "cardNo": "6201200562281268", "merchantNo": "555555555555555", "activeDate": "2017-12-21", "expiredDate": null, "storeBalance": 0, "integralBalance": 900, "integralAvailable": 900, "merchantId": 243, "cardtypeId": 180000008, "membershipId": 215272493, "brandId": 243 } ], "pageSize": 1, "currentPage": 1, "total": 1 } }
Card对象描述
Coupon对象说明
usageRules对象属性说明
当前可使用的规则类型
goodsList象属性说明
applyMerchants对象属性说明
activeCouponTemplates属性
customizeCouponTemplates属性
tags数组元素属性
{ "access_token": "${access_token}", "ciphertext": { "brandId": "${brand_id}", "cardNo": "6201310258262628", "merchantId": "${merchant_id}" } }
{ "message": "SUCCESS", "code": 0 }
{ "access_token": "${access_token}", "ciphertext": { "brandId": "${brand_id}", "cardNo": "6201310258262628", "merchantId": "${merchant_id}", "password": "123456" } }
{ "access_token": "${access_token}", "ciphertext": { "brandId": "${brand_id}", "merchantId": "${merchant_id}", "cardNo": "6201305668069628", "password": "120911", "identifycode": "214983", "mobile": "18621564640" } }
data(嵌套)属性
Membership对象属性
返回参数
evaluateParameters属性说明
{ "code": 0, "message": "查询成功", "data": [{ "id": 180001480, "mobile": "15311428231", "uid": 0, "merchantId": 180276011, "evaluateDatetime": "2019-11-13", "transWaterId": 426102275, "content": "测试评价内容", "source": 3, "type": 1, "score": 3, "brandId": 180276008, "impress": "口味偏淡 菜品不新鲜 装修有格调 服务态度差 服务热情周到", "tasteMark": 5, "environmentMark": 4, "serviceMark": 3, "couponId": null, "weiboEvaluateId": null, "isShareWeibo": false, "activeId": null, "fourMark": 3, "fiveMark": 3, "isDeal": 0, "isReply": 0, "remark": null, "emotionNegative": null, "emotionPositive": null, "evaluateParameters": [ { "satisfaction": "一般", "score": 3, "tagChildText": null, "tagName": "总评分", }, { "satisfaction": "很满意", "score": 5, "tagChildText": "口味偏淡 菜品不新鲜", "tagName": "口味", }, { "satisfaction": "比较满意", "score": 4, "tagChildText": "装修有格调", "tagName": "环境", }, { "satisfaction": "一般", "score": 3, "tagChildText": "服务态度差 服务热情周到", "tagName": "服务", } ] }] }
weixinMemberCard属性说明
aliMemberCard属性说明
{ "code": 0, "message": "查询成功", "data": { "weixinMemberCard":{ "hasCard":true, "code":"" }, "aliMemberCard"{ "hasCard":true, "passId":"" } } }
{ "code": 0, "message": "请求成功", "data": [ "xxddgcv47Xhhnrq0_02-sgENxiI", "oyiiqv17XLTnrq0_06-RgENxiIOo" ] }
genderProportion属性说明
membershipStatistics属性说明
merchantStoredRechargeTop属性说明
membershipAgeDistribution属性说明
{ "code": 0, "message": "请求成功", "data": { "genderProportion": { "otherNumber": 112210, "manNumber": 2277, "otherRate": 48.07, "womanRate": 50.95, "manRate": 0.98, "womanNumber": 118932 }, "membershipStatistics": { "totalMembershipNumber": 234096, "dailyStoredRechargeReward": 0.00, "dailyStoredRechargePrincipal": 2000.00, "monthlyNewMembershipNumber": 205, "monthlyStoredRechargeReward": 17076.20, "monthlyStoredRechargePrincipal": 399011.29, "dailyNewMembershipNumber": 0 }, "merchantStoredRechargeTop": [ { "merchantId": 180276068, "storedRechargePrincipal": 314744.78, "storedRechargeReward": 12763.19, "merchantName": "五芳斋测试门店1" }, { "merchantId": 180276067, "storedRechargePrincipal": 68491.51, "storedRechargeReward": 4113.01, "merchantName": "五芳斋测试" } ], "membershipAgeDistribution": [ { "membershipNumber": 1231231, "membershipRate": 50.48, "name": "14~18岁" }, { "membershipNumber": 21312, "membershipRate": 0.87, "name": "19~25岁" }, { "membershipNumber": 123124, "membershipRate": 5.05, "name": "26~35岁" }, { "membershipNumber": 54321, "membershipRate": 2.23, "name": "36~45岁" }, { "membershipNumber": 654324, "membershipRate": 26.83, "name": "46~60岁" }, { "membershipNumber": 123432, "membershipRate": 5.06, "name": "61~80岁" }, { "membershipNumber": 231397, "membershipRate": 9.48, "name": "其他" } ] } }
{ "access_token": "${access_token}", "ciphertext": { "brandId": "${brand_id}", "cardNo": "6201310258262628", "merchantNo": "${merchant_no}", "cashierSerial": "20161230103122", "terminalNo": "1111111", "cardtypeId": "143", "integralValue": 10, "password": "890764", "mobile": "13611337674", "idNumber": "440301197907160325" } }
{ "message": "SUCCESS", "data": { "card": { "cardNo": "6201300193506808", "merchantNo": "666660000000021", "activeDate": 1397145600000, "expiredDate": null, "storeBalance": 0, "integralBalance": 0, "integralAvailable": 0, "merchantId": 15, "cardtypeId": null, "membershipId": 11671221, "brandId": 15 }, "voucher": "1234356" }, "code": 0 }
{ "access_token": "${access_token}", "ciphertext": { "brandId": "${brand_id}", "cardNo": "6201200562333628", "merchantNo": "666660000277706", "cashierSerial": "20161230103122", "terminalNo": "1111111", "cardtypeId": "120775", "storeValue": 80, "password": "000000" } }
{ "code": 0, "message": "请求成功" "data": { "card": { "cardNo": "6201200562333628", "cardtype": null, "merchantNo": "666660000277706", "activeDate": "2020-02-11", "expiredDate": null, "storeBalance":0, "integralBalance": 0, "integralAvailable": 0, "merchantId": 180276067, "cardtypeId": 120775, "membershipId": 215454690, "brandId": 180276067, "storeAvailable": null }, "voucher": 359684 } }
{ "access_token": "${access_token}", "ciphertext": { "brandId": "${brand_id}", "oldCardNo": "6201200562333628", "merchantNo": "666660000277706", "newCardNo": "6201200562333648", "terminalNo": "1111111" } }
{ "code": 0, "message": "请求成功" "data": { "fromCardNo": "6201200562333638", "toCardNo": "6201200562333648 ", "merchantId": 180276072, "amount": null, "voucherNo": 118125, "terminalNo": "1111111 ", "batchNo": 396436, "remark": null, "transferType": null, "merchantNo": 120775 } }
cardList对象属性说明
{ "access_token": "${access_token}", "ciphertext": { "brandId": "${brand_id}", "merchantNo": "666660000277706", "cashierSerial": "20161230103129", "terminalNo": "1111111", "cardList":[ { "cardNo": "6201500000193538", "cardtypeId": "120796", "storeValue": "80", "password": "000000" },{ "cardNo": "6201500000192758", "cardtypeId": "120796", "storeValue": "80", "password": "000000" }] } }
成功 { "code": 0, "message": "请求成功" } 失败 { "code": -1, "message": "请求失败" "data":[ { "cardNo": "6201500000193878", "message": "卡已激活 " },{ "cardNo": "6201500000193888", "message": "卡已激活 " } ] }
payways 数组属性
{ "access_token": "${access_token}", "ciphertext": { "brandId": "${brand_id}", "cardNo": "6201310258262628", "merchantNo": "${merchant_no}", "cashierSerial": "20161230103122", "terminalNo": "11111111", "storeNumber": 100, "payWays": [ { "id": "1", "value": 100 } ] } }
{ "code": 0, "message": "请求成功", "data": { "status": "0", "detail": "成功" } }
{ "message": "SUCCESS", "data": { "voucher": 899094, "totalStore": 110, "details": { "transTime": "11:00:00", "cardNo": "6201200537637618", "storeBalance": "110", "integralBalance": "0", "storeBonus": "10", "integralBonus": "10", "couponBonus": [ { "id": "9821311", "couponName": "代金券", "amount": "10.00", "startDate": "2016-09-01", "endDate": "2016-09-30" } ] } }, "code": 0 }
detail对象属性说明
couponBonus对象属性说明
payWays对象属性说明
mixPayList>MixPay对象属性说明
{ "access_token": "${access_token}", "ciphertext": { "brandId": "${brand_id}", "cardNo": "6201310258262628", "merchantNo": "${merchant_no}", "cashierSerial": "20161230103121", "voucherNumber": "${voucherNumber}" } }
{ "access_token": "${access_token}", "ciphertext": { "brandId": "${brand_id}", "cardNo": "6201310258262628", "merchantNo": "${merchant_no}", "cashierSerial": "20161230103122", "integralValue": 10, "password": "890764", "remark": "测试积分兑换", "mobile": "13611337674" } }
issuedCoupon属性
{ "access_token": "${access_token}", "ciphertext": { "productType" : 5, "brandId" : 180000247, "membershipId" : 215272017, "pageNum" : 1, "pageSize" : 4 } }
{ "code": 0, "message": "查询商品信息列表成功", "data": { "list": [ { "id": 100180, "goodsName": "最高等级", "status": 2, "introduce": "ASD发送到发达省份多对多", "useRules": null, "nowPriceCash": 0.01, "brandId": 180000247, "productType": 5, "memberLevelId": 260 } ], "pageSize": 4, "currentPage": 1, "total": 1 } }
MallGoodsInfo对象属性说明
{ "access_token": "${access_token}", "ciphertext": { "brandId": 180000247, "membershipId": 215272801, "merchantId": 180000249, "merchantNo": "666660000014184", "mallGoodsId": 100124, "totalAmount": 0.01 } }
{ "code": 0, "message": "SUCCESS" }
{ "access_token": "${access_token}", "ciphertext": { "brandId": 180000247, "mobile": 18888888988, "batchNo": 636448, "openId": "${openId}" } }
{ "code": 0, "message": "发券成功" }
{ "access_token": "${access_token}", "ciphertext": { "brandId": 180000247, "mobile": 18888888988, "batchNo": 636448 } }
{ "code": 0, "message":"发券成功" }
{ "access_token": "${access_token}", "ciphertext": { "brandId": "${brand_id}", "merchantId": ${merchantId}, "moblie": "13276279394" } }
{ "access_token": "${access_token}", "ciphertext": { "brandId": "${brand_id}", "merchantId":" ${merchantId}", "moblie": "13276279394", "identifycode": "40418" } }
mixPayList支付方式明细说明
Transwater对象属性说明
{ "access_token": "${access_token}", "ciphertext": { "brandId": "${brand_id}", "cardNo": "6201310258262628", "merchantNo": "${merchant_no}", "cashierSerial": "20161230103122", "terminalNo": "11111111" } }
{ "message": "查询成功", "data": { "transwater": [ { "id": null, "masterId": 1214674016, "voucherNo": null, "batchNo": null, "transDate": "2014-05-28", "cardNo": null, "cardMerchant": "333333333333333", "transTime": "2014-05-28 14:38:30", "transMerchant": "333333333333333", "transCode": "0001", "amount": 0.00, "balance": 0.00, "available": null, "mobile": null, "couponsId": null, "reversedflag": null, "revocationflag": null, "cashierSerial": null, "terminalNo": null, "operId": null, "oldWaterId": null, "couponConsumeQuantity": null, "financeDate": null, "remark": null, "couponName": null, "cardtypeId": null, "membershipId": null, "expansivity": null, "brandId": null, "merchantName": "雅座上地店", "transName": null } ], "total": 1 }, "code": 0 }
info属性
benefits属性
API内主要业务逻辑
goodsList对象属性说明
billDish对象属性说明
{ "access_token": "${access_token}", "ciphertext": { "brandId": "${brand_id}", "merchant": { "merchantNo":"6201310258262628" } "merchantNo": "6201310258262628", "cardNo": "6201305992560138", "integralExchange": null, "useStore": false, "posActive": false, "billAmount": 45.8, "dishFirst": null, "billState": 0, "couponLimit": -1, "billDish": [{ "dishNo": "13425", "dishType": 1, "dishName": "千张牛肉粉丝汤+雄霸有料粽(热/剥)", "dishPrice": 22.9, "dishCount": 2, "memberShipPrice": null, "isSendIntegral": true }] } }
couponUse对象属性说明
{ "message": "查询卡成功", "data": { "card": { "cardNo": "6201300193506808", "merchantNo": "666660000000021", "activeDate": 1397145600000, "expiredDate": null, "storeBalance": 0, "integralBalance": 0, "integralAvailable": 0, "merchantId": 15, "cardtypeId": null, "membershipId": 11671221, "brandId": 15 }, "coupon":{ "id": 118284632, "name": "20元代金券", "amount": 20, "batchNo": 793141, "cardNo": "6201301116950968", "startDate": "2016-10-18", "expiredDate": "2016-10-31", "beginTime": "1970-01-01", "endTime": "1970-01-01", "source": "sop", "merchantId": 243, "scope": 2, "status": 1, "sendTime": "2016-10-18", "sendQuantity": 1, "availableQuantity": 1, "couponCategoryId": 1, "startWeek": 1, "endWeek": 7, "membershipId": 27370591, "brandId": 243, "couponBeginUse": true, "couponExpired": false, "useTime": true, "isAloneUse": false, "usageRules": [ { "ruleType": "baseRuleAmount", "operator": "GT", "values": "100" }, { "ruleType": "couponExclusive", "operator": "IN", "values": "793128,793140" } ] } } }
{ "access_token": "${access_token}", "ciphertext": { "brandId": "${brand_id}", "cardNo": "6201310258262628", "merchantNo": "${merchant_no}", "cashierSerial": "20161230103122", "terminalNo": "11111111", "storeNumber": 100, "payWays":[{ "id":"1", "value":100 }] } }
{ "message": "SUCCESS", "data": { "voucher":899094, "totalStore":110, "details": { "transTime": "11:00:00", "cardNo": "6201200537637618", "storeBalance": "110", "integralBalance": "0", "storeBonus": "10", "integralBonus": "10", "couponBonus":[{ "id": "9821311", "couponName": "代金券", "amount": "10.00", "startDate": "2016-09-01", "endDate": "2016-09-30" }] } }, "code":0 }
{ "access_token": "${access_token}", "ciphertext": { "brandId": "${brand_id}", "merchantId": "${merchant_id}", "orderId": "${order_id}" } }
{ "access_token": "${access_token}", "ciphertext": { "brandId": "${brand_id}", "cardNo": "6201200562333628" } }
{ "code": 0, "message": "请求成功" "data": { "password": null } }
mixPayList属性说明
dishList(嵌套)属性
payways(嵌套)属性
discount(嵌套)属性
{ "access_token": "${access_token}", "ciphertext": { "orderId": "201612010000000000001", "orderTime": "2016-10-19 20:10:58", "totalPrice": 369.12, "receivePrice": "369.00", "discountPrice": "36.36", "mobile": "18310104695", "openId": "oCd87w1UjSD4Ieqw6p63PJ11eEi8", "tableNo": 1, "people": 5, "payWays": [ { "payPrice": 48, "payWay": 2 } ], "discount": [ { "name": "全单折扣", "price": 10 } ], "dishList": [ { "dishCode": "CES000001", "dishName": "麻辣鱼块", "price": 15, "num": 2 } ], "thirdMerchantNo": "MD000000001", "status": "1", "description": "", "membershipId": "" } }
{ "access_token": "${access_token}", "ciphertext": { "merchantId": "0000", "date": "20171226" } }
{ "code": 0, "message": "获取数据成功", "data": { "list": [ { "dtfinish": "2017-12-26", "orderno": ""YZ_AWP_5_2017122611355346059702"", "dtcreate": "2017-12-26", "producttype": 5, "mcid": "0000", "employeeno": 93, "totalamount": 9 } ] } }
{ "access_token": "${access_token}", "ciphertext": { "brandId": "180276161", "merchantId":"180276180", "couponTemplateId":57652 } }
{ "code": 0, "message": "请求成功", "data": "WCPMC005765220210203133504665739" }
{ "access_token": "${access_token}", "ciphertext": { "brandId": "180276161", "yazuoBatchNos":[180276180,180276181] } }
{ "code": 0, "message": "雅座券批次号查询商家券的微信批次号成功", "data": {"wechatBatchNos":[{"yazuoBatchNo":180276180,"wechatBatchNo":180276161},...]} }
{ "access_token": "${access_token}", "ciphertext": { "brandId": "180276161", "merchantId":"180276180", "officialAccountAppId":"XXXX" } }
{ "code": 0, "message": "请求成功", "data": "XXXXX" }
雅座OpenAPI
0 开放平台介绍
雅座开放平台(简称OpenAPI)是基于OAuth2.0的认证授权开放体系,针对用户需求,为用户提供的数据分享对接平台。以此,用户可以通过开放平台建立与第三方系统的快速集成,如收银对接、预定等位、POS或自助点餐、自建网站等。
基本职能
雅座开放平台是“会员数据共享”理念实践的重要基础设施,由理念成为现实的资源整合与运营管理后台,承载着对接并服务于第三方服务厂商、用户信息平台、数据资源整合者等的基本职能。推动会员数据在餐饮行业发挥更大价值,为企业用户创造完整的数据链路。在经用户授权通过的前提下,对外共享CRM核心价值数据,包括会员信息、卡信息、积分、储值、优惠券、交易流水;整合第三方点餐订单、菜品数据,为用户提供全面的数据分析增值服务。
价值与意义
客户通过雅座开放平台,可以整合原有预定系统、排队系统、收银系统、外卖平台、网上商城等,扩大会员来源渠道,纳入雅座CRM管理体系,为会员提供预订、等位、点餐、结账、积分兑换全方位的精细化运营服务,精准分析顾客消费行为、喜好及门店经营状况,提高顾客综合满意度,为餐饮品牌客户提高核心竞争力。
技术原理
雅座开放平台完全基于OAuth2.0开放授权协议,提供第三方登录页面(类似QQ、微信的第三方登录)和登录接口,用户登陆后获取Token调用业务接口进行数据交换。所有接口均采用HTTPS网络通讯协议,为用户提供基于身份认证的、更为安全的网络数据传输。
1 快速开始
1.1 接口中的请求参数说明
HTTP/POST,所有数据整体打包成 JSON 格式传输,且字符编码为 UTF-8 (暂不考虑加密,如需后续可扩展) ,数据结构如下,ciphertext 字段为数据字段,其他字段为协议字段
注:下一节 OAuth授权接口使用POST application/x-www-form-urlencoded提交数据
1.2 返回参数格式说明
调用方需判断http的响应码:
POST请求或GET请求
当http响应200时,接口返回的数据格式如下
注: 更多错误码参看附录 错误码列表
1.3 授权机制
雅座开放接口的调用,都是需要获取用户身份认证的。目前开放平台用户身份鉴权主要采用的是OAuth2.0。
OAuth2.0概述
关于OAuth2.0协议的授权流程可以参考下面的流程图,其中Client指第三方应用,Resource Owner指用户,Authorization Server是我们的授权服务器,Resource Server是API服务器。
开发者可以先浏览OAuth2.0的接口文档,熟悉OAuth2.0的接口及参数的含义,不同应用场景各自如何使用OAuth2.0请阅读OAuth授权接口。
1.4 收银系统对接流程
1.5 智能点餐对接流程
2 OAuth授权接口
第三方开发者可以使用AppID和AppSecret调用本接口来获取access_token,相关信息由雅座技术在接口对接时提供。
access_token是雅座OpenAPI的全局唯一票据,第三方开发者调用各接口时都需使用access_token。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。
2.1 PASSWORD授权模式
此方式推荐传统收银公司使用,在收银员签到时实现用户登录功能,登录成功后保存对应信息用于后续接口操作
2.1.1 根据用户名密码获取token
请求参数
参数说明
返回值说明
2.2 授权码授权模式
此方式推荐第三方WEB应用使用,建议提前联系雅座技术对接门店关系导入及配置回调地址
2.2.1 关联第三方门店并获取授权码
请求参数
参数说明
返回值说明
如雅座授权通过后会导向客户端事先指定的"重定向URI"(redirection URI),同时附上一个授权码等参数信息,具体参数如下:
2.2.2 使用授权码换取访问凭证
请求参数
参数说明
返回值说明
2.3 刷新接口访问凭证
请求参数
请求参数说明
返回值说明
3 菜品管理
3.1 创建菜品分类
请求参数
请求参数说明
参数请求示例
返回结果示例
返回值说明
3.2 查询菜品分类
请求参数
请求参数说明
参数请求示例
返回结果示例
返回值说明
data属性说明
Categorty对象说明
3.3 单条菜品同步
请求参数
请求参数说明
参数请求示例
返回结果示例
返回值说明
3.4 批量菜品同步
请求参数
请求参数说明
参数请求示例
返回结果示例
返回值说明
4 商户管理
4.1 获取雅座商户信息
请求参数
请求参数说明
参数请求示例
返回结果示例
返回值说明
data(嵌套)属性
Rules(嵌套)属性
Merchant(嵌套)属性
4.2 查询商户卡类型
请求参数
请求参数说明
参数请求示例
返回结果示例
返回值说明
data(嵌套)属性
Cardtype对象属性说明
4.3.1 获取门店奖励规则
请求参数
请求参数说明
参数请求示例
返回结果示例
返回值说明
data(嵌套)属性
AwardRule对象描述
4.3.2 获取门店限制规则
请求参数
请求参数说明
返回值说明
data(嵌套)属性
mutexRuleExtends属性
2 为券类型
couponConsumeOpenDTO属性
couponConsumeOpen属性
couponConsumeOpenChilds属性
4.3.3 获取门店储值和券奖励规则接口
请求参数
请求参数说明
返回值说明
data(嵌套)属性
2:本连锁可用
3:部分店可用
4:仅限发卡门店使用
4.3.4 获取积分限制规则
请求参数
请求参数说明
参数请求示例
返回结果示例
返回值说明
limitRules属性
4.4 创建新门店
请求参数
请求参数说明
返回值说明
4.5 获取储值码链接接口
请求参数
请求参数说明
返回参数说明
data(嵌套)属性
5 会员类接口
5.1 会员查询接口
请求参数
请求参数说明
返回值说明
data(嵌套)属性【MemberExtend】
5.2 创建会员
请求参数
请求参数说明
membership属性
参数请求示例
返回结果示例
返回值说明
data(嵌套)属性
5.3 更新会员
请求参数
请求参数说明
参数请求示例
返回结果示例
返回值说明
data(嵌套)属性
5.4.1 会员ID查询会员卡列表
请求参数
请求参数说明
参数请求示例
返回结果示例
返回值说明
data(嵌套)属性
Card对象描述
5.4.2 手机号查询会员卡列表
请求参数
请求参数说明
参数请求示例
返回结果示例
返回值说明
data(嵌套)属性
Card对象描述
5.5.1 查询会员券列表【支持卡号或券码查询】
请求参数
场景二:POS侧查询当前门店该卡的可用券
场景三:扫券码查询券详情
请求参数说明
999 全部渠道可用券
1000 堂食(参数不传默认为堂食)
1031 外卖
1066 有赞商城
返回值说明
data(嵌套)属性
Coupon对象说明
usageRules对象属性说明
当前可使用的规则类型
goodsList象属性说明
applyMerchants对象属性说明
5.5.2 查询正在进⾏营销活动的券和⾃定义券
请求参数
请求参数说明
返回值说明
data(嵌套)属性
activeCouponTemplates属性
customizeCouponTemplates属性
tags数组元素属性
5.6.1 重置卡交易密码
请求参数
请求参数说明
参数请求示例
返回结果示例
返回值说明
5.6.2 校验卡交易密码
请求参数
请求参数说明
参数请求示例
返回结果示例
返回值说明
5.6.3 会员密码修改【根据原密码修改】
请求参数
请求参数说明
返回值说明
5.6.4 会员密码修改【根据验证码修改】
请求参数
请求参数说明
参数请求示例
返回值说明
5.7 外卡导入接口
请求参数
请求参数说明
返回值说明
data(嵌套)属性
Membership对象属性
5.8 更换会员默认卡
请求参数
请求参数说明
返回参数
5.9 获取会员最新评价信息
请求参数
请求参数说明
返回值说明
data(嵌套)属性
evaluateParameters属性说明
返回结果示例
5.10 开放平台提供check微信卡&支付宝卡状态接口
请求参数
请求参数说明
返回值说明
data(嵌套)属性
weixinMemberCard属性说明
aliMemberCard属性说明
返回结果示例
5.11 根据wid查询openId(雅座收银专用)
请求参数
请求参数说明
返回值说明
返回结果示例
5.12 会员统计数据查询接口
请求参数
请求参数说明
返回值说明
data(嵌套)属性
genderProportion属性说明
membershipStatistics属性说明
merchantStoredRechargeTop属性说明
membershipAgeDistribution属性说明
返回结果示例
6 交易类接口
6.1.1 会员卡激活
请求参数
请求参数说明
参数请求示例
返回结果示例
返回值说明
data(嵌套)属性
6.1.2 礼品卡激活
请求参数
请求参数说明
参数请求示例
返回结果示例
返回值说明
data(嵌套)属性
6.1.3 卡升级激活
请求参数
请求参数说明
参数请求示例
返回结果示例
返回参数说明
data(嵌套)属性
6.1.4 礼品卡批量激活
请求参数
请求参数说明
cardList对象属性说明
参数请求示例
返回结果示例
返回参数说明
6.2 会员卡充值前置校验
请求参数
请求参数说明
payways 数组属性
参数请求示例
返回结果示例
返回值说明
data(嵌套)属性
6.3 会员卡充值
请求参数
请求参数说明
payways 数组属性
参数请求示例
返回结果示例
返回值说明
data(嵌套)属性
detail对象属性说明
6.4 会员卡消费接口
请求参数
请求参数说明
返回值说明
data(嵌套)属性
detail对象属性说明
couponBonus对象属性说明
payWays对象属性说明
mixPayList>MixPay对象属性说明
6.5.1 会员卡撤销
请求参数
请求参数说明
参数请求示例
返回结果示例
返回值说明
6.5.2 会员卡隔笔撤销
请求参数
请求参数说明
参数请求示例
返回结果示例
返回值说明
6.6.1 积分兑换接口
请求参数
请求参数说明
参数请求示例
返回结果示例
返回值说明
data(嵌套)属性
issuedCoupon属性
6.6.2 积分奖励(签到送积分)
请求参数
请求参数说明
返回值说明
data(嵌套)属性
6.6.3 积分购券(第三方商城对接使用,积分+现金购买券/实物)
请求参数
场景二:购买实物,雅座只扣资产&记录相关流水,不负责实物发货等订单操作
请求参数说明
返回值说明
data(嵌套)属性
6.6.4 积分扣减(积分抽奖)
请求参数
请求参数说明
返回值说明
data(嵌套)属性
6.7.1 查询在线商城商品信息列表
请求参数
请求参数说明
参数请求示例
返回结果示例
返回值说明
data(嵌套)属性
MallGoodsInfo对象属性说明
6.7.2 购买在线商城商品
请求参数
请求参数说明
参数请求示例
返回结果示例
返回值说明
6.8.1 注券接口
请求参数
请求参数说明
参数请求示例
返回结果示例
返回值说明
6.8.2 注券接口(无加会员逻辑)
请求参数
请求参数说明
参数请求示例
返回结果示例
返回参数说明
6.9.1 短信验证码发送接口
请求参数
发送验证码未到可再次发送时间:1分钟
当日最大发送次数:10次
验证码有效时间:1小时
验证码位数:6位
请求参数说明
参数请求示例
返回值说明
6.9.2 短信验证码验证接口
请求参数
请求参数说明
参数请求示例
返回值说明
6.10.1 动态卡码生成
请求参数
请求参数说明
返回值说明
data(嵌套)属性
6.10.2 动态券码生成
请求参数
请求参数说明
返回值说明
data(嵌套)属性
6.11.1 收银对接消费接口
请求参数
请求参数说明
mixPayList支付方式明细说明
返回参数说明
data(嵌套)属性
detail对象属性说明
couponBonus对象属性说明
6.11.2 收银撤销对接接口
请求参数
请求参数说明
6.12.1 会员历史交易流水查询
请求参数
请求参数说明
返回值说明
data(嵌套)属性
Transwater对象属性说明
6.12.2 历史交易流水查询
请求参数
请求参数说明
参数请求示例
返回结果示例
返回值说明
data(嵌套)属性
Transwater对象属性说明
6.12.3 查询交易流水菜品信息
请求参数
请求参数说明
返回值说明
data(嵌套)属性
6.13.1 动态卡码/券码/卡号/手机号查询会员卡信息【综合查询】
请求参数
请求参数说明
999 全部渠道可用券
1000 堂食
1031 外卖
1066 有赞商城
返回值说明
data(嵌套)属性
info属性
Membership对象属性
Card对象描述
benefits属性
tags数组元素属性
Coupon对象说明
usageRules对象属性说明
当前可使用的规则类型
goodsList象属性说明
applyMerchants对象属性说明
API内主要业务逻辑
6.13.2 根据动态券码查询会员,默认卡号,券信息
请求参数
请求参数说明
返回值说明
data(嵌套)属性
Membership对象属性
Card对象描述
Coupon对象说明
usageRules对象属性说明
当前可使用的规则类型
goodsList对象属性说明
applyMerchants对象属性说明
6.13.3 预咨询券(储值、积分)接口
请求参数
请求参数说明
billDish对象属性说明
参数请求示例
返回参数说明
data(嵌套)属性
detail对象属性说明
couponUse对象属性说明
billDish对象属性说明
6.14 左庭右院单卡单券接口
请求参数
请求参数说明
参数请求示例
返回结果示例
返回值说明
data(嵌套)属性
Card对象描述
Coupon对象说明
usageRules对象属性说明
当前可使用的规则类型
6.15 储值霸王餐
请求参数
请求参数说明
payways 数组属性
参数请求示例
返回结果示例
返回值说明
data(嵌套)属性
detail对象属性说明
6.16 授权码获取接口
请求参数
请求参数说明
参数请求示例
返回值说明
1 失败
2 已验证过
6.17 会员卡安全码验证
请求参数
请求参数说明
参数请求示例
返回结果示例
返回参数说明
data(嵌套)属性
6.18 获取会员订单信息接口
请求参数
请求参数说明
返回参数说明
data(嵌套)属性
6.19 第三方收银同步支付接口
请求参数
请求参数说明
返回参数说明
data(嵌套)属性
6.20 已结账单的支付方式变更
请求参数
请求参数说明
mixPayList属性说明
返回参数说明
6.21 消费明细同步
请求参数
请求参数说明
dishList(嵌套)属性
payways(嵌套)属性
discount(嵌套)属性
参数请求示例
返回结果示例
返回值说明
6.22 开放平台日结接口
请求参数
请求参数说明
返回参数说明
6.23 新辣道储值提成接口
请求参数
请求参数说明
参数请求示例
返回结果示例
返回值说明
data(嵌套)属性
6.24 新扫码领券接口
请求参数
请求参数说明
返回值说明
6.25 生成微信商家券券编码
请求参数
请求参数说明
参数请求示例
返回结果示例
返回值说明
6.26 根据雅座券批次号查询商家券的微信批次号
请求参数
请求参数说明
参数请求示例
返回结果示例
返回值说明
7 附录
7 其他
7.1 查询jsapi_ticket
请求参数
请求参数说明
参数请求示例
返回结果示例
返回值说明
8 附录
错误码列表
支付方式列表
证件类型列表
优惠券类型列表
订单来源渠道定义
券投放途径定义
8 API更新日志