您的位置:首页 > 其它

新零售、智能零售 产品,技术 核心业务 核心技术

2018-08-08 12:05 330 查看

产品需求规格说明书

–新零售、智能零售行业规范
(一期)

2018-07-26
(PaulXiang 向书珍 wechart:szxiang0217)

版权所有 侵权必究

文档历史
修订日期
修改内容
修订版本
修订人
2018-07-26
创建
1.0
paul

目录
文档历史 2
目录 3
1前言 4
1.1 背景 4
1.2 目的 4
2 项目总体设计 6
2.1 项目实现流程 6
2.2 支付选择页面 7
2.3 会员登录注册 8
2.4 参加活动 8
2.5 支付押注 10
2.6 活动效果展示 11
3 功能特性 12
3.1 自动售卖机扫码出货 12
3.1.1 功能描述 12
3.1.2 实现流程 12
3.1.3 UI表现 13
3.2 微、支付宝支付开启免单支付功能 15
3.2.1 功能描述 15
3.2.2 实现流程 15
3.2.3 UI表现 16
3.3 游戏核心算法 19
3.3.1 游戏规则 19
3.3.2 算法原型 20
4 功能测试用例 22
4.1 关键功能测试用例 22
5 报错信息 23
5.1 接入报错系统 23
5.2 报错信息转义 23

1前言
1.1 背景
随着公司点位的铺开,辐射周边市场的,为进一步丰富点位的营销渠道,有效提高终端售卖机的点位客户群,提高用户购买的活跃度,同时从战略出发,搭建营销渠道平台,建立完善的渠道引流体系。本文结合终端售卖终端,会员系统,基于原有的扫码支付交互设计,对免单支付的需求和交互进行详细的阐述,给产品设计和开发人员提供基本需求依据。
1.2 目的
预计达到目的:建立售卖机终端渠道营销体系。
术语
术语解释
免单支付
一种自定义的支付形式,通过提高中奖来兑现支付的一种形式

2 项目总体设计
2.1 项目实现流程

说明:
免单支付(一期) 通过在微信、支付宝扫码进入支付页面的时候用户选择 “免单支付”进行的一种抽奖活动,通过活动,用户可以获得超过所支付金额价值的商品。即使没有中奖,也可以把用户为参加活动支付过的金额兑换成代金券,用户可以多次参加抽奖。主要包括如下功能模块:
判断用户支付类型,增加“免单支付”选项,会员登录,提示未注册用户注册会员。
免单支付押注页面,中奖算法。
中奖结果呈现
中奖结果出货,没中可以返回押注页面继续押注。
会员中增加支付抵扣代金券
2.2 支付选择页面

( 微信,支付宝 )                    ( 其它支付 )

说明:
支付选择页面实现了新的功能,在用户采用微信、支付宝支付的时候,提供免单支付入口。判断机主是否注册会员。
2.3 会员登录注册

注册

说明:
机主非注册用户,跳转到会员注册页面,用户完成注册。
2.4 参加活动

幸运免单

说明:
进入幸运免单活动页面,根据游戏规则,选择赔率(1倍,3倍,5倍), 算法计算本次参加抽奖的中奖率,并详细列出商品的总价,以及选择赔率后,需要支付的费用。页面提供用户条款,可以供参加活动的用户阅读。还有用户同意条款后,游戏才能开始,默认情况用户是同意“用户条款“的。然后支付投注金额,开始游戏。
算法:
用户通过投注 1元,3元,5元,来博大于支付金额的商品。比如通过投注1元,3元,5元可以博总价大于5元的商品;通过投注1元,3元,可以博取总价大于3元,小于5元的商品;通过投注1元,可以博取大于1元,小于3元的商品。

2.5 支付押注

支付押注本金
说明:
用户根据选定的押注,通过微信或支付宝完成押注本金的支付,才能开启游戏。
2.6 活动效果展示

说明:
通过动画,给用户展示游戏效果和体验,用户可以根据个人的游戏体验喜好来终止游戏效果,算法输出结算结果(中奖情况),通过页面展示给用户,中奖的用户,可以获得商品,自动贩卖终端自动出货,未中奖的用户,将会得到提示,把所支付的赌注,作为同等金额的代金券放入会员福利中。用户可以选择再玩一把,也可以关闭游戏。
3 功能特性
3.1 自动售卖机扫码出货
3.1.1 功能描述
用户使用手机第三方支付App 扫码进入支付首页,需要根据用户App的独特支付标示,Appid判断支付渠道,目前我们的免单支付只支持微信和支付宝。扫码出货是自动售卖机核心业务功能。
3.1.2 实现流程

自动售卖机核心业务流程

微信扫码支付流程

3.1.3 UI表现
第一步:选择商品和支付方式,

第二步,扫描商品二维码,访问URL

第三步,确认支付链有效,输入密码,完成支付。

3.2 微、支付宝支付开启免单支付功能
3.2.1 功能描述
用户使用手机客户端上网,扫码进入支付页面,点击选择“免单支付”,进入免单支付活动界面。通过支付少量的金额,参与游戏;按照公平的概率算法,有机率获得大于所支付金额的商品,如果未获得商品,所支付金额,作为代金券,归属到会与卡券中,用户可以再下次购买商品的时候,抵扣现金。

3.2.2 实现流程

3.2.3 UI表现
第一步:用户点免单支付击进入“免单支付”界面:

第二步:用户选择 1元,3元,5元,获得相应的中奖概率参考 ,点击“马上玩一把”,支付本金

(已登录) (未登录)

第三步:完成支付,请求游戏计算服务,并返回游戏结果。

3.3 游戏核心算法
3.3.1 游戏规则
用户通过投注 1元,3元,5元,来博大于支付金额的商品。比如通过投注1元,3元,5元可以博总价大于或等于5元的商品;通过投注1元,3元,可以博取总价大于3元,小于5元的商品;通过投注1元,可以博取大于1元,小于3元的商品。 中奖概率可灵活配置,主要是在不同时段场景下,对中奖概率进行灵活设置。
1. 中奖概率计算: 投注金额/商品总价,作为中奖概率呈现给用户。
2. 实际中奖概率后台设置:
实际中奖概率:投注金额/商品总价 + 概率(投注超过5次)+ 0.1(商品池>500件?)+?(其它加权)。
If(实际中奖概率 fact Rate >=1 )
factRate=1;//提示中奖。
else //计算概率
商品概率.setProb(factRate) //not 投注/商品总价
重新计算SumRate,
参加抽奖。
3.3.2 算法原型

public class Gift {

 private int id;
 private String name;
 private double prob;
 public int getId() {
 return id;
 }
 public void setId(int id) {
 this.id = id;
 }
 public String getName() {
 return name;
 }
 public void setName(String name) {
 this.name = name;
 }
 public double getProb() {
 return prob;
 }
 public void setProb(double prob) {
 this.prob = prob;
 }

 @Override
 public String toString() {
 return ToStringBuilder.reflectionToString(this);
 }
}

public class DrawLotteryUtil {

 public static int drawGift(List giftList){

 if(null != giftList && giftList.size()>0){
 List orgProbList = new ArrayList(giftList.size());
 for(Gift gift:giftList){
 //按顺序将概率添加到集合中
 orgProbList.add(gift.getProb());
 }
 return draw(orgProbList);

 }
 return -1;
 }
 public static int draw(List giftProbList){

 List sortRateList = new ArrayList();

 // 计算概率总和
 Double sumRate = 0D;
 for(Double prob : giftProbList){
 sumRate += prob;
 }

 if(sumRate != 0){
 double rate = 0D; //概率所占比例
 for(Double prob : giftProbList){
 rate += prob;
 // 构建一个比例区段组成的集合(避免概率和不为1)
 sortRateList.add(rate / sumRate);
 }

 // 随机生成一个随机数,并排序
 double random = Math.random();
 sortRateList.add(random);
 Collections.sort(sortRateList);

 // 返回该随机数在比例集合中的索引
 return sortRateList.indexOf(random);
 }


 return -1;
 }


 public static void main(String[] args) {
 Gift iphone = new Gift();
 iphone.setId(101);
 iphone.setName(“免单支付红牛抽奖中 1倍”);
 iphone.setProb(0.5D);

 Gift thanks = new Gift();
 thanks.setId(101);
 thanks.setName(“免单支付红牛抽奖中 3倍”);
 thanks.setProb(0.3D);

 Gift vip = new Gift();
 vip.setId(101);
 vip.setName(“免单支付红牛抽奖中 5倍”);
 vip.setProb(0.2D);

 List list = new ArrayList();
 list.add(vip);
 list.add(thanks);
 list.add(iphone);

 for(int i=0;i<100;i++){
 int index = drawGift(list);
 System.out.println(list.get(index));
 }
 }

}

4 功能测试用例
4.1 关键功能测试用例
输入(条件)
正确输出
错误输出

系统错误/无法访问

系统错误/无法访问

5 报错信息
5.1 接入报错系统
5.2 报错信息转义
错误码
内部描述
外部描述
出现条件
1003
支付密码无效,请检查您的输入是否正确,注意区分大小写
支付密码错误,请检查后重试,注意区分大小写。
用户输入的支付密码错误

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐