这事难倒了20多位产品经理:订单号怎样生成,才能好用又好看?

23 评论 27256 浏览 218 收藏 12 分钟

一个好用又好看的订单号,应该怎么设计?或者应该具备哪些规则和依据呢?看下这篇,或许你会得到不一样的好思路。

1. 三个真实的案例

案例1

最近面试的将近20位产品经理里面,我都会问一道问题:请您为我公司的订单系统设计一套订单号的生成规则。应聘者里面有一两年的职场新人,也有工作将近十年的老鸟,当然也不乏运营或者开发转岗到产品的,有些甚至还做过订单与支付系统,但几乎所有的面试者都没能说的很全面。

案例2

去年的某个时间,朋友A所在的公司订单系统改造升级,开发在没有知会运营和市场的前提下将订单号长度由14位改到了19位(事后得知产品人员当时也不知情),而公司现有的用户至少70%都在使用货到付款的刷卡支付,即每次刷卡前都需要输入订单号,然后你懂的,整个市场炸锅了,开发于是紧急发版,又把订单号的长度改回了14位。

案例3

再说说6年前的一个经历。当时朋友(简称为C吧)在一家游戏公司做PHP网站开发,C和其他几位开发完成了整个游戏的在线支付系统,并且联调成功了。系统运行后发现了一个情况,某游戏玩家充值了5万块钱,当时运营人员想查下是什么时间充值的,但后台系统里面没有记录充值时间,无奈之下只能去数据库查到了时间戳,然后根据时间戳反查出来了充值时间。

2. 近20位产品经理给出的答案

再回到上述案例1里面的问题,其实题干里面还隐含了一个关节信息,即该系统是为我公司设计的,而不是其它公司设计的(我公司现在做酒饮类B2B,未来可能会做B2C或其它)。但回答者几乎都忽略了这一点。

这些应聘者的原话记不清了,但主要就以下这些思路及其组合,括号里面是我的点评(吐槽):

  • 订单号由数字和字母和连字符-组成(您考虑过英文和拼音发音分不清楚的用户么?连字符起什么作用?);
  • 订单号由时间/年月日时分秒和随机数组成(仅时间20161111112233就14位了啊,随机数你打算再来几位?考虑到支付峰值每秒10万笔订单,系统怎么来随机?再加5位数?)
  • 订单号前几位标识商品,比如茅台编码是001,五粮液是002,既有茅台又有五粮液是003,后面由日期+随机码构成(商品标记会有什么意义?即便商品数量只有几十个的情况下,他们的排列组合也很多啊,这个得多少位?);
  • 由下单日期+用户手机号+随机数构成(即便日期只取月和日会占4位,加上11位手机号也15位了,而且日期会重复,每个用户每天可能会下很多单,而且用户手机号不具有唯一性。后来有人提过类似的规则,只不过将用户手机号换成了唯一的user id,但user id还是会很长);
  • 根据卖家和买家的ID+随机数生成订单号(如果是C2C网站,用户体量在几千万上下,这样就需要至少8位来标记用户ID,随机数即便1位的话订单号也得17位,但实际情况有可能买家经常在某个卖家那买东西,3位随机码都不一定够用);
  • 根据商品的品类+时间+随机数生成订单号(他没有具体说是大的品类还是小的品类,如果是小的品类,可能也会很多)。

那么问题来了,一个好用又好看的订单号,应该具备哪些规则和依据呢?

在此,我说点自己的理解。

3. 订单号怎样生成才好用

回到问题的本质,订单号是拿来干嘛用的?谁会关注订单号?简而言之,订单号是用来标记/查询订单(查询的时候可能更关注于物流单号)用的,一般会在订单有支付/售后/异常问题的时候会用到,也就是说订单号主要是拿给客服/运营/开发部门用的。

那么客服在处理一笔订单的时候,什么格式的订单号才会好用呢?首先订单号中最好避免数字以外的其它字符类型,订单号尽量短,订单号尽量能结合当前的业务情况有特定的标识,如渠道编号(包括平台、下单渠道、支付方式)、业务类型和时间信息等。为了便于理解,下面还是举例说明:

平台:这个以游戏举例,目前很多手游除了官方服务器外,还有一些是和其它平台比如小米、腾讯联合运营的,但是充值有可能是用的同一套,这种情况就很有必要在订单号中标记平台;

  • 下单渠道:目前很多电商产品都涵盖多平台,包括WEB、APP(Pad)和门店(比如1919和苏宁等),比如通过订单号发现近期反映的问题都来自于APP,则理论上可以推断出APP渠道有问题。
  • 支付渠道:如上文案例2所说,不同支付方式会遇到的问题也是不一样的,比如货到付款的刷卡支付仅POS机错误代码就几十项,而支付宝基本不会有这些。比如APP不支持公司转账,如果某订单有了代表公司转账的标识位,不用后台查询即可知道这是一笔来自WEB的订单等等。同样,用户反映该订单号无法使用红包,客服人员也可以通过支付渠道标识位来识别出是因为红包功能在APP上没有上线造成的;
  • 业务类型:以前在游戏行业的时候,我们一般会把订单号的某一位用来标识游戏名称,比如梦幻西游、魔兽世界和阴阳师分别用1、2、3来标识。这样遇到相关问题时,不用后台查询即可快速识别出问题并把其转给相关游戏团队。同理的还有零售和团购,自营订单和入驻商家订单,2B业务订单和2C业务订单;
  • 时间信息:有时间信息会让客服/运营人员看到订单时不需要经过后台查询即可知道该订单时哪天产生的,可以简单的判断问题的紧急程度。同时在B2B业务中,我们也可以根据该时间推算出大致的清分结算时间等等。所以我的建议是如果业务类型决定了客服类问题比较多,则有必要在订单号里面加上这个信息。但时间的完整格式2016年11月11日 11点22分33秒这样的显示出来就是20161111112233,年和时分秒信息略显多余,只记录月和日即可;

综上,我给出的好用的订单规则是这样的:

下单渠道1位+支付渠道1位+业务类型1位+时间信息4位+下单时间的Unix时间戳后8位(或是这8位数字加上随机码和随机规则进行随机后的数字)+用户user id后4位。然后你会说,这样算下来就订单号就19位了啊,一点都不精简啊,不好记不好念不好输的。但我说的上面的这些业务标记,你不一定要全部加上啊。

然后我们再来看看《电商订单号设计思考》中提到的那2个问题:

问题1:为什么淘宝单号这么长?前几年还12、13位,现在都16位了?订单号之所以那么长,我的理解是短了不够用,毕竟那么大的用户基础和订单量。至于现在都是16位?我查询了2011年的淘宝订单,发现是14位的,并不是该简友说的12/13位,但由14位扩充到16位,应该很大一部分原因是业务增长的原因。

问题2:为什么自己的淘宝单号最后4位都一样呢?这4位数字代表什么?2011年3月之前的订单,后4位是不一样的;3-7月之后(4/5/6三个月我没有下过单)的淘宝订单,后4位是一样的。我猜想可能是user id,后来我验证了下,一定程度上是的,比如我的ID后4位是1190,订单的后4位是9910,由此看来,淘宝订单后4位是将user id后4位简单处理过的。至于前12位,我 猜想其中有10位可能是由Unix时间戳加随机规则生成的。

4. 订单号怎样生成才好看

相信很多人都受够了银行卡上面不分段的银行卡号了吧,还有就是快递单上面不分段的快递单号码(顺丰的就很好),这些简直就是反人类设计。其实订单系统里面也可以借鉴顺丰的这个思路分段显示,方便查看和诵读。

如果做的再智能点,支持WEB上双击复制或者APP上长按复制(点击后可复制),是不是更好看更人性化更便捷了呢?

kuaididanhao

顺丰快递单号

5.几句题外话

前几天我看到了宅妈妈APP的订单号,4位纯自增的数字,极其精简。当时我就在想他们为什么会把订单号设计这么短,后来仔细想了下她们的具体业务情况,或许是这样的:处于业务开拓起步阶段的宅妈妈不希望用户在反馈问题时报上冗长的订单号,同时她们希望用户通过订单号能感受到该APP有很多人在使用并下单,进而打消她们的部分顾虑。

滴滴出行因为每次行程都有司机车牌号,所以在遇到问题时直接反馈“时间+起点+车型车牌号”可能更方便。饿了么同理,我在反馈问题的时候也不会去报订单号,直接报时间和商家名更方便,订单号可能在客服处理问题的时候会用的更多一点吧。

 

作者:詹仕波

来源:http://www.jianshu.com/p/3ef577eaacac#

本文由 @詹仕波 授权发布于人人都是产品经理,未经作者许可,禁止转载。

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 1、订单号里面为什么需要加入下单渠道、支付渠道、业务类型?如果说为了方便运营和客服查看,一般是实际业务量不大或者对业务不熟,客服或者运营如何能很快通过数字组合识别?学习成本太高,尤其之前接触的客服团队人员流动大情况下;
    2、特殊性标记单独字段记录,感觉没必要融入订单,如果是方便区分,并没有方便到哪里
    3、能通过系统的直观就能看到订单列表,移动端等,通过钉钉等提供信息查询机器人,输入编号支持自主查询能更加提效;
    4、案例3有点牵强,充值时间字段是重置时间字段的需求,为何和订单号关联起来,需求分析需要加强

    来自北京 回复
  2. 中国最伟大

    来自河北 回复
  3. 这句话得这么说

    来自河北 回复
  4. 您好有些问题需要了解一下

    来自河北 回复
  5. 订单号生成的时候,下单渠道在那个阶段都不一定有。所以这一点就行不通了

    来自江苏 回复
  6. 你这样的自以为是的家伙,害了应聘者,也祸害公司,垃圾还考别人

    来自广东 回复
  7. 哥们是不是都不设计支付流水号的,下单渠道在订单生成前不知道的,这个更像是在流水号中体现的。订单号和流水号不拆分退款和对账可是麻烦事

    来自浙江 回复
  8. 写得真垃圾,这种文章也能发表出来并发布,我也是醉了

    来自江苏 回复
  9. 哪家的HR? 👿

    来自北京 回复
  10. 后面提供的方案的部分并没有全部解决作者对面试者的那些提问和吐槽、质疑啊,而且订单的生成是要看具体业务需求的,一个面试者对你们业务未完全了解的情况下当然没办法按照你的意愿来答出你想要的方案了,关键是看解决问题的思路就好了,又没有标准答案的

    来自日本 回复
    1. 对,把别人的思路质疑吐槽半天,自己想的不也那样么

      来自北京 回复
  11. 每秒10W笔,你疯了吧?

    回复
  12. 没意义的题

    回复
  13. 楼主有没考虑重复性?楼主“综上后”设计的订单号生成方法,是可能存在多用户一样的,虽然概率很低。但是在高峰期,比如双11的前几分钟,小概率事件就变成极可能事件

    回复
  14. 订单号对用户真的那么重要嘛?分行而议,赞同楼下扫码那个哥们

    回复
  15. 不知道那些因为被你拒绝的被面试的人,看到下面的回复是什么心情!!!!

    来自北京 回复
  16. 这个流水号/订单号不太容易做的太短,希望找到另一个取代的方式或许会更好;就像之前快递输入单号,现在都是直接扫码

    来自北京 回复
  17. 订单号尽量能结合当前的业务情况有特定的标识,如渠道编号(包括平台、下单渠道、支付方式)。这个我有个疑问。用户的支付动作应该是在订单生成之后才决定的。你的意思就是用户点了支付渠道以后才去生成订单吗?那用户还能更换支付方式吗?

    来自上海 回复
    1. 这个要看具体的业务逻辑,一般来讲订单号是指支付订单,也就是会在用户实际执行付款操作的时候生成,这个时候就已经可以获取到支付方式了;如果用户更换支付方式,会重新生成一个订单号,之前的订单号就当作交易失败来处理

      来自日本 回复
    2. 回复
  18. userId后四位有什么用?userId后四位数会有重复的吧?订单号对于用户并不是高频需求,甚至用户常规情况下都不需要知道订单号。订单号的设计符合自己业务形态就行了。

    来自湖南 回复
    1. 回复