/** * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer * @param \Generated\Shared\Transfer\CheckoutResponseTransfer $checkoutResponseTransfer * * @return \Generated\Shared\Transfer\CheckoutResponseTransfer */ public function checkCondition(QuoteTransfer $quoteTransfer, CheckoutResponseTransfer $checkoutResponseTransfer) { if ($quoteTransfer->getTotals()->getGrandTotal() === 0) { $quoteTransfer->getPayment()->setPaymentMethod(ZeroPaymentConstants::PAYMENT_METHOD_ZERO_PAYMENT); $quoteTransfer->getPayment()->setPaymentSelection(ZeroPaymentConstants::PAYMENT_METHOD_ZERO_PAYMENT); $quoteTransfer->getPayment()->setPaymentProvider(ZeroPaymentConstants::PROVIDER_NAME); } return $checkoutResponseTransfer; }
/** * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer * * @return array */ public function buildPreCheckRequest(QuoteTransfer $quoteTransfer) { $payolutionTransfer = $quoteTransfer->getPayment()->getPayolution(); $addressTransfer = $payolutionTransfer->getAddress(); $requestData = $this->getBaseTransactionRequest($quoteTransfer->getTotals()->getGrandTotal(), $payolutionTransfer->getCurrencyIso3Code()); $this->addRequestData($requestData, [ApiConstants::PAYMENT_CODE => ApiConstants::PAYMENT_CODE_PRE_CHECK, ApiConstants::TRANSACTION_CHANNEL => $this->config->getTransactionChannelPreCheck(), ApiConstants::NAME_GIVEN => $addressTransfer->getFirstName(), ApiConstants::NAME_FAMILY => $addressTransfer->getLastName(), ApiConstants::NAME_TITLE => $addressTransfer->getSalutation(), ApiConstants::NAME_SEX => $this->mapGender($payolutionTransfer->getGender()), ApiConstants::NAME_BIRTHDATE => $payolutionTransfer->getDateOfBirth(), ApiConstants::ADDRESS_STREET => $this->formatAddress($addressTransfer), ApiConstants::ADDRESS_ZIP => $addressTransfer->getZipCode(), ApiConstants::ADDRESS_CITY => $addressTransfer->getCity(), ApiConstants::ADDRESS_COUNTRY => $addressTransfer->getIso2Code(), ApiConstants::CONTACT_EMAIL => $payolutionTransfer->getEmail(), ApiConstants::CONTACT_PHONE => $addressTransfer->getPhone(), ApiConstants::CONTACT_MOBILE => $addressTransfer->getCellPhone(), ApiConstants::CONTACT_IP => $payolutionTransfer->getClientIp(), ApiConstants::CRITERION_PRE_CHECK => 'TRUE', ApiConstants::CRITERION_CUSTOMER_LANGUAGE => $payolutionTransfer->getLanguageIso2Code(), ApiConstants::CRITERION_CALCULATION_ID => $payolutionTransfer->getInstallmentCalculationId(), ApiConstants::CRITERION_INSTALLMENT_AMOUNT => $this->getCurrencyManager()->convertCentToDecimal($payolutionTransfer->getInstallmentAmount()), ApiConstants::CRITERION_DURATION => $payolutionTransfer->getInstallmentDuration(), ApiConstants::CRITERION_ACCOUNT_HOLDER => $payolutionTransfer->getBankAccountHolder(), ApiConstants::CRITERION_ACCOUNT_BIC => $payolutionTransfer->getBankAccountBic(), ApiConstants::CRITERION_ACCOUNT_IBAN => $payolutionTransfer->getBankAccountIban(), ApiConstants::CRITERION_ACCOUNT_COUNTRY => $addressTransfer->getIso2Code()]); return $requestData; }
/** * @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\QuoteTransfer $quoteTransfer * @param string $paymentSelection * * @throws \Spryker\Yves\Payolution\Exception\PaymentMethodNotFoundException * * @return \Generated\Shared\Transfer\PayolutionPaymentTransfer */ protected function getPayolutionPaymentTransfer(QuoteTransfer $quoteTransfer, $paymentSelection) { $paymentMethod = ucfirst($paymentSelection); $method = 'get' . $paymentMethod; $paymentTransfer = $quoteTransfer->getPayment(); if (!method_exists($paymentTransfer, $method) || $quoteTransfer->getPayment()->{$method}() === null) { throw new PaymentMethodNotFoundException(sprintf('Selected payment method "%s" not found in PaymentTransfer', $paymentMethod)); } $payolutionPaymentTransfer = $quoteTransfer->getPayment()->{$method}(); return $payolutionPaymentTransfer; }
/** * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer * * @return \Generated\Shared\Transfer\PayolutionTransactionResponseTransfer */ public function preCheckPayment(QuoteTransfer $quoteTransfer) { $paymentTransfer = $quoteTransfer->getPayment()->getPayolution(); $requestData = $this->getMethodMapper($paymentTransfer->getAccountBrand())->buildPreCheckRequest($quoteTransfer); return $this->sendRequest($requestData); }