/** * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer * @param \Generated\Shared\Transfer\CheckoutResponseTransfer $checkoutResponse * * @return void */ public function execute(QuoteTransfer $quoteTransfer, CheckoutResponseTransfer $checkoutResponse) { $resultCheck = new ZeroPaymentResultCheckTransfer(); $resultCheck->setFkSalesOrder($checkoutResponse->getSaveOrder()->getIdSalesOrder()); $resultCheckResponse = $this->getFacade()->checkPaymentResult($resultCheck); if ($resultCheckResponse->getIsSuccess() === false) { $checkoutResponse->addError($this->createCheckoutErrorTransfer($resultCheckResponse)); } }
/** * @param \Generated\Shared\Transfer\CheckoutResponseTransfer $checkoutResponseTransfer * * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException * * @return \Orm\Zed\Payolution\Persistence\SpyPaymentPayolutionTransactionStatusLog */ protected function getTransactionStatusLog(CheckoutResponseTransfer $checkoutResponseTransfer) { $transactionStatusLogQuery = $this->getQueryContainer()->queryTransactionStatusLogBySalesOrderId($checkoutResponseTransfer->getSaveOrder()->getIdSalesOrder()); $transactionStatusLogEntity = $transactionStatusLogQuery->findOne(); if ($transactionStatusLogEntity === null) { throw new NotFoundHttpException('TransactionStatusLog entity could not be found'); } return $transactionStatusLogEntity; }
/** * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer * @param \Generated\Shared\Transfer\CheckoutResponseTransfer $checkoutResponse * * @return void */ public function save(QuoteTransfer $quoteTransfer, CheckoutResponseTransfer $checkoutResponse) { $saveOrderTransfer = $checkoutResponse->getSaveOrder(); foreach ($saveOrderTransfer->getOrderItems() as $itemTransfer) { foreach ($itemTransfer->getProductOptions() as $productOptionTransfer) { $salesOrderItemOptionEntity = $this->createSalesOrderItemOptionEntity(); $salesOrderItemOptionEntity->fromArray($productOptionTransfer->toArray()); $salesOrderItemOptionEntity->setFkSalesOrderItem($itemTransfer->getIdSalesOrderItem()); $salesOrderItemOptionEntity->save(); $productOptionTransfer->setIdSalesOrderItemOption($salesOrderItemOptionEntity->getIdSalesOrderItemOption()); } } }
/** * @param \Generated\Shared\Transfer\CheckoutResponseTransfer $checkoutResponseTransfer * @param \Generated\Shared\Transfer\ExpenseTransfer $expenseTransfer * @param \Orm\Zed\Sales\Persistence\SpySalesExpense $salesOrderExpenseEntity * * @return void */ protected function setCheckoutResponseExpenses(CheckoutResponseTransfer $checkoutResponseTransfer, ExpenseTransfer $expenseTransfer, SpySalesExpense $salesOrderExpenseEntity) { $orderExpense = clone $expenseTransfer; $orderExpense->setIdSalesExpense($salesOrderExpenseEntity->getIdSalesExpense()); $checkoutResponseTransfer->getSaveOrder()->addOrderExpense($orderExpense); }
/** * @param \Generated\Shared\Transfer\CheckoutResponseTransfer $checkoutResponseTransfer * * @return void */ protected function saveOrderExpenseDiscounts(CheckoutResponseTransfer $checkoutResponseTransfer) { $idSalesOrder = $checkoutResponseTransfer->getSaveOrder()->getIdSalesOrder(); $orderExpenses = $checkoutResponseTransfer->getSaveOrder()->getOrderExpenses(); foreach ($orderExpenses as $expenseTransfer) { foreach ($expenseTransfer->getCalculatedDiscounts() as $calculatedDiscountTransfer) { $salesDiscountEntity = $this->createSalesDiscountEntity($calculatedDiscountTransfer); $salesDiscountEntity->setFkSalesOrder($idSalesOrder); $salesDiscountEntity->setFkSalesExpense($expenseTransfer->getIdSalesExpense()); $this->saveDiscount($salesDiscountEntity, $calculatedDiscountTransfer); } } }
/** * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer * @param \Generated\Shared\Transfer\CheckoutResponseTransfer $checkoutResponseTransfer * * @return void */ public function saveOrderPayment(QuoteTransfer $quoteTransfer, CheckoutResponseTransfer $checkoutResponseTransfer) { $paymentEntity = $this->savePaymentForOrder($quoteTransfer->getPayment()->getPayolution(), $checkoutResponseTransfer->getSaveOrder()->getIdSalesOrder()); $this->savePaymentForOrderItems($checkoutResponseTransfer->getSaveOrder()->getOrderItems(), $paymentEntity->getIdPaymentPayolution()); }
/** * @param \Generated\Shared\Transfer\CheckoutResponseTransfer $checkoutResponseTransfer * * @return \Generated\Shared\Transfer\QuoteTransfer */ private function getQuoteTransfer(CheckoutResponseTransfer $checkoutResponseTransfer) { $orderEntity = $this->createOrderEntity(); $paymentAddressTransfer = new AddressTransfer(); $email = '*****@*****.**'; $paymentAddressTransfer->setIso2Code('DE')->setEmail($email)->setFirstName('John')->setLastName('Doe')->setCellPhone('+40 175 0815')->setPhone('+30 0815')->setAddress1('Straße des 17. Juni')->setAddress2('135')->setZipCode('10623')->setSalutation(SpyPaymentPayolutionTableMap::COL_SALUTATION_MR)->setCity('Berlin'); $payolutionPaymentTransfer = new PayolutionPaymentTransfer(); $payolutionPaymentTransfer->setEmail($email)->setGender(SpyPaymentPayolutionTableMap::COL_GENDER_MALE)->setDateOfBirth('1970-01-02')->setClientIp('127.0.0.1')->setAccountBrand(PayolutionConstants::BRAND_INVOICE)->setLanguageIso2Code('DE')->setCurrencyIso3Code('EUR')->setAddress($paymentAddressTransfer); $quoteTransfer = new QuoteTransfer(); $customerTransfer = new CustomerTransfer(); $customerTransfer->setEmail($email); $customerTransfer->setIsGuest(true); $quoteTransfer->setCustomer($customerTransfer); $checkoutResponseTransfer->getSaveOrder()->setIdSalesOrder($orderEntity->getIdSalesOrder()); $paymentTransfer = new PaymentTransfer(); $paymentTransfer->setPayolution($payolutionPaymentTransfer); $quoteTransfer->setPayment($paymentTransfer); foreach ($orderEntity->getItems() as $orderItemEntity) { $itemTransfer = new ItemTransfer(); $itemTransfer->setName($orderItemEntity->getName())->setQuantity($orderItemEntity->getQuantity())->setUnitGrossPrice($orderItemEntity->getGrossPrice())->setFkSalesOrder($orderItemEntity->getFkSalesOrder())->setIdSalesOrderItem($orderItemEntity->getIdSalesOrderItem()); $checkoutResponseTransfer->getSaveOrder()->addOrderItem($itemTransfer); } return $quoteTransfer; }
/** * @param \Generated\Shared\Transfer\CheckoutResponseTransfer $checkoutResponseTransfer * * @return \Generated\Shared\Transfer\SaveOrderTransfer */ protected function getSaveOrderTransfer(CheckoutResponseTransfer $checkoutResponseTransfer) { $saveOrderTransfer = $checkoutResponseTransfer->getSaveOrder(); if ($saveOrderTransfer === null) { $saveOrderTransfer = $this->createSaveOrderTransfer(); } return $saveOrderTransfer; }
/** * @param \Generated\Shared\Transfer\CheckoutResponseTransfer $checkoutResponseTransfer * * @return void */ protected function triggerStateMachine(CheckoutResponseTransfer $checkoutResponseTransfer) { $salesOrderItemIds = []; foreach ($checkoutResponseTransfer->getSaveOrder()->getOrderItems() as $item) { $salesOrderItemIds[] = $item->getIdSalesOrderItem(); } $this->omsFacade->triggerEventForNewOrderItems($salesOrderItemIds); }