我们正在研究magento数据库和表。 Magento似乎在表sales_flat_order字段protect_code中编写了一个代码,以定义是否已完成发票或装运。它看起来像
01b335a0a243
但是没有key可以理解此保护代码的含义。是否对这些代码的含义及其产生方式进行了解释?

最佳答案

它在哪里产生?

如果您在app/code/core/Mage/Sales/Model/Order.php行附近查看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,以确保正在加载的订单对于 guest 的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匹配。

10-07 16:16