![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/lib/internal/Customweb/Sogenactif/BackendOperation/ |
<?php /** * * You are allowed to use this API in your web application. * * Copyright (C) 2018 by customweb GmbH * * This program is licenced under the customweb software licence. With the * purchase or the installation of the software in your application you * accept the licence agreement. The allowed usage is outlined in the * customweb software licence which can be found under * http://www.sellxed.com/en/software-license-agreement * * Any modification or distribution is strictly forbidden. The license * grants you the installation in one application. For multiuse you will need * to purchase further licences at http://www.sellxed.com/shop. * * See the customweb software licence agreement for more details. * */ /** * * @author Thomas Hunziker * @Bean * */ class Customweb_Sogenactif_BackendOperation_CaptureAdapter extends Customweb_Sogenactif_AbstractOfficeAdapter implements Customweb_Payment_BackendOperation_Adapter_Service_ICapture { private $endpointUrl; protected function getEndpoint(){ return $this->endpointUrl; } public function capture(Customweb_Payment_Authorization_ITransaction $transaction){ return $this->partialCapture($transaction, $transaction->getUncapturedLineItems(), true); } public function partialCapture(Customweb_Payment_Authorization_ITransaction $transaction, $items, $close){ if (!($transaction instanceof Customweb_Sogenactif_Authorization_Transaction)) { throw new Exception("Unable to cast transaction variable to Customweb_Sogenactif_Authorization_Transaction."); } // We close always, we do not support multiple partial captures. $close = true; $transaction->partialCaptureByLineItemsDry($items, $close); $captureAmount = Customweb_Util_Invoice::getTotalAmountIncludingTax($items); $parameters = null; if ($transaction->getCaptureMode() == 'AUTHOR_CAPTURE') { //use cancel to reduce amount $authorizationAmount = $transaction->getAuthorizationAmount(); $reduceAmount = $authorizationAmount - $captureAmount; $this->endpointUrl = $this->getConfiguration()->getCancelEndPointUrl(); if ($reduceAmount > 0) { $builder = new Customweb_Sogenactif_BackendOperation_CancelParameterBuilder($this->getContainer(), $transaction, $reduceAmount); $parameters = $builder->build(); } } elseif ($transaction->getCaptureMode() == 'VALIDATION') { $this->endpointUrl = $this->getConfiguration()->getCaptureEndPointUrl(); $builder = new Customweb_Sogenactif_BackendOperation_CaptureParameterBuilder($this->getContainer(), $transaction, $captureAmount); $parameters = $builder->build(); } else { throw new Exception(Customweb_I18n_Translation::__('This transaction is not in a valid state to be captured')); } if ($transaction->isLiveTransaction() || $transaction->getEnivronment() != 'simulation') { if ($parameters !== null) { $this->processWithResponseValidation($parameters); } $captureItem = $transaction->partialCaptureByLineItems($items, $close); $captureItem->setStatus(Customweb_Payment_Authorization_ITransactionCapture::STATUS_PENDING); $transaction->setUpdateExecutionDate(Customweb_Core_DateTime::_()->addMinutes(Customweb_Sogenactif_Util::UPDATE_INTERVAL_AUTHORIZED)); } else { $this->checkLiveAvailability(); $transaction->setUpdateExecutionDate(null); $transaction->partialCaptureByLineItems($items, $close); } } }