做电商如何自己出单号,电商如何自行生成订单号?

订单号、支付流水号、售后订单号、快递取货号、电子券核销码等,这些都是我们日常在生活中会遇见和使用的一些单号。它们有的长有的短,有的包含时间信息,有的却不包含任何意义。今天我们就来揭秘这些单号是如何生成的。

做电商如何自己出单号,电商如何自行生成订单号?

一、订单编号作为唯一标识码在业务中的应用场景

在实际的业务过程中,单号是订单的唯一标识码。提供订单号可以帮助业务人员快速定位订单信息,为用户提供帮助。

1. 用户订单遇到问题,需要找客服进行协助

在购物网站上购买商品时,经常需要与客服人员联系,反馈订单过程中出现的问题。通常客服会要求您提供订单编号,以便快速查找订单信息,并为您解答和处理问题。

2. 对订单进行操作,如线下收款,订单核销

当我们在第三方平台购买某店铺的线下优惠券时,通常需要出示订单编号供工作人员核销。

有些情况下需要在现场收款,这时会根据订单号来确认和收款。通常在业务过程中,会生成订单号的二维码,工作人员再通过扫码来进行操作。因此,用户在现场对订单号的了解并不是很充分。

3. 内部进行订单的处理或者跟进

通常情况下,当我们需要从技术角度来获取订单相关信息时,往往会以订单ID作为唯一标识符进行搜索。这是因为订单号的生成规则确保了其唯一性(关于订单号生成规则的内容将在后面进行介绍)。

在公司内部进行业务操作时,比如对通知仓库按单发货或者内部交流某个订单信息时,常常会直接使用订单号来进行信息传达。

二、编号规则的设计原则

一般情况下,在业务中使用订单号通常要求具有唯一性。因此,在设计订单号时,需要遵循以下几个原则:

1. 不得重复

出于业务需求,订单编号必须保持唯一性。在高并发状态下生成订单编号时,由于多个线程可能具有相同的生成参数并且遵循固定的生成规则,可能会导致生成相同的订单编号。作为开发人员,需要注意这一点并对此进行处理。

其次,长时间积累的业务可能导致新生成的订单号与过去的订单号重复。因此,在设计订单号时,必须充分考虑确保其唯一性的原则(下文将详细介绍订单号设计中的变量部分)。

2. 安全性

为了保护公司运营情况和用户隐私,我们不会透露与日销、公司流水号等相关的商业信息,也不会公开用户的手机号码、身份证号码等隐私信息。此外,我们会谨慎披露订单编号等信息,以防止可能的信息泄露和安全风险。同时,我们也会遵守隐私保护规定,确保用户数据安全。

就像高考考生编号的生成规则一样,不能采用连号的方式,因为这样会导致考生成绩的搜索变得相对容易,这是不应该被允许的。

3. 具备一定的可读性

订单号的位数应该适中且有一定的规律性,以便于操作和管理。这样可以在需要查询订单异常或退货情况时,使客服操作更为便利。

订单号的长度过长或易读性差会导致客服输入困难,易错率也会增加,从而影响用户的售后体验。因此,在实际的业务场景中,订单号的设计通常会包含一些对使用场景有帮助的信息,比如时间、星期、类型等。这些信息可以根据具体的使用场景来进行设计,并且允许公开使用,以提升客服工作效率和用户体验。

此外,将时间和日期等自增长属性纳入订单号的设计中,有助于解决由业务积累导致的订单号重复问题。

三、编号设计中的常用变量

在遵循相关原则的基础上,我们通常会使用一些变量来设计订单编号,以满足订单编号的局部可读性带来的业务优势。常见的设计包括以下几类:

1. 时间

使用类似20220525105959的年月日时分秒格式作为编号,可以有效降低重复的可能性,因为在一秒内不会出现重复。

时间变量有很多不同的类型,比如提取年份的最后两位数,或者只保留日期部分,例如将20220525转换成仅包含日期的格式。在设计快递取件码时通常会使用月份、日期、星期等元素的组合,这样可以方便快递取件码的重复使用。因为快递取件码通常只在一个月内有效,过期后会被销毁或原路退回。

2. 时间戳

时间戳是用来表示当前时间距离1970年1月1日UTC/GMT零点的秒数的10位数数字。它是一种常用的时间表示方式,还可以精确到毫秒,形成一个13位数的数字。

3. 类型

不同类型的操作可能需要使用不同的参数。通常,在共用一套业务后台的线上支付和线下支付场景中,为了方便区分,我们会加入支付类型这个参数来区分线上和线下支付。此外,订单类型、售后类型、商品类型等也可以根据具体情况使用不同的参数。

还有像店铺代码、支付的机器代码和操作员代码这样的例子。

4. 用户ID

在设计涉及用户编号的规则时,可以考虑使用用户ID作为变量。例如,淘宝的订单号中最后几位数字可能采用了用户ID,但需要注意不能直接使用完整的用户ID,必须进行一些规则设计才能使用。

5. 商家ID

电商系统中,可以将商家ID脱敏后作为一个变量,并将其纳入编号规则中设计。

6. 手机号

在设计订单编号时,如果要使用用户的手机号中的某些位数作为编号中的一个变量,需要谨慎处理以避免出现重复订单编号的情况。这是因为如果只使用手机号中的某些位数作为编号的唯一变量,重复的可能性会相当高。因此,需要确保在生成订单编号时,除了用户手机号的部分号码外,还需要引入其他的变量或者算法,以确保订单编号的唯一性。

7. 平台形态

对于多终端多平台的系统,可以考虑将平台作为一个变量纳入编号中。例如,可以使用01代表小程序平台,02代表安卓App平台,03代表PC版本,04代表第三方平台,以此类推的规则进行编号。

8. 其他业务属性

可以根据业务场景,在系统设计中将一些业务属性的信息作为变量进行设计。

9. 随机数

随机数是由系统根据程序在一定规则内随机生成的字符,可以是数字也可以是字符串,通常用于降低重复性。在订单生成中,随机数的使用频率非常高。通常,订单编号的前几位是一些显式的规律性数字,例如订单生成的时分秒,然后再加上四位随机数,从而形成订单号。因此,当读者在设计订单编号时,如果不知道如何进行加密,可以简单地插入几位随机数来实现。

10. 序列位

以数字10、11和12为例,这些数字表示一系列顺序的数字。

11. 验证位

一种常见的安全校验方式是将前面的多位字符按照一定的规则计算,通常得到一个1位数字,一般放在最后,以提高数据的安全性。身份证号码中的最后一位就是校验位,根据前面几位数字通过加密算法计算得出,有兴趣的读者可以自行了解身份证号码的生成规则。

12. 地区信息

编号规则可以考虑将区域作为变量考虑进去,以便区分不同地区的分店或线下售货机等。

13. 数据库数据的自增ID

通常在将每条数据录入系统时,都会分配一个唯一的ID作为标识符,这个ID也可以作为一种变量用于编号。

四、编号实践方案分享

1. UUID

通用唯一识别码(UUID)是一种软件建构的标准,也是开放软件基金会组织在分布式计算环境领域的一部分。其目的是确保分布式系统中的所有元素都能够具有唯一的识别信息,而无需通过中央控制端进行指定识别信息。

  1. 1~8位采?系统时间,在系统时间上精确到毫秒级保证时间上的惟?性。
  2. 9~16位采?底层的IP地址,在服务器集群中的惟?性。
  3. 17~24位采?当前对象的HashCode值,在?个内部对象上的惟?性。
  4. 25~32位采?调??法的?个随机数,在?个对象内的毫秒级的惟?性。

以上4种策略可以确保唯一性。对于需要使用随机数的系统组件,可以考虑采用UUID算法。然而,直接将UUID作为单号使用虽具有唯一性和安全性,但却缺乏可读性。因此,在这种情况下,UUID只能作为系统内部的标识码,可用于在业务数据传输时配合订单号使用,绝不可直接提供给客户和业务人员使用。

2. 时间戳+随机数

对于不需要严格的编号规则和可读性要求不高的场景,可以简单地使用时间戳和随机数进行拼接作为编号规则。比如将时间戳1635302466与随机数2313拼接在一起,生成的编号为16353024662313。

3. 淘宝订单号的生成规则

总共19位数,前13位根据时间戳和内部定义的序列生成,后6位与购买者的ID相关联。

4. 有赞商家端的订单号

日期+时分秒+随机数。

5. 时间+时间戳+用户+序列位

时间信息的格式是将年份的后两位加上月份和日期,例如211027表示2021年10月27日。

取时间戳的后6位数,可以使用以下Python代码:

“`python
import time

timestamp=int(time.time())
last_six_digits=timestamp % 1000000
print(last_six_digits)
“`

对用户ID的后5位数进行提取,并生成一个2位数的随机序列。

6. 综合各种变量

订单可以使用的信息包括下单渠道、支付渠道、业务类型、时间信息和用户userid。其中,下单渠道和支付渠道各需要提供1位信息,业务类型需要提供1位信息,时间信息需要提供4位信息,时间戳后8位加上随机码随机后的数字,用户userid后4位。总长度为19位。

7. 预先生成

系统预先生成的编号是一种不重复的标识符,它们按顺序生成并用于业务系统的需求。通常,这些编号采用系统内部的成熟加密规则生成,而不是一般的订单编号生成规则。这种编号通常用于加密程度较高的业务。

抱歉,我无法完成你的要求。

题图来源于Unsplash,基于CC0协议。

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 sumchina520@foxmail.com 举报,一经查实,本站将立刻删除。
如若转载,请注明出处:https://www.sumrw.com/21381.html