9

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

01b335或者
a0a243

但是没有key人明白这个保护代码是什么意思。是否有解释这些代码的含义以及它们是如何生成的?

4

1 回答 1

27

它是在哪里生成的?

如果您查看app/code/core/Mage/Sales/Model/Order.phparound line 2052,您会发现以下内容:

$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 值。

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

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

于 2013-09-24T16:31:36.113 回答