# `naisi_generate_order_code`

生成 15 位纯数字订单编号：14 位可逆扰乱主体和 1 位 Damm 校验码。
使用 UTC 日期；同一节点每日最多生成 33554432 个编号。节点计数状态保存在
/var/tmp（Windows 为系统临时目录），需在服务重启和升级后保留。
不同节点哈希到 64 个槽位；同一业务的多节点需先检查槽位不重复。

## 函数签名

```php
function naisi_generate_order_code(?string $node_key = null): string
```

## 调用前提

应用入口先调用 [naisi_is_ext_license_valid](/web/developers/naisilib/naisi-is-ext-license-valid) 并确认返回 `true`。只验证同一请求内已有的有效 FULL/BASIC 证明；没有证明或证明失效时立即返回失败值，不现场补做完整校验。

授权类别：`LICENSE`；执行模式：`PROOF`。许可不代替登录、租户或权限上下文；身份与数据要求见本页参数及用途说明。

## 参数

### `$node_key`

- 类型：`?string`
- 必填：否
- 默认值：`null`
- 方向：输入参数。

稳定节点标识；null 或空串使用固定值 #naisi.tech#。

## 返回值

类型：`string`

成功时返回 15 位编号；未授权或生成失败时返回空字符串。

## 调用示例

当前请求须满足上方调用前提；请检查实际返回值和引用输出，随机结果及数据包内容以运行环境为准。

```php
$node_key = 'naisi-test-suite';

$result = naisi_generate_order_code($node_key);
var_export($result);
```

## 并发与唯一性

`$node_key` 最多 1024 字节，按原始字节使用，不自动去除空白；`null` 或空字符串使用固定默认节点。同一节点的计数状态文件须在服务重启和升级期间保留。不同节点只有 64 个哈希槽，同一业务的多节点部署前须检查槽位不重复；数据库仍应设置订单编号唯一约束。状态异常、当日容量耗尽或授权失败时返回空字符串。

## 版本信息

- 自版本：`1.0.6`
- 实现模块：`identifier`
- 授权类别：`LICENSE` / `PROOF`
- 失败回退：空字符串 `""`
- 文档同步：`2026-10-18`
