注意:以下文档只适用于TOP接口,请谨慎使用!

文档中心 > 品牌会员中心

 一、品牌商家申请入驻

品牌商品牌会员入驻中心,点击创建应用,在新开页面提交开发者信息。
【企业资质】请上传企业执照副本图片;
【请填写选用的APPKEY 】如果接入方式为自己研发,请填写无,审核同意后需进行创建应用,应用创建成功后自动赋予【品牌会员基础包】(SPI场景组)和【品牌会员积分包】(API权限包)的权限;如果为第三方ISV代开发,联系isv获取应用的AppKey,如果isv应用分前后台,请填写后台AppKey。
ISV无线开放平台
1、开发帐号必须为卖家帐号或者企业资质的帐号。如果是ISV代开发,则ISV需要经过企业资质认证或者由商家申请权限。
2、审核通过后: 应用由ISV提供,【品牌会员基础包】(SPI场景组)和【品牌会员积分包】(API权限包)的权限自动赋予给ISV的应用。

注意事项:
1 品牌商自己研发入驻审核通过以后创建应用。应用标签是--【商家品牌会员】;
2 如果为第三方ISV代开发,isv应该先创建--【零售通】。在商家申请入驻的时候,商家联系isv获取应用的AppKey,isv提供后台AppKey。

二、开发说明

名词解析

  • SPIService Provider Interface):服务商提供接口,会员中心作为调用方。请求入参在request的body中,返回相应的json格式文本。注意:返回参数以该文档为准
  • TMC:消息通知,会员中心发起的消息通知,主要用于积分变更等重要消息的发送,有重试机制保证消息一定到达。
  • 飞行模式(由平台控制,商家无法进行关闭)
    • 飞行模式1.0(大促时开启):消费者入会请求到阿里平台,不会请求到服务商系统,即服务商是没有此消费者信息的,飞行模式入会后24小时内会进行10次数据回补
    • 飞行模式2.0(日常开启):入会请求返回超时(目前查询要求是1.2s,写(注册,绑定)2s)会触发飞行模式入会,飞行模式入会后24小时内会进行10次数据回补
  • 手机号加密方法
    • 手机号加密方法 加密结果为MD5(MD5("tmall"+$content+$key));加密后的字符串为 32 位小写。tmall 为固定字符串,key 为手机号加密密钥(会员中心开发者后台可见)、content 为需要加密的内容(这里是 moblie)。 代码实例: DigestUtils.md5Hex(DigestUtils.md5Hex("tmall" + "15089990091"+ "abcd")); 先给已存在的手机号做加密运算,然后和平台过来的入会请求里的手机号做匹配,能匹配上则说明线下已存在该手机号,绑定查询接口可返回可绑定

服饰商家开发详见: 会员中心系统接口文档

开发测试过程中商家相关操作见:会员中心-开发者后台(操作说明:点击查看)。

会员入会流程

 

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

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

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

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

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

 

会员积分变动流程

如果是java开发,消息用长连接可获取,如果是php需要开发者主动调用接口获取,点击查看消息服务使用介绍,积分变更需订阅消息:tmall_mei_PointChange

1接口名称:tmall.mei.crm.member.sync,线下积分变动通知到阿里,保证线上线下积分一致,详见接口文档

2接口名称:taobao.tmc.messages.consume 消费消息,消息消费后,指针自动后移,下次调用自动获取到未消费过的消息,但是消费确认后的消息无法再次获取。

3接口名称:tmall.mei.crm.callback.point.change,告知阿里服务商系统处理是否成功的结果,一定要确认回调,否则积分变更流程会未完结,进行积分兑券/兑礼的积分会处于冻结中,无法正常使用。注:积分兑礼的礼品签收不代表积分变更流程的完结

4接口名称:taobao.tmc.messages.confirm 确认消息,获取消息后,如果不确认,消息服务会选择时机重发,重发次数由消息服务控制,如果消息3天内都没有被确认将会被删除。

 

API调用方法详解

SPI调试

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

进入开发填写相关相关环境,开发者填写测试url,系统实现接收处理。

SPI详细了解见:SPI服务接入文档.

 

三、接口说明

3.1 绑定查询请求

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" :3452435234523, "omid" :3452435234523, "extend":"{"alipay_user_id":"2088702372175543" }" }  

请求返回结果(所有字段均为必选

名称

类型

描述

是否必填

bindable

布尔值

是否能绑定。如果返回true,则需要品牌方将明文的nick,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":{"mix_mobile":"79470e382ca75f219d2616b6c646abf1", "ouid" :3452435234523,"point":"2000","level":"1","extend":"{/"card_no/":/"1000001/"}"}}

3.2 绑定请求

SPI名称 tmall.mei.crm.bind

场景说明

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

请求查询参数

名称

类型

描述

seller_name

字符串

卖家昵称

type

字符串

操作类型,1-绑定,2-解绑

mobile

字符串

明文手机号码

ouid

字符串

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

omid

字符串

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

extend

Json字符串

会员的拓展信息extend:{ "source":"ScanCode",
"name":"张三","sex":1,"birthday":"04-01","birthDate":"1991-04-01","babyBirthday":"1999-07-01" ,"province":"330000","city":"330100","email":"123@taobao.com",
"flightMode":"1",
"flightJoinTime":"2018-05-18 01:16:23"}

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

请求示例: 手机号权限方式: {     "seller_name": "天猫魔盒",     "mobile": "15088909090",     "ouid" :3452435234523, "omid" :3452435234523, "type": "1" }  

注:解绑时,type字段值为2,接口请求里无extend字段。

请求返回结果(所有字段均为必选

名称

类型

描述

是否必填

member

复杂类型

会员信息,见下表

bind_code

字符串

绑定结果代码: SUC:处理成功 E01:系统异常,可重试,E02:绑定失败,非品牌会员,不可绑定 E03:绑定失败,已被其他用户绑定 E04:绑定失败,该帐号已经绑定 其他原因可传F01,F02等, 系统统一识别为非品牌会员,不可绑定

member信息:

名称

类型

描述

是否必填

point

数字

积分数值

level

数字

会员等级

extend

字符串

json对象,如果商家有卡号需要同步落支付宝卡包,可以回传 "card_no":"10000";一般建议直接传空值

ouid

字符串

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

mobile

字符串

会员明文手机号码

返回值示例: {"bind_code":"SUC","member":{"point":"2000","extend":"{/"card_no/":/"1000001/"}","level":"1", "ouid" :3452435234523,"mobile":"15088551672"}}

3.3 注册请求

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

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

请求查询参数

名称

类型

描述

seller_name

字符串

卖家昵称

mix_mobile

字符串

默认密文手机号码

ouid

字符串

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

omid

字符串

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

extend

字符串

会员的拓展信息extend:{ "source":"ScanCode",
"name":"张三","sex":1,"birthday":"04-01","birthDate":"1991-04-01","babyBirthday":"1999-07-01" ,"province":"330000","city":"330100","email":"123@taobao.com",
"flightMode":"1",
"flightJoinTime":"2018-05-18 01:16:23"}

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

请求示例: {     "seller_name": "天猫魔盒",     "ouid" :3452435234523, "omid" :3452435234523,    "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" :3452435234523,"mix_mobile":"79470e382ca75f219d2616b6c646abf1"}}

3.4 查询请求

SPI名称 tmall.mei.crm.query

场景说明 品牌方务必实现该接口,用于查询会员信息,校验会员中心和品牌方会员信息的一致性。

请求查询参数

名称

类型

描述

seller_name

字符串

卖家昵称

ouid

字符串

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

omid

字符串

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

mix_mobile

字符串

密文手机号码

请求示例body:

查询绑定类型的用户: {     "seller_name": "天猫魔盒",     "ouid" :3452435234523, "omid" :3452435234523,   "mobile": "15088890012" }

查询注册类型的用户: {     "seller_name": "天猫魔盒",     "ouid" :3452435234523, "omid" :3452435234523,"mix_mobile":"79470e382ca75f219d2616b6c646abf1" }  

请求返回结果(所有字段均为必选

名称

类型

描述

是否必填

member

复杂类型

会员信息,见下表

query_code

字符串

绑定结果代码: SUC:完成绑定 E01:不存在的会员 E02:会员未绑定 E04:系统异常,查询失败,可重试。 其他原因可传E05,E06等, 系统统一识别为查询失败

 member信息:

名称

类型

描述

是否必填

point

数字

积分数值

level

数字

会员等级

ouid

字符串

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

extend

字符串

json对象,如果商家有卡号需要同步落支付宝卡包,可以回传 "card_no":"10000";一般建议直接传空值

mobile

会员手机号

会员明文手机号码

返回值示例: {"query_code":"SUC","member":{"point":"2000","extend":"{/"card_no/":/"1000001/"}","level":"1","ouid" :3452435234523,"mobile":"15088551672"}}

3.5 积分变更通知消息

消息名称 tmall_mei_pointChange

消息说明 会员中心系统发起的积分变更,比如积分兑换礼品、优惠券、支付宝红包、流量钱包,签到送积分等。

消息输出参数

名称

类型

描述

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

流量钱包

flow_wallet_exchange

cancel_flow_wallet_exchange

优惠劵

coupon_exchange

cancel_coupon_exchange

礼品

gift_exchange

cancel_exchange

入会送积分

 member_join  cancel_member_join

非兑换(来自平台或者经平台中转的三方积分扣和增,如签到积分)

OnlineSend  

ext_info结构:

名称

类型

描述

order_id

字符串

订单号,兑换礼品和取消兑换礼品时传入,其他情况为空

biz_detail

业务描述

签到和玩游戏等传入,其他情况为空

消息体格式示例

给绑定类型的用户发送: {  "ouid" :3452435234523, "omid" :3452435234523,"mobile": "15089990091", "point": "100", "type": "1","record_id": 3234, "biz_type": "gift_exchange","ext_info": "{\"order_id\":\"VCsdd03289328\"}"}  

给注册类型的用户发送: {  "ouid" :3452435234523, "omid" :3452435234523,"mix_mobile": "sadjkajfiasnmdsasdmas","point": "100","type": "1","record_id": 3234,"biz_type": "gift_exchange","ext_info": "{\"order_id\":\"VCsdd03289328\"}"}

 

四、测试平台(开发者后台)

操作说明

测试平台地址:

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,告知是否兑换成功。

 

 

五、设置会员卡面信息

登录客户运营平台 忠诚度设置-新版无线端会员中心装修进行会员卡面设计

六、发布上线

打开开放平台首页,点击控制台,找到相关应用,点【概览】点击【提交发布上线】。这个与功能无关,可提前操作。

SPI发布上线

1)SPI测试后需增加线上SPI地址,如下图所示

2)在开放平台申请发布SPI如下图所示

3)保证所有接口测试通过后,点击测试平台页面上的“发布上线”按钮

注意:如果没有测试通过就上线,消费者在淘宝下单后都收到消息提醒入会,进入到入会页面点击绑卡会报错,所以一定要测试通过后在点击发布上线

七、开发资料及链接

  • 接口文档点击查看,商家操作文档点击查看
  • 会员中心-开发者后台
  • SPI服务接入文档
  • 消息服务使用介绍
  • API调用方法详解
  • SPI校验调用
  • 程序逻辑上的处理是在http入口处先做签名校验,保证接口调用方只能是淘宝,保证接口的安全性。当然,如果你能以其他方式保证接口的安全性,不做校验亦可,不做强制要求。
    引入SignTool.java和encryptUtil.java以及io包,加密串为相关应用的AppSecret(非沙箱AppSecret),签名的测试可在SPI开发中测试。
    然后,实现接收接口相关逻辑处理。
    示例代码:

    String body = SignTool.getBody(request); // 由于是流类型读取,只能调用一次,后面的body使用body字符串
    if(!SpiUtils.checkSign4TextRequest(request, body, "04925a6333e62f8ce4cb576a314743d2")) {
     return {\"bindable\":\"false\",\"bind_code\":\"\"
    }
    }
    //业务处理 todo

 

FAQ

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