我正在开发一个购物车和一个本地支付网关,它要求每笔交易都具有唯一的订单 ID。这个 id 应该根据订单详细信息保存在数据库中,并作为变量发送到支付网关。我的困境是如何生成唯一 id 以及如何在将我的变量发送到网关之前保存它,以便我可以在从网关的 IPN 收到响应时检查它是否匹配。有问题的变量如下所示:
$reference = $_POST['reference'];//unique order id of the transaction, generated by merchant
Run Code Online (Sandbox Code Playgroud)
这是我用来生成随机密钥的方法,即使它有点长,您也可以获得唯一的随机密钥。
$id.time().uniqid(mt_rand(),true)
Run Code Online (Sandbox Code Playgroud)
uniqid() - 这将生成 13 个字符的 uniqid
mt_rand() - 使用 Mersenne Twister 算法生成随机数,比 rand() 快 4 倍
uniqid(mt_rand()) - 在随机生成数字前加上 uniqueid
uniqid(mt_rand(), true) - 为了获得更强的随机性,我通过将第二个参数设置为“true”来启用 uniqid 的熵
$id.time().uniqid(mt_rand(), true) - 这里 $id 可以是 userid、productid 或任何你想要选择的 id,time() 将生成当前的 unix 时间戳,最后我将附加我的 uniqid (……)