public function startTransaction(Order $order, UrlInterface $url)
 {
     $config = new Config($this->_scopeConfig);
     $config->configureSDK();
     $total = $order->getGrandTotal();
     $items = $order->getAllVisibleItems();
     $orderId = $order->getIncrementId();
     $quoteId = $order->getQuoteId();
     $currency = $order->getOrderCurrencyCode();
     $returnUrl = $url->getUrl('paynl/checkout/finish/');
     $exchangeUrl = $url->getUrl('paynl/checkout/exchange/');
     $paymentOptionId = $this->getPaymentOptionId();
     $arrBillingAddress = $order->getBillingAddress()->toArray();
     $arrShippingAddress = $order->getShippingAddress()->toArray();
     $enduser = array('initials' => substr($arrBillingAddress['firstname'], 0, 1), 'lastName' => $arrBillingAddress['lastname'], 'phoneNumber' => $arrBillingAddress['telephone'], 'emailAddress' => $arrBillingAddress['email']);
     $address = array();
     $arrAddress = \Paynl\Helper::splitAddress($arrBillingAddress['street']);
     $address['streetName'] = $arrAddress[0];
     $address['houseNumber'] = $arrAddress[1];
     $address['zipCode'] = $arrBillingAddress['postcode'];
     $address['city'] = $arrBillingAddress['city'];
     $address['country'] = $arrBillingAddress['country_id'];
     $shippingAddress = array();
     $arrAddress2 = \Paynl\Helper::splitAddress($arrShippingAddress['street']);
     $shippingAddress['streetName'] = $arrAddress2[0];
     $shippingAddress['houseNumber'] = $arrAddress2[1];
     $shippingAddress['zipCode'] = $arrShippingAddress['postcode'];
     $shippingAddress['city'] = $arrShippingAddress['city'];
     $shippingAddress['country'] = $arrShippingAddress['country_id'];
     $data = array('amount' => $total, 'returnUrl' => $returnUrl, 'paymentMethod' => $paymentOptionId, 'description' => $orderId, 'extra1' => $orderId, 'extra2' => $quoteId, 'exchangeUrl' => $exchangeUrl, 'currency' => $currency);
     $data['address'] = $address;
     $data['shippingAddress'] = $shippingAddress;
     $data['enduser'] = $enduser;
     $arrProducts = array();
     foreach ($items as $item) {
         $arrItem = $item->toArray();
         if ($arrItem['price_incl_tax'] != null) {
             $product = array('id' => $arrItem['product_id'], 'name' => $arrItem['name'], 'price' => $arrItem['price_incl_tax'], 'qty' => $arrItem['qty_ordered'], 'tax' => $arrItem['tax_amount']);
         }
         $arrProducts[] = $product;
     }
     //shipping
     $shippingCost = $order->getShippingAddress()->getShippingInclTax();
     $shippingTax = $order->getShippingAddress()->getShippingTaxAmount();
     $shippingDescription = $order->getShippingAddress()->getShippingDescription();
     $arrProducts[] = array('id' => 'shipping', 'name' => $shippingDescription, 'price' => $shippingCost, 'qty' => 1, 'tax' => $shippingTax);
     // kortingen
     $discount = $order->getSubtotal() - $order->getSubtotalWithDiscount();
     if ($discount > 0) {
         $arrProducts[] = array('id' => 'discount', 'name' => __('Discount'), 'price' => $discount * -1, 'qty' => 1, 'tax' => 0);
     }
     $data['products'] = $arrProducts;
     if ($config->isTestMode()) {
         $data['testmode'] = 1;
     }
     $data['ipaddress'] = $order->getRemoteIp();
     $transaction = \Paynl\Transaction::start($data);
     return $transaction->getRedirectUrl();
 }
Example #2
0
 /**
  * @param $formFields
  * @return mixed
  */
 protected function setOpenInvoiceData($formFields)
 {
     $count = 0;
     $currency = $this->_order->getOrderCurrencyCode();
     foreach ($this->_order->getAllVisibleItems() as $item) {
         ++$count;
         $linename = "line" . $count;
         $formFields['openinvoicedata.' . $linename . '.currencyCode'] = $currency;
         $formFields['openinvoicedata.' . $linename . '.description'] = str_replace("\n", '', trim($item->getName()));
         $formFields['openinvoicedata.' . $linename . '.itemAmount'] = $this->_adyenHelper->formatAmount($item->getPrice(), $currency);
         $formFields['openinvoicedata.' . $linename . '.itemVatAmount'] = $item->getTaxAmount() > 0 && $item->getPriceInclTax() > 0 ? $this->_adyenHelper->formatAmount($item->getPriceInclTax(), $currency) - $this->_adyenHelper->formatAmount($item->getPrice(), $currency) : $this->_adyenHelper->formatAmount($item->getTaxAmount(), $currency);
         // $product = $item->getProduct();
         // Calculate vat percentage
         $percentageMinorUnits = $this->_adyenHelper->getMinorUnitTaxPercent($item->getTaxPercent());
         $formFields['openinvoicedata.' . $linename . '.itemVatPercentage'] = $percentageMinorUnits;
         $formFields['openinvoicedata.' . $linename . '.numberOfItems'] = (int) $item->getQtyOrdered();
         if ($this->_order->getPayment()->getAdditionalInformation(\Adyen\Payment\Observer\AdyenHppDataAssignObserver::BRAND_CODE) == "klarna") {
             $formFields['openinvoicedata.' . $linename . '.vatCategory'] = "High";
         } else {
             $formFields['openinvoicedata.' . $linename . '.vatCategory'] = "None";
         }
     }
     $formFields['openinvoicedata.refundDescription'] = "Refund / Correction for " . $formFields['merchantReference'];
     $formFields['openinvoicedata.numberOfLines'] = $count;
     return $formFields;
 }
Example #3
0
 /**
  * @param bool $isDeleted
  * @param int|null $parentItemId
  * @param array $result
  *
  * @dataProvider dataProviderGetAllVisibleItems
  */
 public function testGetAllVisibleItems($isDeleted, $parentItemId, array $result)
 {
     $this->item->expects($this->once())->method('isDeleted')->willReturn($isDeleted);
     $this->item->expects($this->any())->method('getParentItemId')->willReturn($parentItemId);
     if (!empty($result)) {
         $result = [$this->item];
     }
     $this->assertEquals($result, $this->order->getAllVisibleItems());
 }
Example #4
0
 /**
  * @param \Magento\Sales\Model\Order $order
  * @return array
  */
 public function getProductsData(\Magento\Sales\Model\Order $order)
 {
     /**
      * @var $orderItem \Magento\Sales\Api\Data\OrderItemInterface
      */
     $products = [];
     $orderItems = $order->getAllVisibleItems();
     foreach ($orderItems as $orderItem) {
         $products[] = ['name' => $orderItem->getName(), 'unitPrice' => $orderItem->getPriceInclTax() * 100, 'quantity' => (double) $orderItem->getQtyOrdered()];
     }
     return $products;
 }
Example #5
0
 /**
  * Generates a textual description of the applied discount rules
  *
  * @param Order $order
  * @return string discount description
  */
 protected function buildDiscountRuleDescription(Order $order)
 {
     try {
         $appliedRules = array();
         foreach ($order->getAllVisibleItems() as $item) {
             /* @var Item $item */
             $itemAppliedRules = $item->getAppliedRuleIds();
             if (empty($itemAppliedRules)) {
                 continue;
             }
             $ruleIds = explode(',', $item->getAppliedRuleIds());
             foreach ($ruleIds as $ruleId) {
                 $rule = $this->_salesRuleFactory->create()->load($ruleId);
                 $appliedRules[$ruleId] = $rule->getName();
             }
         }
         if (count($appliedRules) == 0) {
             $appliedRules[] = 'unknown rule';
         }
         $discountTxt = sprintf('Discount (%s)', implode(', ', $appliedRules));
     } catch (\Exception $e) {
         $discountTxt = 'Discount (error)';
     }
     return $discountTxt;
 }