diff --git a/Dpo/Dpo/Block/Form.php b/Dpo/Dpo/Block/Form.php old mode 100755 new mode 100644 index 91295bf..2447f8a --- a/Dpo/Dpo/Block/Form.php +++ b/Dpo/Dpo/Block/Form.php @@ -1,12 +1,12 @@ _logger = $context->getLogger(); $pre = __METHOD__ . " : "; $this->_logger->debug( $pre . 'bof' ); $this->_dpoData = $dpoData; diff --git a/Dpo/Dpo/Block/Payment/Info.php b/Dpo/Dpo/Block/Payment/Info.php old mode 100755 new mode 100644 index 5763953..0eed3d9 --- a/Dpo/Dpo/Block/Payment/Info.php +++ b/Dpo/Dpo/Block/Payment/Info.php @@ -1,6 +1,6 @@ reader = $reader; $this->_paymentMethod = $paymentMethod; } + + public function _prepareLayout() + { + $this->setMessage( 'Redirecting to DPO Group' ) + ->setId( 'dpo_checkout' ) + ->setName( 'dpo_checkout' ) + ->setFormData( $this->_paymentMethod->getStandardCheckoutFormFields() ) + ->setSubmitForm( '' ); + + return parent::_prepareLayout(); + } } diff --git a/Dpo/Dpo/Controller/AbstractDpo.php b/Dpo/Dpo/Controller/AbstractDpo.php old mode 100755 new mode 100644 index bb4f60e..9889dcd --- a/Dpo/Dpo/Controller/AbstractDpo.php +++ b/Dpo/Dpo/Controller/AbstractDpo.php @@ -1,6 +1,6 @@ getRequest(); if ( $request instanceof HttpRequest && $request->isPost() && empty( $request->getParam( 'form_key' ) ) ) { - $formKey = $this->_objectManager->get( \Magento\Framework\Data\Form\FormKey::class ); $request->setParam( 'form_key', $formKey->getFormKey() ); } } @@ -173,9 +196,6 @@ public function __construct( parent::__construct( $context ); - $parameters = ['params' => [$this->_configMethod]]; - $this->_config = $this->_objectManager->create( $this->_configType, $parameters ); - $this->_logger->debug( $pre . 'eof' ); } @@ -266,15 +286,6 @@ protected function _getQuote() return $this->_quote; } - /** - * Returns before_auth_url redirect parameter for customer session - * @return null - */ - public function getCustomerBeforeAuthUrl() - { - return; - } - /** * Returns a list of action flags [flag_key] => boolean * @return array diff --git a/Dpo/Dpo/Controller/Notify/Index.php b/Dpo/Dpo/Controller/Notify/Index.php old mode 100755 new mode 100644 index d7f9622..00463b6 --- a/Dpo/Dpo/Controller/Notify/Index.php +++ b/Dpo/Dpo/Controller/Notify/Index.php @@ -1,6 +1,6 @@ getPostData(); - if ( $dpo_data === false ) { - $errors = true; - } + $this->dpo_data = $this->getPostData(); + + + if ( !empty($this->dpo_data) && $this->securitySignatureIsValid()) { + + $this->updateOrderAdditionalPaymentInfo(); } + } - $mode = $this->getConfigData( 'test_mode' ); + //check if signature is valid + private function securitySignatureIsValid(): bool + { - // Verify security signature + $notify_data = array(); $checkSumParams = ''; - if ( !$errors ) { - - foreach ( $dpo_data as $key => $val ) { - $post_data .= $key . '=' . $val . "\n"; - $notify_data[$key] = stripslashes( $val ); - - if ( $key == 'DPO_ID' ) { - $checkSumParams .= $val; - } - if ( $key != 'CHECKSUM' && $key != 'DPO_ID' ) { - $checkSumParams .= $val; - } - - if ( sizeof( $notify_data ) == 0 ) { - $errors = true; - } + + + foreach ( $this->dpo_data as $key => $val ) { + $notify_data[$key] = stripslashes( $val ); + + if ( $key == 'DPO_ID' ) { + $checkSumParams .= $val; } - if ( $this->getConfigData( 'test_mode' ) != '0' ) { - $service_type = 'secret'; - } else { - $service_type = $this->getConfigData( 'service_type' ); + if ( $key != 'CHECKSUM' && $key != 'DPO_ID' ) { + $checkSumParams .= $val; } - $checkSumParams .= $service_type; - } - // Verify security signature - if ( !$errors ) { - $checkSumParams = md5( $checkSumParams ); - if ( $checkSumParams != $notify_data['CHECKSUM'] ) { - $errors = true; + if (empty( $notify_data )) { + return false; } } + if ( $this->getConfigData( 'test_mode' ) != '0' ) { + $service_type = 'secret'; + } else { + $service_type = $this->getConfigData( 'service_type' ); + } + $checkSumParams .= $service_type; - if ( !$errors ) { - // Load order - - $orderId = $dpo_data['REFERENCE']; - $this->_order = $this->_orderFactory->create()->loadByIncrementId( $orderId ); - $this->storeId = $this->_order->getStoreId(); - - $status = $dpo_data['TRANSACTION_STATUS']; - - // Update order additional payment information - - if ( $status == 1 ) { - $this->_order->setStatus( \Magento\Sales\Model\Order::STATE_PROCESSING ); - $this->_order->save(); - $this->_order->addStatusHistoryComment( "Notify Response, Transaction has been approved, TransactionID: " . $dpo_data['TRANSACTION_ID'], \Magento\Sales\Model\Order::STATE_PROCESSING )->setIsCustomerNotified( false )->save(); - } elseif ( $status == 2 ) { - $this->_order->setStatus( \Magento\Sales\Model\Order::STATE_CANCELED ); - $this->_order->save(); - $this->_order->addStatusHistoryComment( "Notify Response, The User Failed to make Payment with Dpo due to transaction being declined, TransactionID: " . $dpo_data['TRANSACTION_ID'], \Magento\Sales\Model\Order::STATE_PROCESSING )->setIsCustomerNotified( false )->save(); - } elseif ( $status == 0 || $status == 4 ) { - $this->_order->setStatus( \Magento\Sales\Model\Order::STATE_CANCELED ); - $this->_order->save(); - $this->_order->addStatusHistoryComment( "Notify Response, The User Cancelled Payment with Dpo, PayRequestID: " . $dpo_data['PAY_REQUEST_ID'], \Magento\Sales\Model\Order::STATE_CANCELED )->setIsCustomerNotified( false )->save(); - } + $checkSumParams = md5( $checkSumParams ); + + if ( $checkSumParams != $notify_data['CHECKSUM'] ) { + return false; + } + + return true; + } + + //Update order additional payment information + private function updateOrderAdditionalPaymentInfo(){ + + + $orderId = $this->dpo_data['REFERENCE']; + $this->_order = $this->_orderFactory->create()->loadByIncrementId( $orderId ); + $this->storeId = $this->_order->getStoreId(); + + $status = $this->dpo_data['TRANSACTION_STATUS']; + + + if ( $status == 1 ) { + $this->_order->setStatus( \Magento\Sales\Model\Order::STATE_PROCESSING ); + $this->_order->save(); + $this->_order->addStatusHistoryComment( "Notify Response, Transaction has been approved, TransactionID: " . $this->dpo_data['TRANSACTION_ID'], \Magento\Sales\Model\Order::STATE_PROCESSING )->setIsCustomerNotified( false )->save(); + } elseif ( $status == 2 ) { + $this->_order->setStatus( \Magento\Sales\Model\Order::STATE_CANCELED ); + $this->_order->save(); + $this->_order->addStatusHistoryComment( "Notify Response, The User Failed to make Payment with Dpo due to transaction being declined, TransactionID: " . $this->dpo_data['TRANSACTION_ID'], \Magento\Sales\Model\Order::STATE_PROCESSING )->setIsCustomerNotified( false )->save(); + } elseif ( $status == 0 || $status == 4 ) { + $this->_order->setStatus( \Magento\Sales\Model\Order::STATE_CANCELED ); + $this->_order->save(); + $this->_order->addStatusHistoryComment( "Notify Response, The User Cancelled Payment with Dpo, PayRequestID: " . $this->dpo_data['PAY_REQUEST_ID'], \Magento\Sales\Model\Order::STATE_CANCELED )->setIsCustomerNotified( false )->save(); } + } // Retrieve post data @@ -109,7 +112,7 @@ public function getPostData() } // Return "false" if no data was received - if ( sizeof( $nData ) == 0 ) { + if ( empty( $nData )) { return ( false ); } else { return ( $nData ); @@ -117,6 +120,9 @@ public function getPostData() } + #Magento\Checkout\Controller\Express\RedirectLoginInterface::getCustomerBeforeAuthUrl + public function getCustomerBeforeAuthUrl(){} + /** * saveInvoice * diff --git a/Dpo/Dpo/Controller/Redirect/Index.php b/Dpo/Dpo/Controller/Redirect/Index.php old mode 100755 new mode 100644 index 2d935d1..49600b7 --- a/Dpo/Dpo/Controller/Redirect/Index.php +++ b/Dpo/Dpo/Controller/Redirect/Index.php @@ -1,6 +1,6 @@ _logger->error( $pre . $e->getMessage() ); $this->messageManager->addExceptionMessage( $e, $e->getMessage() ); - $this->_redirect( 'checkout/cart' ); + $this->_redirect( self::CARTURL ); } catch ( \Exception $e ) { $this->_logger->error( $pre . $e->getMessage() ); $this->messageManager->addExceptionMessage( $e, __( 'We can\'t start Dpo Checkout.' ) ); - $this->_redirect( 'checkout/cart' ); + $this->_redirect( self::CARTURL ); + } + $block = $page_object->getLayout()->getBlock( 'dpo' )->setPaymentFormData( isset( $order ) ? $order : null ); + + $formData = $block->getFormData(); + if(!$formData){ + $this->_logger->error("We can\'t start DPO Group Checkout."); + $this->_redirect( self::CARTURL ); } return $page_object; } + #Magento\Checkout\Controller\Express\RedirectLoginInterface::getCustomerBeforeAuthUrl + public function getCustomerBeforeAuthUrl(){} } diff --git a/Dpo/Dpo/Controller/Redirect/Success.php b/Dpo/Dpo/Controller/Redirect/Success.php old mode 100755 new mode 100644 index 732528b..df8c36a --- a/Dpo/Dpo/Controller/Redirect/Success.php +++ b/Dpo/Dpo/Controller/Redirect/Success.php @@ -1,6 +1,6 @@ scopeConfigInterface = $scopeConfigInterface; + $this->order = $order; + $this->dbTransaction = $dbTransaction; $this->dataFactory = $dataFactory; $this->_transactionBuilder = $_transactionBuilder; + $this->baseurl= $storeManager->getStore()->getBaseUrl(); + $this->redirectToCartScript = ''; - parent::__construct( $context, $pageFactory, $customerSession, $checkoutSession, $orderFactory, $DpoSession, $urlHelper, $customerUrl, $logger, $transactionFactory, $invoiceService, $invoiceSender, $paymentMethod, $urlBuilder, $orderRepository, $storeManager, $OrderSender, $date ); + parent::__construct( $context, $pageFactory, $customerSession, $checkoutSession, $orderFactory, $DpoSession, $urlHelper, $customerUrl, $logger, $transactionFactory, $invoiceService, $invoiceSender, $paymentMethod, $urlBuilder, $orderRepository, $storeManager, $OrderSender, $date,$formKey ); } public function createCsrfValidationException( RequestInterface $request ): ? InvalidRequestException @@ -91,6 +164,9 @@ public function createCsrfValidationException( RequestInterface $request ): ? I return null; } + //must be implemented Magento\Checkout\Controller\Express\RedirectLoginInterface::getCustomerBeforeAuthUrl + public function getCustomerBeforeAuthUrl(){} + public function validateForCsrf( RequestInterface $request ) : ? bool { return true; @@ -101,78 +177,56 @@ public function validateForCsrf( RequestInterface $request ) : ? bool */ public function execute() { - $order = $this->_checkoutSession->getLastRealOrder(); + $lastRealOrder = $this->_checkoutSession->getLastRealOrder(); $request = $this->getRequest(); $Requestdata = $request->getParams(); $pre = __METHOD__ . " : "; $this->_logger->debug( $pre . 'bof' ); - $page_object = $this->pageFactory->create(); - $transaction = $this->dataFactory->create(); + $this->pageFactory->create(); + $this->dataFactory->create(); try { //Get the user session $this->_order = $this->_checkoutSession->getLastRealOrder(); - $baseurl = $this->_storeManager->getStore()->getBaseUrl(); + if ( isset( $Requestdata['TransactionToken'] ) ) { + $transToken = $Requestdata['TransactionToken']; $reference = $Requestdata['CompanyRef']; $testText = substr( $reference, -6 ); - $reference = substr( $reference, 0, -6 ); - - $dpo = new Dpopay( $testText === 'teston' ? true : false ); - $data = []; - $data['transToken'] = $transToken; - $data['companyToken'] = $this->getPaymentConfig( 'company_token' ); - $verify = $dpo->verifyToken( $data ); - - if ( $verify != '' ) { - $verify = new \SimpleXMLElement( $verify ); - switch ( $verify->Result->__toString() ) { - case '000' : - $status = 1; - break; - case '901': - $status = 2; - break; - case '904': - default: - $status = 4; - break; - } - } else { - $status = 0; - } + + $status = $this->getStatus($transToken, $testText); + switch ( $status ) { case 1: - $this->prepareTransactionData( $order, $Requestdata, 'captured' ); + $this->prepareTransactionData( $lastRealOrder, $Requestdata, 'captured' ); $status = \Magento\Sales\Model\Order::STATE_PROCESSING; + if ( $this->getConfigData( 'Successful_Order_status' ) != "" ) { $status = $this->getConfigData( 'Successful_Order_status' ); } - $message = __( - 'Redirect Response, Transaction has been approved: REFERENCE: "%1"', - $reference - ); $this->_order->setStatus( $status ); //configure the status $this->_order->setState( $status )->save(); //try and configure the status $this->_order->save(); - $order = $this->_order; + $lastRealOrder = $this->_order; - $model = $this->_paymentMethod; + $model + + = $this->_paymentMethod; $order_successful_email = $model->getConfigData( 'order_email' ); if ( $order_successful_email != '0' ) { - $this->OrderSender->send( $order ); - $order->addStatusHistoryComment( __( 'Notified customer about order #%1.', $order->getId() ) )->setIsCustomerNotified( true )->save(); + $this->OrderSender->send( $lastRealOrder ); + $lastRealOrder->addStatusHistoryComment( __( 'Notified customer about order #%1.', $lastRealOrder->getId() ) )->setIsCustomerNotified( true )->save(); } // Capture invoice when payment is successful - $invoice = $this->_invoiceService->prepareInvoice( $order ); - $invoice->setRequestedCaptureCase( \Magento\Sales\Model\Order\Invoice::CAPTURE_ONLINE ); + $invoice = $this->_invoiceService->prepareInvoice( $lastRealOrder ); + $invoice->setRequestedCaptureCase( Invoice::CAPTURE_ONLINE ); $invoice->register(); // Save the invoice to the order - $transaction = $this->_objectManager->create( 'Magento\Framework\DB\Transaction' ) + $transaction = $this->dbTransaction ->addObject( $invoice ) ->addObject( $invoice->getOrder() ); @@ -182,41 +236,38 @@ public function execute() $send_invoice_email = $model->getConfigData( 'invoice_email' ); if ( $send_invoice_email != '0' ) { $this->invoiceSender->send( $invoice ); - $order->addStatusHistoryComment( __( 'Notified customer about invoice #%1.', $invoice->getId() ) )->setIsCustomerNotified( true )->save(); + $lastRealOrder->addStatusHistoryComment( __( 'Notified customer about invoice #%1.', $invoice->getId() ) )->setIsCustomerNotified( true )->save(); } // Invoice capture code completed - echo ''; + echo ''; break; case 2: - $this->prepareTransactionData( $order, $Requestdata, 'declined' ); + $this->prepareTransactionData( $lastRealOrder, $Requestdata, 'declined' ); $this->messageManager->addNotice( 'Transaction has been declined.' ); - $this->_order->addStatusHistoryComment( __( 'Redirect Response, Transaction has been declined, Reference: ' . $order->getIncrementId() ) )->setIsCustomerNotified( false ); - $this->_order->cancel()->save(); - $this->_checkoutSession->restoreQuote(); - echo ''; + $this->_order->addStatusHistoryComment( __( 'Redirect Response, Transaction has been declined, Reference: ' . $lastRealOrder->getIncrementId() ) )->setIsCustomerNotified( false ); + $this->cancelOrder(); break; case 0: case 4: - $this->prepareTransactionData( $order, $Requestdata, 'cancelled' ); + $this->prepareTransactionData( $lastRealOrder, $Requestdata, 'cancelled' ); $this->messageManager->addNotice( 'Transaction has been cancelled' ); - $this->_order->addStatusHistoryComment( __( 'Redirect Response, Transaction has been cancelled, Reference: ' . $order->getIncrementId() ) )->setIsCustomerNotified( false ); - $this->_order->cancel()->save(); - $this->_checkoutSession->restoreQuote(); - echo ''; + $this->_order->addStatusHistoryComment( __( 'Redirect Response, Transaction has been cancelled, Reference: ' . $lastRealOrder->getIncrementId() ) )->setIsCustomerNotified( false ); + $this->cancelOrder(); break; default: break; } } - } catch ( \Magento\Framework\Exception\LocalizedException $e ) { + + } catch ( LocalizedException $e ) { $this->_logger->error( $pre . $e->getMessage() ); $this->messageManager->addExceptionMessage( $e, $e->getMessage() ); - echo ''; + echo $this->redirectToCartScript; } catch ( \Exception $e ) { $this->_logger->error( $pre . $e->getMessage() ); $this->messageManager->addExceptionMessage( $e, __( 'We can\'t start Dpo Checkout.' ) ); - echo ''; + echo $this->redirectToCartScript; } return ''; @@ -239,18 +290,21 @@ public function createTransaction( $order, $paymentData = array() ) try { // Get payment object from order object $payment = $order->getPayment(); + if(!$payment){ + return false; + } $payment->setLastTransId( $paymentData['txn_id'] ) ->setTransactionId( $paymentData['txn_id'] ) - ->setAdditionalInformation( [\Magento\Sales\Model\Order\Payment\Transaction::RAW_DETAILS => (array) $paymentData] ); + ->setAdditionalInformation( [Transaction::RAW_DETAILS => (array) $paymentData] ); $formatedPrice = $order->getBaseCurrency()->formatTxt( $order->getGrandTotal() ); $message = __( 'The authorized amount is %1.', $formatedPrice ); if ( $paymentData['status'] == "captured" ) { - $type = \Magento\Sales\Model\Order\Payment\Transaction::TYPE_CAPTURE; + $type = Transaction::TYPE_CAPTURE; } else { - $type = \Magento\Sales\Model\Order\Payment\Transaction::TYPE_VOID; + $type = Transaction::TYPE_VOID; } // Get builder class $trans = $this->_transactionBuilder; @@ -258,7 +312,7 @@ public function createTransaction( $order, $paymentData = array() ) ->setOrder( $order ) ->setTransactionId( $paymentData['txn_id'] ) ->setAdditionalInformation( - [\Magento\Sales\Model\Order\Payment\Transaction::RAW_DETAILS => (array) $paymentData['additional_data']] + [Transaction::RAW_DETAILS => (array) $paymentData['additional_data']] ) ->setFailSafe( true ) // Build method creates the transaction and returns the object @@ -280,15 +334,47 @@ public function createTransaction( $order, $paymentData = array() ) public function getOrderByIncrementId( $incrementId ) { - $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); - $order = $objectManager->get( '\Magento\Sales\Model\Order' )->loadByIncrementId( $incrementId ); - return $order; + return $this->order->loadByIncrementId( $incrementId ); } public function getPaymentConfig( $field ) { - $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); - $scopeConfig = $objectManager->get( 'Magento\Framework\App\Config\ScopeConfigInterface' ); - return $scopeConfig->getValue( "payment/dpo/$field" ); + return $this->scopeConfigInterface->getValue( "payment/dpo/$field" ); + } + + public function cancelOrder(){ + $this->_order->cancel()->save(); + $this->_checkoutSession->restoreQuote(); + echo $this->redirectToCartScript; + } + + private function getStatus($transToken, $testText): int + { + $dpo = new Dpopay($this->_logger, $testText === 'teston'); + $data = []; + $data['transToken'] = $transToken; + $data['companyToken'] = $this->getPaymentConfig( 'company_token' ); + $verify = $dpo->verifyToken( $data ); + + if ( $verify != '' ) { + $verify = new SimpleXMLElement( $verify ); + switch ( $verify->Result->__toString() ) { + case '000' : + $status = 1; + break; + case '901': + $status = 2; + break; + case '904': + default: + $status = 4; + break; + } + } else { + $status = 0; + } + + return $status; + } } diff --git a/Dpo/Dpo/Helper/Data.php b/Dpo/Dpo/Helper/Data.php old mode 100755 new mode 100644 index 0f4c0c4..be1ccb4 --- a/Dpo/Dpo/Helper/Data.php +++ b/Dpo/Dpo/Helper/Data.php @@ -1,6 +1,6 @@ + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/Dpo/Dpo/Model/AbstractConfig.php b/Dpo/Dpo/Model/AbstractConfig.php old mode 100755 new mode 100644 index 4b096e4..9c6853f --- a/Dpo/Dpo/Model/AbstractConfig.php +++ b/Dpo/Dpo/Model/AbstractConfig.php @@ -1,6 +1,6 @@ _storeId ); - $value = $this->_prepareValue( $underscored, $value ); - - return $value; + return $this->_prepareValue( $underscored, $value ); } return null; @@ -230,25 +228,22 @@ public function isMethodAvailable( $methodCode = null ) */ public function isMethodActive( $method ) { - switch ( $method ) { - case Config::METHOD_CODE: - $isEnabled = $this->_scopeConfig->isSetFlag( - 'payment/' . Config::METHOD_CODE . '/active', - ScopeInterface::SCOPE_STORE, $this->_storeId - ) || - $this->_scopeConfig->isSetFlag( - 'payment/' . Config::METHOD_CODE . '/active', - ScopeInterface::SCOPE_STORE, - $this->_storeId - ); - $method = Config::METHOD_CODE; - break; - default: - $isEnabled = $this->_scopeConfig->isSetFlag( - "payment/{$method}/active", - ScopeInterface::SCOPE_STORE, - $this->_storeId - ); + + if ($method==Config::METHOD_CODE){ + + $isEnabled = $this->_scopeConfig->isSetFlag( + 'payment/' . Config::METHOD_CODE . '/active', + ScopeInterface::SCOPE_STORE, $this->_storeId + ); + $method = Config::METHOD_CODE; + + }else{ + + $isEnabled = $this->_scopeConfig->isSetFlag( + "payment/{$method}/active", + ScopeInterface::SCOPE_STORE, + $this->_storeId + ); } return $this->isMethodSupportedForCountry( $method ) && $isEnabled; diff --git a/Dpo/Dpo/Model/Cart.php b/Dpo/Dpo/Model/Cart.php old mode 100755 new mode 100644 index bbb7fd5..1f90647 --- a/Dpo/Dpo/Model/Cart.php +++ b/Dpo/Dpo/Model/Cart.php @@ -1,6 +1,6 @@ _logger = $logger; - parent::__construct( $scopeConfig ); + parent::__construct($scopeConfig); $this->directoryHelper = $directoryHelper; $this->_storeManager = $storeManager; $this->_assetRepo = $assetRepo; - $this->setMethod( 'dpo' ); + $this->setMethod('dpo'); $currentStoreId = $this->_storeManager->getStore()->getStoreId(); - $this->setStoreId( $currentStoreId ); + $this->setStoreId($currentStoreId); } /** @@ -90,12 +112,13 @@ public function __construct( * Logic based on merchant country, methods dependence * * @param string|null $methodCode + * * @return bool * @SuppressWarnings(PHPMD.CyclomaticComplexity) */ - public function isMethodAvailable( $methodCode = null ) + public function isMethodAvailable($methodCode = null) { - return parent::isMethodAvailable( $methodCode ); + return parent::isMethodAvailable($methodCode); } /** @@ -115,7 +138,7 @@ public function getSupportedBuyerCountryCodes() */ public function getMerchantCountry() { - return $this->directoryHelper->getDefaultCountry( $this->_storeId ); + return $this->directoryHelper->getDefaultCountry($this->_storeId); } /** @@ -124,29 +147,31 @@ public function getMerchantCountry() * * @param string|null $method * @param string|null $countryCode + * * @return bool */ - public function isMethodSupportedForCountry( $method = null, $countryCode = null ) + public function isMethodSupportedForCountry($method = null, $countryCode = null) { - if ( $method === null ) { + if ($method === null) { $method = $this->getMethodCode(); } - if ( $countryCode === null ) { + if ($countryCode === null) { $countryCode = $this->getMerchantCountry(); } - return in_array( $method, $this->getCountryMethods( $countryCode ) ); + return in_array($method, $this->getCountryMethods($countryCode)); } /** * Return list of allowed methods for specified country iso code * * @param string|null $countryCode 2-letters iso code + * * @return array * @SuppressWarnings(PHPMD.ExcessiveMethodLength) */ - public function getCountryMethods( $countryCode = null ) + public function getCountryMethods($countryCode = null) { $countryMethods = [ 'other' => [ @@ -154,10 +179,11 @@ public function getCountryMethods( $countryCode = null ) ], ]; - if ( $countryCode === null ) { + if ($countryCode === null) { return $countryMethods; } - return isset( $countryMethods[$countryCode] ) ? $countryMethods[$countryCode] : $countryMethods['other']; + + return isset($countryMethods[$countryCode]) ? $countryMethods[$countryCode] : $countryMethods['other']; } /** @@ -168,7 +194,7 @@ public function getCountryMethods( $countryCode = null ) */ public function getPaymentMarkImageUrl() { - return $this->_assetRepo->getUrl( 'Dpo_Dpo::images/logo.svg' ); + return $this->_assetRepo->getUrl('Dpo_Dpo::images/logo.svg'); } /** @@ -191,11 +217,11 @@ public function getPaymentAction() { $paymentAction = null; $pre = __METHOD__ . ' : '; - $this->_logger->debug( $pre . 'bof' ); + $this->_logger->debug($pre . 'bof'); - $action = $this->getValue( 'paymentAction' ); + $action = $this->getValue('paymentAction'); - switch ( $action ) { + switch ($action) { case self::PAYMENT_ACTION_AUTH: $paymentAction = \Magento\Payment\Model\Method\AbstractMethod::ACTION_AUTHORIZE; break; @@ -205,9 +231,11 @@ public function getPaymentAction() case self::PAYMENT_ACTION_ORDER: $paymentAction = \Magento\Payment\Model\Method\AbstractMethod::ACTION_ORDER; break; + default: + break; } - $this->_logger->debug( $pre . 'eof : paymentAction is ' . $paymentAction ); + $this->_logger->debug($pre . 'eof : paymentAction is ' . $paymentAction); return $paymentAction; } @@ -216,20 +244,21 @@ public function getPaymentAction() * Check whether specified currency code is supported * * @param string $code + * * @return bool */ - public function isCurrencyCodeSupported( $code ) + public function isCurrencyCodeSupported($code) { $supported = false; $pre = __METHOD__ . ' : '; - $this->_logger->debug( $pre . "bof and code: {$code}" ); + $this->_logger->debug($pre . "bof and code: {$code}"); - if ( in_array( $code, $this->_supportedCurrencyCodes ) ) { + if (in_array($code, $this->_supportedCurrencyCodes)) { $supported = true; } - $this->_logger->debug( $pre . "eof and supported : {$supported}" ); + $this->_logger->debug($pre . "eof and supported : {$supported}"); return $supported; } @@ -238,13 +267,15 @@ public function isCurrencyCodeSupported( $code ) * Check whether specified locale code is supported. Fallback to en_US * * @param string|null $localeCode + * * @return string */ - protected function _getSupportedLocaleCode( $localeCode = null ) + protected function _getSupportedLocaleCode($localeCode = null) { - if ( !$localeCode || !in_array( $localeCode, $this->_supportedImageLocales ) ) { + if ( ! $localeCode || ! in_array($localeCode, $this->_supportedImageLocales)) { return 'en_US'; } + return $localeCode; } @@ -253,10 +284,11 @@ protected function _getSupportedLocaleCode( $localeCode = null ) * Map Dpo config fields * * @param string $fieldName + * * @return string|null * @SuppressWarnings(PHPMD.CyclomaticComplexity) */ - protected function _mapDpoFieldset( $fieldName ) + protected function _mapDpoFieldset($fieldName) { return "payment/{$this->_methodCode}/{$fieldName}"; } @@ -265,12 +297,13 @@ protected function _mapDpoFieldset( $fieldName ) * Map any supported payment method into a config path by specified field name * * @param string $fieldName + * * @return string|null * @SuppressWarnings(PHPMD.CyclomaticComplexity) * @SuppressWarnings(PHPMD.NPathComplexity) */ - protected function _getSpecificConfigPath( $fieldName ) + protected function _getSpecificConfigPath($fieldName) { - return $this->_mapDpoFieldset( $fieldName ); + return $this->_mapDpoFieldset($fieldName); } } diff --git a/Dpo/Dpo/Controller/Redirect/Order.php b/Dpo/Dpo/Model/CountryData.php old mode 100755 new mode 100644 similarity index 79% rename from Dpo/Dpo/Controller/Redirect/Order.php rename to Dpo/Dpo/Model/CountryData.php index dcc0f93..9558c73 --- a/Dpo/Dpo/Controller/Redirect/Order.php +++ b/Dpo/Dpo/Model/CountryData.php @@ -1,340 +1,256 @@ orderRepository->get( $id ); - } - - public function createOrder() - { - $quote = $this->setPaymentMethod(); - - return $this->onePage->saveOrder(); - } - - public function getQuote() - { - return $this->onePage->getQuote(); - } - - public function setPaymentMethod() - { - $quote = $this->getQuote(); - - $quote->setPaymentMethod( 'dpo' ); - $quote->setInventoryProcessed( false ); - - // Set Sales Order Payment - $quote->getPayment()->importData( ['method' => 'dpo'] ); - // Now Save Quote - $quote->save(); - - // Collect Totals - $quote->collectTotals(); - return $quote; - } - public function execute() - { - $data = $this->_paymentMethod->getStandardCheckoutFormFields(); - - if ( $data ) { - $response = $this->resultFactory->create( ResultFactory::TYPE_RAW ); - $response->setHeader( 'Content-type', 'text/plain' ); - $response->setHeader( 'X-Magento-Cache-Control', ' max-age=0, must-revalidate, no-cache, no-store Age: 0' ); - $response->setHeader( 'X-Magento-Cache-Debug', 'MISS' ); - $response->setContents( - json_encode( $data ) - ); - - return $response; - } else { - throwException( 'There was an error. Please try again...' ); - } - } - - public function curlPost( $url, $fields ) - { - $curl = curl_init( $url ); - curl_setopt( $curl, CURLOPT_POST, count( $fields ) ); - curl_setopt( $curl, CURLOPT_POSTFIELDS, $fields ); - curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 ); - $response = curl_exec( $curl ); - curl_close( $curl ); - return $response; - } +class CountryData +{ - public function getNumberFormat( $number ) + public static function getCountries(): array { - return number_format( $number, 2, '.', '' ); + return array_merge(self::getCountriesAToM(),self::getCountriesNToZ()); } - public function getCountryDetails( $code2 ) + private static function getCountriesAToM(): array { - $countries = array( + return array( + "AD" => array( "ANDORRA", "AD", "AND", "020" ), + "AE" => array( "UNITED ARAB EMIRATES", "AE", "ARE", "784" ), "AF" => array( "AFGHANISTAN", "AF", "AFG", "004" ), + "AG" => array( "ANTIGUA AND BARBUDA", "AG", "ATG", "028" ), + "AI" => array( "ANGUILLA", "AI", "AIA", "660" ), "AL" => array( "ALBANIA", "AL", "ALB", "008" ), - "DZ" => array( "ALGERIA", "DZ", "DZA", "012" ), - "AS" => array( "AMERICAN SAMOA", "AS", "ASM", "016" ), - "AD" => array( "ANDORRA", "AD", "AND", "020" ), + "AM" => array( "ARMENIA", "AM", "ARM", "051" ), + "AN" => array( "NETHERLANDS ANTILLES", "AN", "ANT", "530" ), "AO" => array( "ANGOLA", "AO", "AGO", "024" ), - "AI" => array( "ANGUILLA", "AI", "AIA", "660" ), "AQ" => array( "ANTARCTICA", "AQ", "ATA", "010" ), - "AG" => array( "ANTIGUA AND BARBUDA", "AG", "ATG", "028" ), "AR" => array( "ARGENTINA", "AR", "ARG", "032" ), - "AM" => array( "ARMENIA", "AM", "ARM", "051" ), - "AW" => array( "ARUBA", "AW", "ABW", "533" ), - "AU" => array( "AUSTRALIA", "AU", "AUS", "036" ), + "AS" => array( "AMERICAN SAMOA", "AS", "ASM", "016" ), "AT" => array( "AUSTRIA", "AT", "AUT", "040" ), + "AU" => array( "AUSTRALIA", "AU", "AUS", "036" ), + "AW" => array( "ARUBA", "AW", "ABW", "533" ), "AZ" => array( "AZERBAIJAN", "AZ", "AZE", "031" ), - "BS" => array( "BAHAMAS", "BS", "BHS", "044" ), - "BH" => array( "BAHRAIN", "BH", "BHR", "048" ), - "BD" => array( "BANGLADESH", "BD", "BGD", "050" ), + "BA" => array( "BOSNIA AND HERZEGOVINA", "BA", "BIH", "070" ), "BB" => array( "BARBADOS", "BB", "BRB", "052" ), - "BY" => array( "BELARUS", "BY", "BLR", "112" ), + "BD" => array( "BANGLADESH", "BD", "BGD", "050" ), "BE" => array( "BELGIUM", "BE", "BEL", "056" ), - "BZ" => array( "BELIZE", "BZ", "BLZ", "084" ), + "BF" => array( "BURKINA FASO", "BF", "BFA", "854" ), + "BG" => array( "BULGARIA", "BG", "BGR", "100" ), + "BH" => array( "BAHRAIN", "BH", "BHR", "048" ), + "BI" => array( "BURUNDI", "BI", "BDI", "108" ), "BJ" => array( "BENIN", "BJ", "BEN", "204" ), "BM" => array( "BERMUDA", "BM", "BMU", "060" ), - "BT" => array( "BHUTAN", "BT", "BTN", "064" ), + "BN" => array( "BRUNEI DARUSSALAM", "BN", "BRN", "096" ), "BO" => array( "BOLIVIA", "BO", "BOL", "068" ), - "BA" => array( "BOSNIA AND HERZEGOVINA", "BA", "BIH", "070" ), - "BW" => array( "BOTSWANA", "BW", "BWA", "072" ), - "BV" => array( "BOUVET ISLAND", "BV", "BVT", "074" ), "BR" => array( "BRAZIL", "BR", "BRA", "076" ), - "IO" => array( "BRITISH INDIAN OCEAN TERRITORY", "IO", "IOT", "086" ), - "BN" => array( "BRUNEI DARUSSALAM", "BN", "BRN", "096" ), - "BG" => array( "BULGARIA", "BG", "BGR", "100" ), - "BF" => array( "BURKINA FASO", "BF", "BFA", "854" ), - "BI" => array( "BURUNDI", "BI", "BDI", "108" ), - "KH" => array( "CAMBODIA", "KH", "KHM", "116" ), - "CM" => array( "CAMEROON", "CM", "CMR", "120" ), + "BS" => array( "BAHAMAS", "BS", "BHS", "044" ), + "BT" => array( "BHUTAN", "BT", "BTN", "064" ), + "BV" => array( "BOUVET ISLAND", "BV", "BVT", "074" ), + "BW" => array( "BOTSWANA", "BW", "BWA", "072" ), + "BY" => array( "BELARUS", "BY", "BLR", "112" ), + "BZ" => array( "BELIZE", "BZ", "BLZ", "084" ), "CA" => array( "CANADA", "CA", "CAN", "124" ), - "CV" => array( "CAPE VERDE", "CV", "CPV", "132" ), - "KY" => array( "CAYMAN ISLANDS", "KY", "CYM", "136" ), + "CC" => array( "COCOS (KEELING) ISLANDS", "CC", "CCK", "166" ), "CF" => array( "CENTRAL AFRICAN REPUBLIC", "CF", "CAF", "140" ), - "TD" => array( "CHAD", "TD", "TCD", "148" ), + "CG" => array( "CONGO", "CG", "COG", "178" ), + "CH" => array( "SWITZERLAND", "CH", "CHE", "756" ), + "CI" => array( "COTE D'IVOIRE", "CI", "CIV", "384" ), + "CK" => array( "COOK ISLANDS", "CK", "COK", "184" ), "CL" => array( "CHILE", "CL", "CHL", "152" ), + "CM" => array( "CAMEROON", "CM", "CMR", "120" ), "CN" => array( "CHINA", "CN", "CHN", "156" ), - "CX" => array( "CHRISTMAS ISLAND", "CX", "CXR", "162" ), - "CC" => array( "COCOS (KEELING) ISLANDS", "CC", "CCK", "166" ), "CO" => array( "COLOMBIA", "CO", "COL", "170" ), - "KM" => array( "COMOROS", "KM", "COM", "174" ), - "CG" => array( "CONGO", "CG", "COG", "178" ), - "CK" => array( "COOK ISLANDS", "CK", "COK", "184" ), "CR" => array( "COSTA RICA", "CR", "CRI", "188" ), - "CI" => array( "COTE D'IVOIRE", "CI", "CIV", "384" ), - "HR" => array( "CROATIA (local name: Hrvatska)", "HR", "HRV", "191" ), "CU" => array( "CUBA", "CU", "CUB", "192" ), + "CV" => array( "CAPE VERDE", "CV", "CPV", "132" ), + "CX" => array( "CHRISTMAS ISLAND", "CX", "CXR", "162" ), "CY" => array( "CYPRUS", "CY", "CYP", "196" ), "CZ" => array( "CZECH REPUBLIC", "CZ", "CZE", "203" ), - "DK" => array( "DENMARK", "DK", "DNK", "208" ), + "DE" => array( "GERMANY", "DE", "DEU", "276" ), "DJ" => array( "DJIBOUTI", "DJ", "DJI", "262" ), + "DK" => array( "DENMARK", "DK", "DNK", "208" ), "DM" => array( "DOMINICA", "DM", "DMA", "212" ), "DO" => array( "DOMINICAN REPUBLIC", "DO", "DOM", "214" ), - "TL" => array( "EAST TIMOR", "TL", "TLS", "626" ), + "DZ" => array( "ALGERIA", "DZ", "DZA", "012" ), "EC" => array( "ECUADOR", "EC", "ECU", "218" ), + "EE" => array( "ESTONIA", "EE", "EST", "233" ), "EG" => array( "EGYPT", "EG", "EGY", "818" ), - "SV" => array( "EL SALVADOR", "SV", "SLV", "222" ), - "GQ" => array( "EQUATORIAL GUINEA", "GQ", "GNQ", "226" ), + "EH" => array( "WESTERN SAHARA", "EH", "ESH", "732" ), "ER" => array( "ERITREA", "ER", "ERI", "232" ), - "EE" => array( "ESTONIA", "EE", "EST", "233" ), + "ES" => array( "SPAIN", "ES", "ESP", "724" ), "ET" => array( "ETHIOPIA", "ET", "ETH", "210" ), + "FI" => array( "FINLAND", "FI", "FIN", "246" ), + "FJ" => array( "FIJI", "FJ", "FJI", "242" ), "FK" => array( "FALKLAND ISLANDS (MALVINAS)", "FK", "FLK", "238" ), + "FM" => array( "MICRONESIA, FEDERATED STATES OF", "FM", "FSM", "583" ), "FO" => array( "FAROE ISLANDS", "FO", "FRO", "234" ), - "FJ" => array( "FIJI", "FJ", "FJI", "242" ), - "FI" => array( "FINLAND", "FI", "FIN", "246" ), "FR" => array( "FRANCE", "FR", "FRA", "250" ), "FX" => array( "FRANCE, METROPOLITAN", "FX", "FXX", "249" ), - "GF" => array( "FRENCH GUIANA", "GF", "GUF", "254" ), - "PF" => array( "FRENCH POLYNESIA", "PF", "PYF", "258" ), - "TF" => array( "FRENCH SOUTHERN TERRITORIES", "TF", "ATF", "260" ), "GA" => array( "GABON", "GA", "GAB", "266" ), - "GM" => array( "GAMBIA", "GM", "GMB", "270" ), + "GB" => array( "UNITED KINGDOM", "GB", "GBR", "826" ), + "GD" => array( "GRENADA", "GD", "GRD", "308" ), "GE" => array( "GEORGIA", "GE", "GEO", "268" ), - "DE" => array( "GERMANY", "DE", "DEU", "276" ), + "GF" => array( "FRENCH GUIANA", "GF", "GUF", "254" ), "GH" => array( "GHANA", "GH", "GHA", "288" ), "GI" => array( "GIBRALTAR", "GI", "GIB", "292" ), - "GR" => array( "GREECE", "GR", "GRC", "300" ), "GL" => array( "GREENLAND", "GL", "GRL", "304" ), - "GD" => array( "GRENADA", "GD", "GRD", "308" ), + "GM" => array( "GAMBIA", "GM", "GMB", "270" ), + "GN" => array( "GUINEA", "GN", "GIN", "324" ), "GP" => array( "GUADELOUPE", "GP", "GLP", "312" ), - "GU" => array( "GUAM", "GU", "GUM", "316" ), + "GQ" => array( "EQUATORIAL GUINEA", "GQ", "GNQ", "226" ), + "GR" => array( "GREECE", "GR", "GRC", "300" ), "GT" => array( "GUATEMALA", "GT", "GTM", "320" ), - "GN" => array( "GUINEA", "GN", "GIN", "324" ), + "GU" => array( "GUAM", "GU", "GUM", "316" ), "GW" => array( "GUINEA-BISSAU", "GW", "GNB", "624" ), "GY" => array( "GUYANA", "GY", "GUY", "328" ), - "HT" => array( "HAITI", "HT", "HTI", "332" ), + "HK" => array( "HONG KONG", "HK", "HKG", "344" ), "HM" => array( "HEARD ISLAND & MCDONALD ISLANDS", "HM", "HMD", "334" ), "HN" => array( "HONDURAS", "HN", "HND", "340" ), - "HK" => array( "HONG KONG", "HK", "HKG", "344" ), + "HR" => array( "CROATIA (local name: Hrvatska)", "HR", "HRV", "191" ), + "HT" => array( "HAITI", "HT", "HTI", "332" ), "HU" => array( "HUNGARY", "HU", "HUN", "348" ), - "IS" => array( "ICELAND", "IS", "ISL", "352" ), - "IN" => array( "INDIA", "IN", "IND", "356" ), "ID" => array( "INDONESIA", "ID", "IDN", "360" ), - "IR" => array( "IRAN, ISLAMIC REPUBLIC OF", "IR", "IRN", "364" ), - "IQ" => array( "IRAQ", "IQ", "IRQ", "368" ), "IE" => array( "IRELAND", "IE", "IRL", "372" ), "IL" => array( "ISRAEL", "IL", "ISR", "376" ), + "IN" => array( "INDIA", "IN", "IND", "356" ), + "IO" => array( "BRITISH INDIAN OCEAN TERRITORY", "IO", "IOT", "086" ), + "IQ" => array( "IRAQ", "IQ", "IRQ", "368" ), + "IR" => array( "IRAN, ISLAMIC REPUBLIC OF", "IR", "IRN", "364" ), + "IS" => array( "ICELAND", "IS", "ISL", "352" ), "IT" => array( "ITALY", "IT", "ITA", "380" ), "JM" => array( "JAMAICA", "JM", "JAM", "388" ), - "JP" => array( "JAPAN", "JP", "JPN", "392" ), "JO" => array( "JORDAN", "JO", "JOR", "400" ), - "KZ" => array( "KAZAKHSTAN", "KZ", "KAZ", "398" ), + "JP" => array( "JAPAN", "JP", "JPN", "392" ), "KE" => array( "KENYA", "KE", "KEN", "404" ), + "KG" => array( "KYRGYZSTAN", "KG", "KGZ", "417" ), + "KH" => array( "CAMBODIA", "KH", "KHM", "116" ), "KI" => array( "KIRIBATI", "KI", "KIR", "296" ), + "KM" => array( "COMOROS", "KM", "COM", "174" ), + "KN" => array( "SAINT KITTS AND NEVIS", "KN", "KNA", "659" ), "KP" => array( "KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF", "KP", "PRK", "408" ), "KR" => array( "KOREA, REPUBLIC OF", "KR", "KOR", "410" ), "KW" => array( "KUWAIT", "KW", "KWT", "414" ), - "KG" => array( "KYRGYZSTAN", "KG", "KGZ", "417" ), + "KY" => array( "CAYMAN ISLANDS", "KY", "CYM", "136" ), + "KZ" => array( "KAZAKHSTAN", "KZ", "KAZ", "398" ), "LA" => array( "LAO PEOPLE'S DEMOCRATIC REPUBLIC", "LA", "LAO", "418" ), - "LV" => array( "LATVIA", "LV", "LVA", "428" ), "LB" => array( "LEBANON", "LB", "LBN", "422" ), - "LS" => array( "LESOTHO", "LS", "LSO", "426" ), - "LR" => array( "LIBERIA", "LR", "LBR", "430" ), - "LY" => array( "LIBYAN ARAB JAMAHIRIYA", "LY", "LBY", "434" ), + "LC" => array( "SAINT LUCIA", "LC", "LCA", "662" ), "LI" => array( "LIECHTENSTEIN", "LI", "LIE", "438" ), + "LK" => array( "SRI LANKA", "LK", "LKA", "144" ), + "LR" => array( "LIBERIA", "LR", "LBR", "430" ), + "LS" => array( "LESOTHO", "LS", "LSO", "426" ), "LT" => array( "LITHUANIA", "LT", "LTU", "440" ), "LU" => array( "LUXEMBOURG", "LU", "LUX", "442" ), - "MO" => array( "MACAU", "MO", "MAC", "446" ), - "MK" => array( "MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF", "MK", "MKD", "807" ), - "MG" => array( "MADAGASCAR", "MG", "MDG", "450" ), - "MW" => array( "MALAWI", "MW", "MWI", "454" ), - "MY" => array( "MALAYSIA", "MY", "MYS", "458" ), - "MV" => array( "MALDIVES", "MV", "MDV", "462" ), - "ML" => array( "MALI", "ML", "MLI", "466" ), - "MT" => array( "MALTA", "MT", "MLT", "470" ), - "MH" => array( "MARSHALL ISLANDS", "MH", "MHL", "584" ), - "MQ" => array( "MARTINIQUE", "MQ", "MTQ", "474" ), - "MR" => array( "MAURITANIA", "MR", "MRT", "478" ), - "MU" => array( "MAURITIUS", "MU", "MUS", "480" ), - "YT" => array( "MAYOTTE", "YT", "MYT", "175" ), - "MX" => array( "MEXICO", "MX", "MEX", "484" ), - "FM" => array( "MICRONESIA, FEDERATED STATES OF", "FM", "FSM", "583" ), - "MD" => array( "MOLDOVA, REPUBLIC OF", "MD", "MDA", "498" ), - "MC" => array( "MONACO", "MC", "MCO", "492" ), - "MN" => array( "MONGOLIA", "MN", "MNG", "496" ), - "MS" => array( "MONTSERRAT", "MS", "MSR", "500" ), + "LV" => array( "LATVIA", "LV", "LVA", "428" ), + "LY" => array( "LIBYAN ARAB JAMAHIRIYA", "LY", "LBY", "434" ), "MA" => array( "MOROCCO", "MA", "MAR", "504" ), - "MZ" => array( "MOZAMBIQUE", "MZ", "MOZ", "508" ), - "MM" => array( "MYANMAR", "MM", "MMR", "104" ), + "MC" => array( "MONACO", "MC", "MCO", "492" ), "MD" => array( "MOLDOVA, REPUBLIC OF", "MD", "MDA", "498" ), + "MG" => array( "MADAGASCAR", "MG", "MDG", "450" ), "MH" => array( "MARSHALL ISLANDS", "MH", "MHL", "584" ), + "MK" => array( "MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF", "MK", "MKD", "807" ), "ML" => array( "MALI", "ML", "MLI", "466" ), + "MM" => array( "MYANMAR", "MM", "MMR", "104" ), "MN" => array( "MONGOLIA", "MN", "MNG", "496" ), + "MO" => array( "MACAU", "MO", "MAC", "446" ), "MP" => array( "NORTHERN MARIANA ISLANDS", "MP", "MNP", "580" ), + "MQ" => array( "MARTINIQUE", "MQ", "MTQ", "474" ), "MR" => array( "MAURITANIA", "MR", "MRT", "478" ), + "MS" => array( "MONTSERRAT", "MS", "MSR", "500" ), "MT" => array( "MALTA", "MT", "MLT", "470" ), + "MU" => array( "MAURITIUS", "MU", "MUS", "480" ), "MV" => array( "MALDIVES", "MV", "MDV", "462" ), + "MW" => array( "MALAWI", "MW", "MWI", "454" ), "MX" => array( "MEXICO", "MX", "MEX", "484" ), + "MY" => array( "MALAYSIA", "MY", "MYS", "458" ), "MZ" => array( "MOZAMBIQUE", "MZ", "MOZ", "508" ), + ); + } + + private static function getCountriesNToZ(): array + { + return array( "NA" => array( "NAMIBIA", "NA", "NAM", "516" ), - "NR" => array( "NAURU", "NR", "NRU", "520" ), - "NP" => array( "NEPAL", "NP", "NPL", "524" ), - "NL" => array( "NETHERLANDS", "NL", "NLD", "528" ), - "AN" => array( "NETHERLANDS ANTILLES", "AN", "ANT", "530" ), "NC" => array( "NEW CALEDONIA", "NC", "NCL", "540" ), - "NZ" => array( "NEW ZEALAND", "NZ", "NZL", "554" ), - "NI" => array( "NICARAGUA", "NI", "NIC", "558" ), "NE" => array( "NIGER", "NE", "NER", "562" ), - "NG" => array( "NIGERIA", "NG", "NGA", "566" ), - "NU" => array( "NIUE", "NU", "NIU", "570" ), "NF" => array( "NORFOLK ISLAND", "NF", "NFK", "574" ), - "MP" => array( "NORTHERN MARIANA ISLANDS", "MP", "MNP", "580" ), + "NG" => array( "NIGERIA", "NG", "NGA", "566" ), + "NI" => array( "NICARAGUA", "NI", "NIC", "558" ), + "NL" => array( "NETHERLANDS", "NL", "NLD", "528" ), "NO" => array( "NORWAY", "NO", "NOR", "578" ), + "NP" => array( "NEPAL", "NP", "NPL", "524" ), + "NR" => array( "NAURU", "NR", "NRU", "520" ), + "NU" => array( "NIUE", "NU", "NIU", "570" ), + "NZ" => array( "NEW ZEALAND", "NZ", "NZL", "554" ), "OM" => array( "OMAN", "OM", "OMN", "512" ), - "PK" => array( "PAKISTAN", "PK", "PAK", "586" ), - "PW" => array( "PALAU", "PW", "PLW", "585" ), "PA" => array( "PANAMA", "PA", "PAN", "591" ), - "PG" => array( "PAPUA NEW GUINEA", "PG", "PNG", "598" ), - "PY" => array( "PARAGUAY", "PY", "PRY", "600" ), "PE" => array( "PERU", "PE", "PER", "604" ), + "PF" => array( "FRENCH POLYNESIA", "PF", "PYF", "258" ), + "PG" => array( "PAPUA NEW GUINEA", "PG", "PNG", "598" ), "PH" => array( "PHILIPPINES", "PH", "PHL", "608" ), - "PN" => array( "PITCAIRN", "PN", "PCN", "612" ), + "PK" => array( "PAKISTAN", "PK", "PAK", "586" ), "PL" => array( "POLAND", "PL", "POL", "616" ), - "PT" => array( "PORTUGAL", "PT", "PRT", "620" ), + "PM" => array( "SAINT PIERRE AND MIQUELON", "PM", "SPM", "666" ), + "PN" => array( "PITCAIRN", "PN", "PCN", "612" ), "PR" => array( "PUERTO RICO", "PR", "PRI", "630" ), + "PT" => array( "PORTUGAL", "PT", "PRT", "620" ), + "PW" => array( "PALAU", "PW", "PLW", "585" ), + "PY" => array( "PARAGUAY", "PY", "PRY", "600" ), "QA" => array( "QATAR", "QA", "QAT", "634" ), "RE" => array( "REUNION", "RE", "REU", "638" ), "RO" => array( "ROMANIA", "RO", "ROU", "642" ), + "RS" => array( "SERBIA", "RS", "SRB", "688" ), "RU" => array( "RUSSIAN FEDERATION", "RU", "RUS", "643" ), "RW" => array( "RWANDA", "RW", "RWA", "646" ), - "KN" => array( "SAINT KITTS AND NEVIS", "KN", "KNA", "659" ), - "LC" => array( "SAINT LUCIA", "LC", "LCA", "662" ), - "VC" => array( "SAINT VINCENT AND THE GRENADINES", "VC", "VCT", "670" ), - "WS" => array( "SAMOA", "WS", "WSM", "882" ), - "SM" => array( "SAN MARINO", "SM", "SMR", "674" ), - "ST" => array( "SAO TOME AND PRINCIPE", "ST", "STP", "678" ), "SA" => array( "SAUDI ARABIA", "SA", "SAU", "682" ), - "SN" => array( "SENEGAL", "SN", "SEN", "686" ), - "RS" => array( "SERBIA", "RS", "SRB", "688" ), + "SB" => array( "SOLOMON ISLANDS", "SB", "SLB", "90" ), "SC" => array( "SEYCHELLES", "SC", "SYC", "690" ), - "SL" => array( "SIERRA LEONE", "SL", "SLE", "694" ), + "SD" => array( "SUDAN", "SD", "SDN", "736" ), + "SE" => array( "SWEDEN", "SE", "SWE", "752" ), "SG" => array( "SINGAPORE", "SG", "SGP", "702" ), - "SK" => array( "SLOVAKIA (Slovak Republic)", "SK", "SVK", "703" ), + "SH" => array( "SAINT HELENA", "SH", "SHN", "654" ), "SI" => array( "SLOVENIA", "SI", "SVN", "705" ), - "SB" => array( "SOLOMON ISLANDS", "SB", "SLB", "90" ), + "SJ" => array( "SVALBARD AND JAN MAYEN ISLANDS", "SJ", "SJM", "744" ), + "SK" => array( "SLOVAKIA (Slovak Republic)", "SK", "SVK", "703" ), + "SL" => array( "SIERRA LEONE", "SL", "SLE", "694" ), + "SM" => array( "SAN MARINO", "SM", "SMR", "674" ), + "SN" => array( "SENEGAL", "SN", "SEN", "686" ), "SO" => array( "SOMALIA", "SO", "SOM", "706" ), - "ZA" => array( "SOUTH AFRICA", "ZA", "ZAF", "710" ), - "ES" => array( "SPAIN", "ES", "ESP", "724" ), - "LK" => array( "SRI LANKA", "LK", "LKA", "144" ), - "SH" => array( "SAINT HELENA", "SH", "SHN", "654" ), - "PM" => array( "SAINT PIERRE AND MIQUELON", "PM", "SPM", "666" ), - "SD" => array( "SUDAN", "SD", "SDN", "736" ), "SR" => array( "SURINAME", "SR", "SUR", "740" ), - "SJ" => array( "SVALBARD AND JAN MAYEN ISLANDS", "SJ", "SJM", "744" ), - "SZ" => array( "SWAZILAND", "SZ", "SWZ", "748" ), - "SE" => array( "SWEDEN", "SE", "SWE", "752" ), - "CH" => array( "SWITZERLAND", "CH", "CHE", "756" ), + "ST" => array( "SAO TOME AND PRINCIPE", "ST", "STP", "678" ), + "SV" => array( "EL SALVADOR", "SV", "SLV", "222" ), "SY" => array( "SYRIAN ARAB REPUBLIC", "SY", "SYR", "760" ), - "TW" => array( "TAIWAN, PROVINCE OF CHINA", "TW", "TWN", "158" ), - "TJ" => array( "TAJIKISTAN", "TJ", "TJK", "762" ), - "TZ" => array( "TANZANIA, UNITED REPUBLIC OF", "TZ", "TZA", "834" ), - "TH" => array( "THAILAND", "TH", "THA", "764" ), + "SZ" => array( "SWAZILAND", "SZ", "SWZ", "748" ), + "TC" => array( "TURKS AND CAICOS ISLANDS", "TC", "TCA", "796" ), + "TD" => array( "CHAD", "TD", "TCD", "148" ), + "TF" => array( "FRENCH SOUTHERN TERRITORIES", "TF", "ATF", "260" ), "TG" => array( "TOGO", "TG", "TGO", "768" ), + "TH" => array( "THAILAND", "TH", "THA", "764" ), + "TJ" => array( "TAJIKISTAN", "TJ", "TJK", "762" ), "TK" => array( "TOKELAU", "TK", "TKL", "772" ), - "TO" => array( "TONGA", "TO", "TON", "776" ), - "TT" => array( "TRINIDAD AND TOBAGO", "TT", "TTO", "780" ), + "TL" => array( "EAST TIMOR", "TL", "TLS", "626" ), + "TM" => array( "TURKMENISTAN", "TM", "TKM", "795" ), "TN" => array( "TUNISIA", "TN", "TUN", "788" ), + "TO" => array( "TONGA", "TO", "TON", "776" ), "TR" => array( "TURKEY", "TR", "TUR", "792" ), - "TM" => array( "TURKMENISTAN", "TM", "TKM", "795" ), - "TC" => array( "TURKS AND CAICOS ISLANDS", "TC", "TCA", "796" ), + "TT" => array( "TRINIDAD AND TOBAGO", "TT", "TTO", "780" ), "TV" => array( "TUVALU", "TV", "TUV", "798" ), - "UG" => array( "UGANDA", "UG", "UGA", "800" ), + "TW" => array( "TAIWAN, PROVINCE OF CHINA", "TW", "TWN", "158" ), + "TZ" => array( "TANZANIA, UNITED REPUBLIC OF", "TZ", "TZA", "834" ), "UA" => array( "UKRAINE", "UA", "UKR", "804" ), - "AE" => array( "UNITED ARAB EMIRATES", "AE", "ARE", "784" ), - "GB" => array( "UNITED KINGDOM", "GB", "GBR", "826" ), - "US" => array( "UNITED STATES", "US", "USA", "840" ), + "UG" => array( "UGANDA", "UG", "UGA", "800" ), "UM" => array( "UNITED STATES MINOR OUTLYING ISLANDS", "UM", "UMI", "581" ), + "US" => array( "UNITED STATES", "US", "USA", "840" ), "UY" => array( "URUGUAY", "UY", "URY", "858" ), "UZ" => array( "UZBEKISTAN", "UZ", "UZB", "860" ), - "VU" => array( "VANUATU", "VU", "VUT", "548" ), "VA" => array( "VATICAN CITY STATE (HOLY SEE)", "VA", "VAT", "336" ), + "VC" => array( "SAINT VINCENT AND THE GRENADINES", "VC", "VCT", "670" ), "VE" => array( "VENEZUELA", "VE", "VEN", "862" ), - "VN" => array( "VIET NAM", "VN", "VNM", "704" ), "VG" => array( "VIRGIN ISLANDS (BRITISH)", "VG", "VGB", "92" ), "VI" => array( "VIRGIN ISLANDS (U.S.)", "VI", "VIR", "850" ), + "VN" => array( "VIET NAM", "VN", "VNM", "704" ), + "VU" => array( "VANUATU", "VU", "VUT", "548" ), "WF" => array( "WALLIS AND FUTUNA ISLANDS", "WF", "WLF", "876" ), - "EH" => array( "WESTERN SAHARA", "EH", "ESH", "732" ), + "WS" => array( "SAMOA", "WS", "WSM", "882" ), "YE" => array( "YEMEN", "YE", "YEM", "887" ), + "YT" => array( "MAYOTTE", "YT", "MYT", "175" ), "YU" => array( "YUGOSLAVIA", "YU", "YUG", "891" ), - "ZR" => array( "ZAIRE", "ZR", "ZAR", "180" ), + "ZA" => array( "SOUTH AFRICA", "ZA", "ZAF", "710" ), "ZM" => array( "ZAMBIA", "ZM", "ZMB", "894" ), + "ZR" => array( "ZAIRE", "ZR", "ZAR", "180" ), "ZW" => array( "ZIMBABWE", "ZW", "ZWE", "716" ), ); - - foreach ( $countries as $key => $val ) { - - if ( $key == $code2 ) { - return $val[2]; - } - - } } -} + +} \ No newline at end of file diff --git a/Dpo/Dpo/Model/Dpo.php b/Dpo/Dpo/Model/Dpo.php old mode 100755 new mode 100644 index 4fa7805..edf7105 --- a/Dpo/Dpo/Model/Dpo.php +++ b/Dpo/Dpo/Model/Dpo.php @@ -1,6 +1,6 @@ true ); + /** * @param \Magento\Framework\Model\Context $context * @param \Magento\Framework\Registry $registry @@ -196,24 +219,24 @@ class Dpo extends \Magento\Payment\Model\Method\AbstractMethod * @SuppressWarnings(PHPMD.ExcessiveParameterList) */ public function __construct( - \Magento\Framework\Model\Context $context, - \Magento\Framework\Registry $registry, - \Magento\Framework\Api\ExtensionAttributesFactory $extensionFactory, - \Magento\Framework\Api\AttributeValueFactory $customAttributeFactory, - \Magento\Payment\Helper\Data $paymentData, - \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, - \Magento\Payment\Model\Method\Logger $logger, + Context $context, + Registry $registry, + ExtensionAttributesFactory $extensionFactory, + AttributeValueFactory $customAttributeFactory, + Data $paymentData, + ScopeConfigInterface $scopeConfig, + Logger $logger, ConfigFactory $configFactory, - \Magento\Store\Model\StoreManagerInterface $storeManager, - \Magento\Framework\UrlInterface $urlBuilder, - \Magento\Framework\Data\Form\FormKey $formKey, - \Magento\Checkout\Model\Session $checkoutSession, - \Magento\Framework\Exception\LocalizedExceptionFactory $exception, - \Magento\Sales\Api\TransactionRepositoryInterface $transactionRepository, - \Magento\Sales\Model\Order\Payment\Transaction\BuilderInterface $transactionBuilder, - \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null, - \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null, + StoreManagerInterface $storeManager, + UrlInterface $urlBuilder, + FormKey $formKey, + Session $checkoutSession, + LocalizedExceptionFactory $exception, + TransactionRepositoryInterface $transactionRepository, + BuilderInterface $transactionBuilder, TransactionDataFactory $dataFactory, + AbstractResource $resource = null, + AbstractDb $resourceCollection = null, array $data = [] ) { parent::__construct( $context, $registry, $extensionFactory, $customAttributeFactory, $paymentData, $scopeConfig, $logger, $resource, $resourceCollection, $data ); $this->_storeManager = $storeManager; @@ -291,12 +314,10 @@ public function isAvailable( \Magento\Quote\Api\Data\CartInterface $quote = null protected function getStoreName() { - $storeName = $this->_scopeConfig->getValue( + return $this->_scopeConfig->getValue( 'general/store_information/name', \Magento\Store\Model\ScopeInterface::SCOPE_STORE ); - - return $storeName; } /** @@ -326,57 +347,51 @@ public function getStandardCheckoutFormFields() $order = $this->_checkoutSession->getLastRealOrder(); - $description = ''; - $testMode = $this->_scopeConfig->getValue( 'payment/dpo/test_mode' ); $this->_logger->debug( $pre . 'serverMode : ' . $testMode ); - $dpo = new Dpopay( $testMode ); - $dpodata = $this->dataFactory->create(); + $dpo = new Dpopay($this->_logger, $testMode); - // If NOT test mode, use normal credentials - if ( $testMode != 1 ) { - $companyToken = $this->_scopeConfig->getValue( 'payment/dpo/company_token' ); - $serviceType = $this->_scopeConfig->getValue( 'payment/dpo/service_type' ); - } else { - $companyToken = '9F416C11-127B-4DE2-AC7F-D5710E4C5E0A'; - $serviceType = '3854'; - } + $companyToken = $this->getCompanyToken($testMode); + $serviceType = $this->getServiceType($testMode); + $payUrl = $dpo->getDpoGateway(); - // Create description - foreach ( $order->getAllItems() as $items ) { - $description .= $this->getNumberFormat( $items->getQtyOrdered() ) . ' x ' . $items->getName() . ';'; - } - $billing = $order->getBillingAddress(); $country_code2 = $billing->getCountryId(); - $country_code3 = ''; - if ( $country_code2 != null || $country_code2 != '' ) { - $country_code3 = $this->getCountryDetails( $country_code2 ); - } - if ( $country_code3 == null || $country_code3 == '' ) { - $country_code3 = 'ZAF'; + $paymentCurrency = $order->getOrderCurrencyCode(); + + switch ($paymentCurrency) { + case 'ZWD': + $paymentCurrency = 'ZWL'; + break; + + default: + # Do nothing + break; } $orderTotal = $order->getGrandTotal(); - $body = []; $data = []; $data['companyToken'] = $companyToken; $data['accountType'] = $serviceType; $data['paymentAmount'] = $orderTotal; - $data['paymentCurrency'] = $order->getOrderCurrencyCode(); + $data['paymentCurrency'] = $paymentCurrency; $data['customerFirstName'] = $billing->getFirstname(); $data['customerLastName'] = $billing->getLastname(); $data['customerAddress'] = $billing->getStreet()[0]; $data['customerCity'] = $billing->getCity(); $data['customerPhone'] = $billing->getTelephone(); $data['customerEmail'] = $billing->getEmail(); - $data['redirectURL'] = $this->_urlBuilder->getUrl( 'dpo/redirect/success', array( '_secure' => true ) ); - $data['backUrl'] = $this->_urlBuilder->getUrl( 'dpo/redirect/success', array( '_secure' => true ) ); + $data['redirectURL'] = $this->getPaidSuccessUrl(); + $data['backUrl'] = $this->getPaidSuccessUrl(); $companyRef = $data['companyRef'] = $order->getRealOrderId(); + $data['payment_country'] = $country_code2; + $data['payment_country_id'] = $country_code2; + $data['payment_postcode'] = $billing->getPostcode(); + $tokens = $dpo->createToken( $data ); if ( $tokens['success'] === true ) { $transToken = $data['transToken'] = $tokens['transToken']; @@ -395,7 +410,7 @@ public function getStandardCheckoutFormFields() $this->dataFactory->create()->addData( ['recordtype' => 'dporef', 'recordid' => $transToken, 'recordval' => $companyRef] )->save(); return $data; - } catch ( Exception $e ) { + } catch ( \Exception $e ) { echo $e->getMessage(); } } @@ -430,7 +445,7 @@ public function getNumberFormat( $number ) */ public function getPaidSuccessUrl() { - return $this->_urlBuilder->getUrl( 'dpo/redirect/success', array( '_secure' => true ) ); + return $this->_urlBuilder->getUrl( 'dpo/redirect/success', self::SECURE); } /** @@ -445,25 +460,16 @@ protected function getOrderTransaction( $payment ) return $this->transactionRepository->getByTransactionType( Transaction::TYPE_ORDER, $payment->getId(), $payment->getOrder()->getId() ); } - /* - * called dynamically by checkout's framework. - */ - public function getOrderPlaceRedirectUrl() - { - return $this->_urlBuilder->getUrl( 'dpo/redirect' ); - - } - /** - * Checkout redirect URL getter for onepage checkout (hardcode) - * + * called dynamically by checkout's framework + DpoConfigProvider * @return string * @see Quote\Payment::getCheckoutRedirectUrl() * @see \Magento\Checkout\Controller\Onepage::savePaymentAction() */ - public function getCheckoutRedirectUrl() + public function getOrderPlaceRedirectUrl() { return $this->_urlBuilder->getUrl( 'dpo/redirect' ); + } /** @@ -488,7 +494,7 @@ public function initialize( $paymentAction, $stateObject ) */ public function getPaidNotifyUrl() { - return $this->_urlBuilder->getUrl( 'dpo/notify', array( '_secure' => true ) ); + return $this->_urlBuilder->getUrl( 'dpo/notify', self::SECURE ); } public function curlPost( $url, $fields ) @@ -504,247 +510,7 @@ public function curlPost( $url, $fields ) public function getCountryDetails( $code2 ) { - $countries = array( - "AF" => array( "AFGHANISTAN", "AF", "AFG", "004" ), - "AL" => array( "ALBANIA", "AL", "ALB", "008" ), - "DZ" => array( "ALGERIA", "DZ", "DZA", "012" ), - "AS" => array( "AMERICAN SAMOA", "AS", "ASM", "016" ), - "AD" => array( "ANDORRA", "AD", "AND", "020" ), - "AO" => array( "ANGOLA", "AO", "AGO", "024" ), - "AI" => array( "ANGUILLA", "AI", "AIA", "660" ), - "AQ" => array( "ANTARCTICA", "AQ", "ATA", "010" ), - "AG" => array( "ANTIGUA AND BARBUDA", "AG", "ATG", "028" ), - "AR" => array( "ARGENTINA", "AR", "ARG", "032" ), - "AM" => array( "ARMENIA", "AM", "ARM", "051" ), - "AW" => array( "ARUBA", "AW", "ABW", "533" ), - "AU" => array( "AUSTRALIA", "AU", "AUS", "036" ), - "AT" => array( "AUSTRIA", "AT", "AUT", "040" ), - "AZ" => array( "AZERBAIJAN", "AZ", "AZE", "031" ), - "BS" => array( "BAHAMAS", "BS", "BHS", "044" ), - "BH" => array( "BAHRAIN", "BH", "BHR", "048" ), - "BD" => array( "BANGLADESH", "BD", "BGD", "050" ), - "BB" => array( "BARBADOS", "BB", "BRB", "052" ), - "BY" => array( "BELARUS", "BY", "BLR", "112" ), - "BE" => array( "BELGIUM", "BE", "BEL", "056" ), - "BZ" => array( "BELIZE", "BZ", "BLZ", "084" ), - "BJ" => array( "BENIN", "BJ", "BEN", "204" ), - "BM" => array( "BERMUDA", "BM", "BMU", "060" ), - "BT" => array( "BHUTAN", "BT", "BTN", "064" ), - "BO" => array( "BOLIVIA", "BO", "BOL", "068" ), - "BA" => array( "BOSNIA AND HERZEGOVINA", "BA", "BIH", "070" ), - "BW" => array( "BOTSWANA", "BW", "BWA", "072" ), - "BV" => array( "BOUVET ISLAND", "BV", "BVT", "074" ), - "BR" => array( "BRAZIL", "BR", "BRA", "076" ), - "IO" => array( "BRITISH INDIAN OCEAN TERRITORY", "IO", "IOT", "086" ), - "BN" => array( "BRUNEI DARUSSALAM", "BN", "BRN", "096" ), - "BG" => array( "BULGARIA", "BG", "BGR", "100" ), - "BF" => array( "BURKINA FASO", "BF", "BFA", "854" ), - "BI" => array( "BURUNDI", "BI", "BDI", "108" ), - "KH" => array( "CAMBODIA", "KH", "KHM", "116" ), - "CM" => array( "CAMEROON", "CM", "CMR", "120" ), - "CA" => array( "CANADA", "CA", "CAN", "124" ), - "CV" => array( "CAPE VERDE", "CV", "CPV", "132" ), - "KY" => array( "CAYMAN ISLANDS", "KY", "CYM", "136" ), - "CF" => array( "CENTRAL AFRICAN REPUBLIC", "CF", "CAF", "140" ), - "TD" => array( "CHAD", "TD", "TCD", "148" ), - "CL" => array( "CHILE", "CL", "CHL", "152" ), - "CN" => array( "CHINA", "CN", "CHN", "156" ), - "CX" => array( "CHRISTMAS ISLAND", "CX", "CXR", "162" ), - "CC" => array( "COCOS (KEELING) ISLANDS", "CC", "CCK", "166" ), - "CO" => array( "COLOMBIA", "CO", "COL", "170" ), - "KM" => array( "COMOROS", "KM", "COM", "174" ), - "CG" => array( "CONGO", "CG", "COG", "178" ), - "CK" => array( "COOK ISLANDS", "CK", "COK", "184" ), - "CR" => array( "COSTA RICA", "CR", "CRI", "188" ), - "CI" => array( "COTE D'IVOIRE", "CI", "CIV", "384" ), - "HR" => array( "CROATIA (local name: Hrvatska)", "HR", "HRV", "191" ), - "CU" => array( "CUBA", "CU", "CUB", "192" ), - "CY" => array( "CYPRUS", "CY", "CYP", "196" ), - "CZ" => array( "CZECH REPUBLIC", "CZ", "CZE", "203" ), - "DK" => array( "DENMARK", "DK", "DNK", "208" ), - "DJ" => array( "DJIBOUTI", "DJ", "DJI", "262" ), - "DM" => array( "DOMINICA", "DM", "DMA", "212" ), - "DO" => array( "DOMINICAN REPUBLIC", "DO", "DOM", "214" ), - "TL" => array( "EAST TIMOR", "TL", "TLS", "626" ), - "EC" => array( "ECUADOR", "EC", "ECU", "218" ), - "EG" => array( "EGYPT", "EG", "EGY", "818" ), - "SV" => array( "EL SALVADOR", "SV", "SLV", "222" ), - "GQ" => array( "EQUATORIAL GUINEA", "GQ", "GNQ", "226" ), - "ER" => array( "ERITREA", "ER", "ERI", "232" ), - "EE" => array( "ESTONIA", "EE", "EST", "233" ), - "ET" => array( "ETHIOPIA", "ET", "ETH", "210" ), - "FK" => array( "FALKLAND ISLANDS (MALVINAS)", "FK", "FLK", "238" ), - "FO" => array( "FAROE ISLANDS", "FO", "FRO", "234" ), - "FJ" => array( "FIJI", "FJ", "FJI", "242" ), - "FI" => array( "FINLAND", "FI", "FIN", "246" ), - "FR" => array( "FRANCE", "FR", "FRA", "250" ), - "FX" => array( "FRANCE, METROPOLITAN", "FX", "FXX", "249" ), - "GF" => array( "FRENCH GUIANA", "GF", "GUF", "254" ), - "PF" => array( "FRENCH POLYNESIA", "PF", "PYF", "258" ), - "TF" => array( "FRENCH SOUTHERN TERRITORIES", "TF", "ATF", "260" ), - "GA" => array( "GABON", "GA", "GAB", "266" ), - "GM" => array( "GAMBIA", "GM", "GMB", "270" ), - "GE" => array( "GEORGIA", "GE", "GEO", "268" ), - "DE" => array( "GERMANY", "DE", "DEU", "276" ), - "GH" => array( "GHANA", "GH", "GHA", "288" ), - "GI" => array( "GIBRALTAR", "GI", "GIB", "292" ), - "GR" => array( "GREECE", "GR", "GRC", "300" ), - "GL" => array( "GREENLAND", "GL", "GRL", "304" ), - "GD" => array( "GRENADA", "GD", "GRD", "308" ), - "GP" => array( "GUADELOUPE", "GP", "GLP", "312" ), - "GU" => array( "GUAM", "GU", "GUM", "316" ), - "GT" => array( "GUATEMALA", "GT", "GTM", "320" ), - "GN" => array( "GUINEA", "GN", "GIN", "324" ), - "GW" => array( "GUINEA-BISSAU", "GW", "GNB", "624" ), - "GY" => array( "GUYANA", "GY", "GUY", "328" ), - "HT" => array( "HAITI", "HT", "HTI", "332" ), - "HM" => array( "HEARD ISLAND & MCDONALD ISLANDS", "HM", "HMD", "334" ), - "HN" => array( "HONDURAS", "HN", "HND", "340" ), - "HK" => array( "HONG KONG", "HK", "HKG", "344" ), - "HU" => array( "HUNGARY", "HU", "HUN", "348" ), - "IS" => array( "ICELAND", "IS", "ISL", "352" ), - "IN" => array( "INDIA", "IN", "IND", "356" ), - "ID" => array( "INDONESIA", "ID", "IDN", "360" ), - "IR" => array( "IRAN, ISLAMIC REPUBLIC OF", "IR", "IRN", "364" ), - "IQ" => array( "IRAQ", "IQ", "IRQ", "368" ), - "IE" => array( "IRELAND", "IE", "IRL", "372" ), - "IL" => array( "ISRAEL", "IL", "ISR", "376" ), - "IT" => array( "ITALY", "IT", "ITA", "380" ), - "JM" => array( "JAMAICA", "JM", "JAM", "388" ), - "JP" => array( "JAPAN", "JP", "JPN", "392" ), - "JO" => array( "JORDAN", "JO", "JOR", "400" ), - "KZ" => array( "KAZAKHSTAN", "KZ", "KAZ", "398" ), - "KE" => array( "KENYA", "KE", "KEN", "404" ), - "KI" => array( "KIRIBATI", "KI", "KIR", "296" ), - "KP" => array( "KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF", "KP", "PRK", "408" ), - "KR" => array( "KOREA, REPUBLIC OF", "KR", "KOR", "410" ), - "KW" => array( "KUWAIT", "KW", "KWT", "414" ), - "KG" => array( "KYRGYZSTAN", "KG", "KGZ", "417" ), - "LA" => array( "LAO PEOPLE'S DEMOCRATIC REPUBLIC", "LA", "LAO", "418" ), - "LV" => array( "LATVIA", "LV", "LVA", "428" ), - "LB" => array( "LEBANON", "LB", "LBN", "422" ), - "LS" => array( "LESOTHO", "LS", "LSO", "426" ), - "LR" => array( "LIBERIA", "LR", "LBR", "430" ), - "LY" => array( "LIBYAN ARAB JAMAHIRIYA", "LY", "LBY", "434" ), - "LI" => array( "LIECHTENSTEIN", "LI", "LIE", "438" ), - "LT" => array( "LITHUANIA", "LT", "LTU", "440" ), - "LU" => array( "LUXEMBOURG", "LU", "LUX", "442" ), - "MO" => array( "MACAU", "MO", "MAC", "446" ), - "MK" => array( "MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF", "MK", "MKD", "807" ), - "MG" => array( "MADAGASCAR", "MG", "MDG", "450" ), - "MW" => array( "MALAWI", "MW", "MWI", "454" ), - "MY" => array( "MALAYSIA", "MY", "MYS", "458" ), - "MV" => array( "MALDIVES", "MV", "MDV", "462" ), - "ML" => array( "MALI", "ML", "MLI", "466" ), - "MT" => array( "MALTA", "MT", "MLT", "470" ), - "MH" => array( "MARSHALL ISLANDS", "MH", "MHL", "584" ), - "MQ" => array( "MARTINIQUE", "MQ", "MTQ", "474" ), - "MR" => array( "MAURITANIA", "MR", "MRT", "478" ), - "MU" => array( "MAURITIUS", "MU", "MUS", "480" ), - "YT" => array( "MAYOTTE", "YT", "MYT", "175" ), - "MX" => array( "MEXICO", "MX", "MEX", "484" ), - "FM" => array( "MICRONESIA, FEDERATED STATES OF", "FM", "FSM", "583" ), - "MD" => array( "MOLDOVA, REPUBLIC OF", "MD", "MDA", "498" ), - "MC" => array( "MONACO", "MC", "MCO", "492" ), - "MN" => array( "MONGOLIA", "MN", "MNG", "496" ), - "MS" => array( "MONTSERRAT", "MS", "MSR", "500" ), - "MA" => array( "MOROCCO", "MA", "MAR", "504" ), - "MZ" => array( "MOZAMBIQUE", "MZ", "MOZ", "508" ), - "MM" => array( "MYANMAR", "MM", "MMR", "104" ), - "NA" => array( "NAMIBIA", "NA", "NAM", "516" ), - "NR" => array( "NAURU", "NR", "NRU", "520" ), - "NP" => array( "NEPAL", "NP", "NPL", "524" ), - "NL" => array( "NETHERLANDS", "NL", "NLD", "528" ), - "AN" => array( "NETHERLANDS ANTILLES", "AN", "ANT", "530" ), - "NC" => array( "NEW CALEDONIA", "NC", "NCL", "540" ), - "NZ" => array( "NEW ZEALAND", "NZ", "NZL", "554" ), - "NI" => array( "NICARAGUA", "NI", "NIC", "558" ), - "NE" => array( "NIGER", "NE", "NER", "562" ), - "NG" => array( "NIGERIA", "NG", "NGA", "566" ), - "NU" => array( "NIUE", "NU", "NIU", "570" ), - "NF" => array( "NORFOLK ISLAND", "NF", "NFK", "574" ), - "MP" => array( "NORTHERN MARIANA ISLANDS", "MP", "MNP", "580" ), - "NO" => array( "NORWAY", "NO", "NOR", "578" ), - "OM" => array( "OMAN", "OM", "OMN", "512" ), - "PK" => array( "PAKISTAN", "PK", "PAK", "586" ), - "PW" => array( "PALAU", "PW", "PLW", "585" ), - "PA" => array( "PANAMA", "PA", "PAN", "591" ), - "PG" => array( "PAPUA NEW GUINEA", "PG", "PNG", "598" ), - "PY" => array( "PARAGUAY", "PY", "PRY", "600" ), - "PE" => array( "PERU", "PE", "PER", "604" ), - "PH" => array( "PHILIPPINES", "PH", "PHL", "608" ), - "PN" => array( "PITCAIRN", "PN", "PCN", "612" ), - "PL" => array( "POLAND", "PL", "POL", "616" ), - "PT" => array( "PORTUGAL", "PT", "PRT", "620" ), - "PR" => array( "PUERTO RICO", "PR", "PRI", "630" ), - "QA" => array( "QATAR", "QA", "QAT", "634" ), - "RE" => array( "REUNION", "RE", "REU", "638" ), - "RO" => array( "ROMANIA", "RO", "ROU", "642" ), - "RU" => array( "RUSSIAN FEDERATION", "RU", "RUS", "643" ), - "RW" => array( "RWANDA", "RW", "RWA", "646" ), - "KN" => array( "SAINT KITTS AND NEVIS", "KN", "KNA", "659" ), - "LC" => array( "SAINT LUCIA", "LC", "LCA", "662" ), - "VC" => array( "SAINT VINCENT AND THE GRENADINES", "VC", "VCT", "670" ), - "WS" => array( "SAMOA", "WS", "WSM", "882" ), - "SM" => array( "SAN MARINO", "SM", "SMR", "674" ), - "ST" => array( "SAO TOME AND PRINCIPE", "ST", "STP", "678" ), - "SA" => array( "SAUDI ARABIA", "SA", "SAU", "682" ), - "SN" => array( "SENEGAL", "SN", "SEN", "686" ), - "RS" => array( "SERBIA", "RS", "SRB", "688" ), - "SC" => array( "SEYCHELLES", "SC", "SYC", "690" ), - "SL" => array( "SIERRA LEONE", "SL", "SLE", "694" ), - "SG" => array( "SINGAPORE", "SG", "SGP", "702" ), - "SK" => array( "SLOVAKIA (Slovak Republic)", "SK", "SVK", "703" ), - "SI" => array( "SLOVENIA", "SI", "SVN", "705" ), - "SB" => array( "SOLOMON ISLANDS", "SB", "SLB", "90" ), - "SO" => array( "SOMALIA", "SO", "SOM", "706" ), - "ZA" => array( "SOUTH AFRICA", "ZA", "ZAF", "710" ), - "ES" => array( "SPAIN", "ES", "ESP", "724" ), - "LK" => array( "SRI LANKA", "LK", "LKA", "144" ), - "SH" => array( "SAINT HELENA", "SH", "SHN", "654" ), - "PM" => array( "SAINT PIERRE AND MIQUELON", "PM", "SPM", "666" ), - "SD" => array( "SUDAN", "SD", "SDN", "736" ), - "SR" => array( "SURINAME", "SR", "SUR", "740" ), - "SJ" => array( "SVALBARD AND JAN MAYEN ISLANDS", "SJ", "SJM", "744" ), - "SZ" => array( "SWAZILAND", "SZ", "SWZ", "748" ), - "SE" => array( "SWEDEN", "SE", "SWE", "752" ), - "CH" => array( "SWITZERLAND", "CH", "CHE", "756" ), - "SY" => array( "SYRIAN ARAB REPUBLIC", "SY", "SYR", "760" ), - "TW" => array( "TAIWAN, PROVINCE OF CHINA", "TW", "TWN", "158" ), - "TJ" => array( "TAJIKISTAN", "TJ", "TJK", "762" ), - "TZ" => array( "TANZANIA, UNITED REPUBLIC OF", "TZ", "TZA", "834" ), - "TH" => array( "THAILAND", "TH", "THA", "764" ), - "TG" => array( "TOGO", "TG", "TGO", "768" ), - "TK" => array( "TOKELAU", "TK", "TKL", "772" ), - "TO" => array( "TONGA", "TO", "TON", "776" ), - "TT" => array( "TRINIDAD AND TOBAGO", "TT", "TTO", "780" ), - "TN" => array( "TUNISIA", "TN", "TUN", "788" ), - "TR" => array( "TURKEY", "TR", "TUR", "792" ), - "TM" => array( "TURKMENISTAN", "TM", "TKM", "795" ), - "TC" => array( "TURKS AND CAICOS ISLANDS", "TC", "TCA", "796" ), - "TV" => array( "TUVALU", "TV", "TUV", "798" ), - "UG" => array( "UGANDA", "UG", "UGA", "800" ), - "UA" => array( "UKRAINE", "UA", "UKR", "804" ), - "AE" => array( "UNITED ARAB EMIRATES", "AE", "ARE", "784" ), - "GB" => array( "UNITED KINGDOM", "GB", "GBR", "826" ), - "US" => array( "UNITED STATES", "US", "USA", "840" ), - "UM" => array( "UNITED STATES MINOR OUTLYING ISLANDS", "UM", "UMI", "581" ), - "UY" => array( "URUGUAY", "UY", "URY", "858" ), - "UZ" => array( "UZBEKISTAN", "UZ", "UZB", "860" ), - "VU" => array( "VANUATU", "VU", "VUT", "548" ), - "VA" => array( "VATICAN CITY STATE (HOLY SEE)", "VA", "VAT", "336" ), - "VE" => array( "VENEZUELA", "VE", "VEN", "862" ), - "VN" => array( "VIET NAM", "VN", "VNM", "704" ), - "VG" => array( "VIRGIN ISLANDS (BRITISH)", "VG", "VGB", "92" ), - "VI" => array( "VIRGIN ISLANDS (U.S.)", "VI", "VIR", "850" ), - "WF" => array( "WALLIS AND FUTUNA ISLANDS", "WF", "WLF", "876" ), - "EH" => array( "WESTERN SAHARA", "EH", "ESH", "732" ), - "YE" => array( "YEMEN", "YE", "YEM", "887" ), - "YU" => array( "YUGOSLAVIA", "YU", "YUG", "891" ), - "ZR" => array( "ZAIRE", "ZR", "ZAR", "180" ), - "ZM" => array( "ZAMBIA", "ZM", "ZMB", "894" ), - "ZW" => array( "ZIMBABWE", "ZW", "ZWE", "716" ), - ); + $countries = CountryData::getCountries(); foreach ( $countries as $key => $val ) { @@ -754,4 +520,30 @@ public function getCountryDetails( $code2 ) } } + + private function getCompanyToken($testMode): string + { + + if ( $testMode != 1 ) { + $companyToken = $this->_scopeConfig->getValue( 'payment/dpo/company_token' ); + + } else { + $companyToken = '9F416C11-127B-4DE2-AC7F-D5710E4C5E0A'; + } + + return $companyToken; + } + + private function getServiceType($testMode): string + { + + if ( $testMode != 1 ) { + $serviceType = $this->_scopeConfig->getValue( 'payment/dpo/service_type' ); + } else { + $serviceType = '3854'; + } + + return $serviceType; + } + } diff --git a/Dpo/Dpo/Model/DpoConfigProvider.php b/Dpo/Dpo/Model/DpoConfigProvider.php old mode 100755 new mode 100644 index 088794a..ca7112d --- a/Dpo/Dpo/Model/DpoConfigProvider.php +++ b/Dpo/Dpo/Model/DpoConfigProvider.php @@ -1,6 +1,6 @@ _logger->debug( $pre . 'bof' ); - $config = [ + $inlineConfig = [ 'payment' => [ 'dpo' => [ 'paymentAcceptanceMarkSrc' => $this->config->getPaymentMarkImageUrl(), @@ -108,13 +108,13 @@ public function getConfig() foreach ( $this->methodCodes as $code ) { if ( $this->methods[$code]->isAvailable() ) { - $config['payment']['dpo']['redirectUrl'][$code] = $this->getMethodRedirectUrl( $code ); - $config['payment']['dpo']['billingAgreementCode'][$code] = $this->getBillingAgreementCode( $code ); + $inlineConfig['payment']['dpo']['redirectUrl'][$code] = $this->getMethodRedirectUrl( $code ); + $inlineConfig['payment']['dpo']['billingAgreementCode'][$code] = $this->getBillingAgreementCode( $code ); } } - $this->_logger->debug( $pre . 'eof', $config ); - return $config; + $this->_logger->debug( $pre . 'eof', $inlineConfig ); + return $inlineConfig; } /** @@ -128,7 +128,7 @@ protected function getMethodRedirectUrl( $code ) $pre = __METHOD__ . ' : '; $this->_logger->debug( $pre . 'bof' ); - $methodUrl = $this->methods[$code]->getCheckoutRedirectUrl(); + $methodUrl = $this->methods[$code]->getOrderPlaceRedirectUrl(); $this->_logger->debug( $pre . 'eof' ); return $methodUrl; diff --git a/Dpo/Dpo/Model/Dpopay.php b/Dpo/Dpo/Model/Dpopay.php old mode 100755 new mode 100644 index dd71e5c..d9b05c2 --- a/Dpo/Dpo/Model/Dpopay.php +++ b/Dpo/Dpo/Model/Dpopay.php @@ -1,6 +1,6 @@ dpoUrl = self::DPO_URL_TEST; @@ -30,6 +31,8 @@ public function __construct( $testMode = false ) $this->testMode = false; $this->testText = 'liveon'; } + + $this->logger = $logger; $this->dpoGateway = $this->dpoUrl . '/payv2.php'; } @@ -46,6 +49,8 @@ public function getDpoGateway() */ public function createToken( $data ) { + $pre = __METHOD__ . ' : '; + $companyToken = $data['companyToken']; $accountType = $data['accountType']; $paymentAmount = $data['paymentAmount']; @@ -59,6 +64,9 @@ public function createToken( $data ) $backURL = $data['backUrl']; $customerEmail = $data['customerEmail']; $reference = $data['companyRef'] . '_' . $this->testText; + $country = $data['payment_country']; + $country_id = $data['payment_country']; + $zip = $data['payment_postcode']; $odate = date( 'Y/m/d H:i' ); $postXml = <<$customerLastName $customerAddress $customerCity + $zip + $country + $country_id $customerPhone $redirectURL $backURL $customerEmail + magento @@ -105,9 +117,10 @@ public function createToken( $data ) ) ); $response = curl_exec( $curl ); + $error = curl_error( $curl ); if ( $error ) { - var_dump( $error ); + $this->logger->debug( $pre . 'error : ' . json_encode($error) ); } curl_close( $curl ); @@ -117,6 +130,8 @@ public function createToken( $data ) // Check if token was created successfully if ( $xml->xpath( 'Result' )[0] != '000' ) { + $this->logger->debug( $pre . 'response : ' . json_encode($response) ); + throw new \Magento\Framework\Webapi\Exception(__( 'Token could not be created. Please check debug log.' )); exit(); } else { $transToken = $xml->xpath( 'TransToken' )[0]->__toString(); @@ -133,7 +148,10 @@ public function createToken( $data ) ]; } } else { - throw new \Exception( 'Token could not be created. Please go back and try again' ); + + $this->logger->debug( $pre . 'response : ' . json_encode($response) ); + $this->logger->debug('Token could not be created. Please go back and try again'); + throw new \Magento\Framework\Webapi\Exception(__( 'Token could not be created. Please go back and try again' )); } } @@ -173,8 +191,11 @@ public function verifyToken( $data ) } else { return $response; } - } catch ( Exception $e ) { - throw $e; + } catch ( \Exception $e ) { + + $this->logger->debug($e->getMessage()); + + throw new Magento\Framework\Webapi\Exception(__( $e->getMessage() )); } } } diff --git a/Dpo/Dpo/Model/Info.php b/Dpo/Dpo/Model/Info.php old mode 100755 new mode 100644 index 78d1db3..db79d4d --- a/Dpo/Dpo/Model/Info.php +++ b/Dpo/Dpo/Model/Info.php @@ -1,6 +1,6 @@ - + diff --git a/Dpo/Dpo/etc/payment.xml b/Dpo/Dpo/etc/payment.xml old mode 100755 new mode 100644 index 8fe82d5..1067886 --- a/Dpo/Dpo/etc/payment.xml +++ b/Dpo/Dpo/etc/payment.xml @@ -1,7 +1,7 @@ + class="payment-icon" + alt=""/> diff --git a/README.md b/README.md index f7e5db3..896e3bf 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,11 @@ # DPO_Magento_2 -## DPO Group Magento 2 plugin v1.1.1 for Magento v2.4.1 +## DPO Group Magento 2 plugin v1.1.2 for Magento v2.4.3 This is the DPO Group plugin for Magento 2. Please feel free to contact the [DPO Group support team](https://dpogroup.com/contact-us/) should you require any assistance. ## Installation -Please navigate to the [releases page](https://github.com/DPO-Group/DPO_Magento_2/releases), download the latest release (v1.1.1) and unzip. You will then be able to follow the integration guide which is included in the zip. + +Please navigate to the [releases page](https://github.com/DPO-Group/DPO_Magento_2/releases), download the latest release (v1.1.2) and unzip. You will then be able to follow the integration guide which is included in the zip. ## Collaboration