Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace yourmodulenamespaceHelper;
- class Create extends MagentoFrameworkAppHelperAbstractHelper
- {
- /**
- * @param MagentoFrameworkAppHelperContext $context
- * @param MagentoStoreModelStoreManagerInterface $storeManager
- * @param MagentoCatalogModelProduct $product
- * @param MagentoFrameworkDataFormFormKey $formKey $formkey,
- * @param MagentoQuoteModelQuote $quote,
- * @param MagentoCustomerModelCustomerFactory $customerFactory,
- * @param MagentoSalesModelServiceOrderService $orderService,
- */
- public function __construct(
- MagentoFrameworkAppHelperContext $context,
- MagentoStoreModelStoreManagerInterface $storeManager,
- MagentoCatalogModelProduct $product,
- MagentoFrameworkDataFormFormKey $formkey,
- MagentoQuoteModelQuoteFactory $quote,
- MagentoQuoteModelQuoteManagement $quoteManagement,
- MagentoCustomerModelCustomerFactory $customerFactory,
- MagentoCustomerApiCustomerRepositoryInterface $customerRepository,
- MagentoSalesModelServiceOrderService $orderService,
- MagentoQuoteModelQuoteAddressRate $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;
- }
- }
- 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 = [
- '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]
- ]
- ];
Add Comment
Please, Sign In to add comment