申通淘宝单号开头数字(申通快递单号生成规则详解)

订单号就是您在购物网站购物后获得的订单号,记录的是购物订单信息。在您需要与购物网站进行订单查询等操作时,需要给购物网站提供商家订单号。【来自百度百科】

软件开发中我们经常会遇到生成订单号的业务逻辑来记录用户下单、物流、发票、支付、结算等信息。生成订单号的方式多种多样。大部分会参考业务需求来设计生成方式,但订单号的生成规则大同小异相差不大。下面给大家总结介绍几种订单号的生成规则以供参考。

1、随机数方法。

function gen_order_rand() {
	$strTime 	= str_pad(str_replace(".", "", microtime(true)), 14, "0", STR_PAD_RIGHT);
	$strRand	= strval(mt_rand(10000, 99999));
	return $strTime . $strRand;
}

var_dump(gen_order_rand());
运行结果:
string(19) "1648171258258353703"

2、随机数+uid方法

function gen_order_uid_rand($uid) {
	$strUid		= str_pad(substr(strval($uid), -5), 5, "0", STR_PAD_RIGHT);
	$strTime	= date('ymdHis');
	$strRand	= strval(mt_rand(1000, 9999));
	return $strUid . $strTime . $strRand;
}

$intUid = 1234567890;
var_dump(gen_order_uid_rand($intUid));
运行结果:
string(21) "678902203250120587473"

3、uniqid+crc64方法

function crc64Table()
{
    $crc64tab = [];

    // ECMA polynomial
    $poly64rev = (0xC96C5795 << 32) | 0xD7870F42;

    // ISO polynomial
    // $poly64rev = (0xD8 << 56);

    for ($i = 0; $i < 256; $i++)
    {
        for ($part = $i, $bit = 0; $bit < 8; $bit++) {
            if ($part & 1) {
                $part = (($part >> 1) & ~(0x8 << 60)) ^ $poly64rev;
            } else {
                $part = ($part >> 1) & ~(0x8 << 60);
            }
        }

       $crc64tab[$i] = $part;
    }

    return $crc64tab;
}

/**
* @param string $string
* @param string $format
* @return mixed
*
* Formats:
*  crc64('php'); // afe4e823e7cef190
*  crc64('php', '0x%x'); // 0xafe4e823e7cef190
*  crc64('php', '0x%X'); // 0xAFE4E823E7CEF190
*  crc64('php', '%d'); // -5772233581471534704 signed int
*  crc64('php', '%u'); // 12674510492238016912 unsigned int
*/
function crc64($string, $format = '%x')
{
    static $crc64tab;

    if ($crc64tab === null) {
        $crc64tab = crc64Table();
    }

    $crc = 0;

    for ($i = 0; $i < strlen($string); $i++) {
        $crc = $crc64tab[($crc ^ ord($string[$i])) & 0xff] ^ (($crc >> 8) & ~(0xff << 56));
    }

    return sprintf($format, $crc);
}

//uniqid方法
function gen_order_uuid() {
	$strUuid	= crc64(uniqid(), '%u');
	return $strUuid;
}

var_dump(gen_order_uuid());
运行结果:
string(19) "2559207576599622011"

4、随机字符串+crc64方法

function crc64Table()
{
    $crc64tab = [];

    // ECMA polynomial
    $poly64rev = (0xC96C5795 << 32) | 0xD7870F42;

    // ISO polynomial
    // $poly64rev = (0xD8 << 56);

    for ($i = 0; $i < 256; $i++)
    {
        for ($part = $i, $bit = 0; $bit < 8; $bit++) {
            if ($part & 1) {
                $part = (($part >> 1) & ~(0x8 << 60)) ^ $poly64rev;
            } else {
                $part = ($part >> 1) & ~(0x8 << 60);
            }
        }

       $crc64tab[$i] = $part;
    }

    return $crc64tab;
}

/**
* @param string $string
* @param string $format
* @return mixed
*
* Formats:
*  crc64('php'); // afe4e823e7cef190
*  crc64('php', '0x%x'); // 0xafe4e823e7cef190
*  crc64('php', '0x%X'); // 0xAFE4E823E7CEF190
*  crc64('php', '%d'); // -5772233581471534704 signed int
*  crc64('php', '%u'); // 12674510492238016912 unsigned int
*/
function crc64($string, $format = '%x')
{
    static $crc64tab;

    if ($crc64tab === null) {
        $crc64tab = crc64Table();
    }

    $crc = 0;

    for ($i = 0; $i < strlen($string); $i++) {
        $crc = $crc64tab[($crc ^ ord($string[$i])) & 0xff] ^ (($crc >> 8) & ~(0xff << 56));
    }

    return sprintf($format, $crc);
}
//随机字符串+crc64方法
function gen_order_randchar() {
	$strChar	= "QWERTYUIOPASDFGHJKLZXCVBNM1234567890qwertyuiopasdfghjklzxcvbnm";
	$strRandChar	= substr(str_shuffle($strChar), mt_rand(0, strlen($strChar) - 11), 16);
	$strRandChar	= crc64($strRandChar, '%u');
	return $strRandChar;
}

var_dump(gen_order_randchar());
运行结果:
string(20) "15531636943001169826"

5、Twitter SnowFlake算法方法

composer require youthage/snowflake

require_once 'vendor/autoload.php';

use Ysnowflake\Snowflake;

function gen_order_snowflake() {
	$objSnowflake = new Snowflake();
	return $objSnowflake->nextId();
}

var_dump(gen_order_snowflake());
运行结果:
int(434087018926964736)

感谢大家评论、点赞、分享

声明:本文由网站用户香香发表,超梦电商平台仅提供信息存储服务,版权归原作者所有。若发现本站文章存在版权问题,如发现文章、图片等侵权行为,请联系我们删除。

(0)
上一篇 2023年5月12日 09:04:15
下一篇 2023年5月12日 09:14:18

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注