如果主办方使用了API模式进行抽奖程序的对接,则我们需要提供一套API供主办方调用,来实现相关功能。初步整理需要实现的功能如下:
- 要能使用主办方平台的用户身份参与抽奖活动,抽奖页面可以同步头像、昵称和登录的用户身份。
- 必须能使用主办方平台的积分进行抽奖,比如100积分抽奖一次,自动扣除。
- 可以将主办方平台的内容作为奖品并自动发放,比如用户积分、优惠券/现金券、游戏道具等。
- 主办方平台可以*设定条件给用户奖励抽奖机会,比如首次下载APP、消费满XX元等。
- 主办方可以通过API自动设置抽奖白名单 ,例如将订单号发送到白名单,让用户凭订单号抽奖。
接口设计
为了实现以上功能,需要设计一套接口。接口可以采用 HTTP 的 POST 模式进行通讯。
接口分为两种,一种是抽奖程序的接口,比如给某用户增加抽奖机会的时候,活动方平台就需要主动调用抽奖程序这边的接口给用户增加机会。另外种是活动方平台要开的接口,比如用户抽中了10个金币,抽奖程序就会通过指定接口通知活动主办方的平台,让其给用户发放奖品。初步设计,需要的接口如下:
抽奖程序的开放接口
- 用户注册:主办方平台将首次参与活动的用户信息,通过此API自动注册到抽奖系统中。
- 获得登录标识:主办方在引导用户进入活动页面之前,通过此API获取用户的登录标识,然后附加到活动页面的URL参数中,引导用户进入活动页面。抽奖程序通过URL传入的登录标识来自动获得用户身份。
- 获取用户剩余抽奖次数:活动方可以通过此API获得用户的剩余抽奖机会,然后进行一些抽奖提示的弹出等。
- 增减用户剩余抽奖机会:活动方可以通过此API来给用户增加抽奖机会,例如用户购物满XX元后,通过此API给用户增加1次抽奖机会。
活动方需要开放的接口
- 接收中奖记录推送:抽奖程序在用户中奖后,会将用户的中奖信息推送到此API。以供主办方在自己的平台上展示中奖榜或者给用户发送额外的中奖通知等。
- 发放用户奖品:对于主办方自己定义的奖品,在用户抽中后,抽奖程序会将相关信息推送到此API,
- 查询用户积分:当使用积分抽奖模式时,抽奖程序通过此API来查询用户剩余积分,判断是否还可以进行抽奖。
- 用户积分扣除:当使用积分模式抽奖时,抽奖程序通过此API来扣除用户抽奖所消耗的积分。
API通讯导图(抽奖机会模式抽奖)
API通讯导图(使用会员积分抽奖模式)
接口的安全性问题
开放API需要保证绝对的安全性,可以考虑的措施如下:
- 通讯签名:将API所有传入参数结合密钥,通过一定的算法生成一个签名,每个接口每一次请求都要进行签名校验。校验签名不一致的直接拒绝。
- 请求有效期:每个接口参数都必须包含 time 参数,传入发起时的时间戳,API验证有效性的时候做个判断,例如超过 10 秒的请求就当做过期请求,拒绝处理。
- IP白名单机制:抽奖平台和活动方平台都将对方的服务器IP写入到配置里面,非对方服务器IP的API访问将直接拒绝。