该文档详细描述了品牌方开发者接入品牌会员中心所需的接口开发规范。请以该文档内容为准。主要包括会员激活、绑定、查询、解绑、注册、积分变更、成长值变更等功能。
点击开放平台【控制台】相关应用的【应用管理】>【API服务提供】,选择【品牌会员基础包】进入开发,如下图所示
进入开发填写相关相关环境,开发者填写测试url(激活接口需单独部署详见接口说明),系统实现接收处理。
①②③④均为SPI接口,开发者根据接口实现返回json数据即可
① qimen.alibaba.member.activate(会员激活)该接口为全新奇门接口,只有在商家从官方版/定制版切换到会员通时,存量会员从店铺会员点击升级为品牌会员时才会用到,详细字段可点击文档,奇门接入可点击文档进行查看
② tmall.mei.crm.member.bind.query(绑定查询)
③ tmall.mei.crm.bind(绑定)
④ tmall.mei.crm.member.register(注册)
图片过大,请右键下载图片查看
注意:对接会员通后所有的积分规则与逻辑判断都将由商家对接的系统完成(包括订单换算),客户运营平台将下线积分规则设置页,平台只提供运营能力不再处理积分逻辑,请自行判断是否有能力对接;完成积分变更对接后才可在客户运营平台创建权益。
如果是java开发,消息用SDK长连接可获取(consume和confirm接口可不做),如果是php需要开发者主动调用接口获取,点击查看消息服务使用介绍,积分变更需进应用管理订阅消息:tmall_mei_PointChange
1接口名称:tmall.mei.crm.member.sync.privy,线下积分变动通知到阿里,保证线上线下积分一致。
2接口名称:taobao.tmc.messages.consume 消费消息,消息消费后,指针自动后移,下次调用自动获取到未消费过的消息,但是消费确认后的消息无法再次获取。
3接口名称:tmall.mei.crm.callback.point.change,告知阿里服务商系统处理是否成功的结果,一定要确认回调,否则积分变更流程会未完结,进行积分兑券/兑礼的积分会一直处于冻结中,无法正常使用。注:积分兑礼的礼品签收不代表积分变更流程的完结。
4接口名称:taobao.tmc.messages.confirm 确认消息,获取消息后,如果不确认,消息服务会选择时机重发,重发次数由消息服务控制,如果消息3天内都没有被确认将会被删除。
注意:平台侧会对入参进行校验,以保证商家在平台全部等级被更新为同一种等级模式。不允许出现部分等级使用成长值模式,部分使用行为模式。
1接口名称:alibaba.member.merchant.level.setting.sync( 需联系小二额外授权接口权限),更改为成长值模式并同步每个等级对应所需的成长值
2接口名称:tmall.mei.crm.member.sync.privy(该接口和积分同步一致),成长值变动同步以保证平台和商家系统所展示的成长值一致
3接口名称:alibaba.member.point.change.sync( 需联系小二额外授权接口权限),对消费者展示具体成长值变动明细
SPI名称qimen.alibaba.member.activate
场景说明 切换为会员通后,历史店铺会员可升级激活为会员通品牌会员。该接口为奇门SPI接口,接入与部署url需选择全域会员通场景,第二页找到会员激活进行部署(注:此接口需联系小二单独授权)
请求查询参数
名称 |
类型 |
描述 |
mix_mobile |
会员手机号 |
密文手机号码 |
open_user_id | 字符串 |
appkey维度开放id |
user_site |
字符串 |
用户站点,淘宝 taobao,支付宝 alipay,饿了么 eleme |
seller_id |
字符串 |
卖家id |
level_num |
数字 |
消费者历史等级编号(isv等级编码) |
consume_point |
数字 |
消费者历史积分 |
请求示例:
{"consume_point":"11","level_num":"1","outer_membership_id":"1111112323","mix_mobile":"79470e382ca75f219d2616b6c646abf1","open_merchant_id":"cea7cbec654c1671dfd538df7ac93555","seller_id":"1122344555","site_users":[{"ouid":"AAGeAfjQAAA4z2BAAdysO9Ha","user_site":"taobao","open_user_id":"AAEDyS0AABtLRofwvlLAxDHn","omid":"AAH5AeCUAACgiqUAARmQh89y"}]}
请求返回结果(所有字段均为必选)
名称 |
类型 |
描述 |
是否必填 |
return_code |
字符串 |
必填,激活成功回E600 |
是 |
return_message |
字符串 |
返回信息,成功返回success |
是 |
success_site_users —user_site |
复杂类型 |
user_site用户站点通常返回taobao open_user_id与入参open_id一致 |
是 |
success |
布尔值 |
是否成功,成功返回ture |
是 |
member |
复杂类型 |
可根据需求返回对应可json解析的信息 |
是 |
member必填信息:
名称 |
类型 |
描述 |
是否必填 |
level_num |
数字 |
最新等级 |
是 |
consume_point |
数字 |
最新积分 |
是 |
返回值示例:
{"return_code":"E600","return_message":"success","success":true,"member":"{\"consume_point\":\"222\",\"level_num\":3,\"level_point\":\"0\",\"mix_mobile\":\"b25d43723d1bf3203d67278646f43318\",\"open_merchant_id\":\"cea7cbec254c1671dfd518df7ac93555\"}","success_site_users":[{"user_site":"taobao","open_user_id":"AAEDyS0AABtLFofwvlLBxDHn"}]}
SPI名称 tmall.mei.crm.member.bind.query
场景说明 当用户在页面发起绑定操作时,会触发该请求。
请求查询参数
名称 |
类型 |
描述 |
seller_name |
字符串 |
卖家昵称 |
mix_mobile |
字符串 |
密文手机号码 |
ouid |
字符串 |
淘宝买家在当前店铺的唯一标识 |
omid |
字符串 |
淘宝买家在当前品牌/企业的唯一标识,需做品牌认领 |
extend |
字符串 |
extend{"alipay_user_id":"2088702372175543", |
body示例(不同权限会透出不同的组合参数,其他接口body示例类同,这里仅是其中一种):
例: { "seller_name": "天猫精灵", " mix_mobile ": "79470e382ca75f219d2616b6c646abf1", "ouid" :AAGeAfjQAAA4z2BAAdysO9Ha, "omid" :AAH5AeCUAACgiqUAARmQh89y, "extend":"{"alipay_user_id":"2088702372175543" }" }
请求返回结果(所有字段均为必选)
名称 |
类型 |
描述 |
是否必填 |
bindable |
布尔值 |
是否能绑定。如果返回true,则需要品牌方将明文的mobile返回。 |
是 |
bind_code |
字符串 |
必填 以下为不能绑定的代码,如果可绑定返回SUC(需返回明文手机号)。 E01:会员不存在 E02:会员已被绑定 E04:会员不存在,可注册 E05:系统繁忙或异常,可重试 其他原因可传F01,F02等, 系统统一识别为会员不存在 |
是 |
member |
复杂类型 |
会员信息见下表 |
是 |
member信息:
名称 |
类型 |
描述 |
是否必填 |
point |
数字 |
积分数值 |
是 |
ouid |
字符串 |
淘宝买家在当前店铺的唯一标识 |
是 |
level |
数字 |
会员等级 |
是 |
extend |
字符串 |
json对象,如果商家有卡号需要同步落支付宝卡包,可以回传 "card_no":"10000";一般建议直接传空值 |
是 |
mix_mobile |
字符串 |
会员密文手机号码 |
是 |
返回值示例(严格按照接口返回类型进行返回,其他接口返回值示例类同):
{"bind_code":"SUC","bindable":true,"member":{"mobile":"15266667777", "ouid" :AAGeAfjQAAA4z2BAAdysO9Ha,"point":"2000","level":"1","extend":"{/"card_no/":/"1000001/"}"}}
SPI名称 tmall.mei.crm.bind
场景说明
请求查询参数
名称 |
类型 |
描述 |
seller_name |
字符串 |
卖家昵称 |
type |
字符串 |
操作类型,1-绑定,2-解绑 |
mix_mobile |
字符串 |
密文手机号码 |
ouid |
字符串 |
淘宝买家在当前店铺的唯一标识 |
omid |
字符串 |
淘宝买家在当前品牌/企业的唯一标识,需做品牌认领 |
extend |
Json字符串 |
会员的拓展信息extend:{ "storeId":"140085107","source":"ScanCode","salerId":"123","name":"张三","sex":1,"birthday":"04-01","birthDate":"1991-04-01","babyBirthday":"1999-07-01" ,"province":"北京","city":"北京市","email":"123@taobao.com","employeeNo":"10141383", |
注: 用户拓展信息为姓名、性别、出生月日、邮箱、宝宝出生月日、省份,城市;name:消费者姓名;sex:1(男性)2(女性);babyBirthday:宝宝的生日;birthday:出生月日,birthDate:出生年月日,province:省份,city:城市,(目前扩展字段已不接受新增申请)
请求示例: 手机号权限方式: { "seller_name": "天猫魔盒", "mix_mobile":"b25d43723d1bf3203d67278646f43318", "ouid" :AAGeAfjQAAA4z2BAAdysO9Ha, "omid" :AAH5AeCUAACgiqUAARmQh89y, "type": "1" }
注:解绑时,type字段值为2,接口请求里无extend字段。
请求返回结果(所有字段均为必选)
名称 |
类型 |
描述 |
是否必填 |
member |
复杂类型 |
会员信息,见下表 |
是 |
bind_code |
字符串 |
绑定结果代码: SUC:处理成功 E01:系统异常,可重试,E02:绑定失败,非品牌会员,不可绑定 E03:绑定失败,已被其他用户绑定 E04:绑定失败,该帐号已经绑定 其他原因可传F01,F02等, 系统统一识别为非品牌会员,不可绑定 |
是 |
member信息:
名称 |
类型 |
描述 |
是否必填 |
point |
数字 |
积分数值 |
是 |
level |
数字 |
会员等级 |
是 |
extend |
字符串 |
json对象,如果商家有卡号需要同步落支付宝卡包,可以回传 "card_no":"10000";一般建议直接传空值 |
是 |
ouid |
字符串 |
淘宝买家在当前店铺的唯一标识 |
是 |
mix_mobile |
字符串 |
密文手机号码 |
是 |
返回值示例: {"bind_code":"SUC","member":{"point":"2000","extend":"{/"card_no/":/"1000001/"}","level":"1", "ouid" :AAGeAfjQAAA4z2BAAdysO9Ha,"mix_mobile":"b25d43723d1bf3203d67278646f43318"}}
SPI名称 tmall.mei.crm.member.register
场景说明 当绑定查询返回可注册时,会触发该请求。
请求查询参数
名称 |
类型 |
描述 |
seller_name |
字符串 |
卖家昵称 |
mix_mobile |
字符串 |
密文手机号码 |
ouid |
字符串 |
淘宝买家在当前店铺的唯一标识 |
omid |
字符串 |
淘宝买家在当前品牌/企业的唯一标识,需做店铺认领 |
extend |
字符串 |
会员的拓展信息extend:{ "storeId":"140085107","source":"ScanCode", |
注: 用户拓展信息为姓名、性别、出生月日、邮箱、宝宝出生月日、省份,城市;name:消费者姓名;sex:1(男性)2(女性);babyBirthday:宝宝的生日;birthday:出生月日,birthDate:出生年月日,province:省份,city:城市,(目前扩展字段已不接受新增申请)
请求示例: { "seller_name": "天猫魔盒", "ouid" :AAGeAfjQAAA4z2BAAdysO9Ha, "omid" :AAH5AeCUAACgiqUAARmQh89y, "mix_mobile": "79470e382ca75f219d2616b6c646abf1" }
请求返回结果(所有字段均为必选)
名称 |
类型 |
描述 |
是否必填 |
register_code |
字符串 |
SUC:完成注册 E01:系统异常,可重试 E02:注册失败,非品牌会员,不可注册 E03:注册失败,已被其他用户注册 E04:注册失败,该帐号已经注册 其他原因可传F01,F02等, 系统统一识别为不可绑定 |
是 |
member |
复杂类型 |
会员信息,见下表 |
是 |
member信息:
名称 |
类型 |
描述 |
是否必填 |
point |
数字 |
积分数值 |
是 |
level |
数字 |
会员等级 |
是 |
ouid |
字符串 |
淘宝买家在当前店铺的唯一标识 |
是 |
extend |
字符串 |
json对象,如果商家有卡号需要同步落支付宝卡包,可以回传 "card_no":"10000";一般建议直接传空值 |
否 |
mix_mobile |
字符串 |
密文手机号码 |
是 |
返回值示例: {"register_code":"SUC","member":{"point":"2000","extend":"{/"card_no/":/"1000001/"}","level":"1", "ouid" :AAGeAfjQAAA4z2BAAdysO9Ha,"mix_mobile":"79470e382ca75f219d2616b6c646abf1"}}
SPI名称 tmall.mei.crm.query
场景说明 品牌方务必实现该接口,用于查询会员信息,校验会员中心和品牌方会员信息的一致性。
请求查询参数
名称 |
类型 |
描述 |
seller_name |
字符串 |
卖家昵称 |
ouid |
字符串 |
淘宝买家在当前店铺的唯一标识 |
omid |
字符串 |
淘宝买家在当前品牌/企业的唯一标识,需做店铺认领 |
mix_mobile |
字符串 |
密文手机号码 |
请求示例body: { "seller_name": "天猫魔盒", "ouid" :AAGeAfjQAAA4z2BAAdysO9Ha, "omid" :AAH5AeCUAACgiqUAARmQh89y, "mix_mobile":"79470e382ca75f219d2616b6c646abf1" }
请求返回结果(所有字段均为必选)
名称 |
类型 |
描述 |
是否必填 |
member |
复杂类型 |
会员信息,见下表 |
是 |
query_code |
字符串 |
绑定结果代码: SUC:完成绑定 E01:不存在的会员 E02:会员未绑定 E04:系统异常,查询失败,可重试。 其他原因可传E05,E06等, 系统统一识别为查询失败 |
是 |
member信息:
名称 |
类型 |
描述 |
是否必填 |
point |
数字 |
积分数值 |
是 |
level |
数字 |
会员等级 |
是 |
ouid |
字符串 |
淘宝买家在当前店铺的唯一标识 |
是 |
extend |
字符串 |
json对象,如果商家有卡号需要同步落支付宝卡包,可以回传 "card_no":"10000";一般建议直接传空值 |
是 |
mix_mobile |
会员手机号 |
密文手机号码 |
是 |
返回值示例: {"query_code":"SUC","member":{"point":"2000","extend":"{/"card_no/":/"1000001/"}","level":"1","ouid" :AAGeAfjQAAA4z2BAAdysO9Ha,"mix_mobile":"79470e382ca75f219d2616b6c646abf1"}}
API名称 tmall.mei.crm.member.sync.privy
API调用说明
调用此接口前商家一定要先在客户运营平台设置会员等级,设置链接:https://ecrm.taobao.com/p/member/uniLoyalty.htm?spm=a1za3.8218582
任何时候,可主动使用该接口同步会员信息。
多店铺共用一套积分系统,线下积分变动后,品牌方可以及时调用该接口同步会员信息中最新的积分数据。同时会员中心会主动给消费者发送积分变更消息。
如需采有成长值模式请查看会员等级规则升级文档
输入参数
名称 |
类型 |
描述 |
是否必填 |
mobile |
字符串 |
明文手机号码 |
否 |
ouid |
字符串 |
淘宝买家在当前店铺的唯一标识 |
是 |
point |
字符串 |
积分数值 |
是 |
level |
字符串 |
会员等级 |
是 |
extend |
字符串 |
json对象,会员的拓展信息 |
否 |
version |
字符串 |
版本信息,建议用时间戳(同一用户在该店铺必须保证递增) |
是 |
以下为成长值模式需传参数
level_type |
int |
1·行为等级模式。2·成长值等级模式。 不传默认为行为等级模式 |
否 |
level_point |
String |
总成长值,数字类型,支持整数和小数(小数最多两位小数位)。 当level_type=2时,需要传递。 |
否 |
level_expire_time |
Long |
等级有效期(只做展示透出,到期失效需ISV同步) |
否 |
注:mobile和ouid至少必填一个(建议使用ouid),extend非必填
输出参数
名称 |
类型 |
描述 |
mei_extra_info |
复杂类型 |
会员信息,见下表 |
mei_extra_info信息:
名称 |
类型 |
描述 |
ouid |
字符串 |
淘宝买家在当前店铺的唯一标识 |
返回示例 仅一种返回示例,具体参考API调用说明。 {"is_success":true,"mei_extra_info":"{"{"ouid":"AAGeAfjQAAA4z2BAAdysO9Ha"}"}
错误码
错误码 |
错误描述 |
解决方案 |
isv.invalid-parameter |
参数错误 |
请检查参数后再试 |
isv.no-support-isv |
不受支持的开发者 |
请联系接口开发提供支持 |
isv.no-exsit-member |
找不到的用户信息 |
确认会员信息的正确性 |
isv.invalid-version |
失效的版本 |
更新版本信息再试 |
消息名称 tmall_mei_pointChange
消息说明 会员中心系统发起的积分变更,比如积分兑换礼品、优惠券、支付宝红包、流量钱包,签到送积分等。
消息输出参数
名称 |
类型 |
描述 |
mix_mobile |
字符串 |
密文手机号码,作为变更的查询依据 |
ouid | 字符串 |
淘宝买家在当前店铺的唯一标识 |
omid |
字符串 |
淘宝买家在当前品牌/企业的唯一标识,需做品牌认领 |
seller_name |
字符串 |
卖家名称 |
point |
整型 |
变更的积分值,大于零 |
Type |
数字 |
积分变更类型,1-扣减,2-增加 |
record_id |
数字 |
记录ID,唯一 |
biz_type |
字符串 |
详见下面biz_type说明 |
ext_info |
字符串 |
拓展信息,json格式,根据业务类型有相应格式。 |
biz_type值:
权益类型 |
兑换 |
取消兑换 |
支付宝红包 |
red_packet_exchange |
cancel_red_packet_exchange |
积分抵现 |
deduct_exchange |
cancel_deduct_exchange |
优惠劵 |
coupon_exchange |
cancel_coupon_exchange |
礼品 |
gift_exchange |
cancel_exchange |
入会送积分 |
member_join | cancel_member_join |
非兑换(来自平台或者经平台中转的三方积分扣和增,如签到积分) |
OnlineSend |
ext_info结构:
名称 |
类型 |
描述 |
order_id |
字符串 |
订单号,兑换礼品和取消兑换礼品时传入,其他情况为空 |
biz_detail |
业务描述 |
签到和玩游戏等传入,其他情况为空 |
消息体格式示例 { "ouid" :AAGeAfjQAAA4z2BAAdysO9Ha, "omid" :AAH5AeCUAACgiqUAARmQh89y,"mix_mobile": "79470e382ca75f219d2616b6c646abf1","point": "100","type": "1","record_id": 2000363992133561,"biz_type": "gift_exchange","ext_info": "{\"order_id\":\"3461741127612303357\"}"}
API名称tmall.mei.crm.callback.point.change
API调用说明 处理完积分变更业务后,发起该调用返回业务处理结果。该回调无须立刻处理,暂无失效时间。等业务确认完毕后,再进行回调即可。
特别说明:
1、一定要确认回调,否则积分变更流程会未完结,进行积分兑券/兑礼的积分会一直处于冻结中,无法正常使用。
2、用户付款成功后,积分消息会发送给品牌方处理,如果对消息处理过慢,此时商家的订单已经是已发货阶段,则取消订单会失败,请及时回调。
3、返回的数据增加买家现有的积分数据,会员中心系统不会主动查询买家积分,需要品牌方在积分变动后把现有的积分总数同步给会员中心系统。
输入参数
名称 |
类型 |
描述 |
是否必须 |
mix_mobile |
数值 |
加密手机号码 |
否 |
record_id |
数值 |
记录ID |
是 |
Result |
数值 |
0-成功,1-失败 |
是 |
error_code |
字符串 |
处理失败的错误码. |
否 |
point |
数值 |
买家现有的品牌积分(变更之后最新) |
是 |
ext_info |
字符串 |
拓展信息,json格式,根据业务类型有相应格式。 |
否 |
错误:
错误码 |
描述 |
no-exsit-member |
不存在的会员 |
deduct-fail:point-no-enough |
扣减失败:积分不足 |
deduct-fail:no-exist-order |
扣减失败:不存在的订单 |
deduct-fail:order-illegal |
扣减失败:非法的订单 |
deduct-fail:other |
扣减失败:其他原因 |
increase-fail |
累加积分失败(这个场景表现为取消订单,返还积分) |
注:我们不希望有累加积分失败的错误返回,这个错误意味系统异常了。如订单已完成,我们不会发起返回的。
record_id为唯一标识,也就意味着,如果消息接收场景中,会员中心透传给品牌商ouid等信息,品牌商根据自己的业务场景使用该信息,但消息回调这里不需要传入ouid等非必要信息。
输出参数 无
错误码
错误码 |
错误描述 |
解决方案 |
isv.invalid-parameter |
参数错误 |
请检查参数后再试 |
isv.no-support-isv |
不受支持的开发者 |
请联系接口开发提供支持 |
isv.invalid-record |
无效的更改记录ID |
确认变更记录ID的有效性 |
测试平台地址:
https://bvip.tmall.com/crm-settings/memberTest.htm?spm=a219a.7629140.0.0.f0SW1D
首先要进入测试平台页面,需要商家在客户运营平台设置开发者信息,开发者账号填写服务商登录开放平台的账号,否则开发者进无法入到测试平台页面
并且在页面上填入商家账号nick(注意不是开发者账号,是开发者账号登录测试平台,在如下页面填写商家nick账号)
进入测试平台如下图所示:注意有个手机加密密钥是用来明文变密码加密算法的key
SPI AppKey
请填写提供SPI服务的应用AppKey,通常为第一步创建应用的AppKey
消息通知AppKey
消息接收应用的AppKey,若不使用积分兑换功能可不填写。通常为第一步创建应用的AppKey
应用(SPI)创建者账号
仅拥有混淆nick权限且开发积分兑换功能用户使用,该账号用于混淆nick加密,不能修改,如有问题请联系小二。如该字段为空,请填写SPI AppKey保存后刷新页面。
测试地址配置
在开放平台控制台点击应用管理,选择的appkey进入API 服务提供页面,在点击进入开发测试,可配置SPI地址,配置好后点击进入测试,提交测试, 点击完成测试可以配置SPI上线后的url地址如下图所示:
注意:测试平台其中一项“调用测试地址”先勾选,勾选上代表SPI调用的你在TOP填写的SPI测试地址,如果不勾选代表SPI调用的你在TOP填写的SPI线上地址
开放平台的测试通过只是代表SPI的URL能访问,不代表SPI返回数据的准确性,在测试平台测试的是SPI返回数据是否正确的测试
测试平台的接口测试比开发者的接口多,是由于测试平台是按照测试场景来做的测试,例如
其中的“绑定-->解绑-->绑定”测试的是某个消费者绑定后在解绑在绑定的场景,实质是测试的绑定接口
以SPI(Service Provider Interface)的方式实现的,即会员中心将绑卡,注册等信息通spi接口传给开发者,开发者实现相关逻辑。
开发者后台会员通相关功能测试完毕,发布上线。正式上线需要勾选去掉。
目前有礼品兑换和优惠券兑换,之后会拓展兑换场景,如签到获取积分,抽奖拿积分等等,开发者使用消息通知来接收(兑换的消息),然后调用API,告知是否兑换成功。
程序逻辑上的处理是在http入口处先做签名校验,保证每个SPI接口调用方只能是淘宝,保证接口的安全性。不做校验亦可,不做强制要求
引入SpiUtil.java包(淘宝开放平台sdk下载,com.taobao.api.internal.spi.SpiUtils),加密串为相关应用的AppSecret(非沙箱AppSecret),签名的测试可在SPI开发中测试。每个SPI接口都要加上如下逻辑
java示例代码:
//IOUtils可参考使用org.apache.commons.io.IOUtils里的
String body = IOUtils.toString(request.getInputStream(), "utf-8");
/**此方法的逻辑是:
* ISV根据SPI调用的内容(body,post等参数)和秘钥(appsecrt)进行MD5计算,
* 计算出的sign的值跟淘宝用同样的加密方式(SPI调用的内容(body,post等参数)和秘钥(appsecrt)进行MD5计算)计算出来的结果进行比较。
* 比较结果如果是True说明双方都有共同的秘钥(appsecrt),说明调用可信赖.appsecrt注意保密。
* 淘宝计算出的sign值在SPI调用的URL里有。类似http://gw.api.taobao.com/router/rest?sign=5CEC9D0FE251B1CA0DDAE4C37F2421F1×tamp=2017-10-23+12%3A06%3A35
* SpiUtils 在淘宝开放平台 SDK里下载 com.taobao.api.internal.spi.SpiUtils
**/
if(!SpiUtils.checkSign4TextRequest(request, body, "此字符串要修改成AppSecret")) {
//拒绝访问,非来自淘宝的请求,根据实际情况实现
throw new RuntimeException("非来自淘宝的请求");
}