From 0ac43440dfbcdbdbcba7a2a0dbf1f617070975f2 Mon Sep 17 00:00:00 2001 From: gCharmes Date: Thu, 26 Apr 2012 19:30:50 +0000 Subject: [PATCH] [+] MO: Add authorizeaim to 1.5 git-svn-id: http://dev.prestashop.com/svn/v1/branches/1.5.x@14933 b9a71923-0436-4b27-9f14-aed3839534dd --- modules/authorizeaim/authorizeaim.php | 274 ++++++++++++++++++ modules/authorizeaim/authorizeaim.tpl | 135 +++++++++ .../backward_compatibility/Context.php | 222 ++++++++++++++ .../backward_compatibility/backward.php | 42 +++ .../backward_compatibility/index.php | 36 +++ modules/authorizeaim/cards/ax.gif | Bin 0 -> 560 bytes modules/authorizeaim/cards/discover.gif | Bin 0 -> 504 bytes modules/authorizeaim/cards/index.php | 36 +++ modules/authorizeaim/cards/mastercard.gif | Bin 0 -> 595 bytes modules/authorizeaim/cards/visa.gif | Bin 0 -> 451 bytes modules/authorizeaim/config.xml | 12 + modules/authorizeaim/cvv.png | Bin 0 -> 8485 bytes modules/authorizeaim/de.php | 44 +++ modules/authorizeaim/en.php | 4 + modules/authorizeaim/es.php | 43 +++ modules/authorizeaim/fr.php | 42 +++ modules/authorizeaim/help.png | Bin 0 -> 911 bytes .../authorizeaim/hookorderconfirmation.tpl | 36 +++ modules/authorizeaim/index.php | 36 +++ modules/authorizeaim/it.php | 44 +++ modules/authorizeaim/logo.gif | Bin 0 -> 79 bytes modules/authorizeaim/logo_authorize.png | Bin 0 -> 6565 bytes modules/authorizeaim/logoa.gif | Bin 0 -> 2047 bytes modules/authorizeaim/secure.png | Bin 0 -> 611 bytes modules/authorizeaim/validation.php | 133 +++++++++ 25 files changed, 1139 insertions(+) create mode 100644 modules/authorizeaim/authorizeaim.php create mode 100644 modules/authorizeaim/authorizeaim.tpl create mode 100755 modules/authorizeaim/backward_compatibility/Context.php create mode 100755 modules/authorizeaim/backward_compatibility/backward.php create mode 100755 modules/authorizeaim/backward_compatibility/index.php create mode 100644 modules/authorizeaim/cards/ax.gif create mode 100644 modules/authorizeaim/cards/discover.gif create mode 100644 modules/authorizeaim/cards/index.php create mode 100644 modules/authorizeaim/cards/mastercard.gif create mode 100644 modules/authorizeaim/cards/visa.gif create mode 100644 modules/authorizeaim/config.xml create mode 100644 modules/authorizeaim/cvv.png create mode 100644 modules/authorizeaim/de.php create mode 100644 modules/authorizeaim/en.php create mode 100644 modules/authorizeaim/es.php create mode 100755 modules/authorizeaim/fr.php create mode 100644 modules/authorizeaim/help.png create mode 100644 modules/authorizeaim/hookorderconfirmation.tpl create mode 100644 modules/authorizeaim/index.php create mode 100644 modules/authorizeaim/it.php create mode 100644 modules/authorizeaim/logo.gif create mode 100644 modules/authorizeaim/logo_authorize.png create mode 100644 modules/authorizeaim/logoa.gif create mode 100644 modules/authorizeaim/secure.png create mode 100644 modules/authorizeaim/validation.php diff --git a/modules/authorizeaim/authorizeaim.php b/modules/authorizeaim/authorizeaim.php new file mode 100644 index 000000000..ceac3647a --- /dev/null +++ b/modules/authorizeaim/authorizeaim.php @@ -0,0 +1,274 @@ + +* @copyright 2007-2012 PrestaShop SA +* @version Release: $Revision: 14011 $ +* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +if (!defined('_PS_VERSION_')) + exit; + +class authorizeAIM extends PaymentModule +{ + public function __construct() + { + $this->name = 'authorizeaim'; + $this->tab = 'payments_gateways'; + $this->version = '1.3.2'; + $this->author = 'PrestaShop'; + //$this->limited_countries = array('us'); + $this->need_instance = 0; + + parent::__construct(); + + $this->displayName = 'Authorize.net AIM (Advanced Integration Method)'; + $this->description = $this->l('Receive payment with Authorize.net'); + + /* For 1.4.3 and less compatibility */ + $updateConfig = array( + 'PS_OS_CHEQUE' => 1, + 'PS_OS_PAYMENT' => 2, + 'PS_OS_PREPARATION' => 3, + 'PS_OS_SHIPPING' => 4, + 'PS_OS_DELIVERED' => 5, + 'PS_OS_CANCELED' => 6, + 'PS_OS_REFUND' => 7, + 'PS_OS_ERROR' => 8, + 'PS_OS_OUTOFSTOCK' => 9, + 'PS_OS_BANKWIRE' => 10, + 'PS_OS_PAYPAL' => 11, + 'PS_OS_WS_PAYMENT' => 12); + + foreach ($updateConfig as $u => $v) + if (!Configuration::get($u) || (int)Configuration::get($u) < 1) + { + if (defined('_'.$u.'_') && (int)constant('_'.$u.'_') > 0) + Configuration::updateValue($u, constant('_'.$u.'_')); + else + Configuration::updateValue($u, $v); + } + + /* Check if cURL is enabled */ + if (!is_callable('curl_exec')) + $this->warning = $this->l('cURL extension must be enabled on your server to use this module.'); + + /* Backward compatibility */ + require(_PS_MODULE_DIR_.$this->name.'/backward_compatibility/backward.php'); + } + + public function install() + { + return parent::install() && + $this->registerHook('orderConfirmation') && + $this->registerHook('payment') && + $this->registerHook('header') && + Configuration::updateValue('AUTHORIZE_AIM_DEMO', 1) && + Configuration::updateValue('AUTHORIZE_AIM_HOLD_REVIEW_OS', _PS_OS_ERROR); + } + + public function uninstall() + { + Configuration::deleteByName('AUTHORIZE_AIM_LOGIN_ID'); + Configuration::deleteByName('AUTHORIZE_AIM_KEY'); + Configuration::deleteByName('AUTHORIZE_AIM_DEMO'); + Configuration::deleteByName('AUTHORIZE_AIM_CARD_VISA'); + Configuration::deleteByName('AUTHORIZE_AIM_CARD_MASTERCARD'); + Configuration::deleteByName('AUTHORIZE_AIM_CARD_DISCOVER'); + Configuration::deleteByName('AUTHORIZE_AIM_CARD_AX'); + + Configuration::deleteByName('AUTHORIZE_AIM_HOLD_REVIEW_OS'); + + return parent::uninstall(); + } + + public function hookOrderConfirmation($params) + { + if ($params['objOrder']->module != $this->name) + return; + + if ($params['objOrder']->getCurrentState() != Configuration::get('PS_OS_ERROR')) + $this->context->smarty->assign(array('status' => 'ok', 'id_order' => intval($params['objOrder']->id))); + else + $this->context->smarty->assign('status', 'failed'); + + return $this->display(__FILE__, 'hookorderconfirmation.tpl'); + } + + public function getContent() + { + $html = ''; + if (Tools::isSubmit('submitModule')) + { + Configuration::updateValue('AUTHORIZE_AIM_LOGIN_ID', Tools::getvalue('authorizeaim_login_id')); + Configuration::updateValue('AUTHORIZE_AIM_KEY', Tools::getvalue('authorizeaim_key')); + Configuration::updateValue('AUTHORIZE_AIM_DEMO', Tools::getvalue('authorizeaim_demo_mode')); + Configuration::updateValue('AUTHORIZE_AIM_CARD_VISA', Tools::getvalue('authorizeaim_card_visa')); + Configuration::updateValue('AUTHORIZE_AIM_CARD_MASTERCARD', Tools::getvalue('authorizeaim_card_mastercard')); + Configuration::updateValue('AUTHORIZE_AIM_CARD_DISCOVER', Tools::getvalue('authorizeaim_card_discover')); + Configuration::updateValue('AUTHORIZE_AIM_CARD_AX', Tools::getvalue('authorizeaim_card_ax')); + + Configuration::updateValue('AUTHORIZE_AIM_HOLD_REVIEW_OS', Tools::getvalue('authorizeaim_hold_review_os')); + + $html .= $this->displayConfirmation($this->l('Configuration updated')); + } + + // For Hold for Review + $orderStates = OrderState::getOrderStates((int)$this->context->cookie->id_lang); + + + $html .= ' +

'.$this->displayName.'

+
'.$this->l('Help').' + +

'.$this->l('In your PrestaShop admin panel').'

+ - '.$this->l('Fill the Login ID field with the one provided by Authorize.net').'
+ - '.$this->l('Fill the key field with the transaction key provided by Authorize.net').'
+ - '.$this->l('Warning: Your website must possess a SSL certificate to use the Authorize.net AIM payment system. You are responsible for the safety of your customers\' bank information. PrestaShop cannot be blamed for any security issue on your website.').'
+
+

+
+
+ '.$this->l('Settings').' + +
+ +
+ +
+ + '.$this->l('Production').' + + '.$this->l('Test').' +
+ +
+ + visa + + visa + + visa + + visa +
+ + +
+
+ + +
+
+
'; + + return $html; + } + + public function hookPayment($params) + { + if (Configuration::get('PS_SSL_ENABLED') || (!empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) != 'off')) + { + $invoiceAddress = new Address((int)$params['cart']->id_address_invoice); + + $authorizeAIMParams = array(); + $authorizeAIMParams['x_solution_ID'] = 'A1000006'; + $authorizeAIMParams['x_login'] = Configuration::get('AUTHORIZE_AIM_LOGIN_ID'); + $authorizeAIMParams['x_tran_key'] = Configuration::get('AUTHORIZE_AIM_KEY'); + $authorizeAIMParams['x_version'] = '3.1'; + $authorizeAIMParams['x_delim_data'] = 'TRUE'; + $authorizeAIMParams['x_delim_char'] = '|'; + $authorizeAIMParams['x_relay_response'] = 'FALSE'; + $authorizeAIMParams['x_type'] = 'AUTH_CAPTURE'; + $authorizeAIMParams['x_method'] = 'CC'; + $authorizeAIMParams['x_test_request'] = Configuration::get('AUTHORIZE_AIM_DEMO'); + $authorizeAIMParams['x_invoice_num'] = (int)$params['cart']->id; + $authorizeAIMParams['x_amount'] = number_format($params['cart']->getOrderTotal(true, 3), 2, '.', ''); + $authorizeAIMParams['x_address'] = $invoiceAddress->address1.' '.$invoiceAddress->address2; + $authorizeAIMParams['x_zip'] = $invoiceAddress->postcode; + $authorizeAIMParams['x_first_name'] = $this->context->customer->firstname; + $authorizeAIMParams['x_last_name'] = $this->context->customer->lastname; + + $isFailed = Tools::getValue('aimerror'); + + $cards = array(); + $cards['visa'] = Configuration::get('AUTHORIZE_AIM_CARD_VISA') == 'on' ? 1 : 0; + $cards['mastercard'] = Configuration::get('AUTHORIZE_AIM_CARD_MASTERCARD') == 'on' ? 1 : 0; + $cards['discover'] = Configuration::get('AUTHORIZE_AIM_CARD_DISCOVER') == 'on' ? 1 : 0; + $cards['ax'] = Configuration::get('AUTHORIZE_AIM_CARD_AX') == 'on' ? 1 : 0; + + if (method_exists('Tools', 'getShopDomainSsl')) + $url = 'https://'.Tools::getShopDomainSsl().__PS_BASE_URI__.'/modules/'.$this->name.'/'; + else + $url = 'https://'.$_SERVER['HTTP_HOST'].__PS_BASE_URI__.'modules/'.$this->name.'/'; + + $this->context->smarty->assign('p', $authorizeAIMParams); + $this->context->smarty->assign('cards', $cards); + $this->context->smarty->assign('isFailed', $isFailed); + $this->context->smarty->assign('new_base_dir', $url); + + return $this->display(__FILE__, 'authorizeaim.tpl'); + } + } + + public function hookHeader() + { + if (_PS_VERSION_ < '1.5') + Tools::addJS(_PS_JS_DIR_.'jquery/jquery.validate.creditcard2-1.0.1.js'); + else + $this->context->controller->addJqueryPlugin('validate-creditcard'); + } + + /** + * Set the detail of a payment - Call before the validate order init + * correctly the pcc object + * See Authorize documentation to know the associated key => value + * @param array fields + */ + public function setTransactionDetail($response) + { + // If Exist we can store the details + if (isset($this->pcc)) + { + $this->pcc->transaction_id = (string)$response[6]; + + // 50 => Card number (XXXX0000) + $this->pcc->card_number = (string)substr($response[50], -4); + + // 51 => Card Mark (Visa, Master card) + $this->pcc->card_brand = (string)$response[51]; + + $this->pcc->card_expiration = (string)Tools::getValue('x_exp_date'); + + // 68 => Owner name + $this->pcc->card_holder = (string)$response[68]; + } + } +} diff --git a/modules/authorizeaim/authorizeaim.tpl b/modules/authorizeaim/authorizeaim.tpl new file mode 100644 index 000000000..d0627e227 --- /dev/null +++ b/modules/authorizeaim/authorizeaim.tpl @@ -0,0 +1,135 @@ +{* +* 2007-2012 PrestaShop +* +* NOTICE OF LICENSE +* +* This source file is subject to the Academic Free License (AFL 3.0) +* that is bundled with this package in the file LICENSE.txt. +* It is also available through the world-wide-web at this URL: +* http://opensource.org/licenses/afl-3.0.php +* If you did not receive a copy of the license and are unable to +* obtain it through the world-wide-web, please send an email +* to license@prestashop.com so we can send you a copy immediately. +* +* DISCLAIMER +* +* Do not edit or add to this file if you wish to upgrade PrestaShop to newer +* versions in the future. If you wish to customize PrestaShop for your +* needs please refer to http://www.prestashop.com for more information. +* +* @author PrestaShop SA +* @copyright 2007-2012 PrestaShop SA +* @version Release: $Revision: 14297 $ +* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*} + +

+ + {if $isFailed == 1} +

{l s='Error, please verify the card information' mod='authorizeaim'}

+ {/if} + +
+ + + {if $cards.visa == 1}{l s='visa logo' mod='authorizeaim'}{/if} + {if $cards.mastercard == 1}{l s='mastercard logo' mod='authorizeaim'}{/if} + {if $cards.discover == 1}{l s='discover logo' mod='authorizeaim'}{/if} + {if $cards.ax == 1}{l s='american express logo' mod='authorizeaim'}{/if} +   {l s='Secured credit card payment with Authorize.net' mod='authorizeaim'} + + + {if $isFailed == 0} +