【问题标题】:Need to create and send a unique id with each request需要为每个请求创建并发送一个唯一的 id
【发布时间】:2014-08-22 09:30:17
【问题描述】:

我正在我的网站上集成支付网关 (CCavenue),并且需要在每个请求中发送一个唯一的订单 ID。

这里是示例代码

<form method="post" name="" action="">

<tr>

<td><input type="hidden" name="order_id" value=""/></td> //This must be a unique Id created on your website
</tr>

<tr>
<td><input type="hidden" name="amount" value=""/></td>
</tr>


<td><INPUT TYPE="submit" value="Paynow"></td>
</form>   

谁能告诉我如何使用数据库或任何其他方式来实现这一点。我的虚拟主机支持 php。

【问题讨论】:

  • 你到底需要什么?

标签: php sql ccavenue


【解决方案1】:

您可以使用 jquery 创建自动代码

$(document).ready(function()
                    {
                        var code = "";
                        var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

                        for( var i=0; i < 6; i++ )
                            code += possible.charAt(Math.floor(Math.random() * possible.length));
                       $("#order_id").val(code);
                    });

使用 PHP::

<input type="hidden" name="order_id" value="<?php echo md5(uniqid(rand()));?>"/>

上面的例子会给出一个长字符串

如果您需要六位数字,您可以按照以下示例进行操作。您可以根据需要更改示例

$six_digit_random_number = mt_rand(100000, 999999);

既然都没有。 100000 到 999999 之间是六位数。

您也可以按照以下方式进行

string uniqid ([ string $prefix [, bool $more_entropy ]] )

根据当前时间(以微秒为单位)获取带前缀的唯一标识符。

USAGE: $id = uniqid(rand(), true);

【讨论】:

  • 看,人们非常渴望在每一个错误的问题或错误的答案上给出否定的分数,但他们对一个好的问题放弃投票感到厌倦
【解决方案2】:

Put microtime 对于唯一 id 每次都是唯一的:

<form method="post" name="" action="">

  <tr>
    <td><input type="hidden" name="order_id" value="<?php echo microtime(true)*10000; ?>"/></td> //This must be a unique Id created on your website
  </tr>

  <tr>
    <td><input type="hidden" name="amount" value=""/></td>
  </tr>

  <td><INPUT TYPE="submit" value="Paynow"></td>
</form>   

【讨论】:

  • 嗨维克拉姆,感谢您的及时回复。实际上,当我插入此 php 代码时,它给了我错误“错误代码:113 无效请求 - 订单号无效/不存在”
  • 当你遇到错误时:意味着在数据库或任何其他地方插入/更新记录?
  • 我没有太多的编码知识,如果我错了,请纠正我。让我告诉你整个screnio。我从 CCavenue 获得了集成工具包中的四个文件。这包括 Requesthandler.php、Respondhandler.php、Crypto.php 和 DataFrom.html。因此,我们需要在最后一个文件中插入订单 ID。他们希望我为每个请求发送一个唯一的订单 ID。我目前没有维护任何数据库,我的网站完全基于 HTML 和 CSS。
【解决方案3】:
  1. 将订单保存到数据库中(在数据库中订单必须有PK)
  2. 获取 PK(是否使用 AJAX)并将其插入选项值中

这是最佳实践

【讨论】:

  • 感谢 Viktor,如果可能,请告诉我如何将主键插入选项值。相同的脚本将是什么。我对 AJAX 或 PHP 没有任何了解。
【解决方案4】:

您可以创建一个带有自动添加键的表,并且您可以将该 ID 传递给支付网关。

或者在其他情况下,您可以在 PHP 中生成唯一的 Id

检查以下链接以生成唯一 ID

Generating a unique ID in PHP

如果您在付款后需要该 ID,您可以在会话中保持此 ID 以处理来自支付网关的响应。

【讨论】:

  • 感谢 Vijay,我在使用 PHP 创建唯一订单 ID 时遇到错误“请求无效 - 订单号无效/不存在”。你能告诉我如何将增量键值从表传递到选项值。
  • @Devkaushik ,您在表单发布之前需要这个增量键值吗?在那种情况下它可以是和 OrderId 键值,你是如何创建 orderId 的?是表的自增键值吗,可以用同一个ID
【解决方案5】:
<?php
$order_id = "ID" . (string)rand(100000, 999999);  // you can change 'ID' to anything
?>

<form method="post" name="" action="">

<tr>

<td><input type="hidden" name="order_id" value=<?php echo $order_id; ?>/></td> 
</tr>

<tr>
<td><input type="hidden" name="amount" value=""/></td>
</tr>


<td><INPUT TYPE="submit" value="Paynow"></td>
</form>   

【讨论】:

    【解决方案6】:

    PHP 有函数 uniquid 可以满足您的需要。

    【讨论】:

      【解决方案7】:

      使用您的原始订单号(自动递增 ID)和字段 order_id LIKE order_no is 87644 take id CCA87644 [此指示是订单号 87644 由 CCavenue 付款]

      <input type="hidden" name="order_id" value=""/>
      

      此 ID 将是唯一的,这将有助于您将来进行订单跟踪。其他一些其他的帖子有如何创建一个唯一的ID。

      唯一标识应按从低到高的顺序排列。这将有助于支付管理和支付管理

      【讨论】:

        【解决方案8】:

        我总是使用下单日期和 ORDER_ID 的组合,它是 ORDERprimary_key 字段强>表。

        因此,如果有人在 2014 年 7 月 10 日下订单,并且该特定订单的 ORDER_ID 是“20”,那么唯一的 order_id 将是“2014071020”。无论环境如何,它总是独一无二的。

        如果您的表中没有任何 primary_key 字段,则可以使用 PHP 的 time() 函数生成一个唯一标识。

        如果您需要任何与此相关的编程帮助,请告诉我。

        问候。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-03-06
          • 2019-06-14
          • 1970-01-01
          • 2019-10-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多