我贴一个我们生产环境上的生成订单号的代码给楼主看看吧,可以照着这个模式改造下
/**
* 生成第三方支付的外部订单号
*/
public static function generateOutTradeNo($paidScene = Constant::PAID_SCENE_SEMINAR_ORDER){
$prefix = date('YmdHis');
$paidSceneMap = self::getPaidSceneMapping();
$scene = formatArrValue($paidSceneMap,$paidScene,'0001');
$suffix = generateRandomNum(10);
return $prefix.$scene.$suffix;
}
/**
* 获取支付场景的map,这个是为了区分不同的支付场景时候更新不同的业务字段,为了拓展进行的预留
*/
public static function getPaidSceneMapping(){
return [
Constant::PAID_SCENE_SEMINAR_ORDER => '0001',
Constant::PAID_SCENE_SHOP_GOODS_ORDER => '0002'
];
}
/**
* 说明: 随机串算法
* 输出参数: String
*/
function generateRandomNum($len=8){
$minArr = [];
$maxArr = [];
for($i=0;$i
$min = $i == $len -1 ? 1 : 0;
array_push($minArr,$min);
$max = 9;
array_push($maxArr,$max);
}
$minLimit = implode('',$minArr);
$maxLimit = implode('',$maxArr);
$num = mt_rand($minLimit,$maxLimit);
return $num;
}