Trọng lượng và giá trị vận chuyển của FedEx không được thiết lập trong khi tạo đơn hàng theo chương trình


12

Tôi đang cố gắng tạo đơn hàng theo chương trình bằng phương thức vận chuyển của FedEx. Các phương pháp khác đang hoạt động tốt. Khi tôi đặt FedEx nhận được lỗi như xin vui lòng chỉ định phương thức giao hàng. Sau khi gỡ lỗi tôi biết trọng lượng và giá trị bằng 0 nhưng tôi đã đề cập đến trọng lượng và giá trị sản phẩm.

Mã số:

Tạo.php

<?php
namespace yourmodule\namespace\Helper;
class Create extends \Magento\Framework\App\Helper\AbstractHelper
{
     /**
    * @param Magento\Framework\App\Helper\Context $context
    * @param Magento\Store\Model\StoreManagerInterface $storeManager
    * @param Magento\Catalog\Model\Product $product
    * @param Magento\Framework\Data\Form\FormKey $formKey $formkey,
    * @param Magento\Quote\Model\Quote $quote,
    * @param Magento\Customer\Model\CustomerFactory $customerFactory,
    * @param Magento\Sales\Model\Service\OrderService $orderService,
    */
    public function __construct(
        \Magento\Framework\App\Helper\Context $context,
        \Magento\Store\Model\StoreManagerInterface $storeManager,
        \Magento\Catalog\Model\Product $product,
        \Magento\Framework\Data\Form\FormKey $formkey,
        \Magento\Quote\Model\QuoteFactory $quote,
        \Magento\Quote\Model\QuoteManagement $quoteManagement,
        \Magento\Customer\Model\CustomerFactory $customerFactory,
        \Magento\Customer\Api\CustomerRepositoryInterface $customerRepository,
        \Magento\Sales\Model\Service\OrderService $orderService,
        \Magento\Quote\Model\Quote\Address\Rate $shippingRate
    ) {
        $this->_storeManager = $storeManager;
        $this->_product = $product;
        $this->_formkey = $formkey;
        $this->quote = $quote;
        $this->quoteManagement = $quoteManagement;
        $this->customerFactory = $customerFactory;
        $this->customerRepository = $customerRepository;
        $this->orderService = $orderService;
        $this->shippingRate = $shippingRate;
        parent::__construct($context);
    }

    /**
     * Create Order On Your Store
     * 
     * @param array $orderData
     * @return array
     * 
    */
    public function createMageOrder($orderData) {
        $store=$this->_storeManager->getStore();
        $websiteId = $this->_storeManager->getStore()->getWebsiteId();
        $customer=$this->customerFactory->create();
        $customer->setWebsiteId($websiteId);
        $customer->loadByEmail($orderData['email']);// load customet by email address
        if(!$customer->getEntityId()){
            //If not avilable then create this customer 
            $customer->setWebsiteId($websiteId)
                    ->setStore($store)
                    ->setFirstname($orderData['shipping_address']['firstname'])
                    ->setLastname($orderData['shipping_address']['lastname'])
                    ->setEmail($orderData['email']) 
                    ->setPassword($orderData['email']);
            $customer->save();
        }
        $quote=$this->quote->create(); //Create object of quote
        $quote->setStore($store); //set store for which you create quote
        // if you have allready buyer id then you can load customer directly 
        $customer= $this->customerRepository->getById($customer->getEntityId());
        $quote->setCurrency();
        $quote->assignCustomer($customer); //Assign quote to customer

        //add items in quote
        foreach($orderData['items'] as $item){
            $product=$this->_product->load($item['product_id']);
            //$product->setPrice($item['price']);
             $product->setWeight(20);
            $quote->addProduct(
                $product,
                intval($item['qty'])
            );
        }

        //Set Address to quote
        $quote->getBillingAddress()->addData($orderData['shipping_address']);
        $quote->getShippingAddress()->addData($orderData['shipping_address']);

        // Collect Rates and Set Shipping & Payment Method

        $shippingAddress=$quote->getShippingAddress();

        /*$shippingAddress->setCollectShippingRates(true)
                        ->collectShippingRates()
                        ->setShippingMethod('fedex_FEDEX_GROUND'); //shipping method

        */
        //$this->shippingRate
          //  ->setCode('fedex_FEDEX_GROUND');
            //->getPrice(1);
        //$shippingAddress = $cart->getShippingAddress();
        //@todo set in order data
        $shippingAddress->setCollectShippingRates(true)
            ->collectShippingRates()
            ->setShippingMethod('fedex_FEDEX_GROUND'); //shipping method
        //$quote->getShippingAddress()->addShippingRate($this->shippingRate);       
        $quote->setPaymentMethod('checkmo'); //payment method
        $quote->setInventoryProcessed(false); //not effetc inventory
        $quote->save(); //Now Save quote and your quote is ready

        // Set Sales Order Payment
        $quote->getPayment()->importData(['method' => 'checkmo']);

        // Collect Totals & Save Quote
        $quote->collectTotals()->save();

        // Create Order From Quote
        $order = $this->quoteManagement->submit($quote);

        $order->setEmailSent(0);
        $increment_id = $order->getRealOrderId();
        if($order->getEntityId()){
            $result['order_id']= $order->getRealOrderId();
        }else{
            $result=['error'=>1,'msg'=>'Your custom message'];
        }
        return $result;
    }
}

Nhật ký gỡ lỗi FedEx:

array (
  'request' => 
  array (
    'WebAuthenticationDetail' => 
    array (
      'UserCredential' => 
      array (
        'Key' => '****',
        'Password' => '****',
      ),
    ),
    'ClientDetail' => 
    array (
      'AccountNumber' => 'XXXXXX',
      'MeterNumber' => '****',
    ),
    'Version' => 
    array (
      'ServiceId' => 'crs',
      'Major' => '10',
      'Intermediate' => '0',
      'Minor' => '0',
    ),
    'RequestedShipment' => 
    array (
      'DropoffType' => 'REGULAR_PICKUP',
      'ShipTimestamp' => '2017-06-27T06:09:23+00:00',
      'PackagingType' => 'YOUR_PACKAGING',
      'TotalInsuredValue' => 
      array (
        'Amount' => 0,
        'Currency' => 'USD',
      ),
      'Shipper' => 
      array (
        'Address' => 
        array (
          'PostalCode' => '90034',
          'CountryCode' => 'US',
        ),
      ),
      'Recipient' => 
      array (
        'Address' => 
        array (
          'PostalCode' => '11701',
          'CountryCode' => 'US',
          'Residential' => false,
          'City' => 'Ave Forest Hills',
        ),
      ),
      'ShippingChargesPayment' => 
      array (
        'PaymentType' => 'SENDER',
        'Payor' => 
        array (
          'AccountNumber' => 'XXXXX',
          'CountryCode' => 'US',
        ),
      ),
      'CustomsClearanceDetail' => 
      array (
        'CustomsValue' => 
        array (
          'Amount' => 0,
          'Currency' => 'USD',
        ),
      ),
      'RateRequestTypes' => 'LIST',
      'PackageCount' => '1',
      'PackageDetail' => 'INDIVIDUAL_PACKAGES',
      'RequestedPackageLineItems' => 
      array (
        0 => 
        array (
          'Weight' => 
          array (
            'Value' => 0.0,
            'Units' => 'LB',
          ),
          'GroupPackageCount' => 1,
        ),
      ),
      'ServiceType' => 'SMART_POST',
      'SmartPostDetail' => 
      array (
        'Indicia' => 'PRESORTED_STANDARD',
        'HubId' => NULL,
      ),
    ),
  ),
  'result' => 
  stdClass::__set_state(array(
     'HighestSeverity' => 'ERROR',
     'Notifications' => 
    stdClass::__set_state(array(
       'Severity' => 'ERROR',
       'Source' => 'crs',
       'Code' => '809',
       'Message' => 'Package 1 - Weight is missing or invalid. ',
       'LocalizedMessage' => 'Package 1 - Weight is missing or invalid. ',
       'MessageParameters' => 
      stdClass::__set_state(array(
         'Id' => 'PACKAGE_INDEX',
         'Value' => '1',
      )),
    )),
     'Version' => 
    stdClass::__set_state(array(
       'ServiceId' => 'crs',
       'Major' => 10,
       'Intermediate' => 0,
       'Minor' => 0,
    )),
  )),
) {"is_exception":false} []

OrderData:

$orderData = [
     'email'        => 'ram10test@gmail.com', //buyer email id
     'shipping_address' =>[
            'firstname'    => 'Ramki ', //address Details
            'lastname'     => 'ram',
                    'street' => '10119 Ascan Ave Forest Hills',
                    'city' => 'Ave Forest Hills',
            'country_id' => 'US',
            'region' => '43',
            'postcode' => '11701',
            'telephone' => 'XXXX',
            'fax' => '32423',
            'save_in_address_book' => 1
                 ],
   'items'=> [ //array of product which order you want to create
              ['product_id'=>'2','qty'=>1]
            ]
];

Xin hãy giúp tôi về điều này Tôi đã thử mức giá cố định và giao hàng miễn phí, nó hoạt động nhưng FedEx không hoạt động.


1
bạn đã đặt trọng lượng trong một sản phẩm hoàn hảo nhưng bạn chưa đặt bất kỳ trọng lượng gói báo giá nào -check
Mudit-cedc Commerce

Bạn đã kiểm tra giá trị trọng lượng sản phẩm đã được lưu trong cơ sở dữ liệu?
Anas Mansuri

Câu trả lời:


0

Chuyển đến danh mục, chọn sản phẩm và thêm trọng lượng trong trường thuộc tính trọng lượng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.