// Merge -> revision 7906

git-svn-id: http://dev.prestashop.com/svn/v1/branches/1.5.x@7909 b9a71923-0436-4b27-9f14-aed3839534dd
This commit is contained in:
rMalie
2011-08-05 13:26:44 +00:00
parent e4825ac555
commit 239f92eaf1
55 changed files with 174 additions and 1296 deletions
+26 -14
View File
@@ -29,7 +29,7 @@ $module_name = 'paysafecard';
include(_PS_MODULE_DIR_.$module_name.'/Disposition.php');
include(_PS_MODULE_DIR_.$module_name.'/PrepaidServicesAPI.php');
abstract class PrepaidServices extends PaymentModule
abstract class PSCPrepaidServices extends PaymentModule
{
protected $max_amount = 1000;
protected $max_amount_currency = 'EUR';
@@ -66,7 +66,7 @@ abstract class PrepaidServices extends PaymentModule
$ps_ct_business_type = Configuration::get($this->prefix.'BUSINESS_TYPE') ? Configuration::get($this->prefix.'BUSINESS_TYPE') : 'I';
$ps_ct_environment = Configuration::get($this->prefix.'ENVIRONMENT') ? Configuration::get($this->prefix.'ENVIRONMENT') : 'T';
return parent::install() AND Disposition::createTable() AND $this->_createOrderState() AND
return parent::install() AND PSCDisposition::createTable() AND $this->_createOrderState() AND
$this->registerHook('payment') AND $this->registerHook('paymentReturn') AND $this->registerHook('adminOrder')
AND Configuration::updateValue($this->prefix.'IMMEDIAT_PAYMENT', $ps_ct_immediat_payment)
AND Configuration::updateValue($this->prefix.'SALT', $ps_ct_salt)
@@ -180,12 +180,12 @@ abstract class PrepaidServices extends PaymentModule
$ok_url = Tools::getShopDomainSsl(true, true)._MODULE_DIR_.$this->name.'/payment.php?hash='.$hash;
$nok_url = Tools::getShopDomainSsl(true, true).'index.php?controller=order&step=3';
list($return_code, $error_code, $message) = PrepaidServicesAPI::createDisposition($this->getAPIConfiguration($currency_iso), $mid, $mtid, $amount, $currency_iso, $ok_url, $nok_url, $business_type, $reporting_criteria);
list($return_code, $error_code, $message) = PSCPrepaidServicesAPI::createDisposition($this->getAPIConfiguration($currency_iso), $mid, $mtid, $amount, $currency_iso, $ok_url, $nok_url, $business_type, $reporting_criteria);
if ($return_code == 0)
{
Disposition::deleteByCartId((int)($cart->id)); // Avoid duplicate disposition (canceled orders in CT for example)
Disposition::create((int)($cart->id), $mtid, $amount, $currency_iso);
PSCDisposition::deleteByCartId((int)($cart->id)); // Avoid duplicate disposition (canceled orders in CT for example)
PSCDisposition::create((int)($cart->id), $mtid, $amount, $currency_iso);
$message = $this->getPaymentUrlBase().'?currency='.$currency->iso_code.'&mid='.$mid.'&mtid='.$mtid.'&amount='.$amount.'&language='.$language;
}
@@ -194,31 +194,31 @@ abstract class PrepaidServices extends PaymentModule
public function getDispositionState($id_cart)
{
$disposition = Disposition::getByCartId((int)($id_cart));
$disposition = PSCDisposition::getByCartId((int)($id_cart));
if (!array_key_exists('id_disposition', $disposition))
die(Tools::displayError());
return PrepaidServicesAPI::getSerialNumbers($this->getAPIConfiguration($disposition['currency']), Configuration::get($this->prefix.'MERCHANT_ID_'.$disposition['currency']), $disposition['mtid'], $disposition['currency']);
return PSCPrepaidServicesAPI::getSerialNumbers($this->getAPIConfiguration($disposition['currency']), Configuration::get($this->prefix.'MERCHANT_ID_'.$disposition['currency']), $disposition['mtid'], $disposition['currency']);
}
public function executeDebit($id_cart, $amount = NULL, $close_flag = 1)
{
$disposition = Disposition::getByCartId((int)($id_cart));
$disposition = PSCDisposition::getByCartId((int)($id_cart));
if (!array_key_exists('id_disposition', $disposition))
die(Tools::displayError());
if (!isset($amount) || $amount === '')
$amount = $disposition['amount'];
$result = PrepaidServicesAPI::executeDebit($this->getAPIConfiguration($disposition['currency']), Configuration::get($this->prefix.'MERCHANT_ID_'.$disposition['currency']), $disposition['mtid'], number_format($amount, 2, '.', ''), $disposition['currency'], $close_flag);
$result = PSCPrepaidServicesAPI::executeDebit($this->getAPIConfiguration($disposition['currency']), Configuration::get($this->prefix.'MERCHANT_ID_'.$disposition['currency']), $disposition['mtid'], number_format($amount, 2, '.', ''), $disposition['currency'], $close_flag);
if ($result[0] == 0)
{
if ($amount == $disposition['amount'] || $close_flag)
Disposition::delete((int)($disposition['id_disposition']));
PSCDisposition::delete((int)($disposition['id_disposition']));
else
Disposition::updateAmount((int)($disposition['id_disposition']), (float)($amount));
PSCDisposition::updateAmount((int)($disposition['id_disposition']), (float)($amount));
}
return $result;
@@ -296,6 +296,14 @@ abstract class PrepaidServices extends PaymentModule
foreach ($this->_getAllowedCurrencies() AS $currency)
{
$mid = Configuration::get($this->prefix.'MERCHANT_ID_'.$currency['iso_code']);
$certificateExiste = '';
$passwordExist = '';
if (file_exists($this->certificat_dir.$mid.'.pem'))
$certificateExiste = '<div style="color:#00b511; text-align:center;">'.$this->l('A certificate has been found for this configuration').' : '.$mid.'.pem'.'</div><br />';
if (Configuration::get($this->prefix.'KEYRING_PW_'.$currency['iso_code']))
$passwordExist = '<div style="color:#00b511; text-align:center;">'.$this->l('A password has already been saved');
$currencies_configuration .= '
<tr>
<td class="currency_label">'.$this->getL('configuration_in').' '.$currency['name'].' '.$currency['sign'].'</td>
@@ -309,10 +317,12 @@ abstract class PrepaidServices extends PaymentModule
<div class="margin-form">
<input type="file" name="ct_keyring_certificate_'.$currency['iso_code'].'" />
</div>
'.$certificateExiste.'
<label>'.$this->getL('keyring_pw').'</label>
<div class="margin-form">
<input type="password" name="ct_keyring_pw_'.$currency['iso_code'].'" value=""/>
</div>
'.$passwordExist.'
</td>
</tr>';
}
@@ -509,6 +519,8 @@ abstract class PrepaidServices extends PaymentModule
$mid = trim(Tools::getValue('ct_merchant_id_'.$currency['iso_code']));
Configuration::updateValue($this->prefix.'MERCHANT_ID_'.$currency['iso_code'], $mid);
$pass = Tools::getValue('ct_keyring_pw_'.$currency['iso_code']);
if (!empty($pass))
Configuration::updateValue($this->prefix.'KEYRING_PW_'.$currency['iso_code'], Tools::getValue('ct_keyring_pw_'.$currency['iso_code']));
if (isset($_FILES['ct_keyring_certificate_'.$currency['iso_code']]))
@@ -578,16 +590,16 @@ abstract class PrepaidServices extends PaymentModule
if ($order->module != $this->name)
return false;
$disposition = Disposition::getByCartId((int)($order->id_cart));
$disposition = PSCDisposition::getByCartId((int)($order->id_cart));
if (!$disposition) // No disposition = Order paid
return false;
// check disposition state
$res = PrepaidServicesAPI::getSerialNumbers($this->getAPIConfiguration($disposition['currency']), Configuration::get($this->prefix.'MERCHANT_ID_'.$disposition['currency']), $disposition['mtid'], $disposition['currency']);
$res = PSCPrepaidServicesAPI::getSerialNumbers($this->getAPIConfiguration($disposition['currency']), Configuration::get($this->prefix.'MERCHANT_ID_'.$disposition['currency']), $disposition['mtid'], $disposition['currency']);
$currency = new Currency(Configuration::get('PS_CURRENCY_DEFAULT'));
// if the disposition is not "active"
if ($res[5] != PrepaidServicesAPI::DISPOSITION_DISPOSED && $res[5] != PrepaidServicesAPI::DISPOSITION_DEBITED)
if ($res[5] != PSCPrepaidServicesAPI::DISPOSITION_DISPOSED && $res[5] != PSCPrepaidServicesAPI::DISPOSITION_DEBITED)
{
$this->context->smarty->assign(array('disposition_state' => $res[5], 'payment_name' => $order->payment));
return $this->display($this->module_dir.'/'.$this->name, 'disposition-error.tpl');