【问题标题】:magento table "sales_flat_order" field "protect_code" explanationmagento 表“sales_flat_order”字段“protect_code”解释
【发布时间】:2013-09-24 15:46:41
【问题描述】:

我们正在开发 magento 数据库和表。 Magento 似乎在表sales_flat_order 字段protect_code 中编写了一个代码来定义是否已经完成了发票或装运。它看起来像

01b335
a0a243

但是没有key 可以理解这个保护代码的含义。有没有解释这些代码的含义以及它们是如何产生的?

【问题讨论】:

    标签: mysql database magento


    【解决方案1】:

    在哪里生成?

    如果您在2052 附近的行中查看app/code/core/Mage/Sales/Model/Order.php,您会发现以下内容:

    $this->setData('protect_code', substr(md5(uniqid(mt_rand(), true) . ':' . microtime(true)), 5, 6));
    

    这是为订单生成protect_code 的地方(使用 md5、uniqid 和随机整数的组合。

    它是做什么用的?

    如果您查看 app/code/core/Mage/Sales/Helper/Guest.php 并找到 loadValidOrder 函数。您会看到protect_code 在某些区域使用,以确保加载的订单与客人的 cookie 值正确。

    它还用于其他领域,例如跟踪信息比较。您可以看到在 Shipment 模型中调用 getProtectCode() 方法的几个实例,以将订单与跟踪信息进行比较。一个使用它的函数的例子是:

    public function getTrackingInfoByTrackId()
    {
        $track = Mage::getModel('sales/order_shipment_track')->load($this->getTrackId());
        if ($track->getId() && $this->getProtectCode() == $track->getProtectCode()) {
            $this->_trackingInfo = array(array($track->getNumberDetail()));
        }
        return $this->_trackingInfo;
    }
    

    正如您在 $this->getProtectCode() == $track->getProtectCode() 中看到的那样,跟踪 protect_code 必须与 Shipment protect_code 匹配。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-23
      • 1970-01-01
      • 2016-07-02
      • 2018-06-19
      相关资源
      最近更新 更多