我现在正在为获得的商品获取唯一的订单号。
问题是我在快速支付时有支付网关,然后出现并说:" 字段错误:订单号"
我试过这样做:
$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;
答案 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时间戳,然后在最后添加一些额外的字符。