我们正在研究magento数据库和表。 Magento似乎在表sales_flat_order
字段protect_code
中编写了一个代码,以定义是否已完成发票或装运。它看起来像01b335
或a0a243
但是没有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
匹配。