文档中心 > 智慧门店

会员通接口开发

更新时间:2024/06/24 访问次数:120214

一、 内容概要

1.1 基本功能

该文档详细描述了品牌方开发者接入品牌会员中心所需的接口开发规范。请以该文档内容为准。主要包括会员激活、绑定、查询、解绑、注册、积分变更、成长值变更等功能。

1.2 名词解析

  • SPIService Provider Interface):服务商提供接口,会员中心作为调用方。请求入参在request的body中,返回相应的json格式文本。注意:返回参数以该文档为准
  • TMC:消息通知,会员中心发起的消息通知,主要用于积分变更等重要消息的发送,有重试机制保证消息一定到达。
  • 飞行模式(由平台控制,商家无法进行关闭)
    开启期间新用户发起入会时,如商家对接CRM系统报错或无响应,平台将默认处理该用户入会成功,并赋予初始等级,但无法更新等级积分;并在规定时间进行商家系统数据回补
    • 飞行模式1.0(大促时开启):消费者入会请求到阿里平台,不会请求到服务商系统,即服务商是没有此消费者信息的,飞行模式入会后24小时内会进行16次数据回补,超过时效后用户将一直处于飞行模式状态,需重新正常入会。
    • 飞行模式2.0(日常开启):入会请求返回超时(目前查询要求是1.2s,写(注册,绑定)1.8s)或返回非明确不可入会的code会触发飞行模式入会,飞行模式入会后24小时内会进行16次数据回补,超过时效后用户,一直将处于飞行模式状态,需重新正常入会。

1.3 开发者准备工

  1. 品牌商自己研发入驻审核通过以后创建应用。应用标签是--【商家品牌会员】【企业资质】请上传企业执照副本图片;
    【请填写选用的APPKEY 】如果接入方式为自己研发,请填写无,审核同意后需进行创建应用,应用创建成功后自动赋予【品牌会员基础包】(SPI场景组)和【品牌会员积分包】(API权限包)的权限
  2. 第三方ISV代开发,isv应先申请应用--【客户关系管理】,申请方式为:开放平台控制台—应用管理—新建应用—一站式电商后台—电商软件服务商-客户关系管理。具体申请所需资质点击查看。申请成功后联系小二授权会员通SPI权限包
  3. 消息订阅:商家入驻审批完成后,如果开发礼品兑换功能,则需进应用管理订阅会员中心积分变更消息。消息名称:tmall_mei_PointChange

1.4 SPI调试

      点击开放平台【控制台】相关应用的【应用管理】>【API服务提供】,选择【品牌会员基础包】进入开发,如下图所示

进入开发填写相关相关环境,开发者填写测试url(激活接口需单独部署详见接口说明),系统实现接收处理。

调用方式:
SPI服务接入文档
.
API调用方法详解

1.5接口业务逻辑


①②③④均为SPI接口,开发者根据接口实现返回json数据即可

① qimen.alibaba.member.activate(会员激活)该接口为全新奇门接口,只有在商家从官方版/定制版切换到会员通时,存量会员从店铺会员点击升级为品牌会员时才会用到,详细字段可点击文档,奇门接入可点击文档进行查看

② tmall.mei.crm.member.bind.query(绑定查询)

③ tmall.mei.crm.bind(绑定)

④ tmall.mei.crm.member.register(注册)


1.6
接口调用逻辑

图片过大,请右键下载图片查看

1.7积分变更逻辑

注意:对接会员通后所有的积分规则与逻辑判断都将由商家对接的系统完成(包括订单换算),客户运营平台将下线积分规则设置页,平台只提供运营能力不再处理积分逻辑,请自行判断是否有能力对接;完成积分变更对接后才可在客户运营平台创建权益。

如果是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.8 成长值变更逻辑

对应业务介绍请点击文档

注意:平台侧会对入参进行校验,以保证商家在平台全部等级被更新为同一种等级模式。不允许出现部分等级使用成长值模式,部分使用行为模式。

1接口名称:alibaba.member.merchant.level.setting.sync( 需联系小二额外授权接口权限),更改为成长值模式并同步每个等级对应所需的成长值

2接口名称:tmall.mei.crm.member.sync.privy(该接口和积分同步一致),成长值变动同步以保证平台和商家系统所展示的成长值一致

3接口名称:alibaba.member.point.change.sync( 需联系小二额外授权接口权限),对消费者展示具体成长值变动明细

 

1.9 手机号加密方法

  • 手机号加密方法 加密结果为MD5(MD5("tmall"+$content+$key));加密后的字符串为 32 位小写。tmall 为固定字符串,key 为手机号加密密钥(会员中心开发者后台可见)、content 为需要加密的内容(这里是 moblie)。 代码实例: DigestUtils.md5Hex(DigestUtils.md5Hex("tmall" + "15089990091"+ "abcd")); 先给自己这边已存在的手机号做加密运算,然后和平台过来的入会请求里的密文手机号做匹配,能匹配上则说明线下已存在该手机号,绑定查询接口回调为可绑定并返回明文手机号(平台会检验系统返回的明文是否正确)

二、 接口说明

2.1 会员激活

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
—open_user_id

复杂类型

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"}]}

2.2 绑定查询请求

SPI名称 tmall.mei.crm.member.bind.query

场景说明 当用户在页面发起绑定操作时,会触发该请求。

请求查询参数

名称

类型

描述

seller_name

字符串

卖家昵称

mix_mobile

字符串

密文手机号码

ouid

字符串

淘宝买家在当前店铺的唯一标识

omid

字符串

淘宝买家在当前品牌/企业的唯一标识,需做品牌认领

extend

字符串

extend{"alipay_user_id":"2088702372175543",
"flightMode":"1",
"flightJoinTime":"2018-05-18 01:16:23" }

 

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/"}"}}

2.3 绑定请求

SPI名称 tmall.mei.crm.bind

场景说明

  1. 当绑定查询返回可绑定时,触发该请求。
  2. 当用户解绑时,触发该请求。

请求查询参数

名称

类型

描述

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",
"flightMode":"1",
"flightJoinTime":"2018-05-18 01:16:23"}

注: 用户拓展信息为姓名、性别、出生月日、邮箱、宝宝出生月日、省份,城市;name:消费者姓名;sex1(男性)2(女性);babyBirthday:宝宝的生日;birthday:出生月日,birthDate:出生年月日,province:省份,city:城市,(目前扩展字段已不接受新增申请)

  • flightMode:1 开启飞行模式 ;只有开启飞行模式,才会显示该字段
  • flightJoinTime:飞行模式开启期间,消费者真实的入会时间
  • 入会渠道source字段,点击查看

请求示例: 手机号权限方式: {     "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"}}

2.4 注册请求

SPI名称 tmall.mei.crm.member.register

场景说明 当绑定查询返回可注册时,会触发该请求。

请求查询参数

名称

类型

描述

seller_name

字符串

卖家昵称

mix_mobile

字符串

密文手机号码

ouid

字符串

淘宝买家在当前店铺的唯一标识

omid

字符串

淘宝买家在当前品牌/企业的唯一标识,需做店铺认领

extend

字符串

会员的拓展信息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",
"flightMode":"1",
"flightJoinTime":"2018-05-18 01:16:23"}

注: 用户拓展信息为姓名、性别、出生月日、邮箱、宝宝出生月日、省份,城市;name:消费者姓名;sex:1(男性)2(女性);babyBirthday:宝宝的生日;birthday:出生月日,birthDate:出生年月日,province:省份,city:城市,(目前扩展字段已不接受新增申请)

  • flightMode:1 开启飞行模式 ;只有开启飞行模式,才会显示该字段
  • flightJoinTime:飞行模式开启期间,消费者真实的入会时间
  • 入会渠道source字段,点击查看

请求示例: {     "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"}}

2.5 查询请求

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"}}

 

2.6同步会员信息API接口

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

失效的版本

更新版本信息再试

2.7 积分变更通知消息

消息名称 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\"}"}

2.8 积分变更回调API接口

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&timestamp=2017-10-23+12%3A06%3A35

* SpiUtils 在淘宝开放平台 SDK里下载 com.taobao.api.internal.spi.SpiUtils

**/

if(!SpiUtils.checkSign4TextRequest(request, body, "此字符串要修改成AppSecret")) {

//拒绝访问,非来自淘宝的请求,根据实际情况实现

throw new RuntimeException("非来自淘宝的请求");

}

FAQ

关于此文档暂时还没有FAQ
返回
顶部