创建一个唯一的随机数作为订单ID

时间:2014-10-05 12:40:09

标签: php

我现在正在为获得的商品获取唯一的订单号。

问题是我在快速支付时有支付网关,然后出现并说:" 字段错误:订单号"

我试过这样做:

$idag = date("dmY");
    $a = substr(str_shuffle('abcdefghijklmnopqrstuvwxyz@!*_-?>/+,ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'), 0, 4);
    $total = $idag . $a;


    $sql = "SELECT pakker.pris FROM pakker WHERE pakker.id = 3";
    if ($stmt = $this->mysqli->prepare($sql)) { 
        $stmt->execute();
        $stmt->bind_result($pris);
        while ($stmt->fetch()) {
            $protocol = '7';
            $msgtype = 'authorize';
            $merchant = '89898978';
            $language = 'da';
            $ordernumber = $total;// here must order number came up.

我也试过这样做。

$idag = date("dmY");
        $rand = strtoupper(substr(uniqid(sha1(time())), 0,8));
        $a = substr(str_shuffle('abcdefghijklmnopqrstuvwxyz@!*_-?>/+,ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'), 0, 4);
        $total = $idag . $a . $rand;

1 个答案:

答案 0 :(得分:1)

来自[Quickpay的API文档]:

  

<强> ORDERNUMBER

     

/^[a-zA-Z0-9]{4,20}$/

     

商家自己选择的价值。每笔交易必须是唯一的。通常是递增序列。该值可能会反映在您的银行帐户列表中。

您需要更改随机订单ID生成器以排除任何非字母数字字符。

$idag = date("dmY");
$a = substr(str_shuffle('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'), 0, 4);
$total = $idag . $a;

如果我是你,我会使用unix时间戳,然后在最后添加一些额外的字符。