/** * @param RateRequest $request * @return \Magento\Shipping\Model\Rate\Result|bool */ public function collectRates(RateRequest $request) { if (!$this->getConfigFlag('active')) { return false; } #print_r(get_class_methods($request)); $info = array('city' => $request->getDestCity(), 'company' => $request->getDestCompany(), 'country_id' => $request->getDestCountryId(), 'firstname' => $request->getDestFirstname(), 'lastname' => $request->getDestLastname(), 'postcode' => $request->getDestPostcode(), 'region' => $request->getDestRegion(), 'region_code' => $request->getDestRegionCode(), 'region_id' => $request->getDestRegionId(), 'street' => $request->getDestStreet(), 'telphone' => $request->getDestTelphone()); #$this->_logger->addDebug('$info'); $this->_logger->log(100, print_r($info, true)); $quoteArr = null; foreach ($request->getAllItems() as $item) { $quoteArr['item_id'] = $item->getitem_id(); $quoteArr['quote_id'] = $item->getquote_id(); $quoteArr['product_id'] = $item->getproduct_id(); $quoteArr['parent_item_id'] = $item->getparent_item_id(); $quoteArr['is_virtual'] = $item->getis_virtual(); $quoteArr['sku'] = $item->getsku(); $quoteArr['name'] = $item->getname(); $quoteArr['qty'] = $item->getqty(); $quoteArr['weight'] = $item->getweight(); $quoteArr['price'] = $item->getprice(); $quoteArr['base_price'] = $item->getbase_price(); $quoteArr['custom_price'] = $item->getcustom_price(); $quoteArr['discount_percent'] = $item->getdiscount_percent(); $quoteArr['discount_amount'] = $item->getdiscount_amount(); } #$this->_logger->addDebug('测试'); $this->_logger->log(100, print_r($quoteArr, true)); /** @var \Magento\Shipping\Model\Rate\Result $result */ $result = $this->_rateResultFactory->create(); $shippingPrice = $this->getConfigData('price'); $method = $this->_rateMethodFactory->create(); $method->setCarrier($this->_code); $method->setCarrierTitle($this->getConfigData('title')); $method->setMethod($this->_code); $method->setMethodTitle($this->getConfigData('name')); $method->setPrice($shippingPrice); $method->setCost($shippingPrice); $result->append($method); return $result; }