[+] MO : Update Moneybookers to use the new system to store payment cc details

git-svn-id: http://dev.prestashop.com/svn/v1/branches/1.5.x@9703 b9a71923-0436-4b27-9f14-aed3839534dd
This commit is contained in:
vSchoener
2011-10-28 09:48:07 +00:00
parent edbac35e4f
commit 5e6c8f4b2d
2 changed files with 90 additions and 57 deletions
+47 -17
View File
@@ -20,7 +20,7 @@
* *
* @author PrestaShop SA <contact@prestashop.com> * @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2011 PrestaShop SA * @copyright 2007-2011 PrestaShop SA
* @version Release: $Revision: 7091 $ * @version Release: $Revision: 9702 $
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of PrestaShop SA * International Registered Trademark & Property of PrestaShop SA
*/ */
@@ -38,7 +38,7 @@ class MoneyBookers extends PaymentModule
{ {
$this->name = 'moneybookers'; $this->name = 'moneybookers';
$this->tab = 'payments_gateways'; $this->tab = 'payments_gateways';
$this->version = '1.6.1'; $this->version = '1.6.2';
parent::__construct(); parent::__construct();
@@ -221,6 +221,7 @@ class MoneyBookers extends PaymentModule
public function getContent() public function getContent()
{ {
global $cookie;
$errors = array(); $errors = array();
$output = ' $output = '
<p><img src="'.__PS_BASE_URI__.'modules/moneybookers/logo-mb.gif" alt="Moneybookers" /></p><br />'; <p><img src="'.__PS_BASE_URI__.'modules/moneybookers/logo-mb.gif" alt="Moneybookers" /></p><br />';
@@ -329,7 +330,7 @@ class MoneyBookers extends PaymentModule
{ {
foreach(array('leftColumn', 'rightColumn') as $hookName) foreach(array('leftColumn', 'rightColumn') as $hookName)
if ($this->isRegisteredInHook($hookName)) if ($this->isRegisteredInHook($hookName))
$this->unregisterHook(Hook::getIdByName($hookName)); $this->unregisterHook(Hook::get($hookName));
if (Tools::getValue('logo_position') == self::LEFT_COLUMN) if (Tools::getValue('logo_position') == self::LEFT_COLUMN)
$this->registerHook('leftColumn'); $this->registerHook('leftColumn');
else if (Tools::getValue('logo_position') == self::RIGHT_COLUMN) else if (Tools::getValue('logo_position') == self::RIGHT_COLUMN)
@@ -345,9 +346,9 @@ class MoneyBookers extends PaymentModule
$output .= '</ul>'; $output .= '</ul>';
} }
$lang = $this->context->language; $lang = new Language((int)($cookie->id_lang));
$iso_img = $lang->id; $iso_img = $lang->iso_code;
if ($iso_img != 'fr' AND $iso_img != 'en') if ($lang->iso_code != 'fr' AND $lang->iso_code != 'en')
$iso_img = 'en'; $iso_img = 'en';
$manual_links = array( $manual_links = array(
@@ -356,7 +357,7 @@ class MoneyBookers extends PaymentModule
'fr' => 'http://www.moneybookers.com/creatives/integrationmanual/MB-Prestashop-Integration_fr.pdf'); 'fr' => 'http://www.moneybookers.com/creatives/integrationmanual/MB-Prestashop-Integration_fr.pdf');
$iso_manual = $lang->iso_code; $iso_manual = $lang->iso_code;
if (!array_key_exists($iso_manual, $manual_links)) if (!array_key_exists($lang->iso_code, $manual_links))
$iso_manual = 'en'; $iso_manual = 'en';
$blockPositionList = array( $blockPositionList = array(
@@ -388,9 +389,9 @@ class MoneyBookers extends PaymentModule
$selected = ($currentLogoBlockPosition == $position) ? 'selected="selected"' : ''; $selected = ($currentLogoBlockPosition == $position) ? 'selected="selected"' : '';
$output .= '<option value="'.$position.'" '.$selected.'>'.$translation.'</option>'; $output .= '<option value="'.$position.'" '.$selected.'>'.$translation.'</option>';
} }
$link = $this->context->link; $link = new Link();
$admin_dir = substr(_PS_ADMIN_DIR_, strrpos(_PS_ADMIN_DIR_,'/') + 1); $admin_dir = substr(_PS_ADMIN_DIR_, strrpos(_PS_ADMIN_DIR_,'/') + 1);
$iso_code = strtolower($this->context->country->iso_code); $iso_code = strtolower(Country::getIsoById(Configuration::get('PS_COUNTRY_DEFAULT')));
$landingPage = ($iso_code == 'en' || $iso_code == 'us') ? 'http://www.moneybookers.com/ads/partners/index.html?p=Prestashop' : $landingPage = ($iso_code == 'en' || $iso_code == 'us') ? 'http://www.moneybookers.com/ads/partners/index.html?p=Prestashop' :
'http://www.moneybookers.com/ads/partners/'.$iso_code.'/index.html?p=Prestashop'; 'http://www.moneybookers.com/ads/partners/'.$iso_code.'/index.html?p=Prestashop';
@@ -593,6 +594,8 @@ class MoneyBookers extends PaymentModule
public function hookPayment($params) public function hookPayment($params)
{ {
global $smarty, $cookie;
if (!Configuration::get('MB_PARAMETERS') OR !Configuration::get('MB_PARAMETERS_2') OR (Configuration::get('MB_LOCAL_METHODS') == '' AND Configuration::get('MB_INTER_METHODS') == '')) if (!Configuration::get('MB_PARAMETERS') OR !Configuration::get('MB_PARAMETERS_2') OR (Configuration::get('MB_LOCAL_METHODS') == '' AND Configuration::get('MB_INTER_METHODS') == ''))
return; return;
@@ -615,7 +618,7 @@ class MoneyBookers extends PaymentModule
$localMethods = Configuration::get('MB_LOCAL_METHODS'); $localMethods = Configuration::get('MB_LOCAL_METHODS');
$interMethods = Configuration::get('MB_INTER_METHODS'); $interMethods = Configuration::get('MB_INTER_METHODS');
$this->context->smarty->assign(array( $smarty->assign(array(
'display_mode' => (int)(Configuration::get('MB_DISPLAY_MODE')), 'display_mode' => (int)(Configuration::get('MB_DISPLAY_MODE')),
'local' => $localMethods ? explode('|', $localMethods) : array(), 'local' => $localMethods ? explode('|', $localMethods) : array(),
'inter' => $interMethods ? explode('|', $interMethods) : array(), 'inter' => $interMethods ? explode('|', $interMethods) : array(),
@@ -627,7 +630,7 @@ class MoneyBookers extends PaymentModule
$countryObj = new Country((int)($address->id_country), Configuration::get('PS_LANG_DEFAULT')); $countryObj = new Country((int)($address->id_country), Configuration::get('PS_LANG_DEFAULT'));
$customer = new Customer((int)($params['cart']->id_customer)); $customer = new Customer((int)($params['cart']->id_customer));
$currency = new Currency((int)($params['cart']->id_currency)); $currency = new Currency((int)($params['cart']->id_currency));
$lang = $this->context->language; $lang = new Language((int)($cookie->id_lang));
$mbParams = array(); $mbParams = array();
@@ -636,7 +639,7 @@ class MoneyBookers extends PaymentModule
$mbParams['recipient_description'] = Configuration::get('PS_SHOP_NAME'); $mbParams['recipient_description'] = Configuration::get('PS_SHOP_NAME');
$mbParams['hide_login'] = (int)(Configuration::get('MB_HIDE_LOGIN')); $mbParams['hide_login'] = (int)(Configuration::get('MB_HIDE_LOGIN'));
$mbParams['id_logo'] = (int)(Configuration::get('MB_ID_LOGO')); $mbParams['id_logo'] = (int)(Configuration::get('MB_ID_LOGO'));
$mbParams['return_url'] = (Configuration::get('PS_SSL_ENABLED') ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].'index.php?controller=order-confirmation&id_cart='.(int)($params['cart']->id).'&id_module='.(int)($this->id).'&key='.$customer->secure_key; $mbParams['return_url'] = (Configuration::get('PS_SSL_ENABLED') ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].__PS_BASE_URI__.'order-confirmation.php?id_cart='.(int)($params['cart']->id).'&id_module='.(int)($this->id).'&key='.$customer->secure_key;
$mbParams['cancel_url'] = Configuration::get('MB_CANCEL_URL'); $mbParams['cancel_url'] = Configuration::get('MB_CANCEL_URL');
/* About the customer */ /* About the customer */
@@ -654,14 +657,14 @@ class MoneyBookers extends PaymentModule
/* About the cart */ /* About the cart */
$mbParams['transaction_id'] = (int)($params['cart']->id).'_'.date('YmdHis').'_'.$params['cart']->secure_key; $mbParams['transaction_id'] = (int)($params['cart']->id).'_'.date('YmdHis').'_'.$params['cart']->secure_key;
$mbParams['mb_currency'] = $currency->iso_code; $mbParams['currency'] = $currency->iso_code;
$mbParams['amount'] = number_format($params['cart']->getOrderTotal(), 2, '.', ''); $mbParams['amount'] = number_format($params['cart']->getOrderTotal(), 2, '.', '');
/* URLs */ /* URLs */
$mbParams['status_url'] = (Configuration::get('PS_SSL_ENABLED') ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].__PS_BASE_URI__.'modules/'.$this->name.'/validation.php'; $mbParams['status_url'] = (Configuration::get('PS_SSL_ENABLED') ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].__PS_BASE_URI__.'modules/'.$this->name.'/validation.php';
/* Assign settings to Smarty template */ /* Assign settings to Smarty template */
$this->context->smarty->assign($mbParams); $smarty->assign($mbParams);
/* Display the MoneyBookers iframe */ /* Display the MoneyBookers iframe */
return $this->display(__FILE__, 'moneybookers.tpl'); return $this->display(__FILE__, 'moneybookers.tpl');
@@ -673,24 +676,51 @@ class MoneyBookers extends PaymentModule
if (!$this->active) if (!$this->active)
return ; return ;
global $smarty;
switch($params['objOrder']->getCurrentState()) switch($params['objOrder']->getCurrentState())
{ {
case _PS_OS_PAYMENT_: case _PS_OS_PAYMENT_:
case _PS_OS_OUTOFSTOCK_: case _PS_OS_OUTOFSTOCK_:
$this->context->smarty->assign('status', 'ok'); $smarty->assign('status', 'ok');
break; break;
case _PS_OS_BANKWIRE_: case _PS_OS_BANKWIRE_:
$this->context->smarty->assign('status', 'pending'); $smarty->assign('status', 'pending');
break; break;
case _PS_OS_ERROR_: case _PS_OS_ERROR_:
default: default:
$this->context->smarty->assign('status', 'failed'); $smarty->assign('status', 'failed');
break; break;
} }
return $this->display(__FILE__, 'confirmation.tpl'); return $this->display(__FILE__, 'confirmation.tpl');
} }
/**
* 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['mb_transaction_id'];
$this->pcc->card_number = '';
$this->pcc->card_brand = (string)$response['payment_type'];
$this->pcc->card_expiration = '';
$this->pcc->card_holder = (string)(isset($response['pay_to_email']) ?
$response['pay_to_email'] : '';
}
}
} }
+4 -1
View File
@@ -20,7 +20,7 @@
* *
* @author PrestaShop SA <contact@prestashop.com> * @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2011 PrestaShop SA * @copyright 2007-2011 PrestaShop SA
* @version Release: $Revision: 7040 $ * @version Release: $Revision: 9702 $
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of PrestaShop SA * International Registered Trademark & Property of PrestaShop SA
*/ */
@@ -64,15 +64,18 @@ $secure_cart = explode('_', $_POST['transaction_id']);
$status = (int)($_POST['status']); $status = (int)($_POST['status']);
if (!isset($secure_cart[2])) if (!isset($secure_cart[2]))
$secure_cart[2] = 'KO'; $secure_cart[2] = 'KO';
switch ($status) switch ($status)
{ {
/* Bankwire */ /* Bankwire */
case 0: case 0:
$moneyBookers->setTransactionDetail($_POST);
$moneyBookers->validateOrder((int)($secure_cart[0]), Configuration::get('PS_OS_BANKWIRE'), (float)($_POST['amount']), $moneyBookers->displayName, $message, array(), NULL, false, $secure_cart[2]); $moneyBookers->validateOrder((int)($secure_cart[0]), Configuration::get('PS_OS_BANKWIRE'), (float)($_POST['amount']), $moneyBookers->displayName, $message, array(), NULL, false, $secure_cart[2]);
break; break;
/* Payment OK */ /* Payment OK */
case 2: case 2:
$moneyBookers->setTransactionDetail($_POST);
$moneyBookers->validateOrder((int)($secure_cart[0]), Configuration::get('PS_OS_PAYMENT'), (float)($_POST['amount']), $moneyBookers->displayName, $message, array(), NULL, false, $secure_cart[2]); $moneyBookers->validateOrder((int)($secure_cart[0]), Configuration::get('PS_OS_PAYMENT'), (float)($_POST['amount']), $moneyBookers->displayName, $message, array(), NULL, false, $secure_cart[2]);
break; break;