Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

I'm trying to integrate in a module for Oscommerce an ATM recipes system


Guest

Recommended Posts

I have a function developed by a Software Company that allows to obtain a shopping recipes from an ATM!

 

I'am trying to develop an OScommerce Payment Module to integrate this system...

 

I copied an already existing module and adjust to meet my requirements...

 

The Module Installation Work's fine, the problem is when I try to test the purchase of some items from the online store...

 

Select Item ok!

 

Checkout ok!

 

Payment method ATM recipe ok!

 

Confirmation Error!

 

This is my code for this module!

 

<?php

/*

$Id: transferencia.php, 10/16/2004

 

O download do módulo transferencia

 

*/

 

class transferencia {

var $code, $title, $description, $enabled;

 

// class constructor

function transferencia() {

 

global $order;

$this->code = 'transferencia';

$this->title = MODULE_PAYMENT_TRANSFERENCIA_TEXT_TITLE;

$this->description = MODULE_PAYMENT_TRANSFERENCIA_TEXT_DESCRIPTION;

$this->email_footer =MODULE_PAYMENT_TRANSFERENCIA_TEXT_CONFIRMATION .

"\n\nDados para pagamento por Multibanco:\n" .

MODULE_PAYMENT_TRANSFERENCIA_TITULAR . "\n" .

"Entidade: " . MODULE_PAYMENT_TRANSFERENCIA_ENTIDADE ."\n\n";

$this->sort_order = MODULE_PAYMENT_TRANSFERENCIA_SORT_ORDER;

$this->enabled = ((MODULE_PAYMENT_TRANSFERENCIA_STATUS == 'True') ? true : false);

 

if ((int)MODULE_PAYMENT_TRANSFERENCIA_ORDER_STATUS_ID > 0) {

$this->order_status = MODULE_PAYMENT_TRANSFERENCIA_ORDER_STATUS_ID;

}

 

if (is_object($order)) $this->update_status();

}

 

// class methods

function update_status() {

global $order;

 

if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_TRANSFERENCIA_ZONE > 0) ) {

$check_flag = false;

$check_query = tep_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_PAYMENT_NZ_BANK_ZONE . "' and zone_country_id = '" . $order->delivery['country']['id'] . "' order by zone_id");

while ($check = tep_db_fetch_array($check_query)) {

if ($check['zone_id'] < 1) {

$check_flag = true;

break;

} elseif ($check['zone_id'] == $order->delivery['zone_id']) {

$check_flag = true;

break;

}

}

 

if ($check_flag == false) {

$this->enabled = false;

}

}

}

 

function javascript_validation() {

return false;

}

 

function selection() {

return array('id' => $this->code,

'module' => $this->title);

}

 

function pre_confirmation_check() {

return false;

}

 

 

//Função da IFTHEN adaptada ao Módulo

function GenerateMbRef($order_id, $order_value){

if ($order_value < 1){

echo "Lamentamos mas é impossível gerar uma referência MB para valores inferiores a 1 Euro";

return;

}

if ($order_value >= 1000000){

echo "<b>AVISO:</b> Pagamento fraccionado por exceder o valor limite para pagamentos no sistema Multibanco<br>";

}

while ($order_value >= 1000000){

GenerateMbRef($order_id++, 999999.99);

$order_value -= 999999.99;

}

 

$ent_id = MODULE_PAYMENT_TRANSFERENCIA_ENTIDADE;

 

$subent_id = 999;

 

$chk_str = sprintf('%03u%04u%08u', $subent_id, $order_id, round($order_value*100));

 

$chk_val = 923;

 

$chk_array = array(3, 30, 9, 90, 27, 76, 81, 34, 49, 5, 50, 15, 53, 45, 62);

 

for ($i = 0; $i < 15; $i++)

{

$chk_int = substr($chk_str, 14-$i, 1);

$chk_val += ($chk_int%10)*$chk_array[$i];

}

 

$chk_val %= 97;

 

$chk_digits = sprintf('%02u', 98-$chk_val);

 

echo "<pre>";

echo "\n\n<b>Seu pedido será enviado quando confirmado o pagamento. Para agilizar o processo, envie o comprovante por fax: (+351)210 189 050 ou email: [email protected].</b>";

echo "\n\n<b>Dados para pagamento por Multibanco:</b>";

echo "\n\n<b>Entidade: </b>".$ent_id;

echo "\n\n<b>Referência: </b>".$subent_id." ".substr($chk_str, 3, 3)." ".substr($chk_str, 6, 1).$chk_digits;

echo "\n\n<b>Valor: </b>".round($order_value,2)." ".CATALOG_DEFAULT_CURRENCY;

echo "</pre>";

 

 

}

 

function confirmation() {

$pagamento = $this->GenerateMbRef($order->RetOrderNum(), $order->RetPaymentDueAmount());

return $pagamento;

}

 

//fim da adaptação

 

 

function process_button() {

return false;

}

 

function before_process() {

return false;

}

 

function after_process() {

return false;

}

 

function get_error() {

return false;

}

 

function check() {

if (!isset($this->_check)) {

$check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_TRANSFERENCIA_STATUS'");

$this->_check = tep_db_num_rows($check_query);

}

return $this->_check;

}

 

function install() {

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Ativar o módulo Transferência', 'MODULE_PAYMENT_TRANSFERENCIA_STATUS', 'True', '', '6', '1', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Mensagem (Opções de Pagamento)', 'MODULE_PAYMENT_TRANSFERENCIA_TEXT_SELECTION', 'Dados para pagamento por Multibanco', 'Texto a ser exibido para o cliente na tela do opções de pagamento:', '6', '4', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Mensagem (Instruções para o Cliente)', 'MODULE_PAYMENT_TRANSFERENCIA_TEXT_CONFIRMATION', 'Seu pedido será enviado quando confirmado o pagamento. Para agilizar o processo, envie o comprovante por fax: (+351)210 189 050 ou email: [email protected].', 'Texto a ser exibido para o cliente na confirmação da compra', '6', '5', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Titular da Conta Bancária', 'MODULE_PAYMENT_TRANSFERENCIA_TITULAR', 'EmpresaXPTO.', 'Titular da Conta Bancária', '6', '3', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Numero da Entidade', 'MODULE_PAYMENT_TRANSFERENCIA_ENTIDADE', '23456', 'Numero da Entidade', '6', '4', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, use_function, date_added) values ('Status dos pedidos', 'MODULE_PAYMENT_TRANSFERENCIA_ORDER_STATUS_ID', '0', 'Atualiza o status dos pedidos efetuados por este módulo de pagamento para este valor.', '6', '0', 'tep_cfg_pull_down_order_statuses(', 'tep_get_order_status_name', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Ordem de exibição.', 'MODULE_PAYMENT_TRANSFERENCIA_SORT_ORDER', '0', 'Ordem de exibição', '6', '0', now())");

 

 

}

 

 

function remove() {

tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");

}

 

function keys() {

return array('MODULE_PAYMENT_TRANSFERENCIA_STATUS', 'MODULE_PAYMENT_TRANSFERENCIA_TEXT_SELECTION', 'MODULE_PAYMENT_TRANSFERENCIA_TEXT_CONFIRMATION', 'MODULE_PAYMENT_TRANSFERENCIA_TITULAR', 'MODULE_PAYMENT_TRANSFERENCIA_ENTIDADE', 'MODULE_PAYMENT_TRANSFERENCIA_ORDER_STATUS_ID', 'MODULE_PAYMENT_TRANSFERENCIA_SORT_ORDER');

 

}

}

?>

Link to comment
Share on other sites

  • 1 month later...
I have a function developed by a Software Company that allows to obtain a shopping recipes from an ATM!

 

I'am trying to develop an OScommerce Payment Module to integrate this system...

 

I copied an already existing module and adjust to meet my requirements...

 

The Module Installation Work's fine, the problem is when I try to test the purchase of some items from the online store...

 

Select Item ok!

 

Checkout ok!

 

Payment method ATM recipe ok!

 

Confirmation Error!

 

This is my code for this module!

 

<?php

/*

$Id: transferencia.php, 10/16/2004

 

O download do módulo transferencia

 

*/

 

class transferencia {

var $code, $title, $description, $enabled;

 

// class constructor

function transferencia() {

 

global $order;

$this->code = 'transferencia';

$this->title = MODULE_PAYMENT_TRANSFERENCIA_TEXT_TITLE;

$this->description = MODULE_PAYMENT_TRANSFERENCIA_TEXT_DESCRIPTION;

$this->email_footer =MODULE_PAYMENT_TRANSFERENCIA_TEXT_CONFIRMATION .

"\n\nDados para pagamento por Multibanco:\n" .

MODULE_PAYMENT_TRANSFERENCIA_TITULAR . "\n" .

"Entidade: " . MODULE_PAYMENT_TRANSFERENCIA_ENTIDADE ."\n\n";

$this->sort_order = MODULE_PAYMENT_TRANSFERENCIA_SORT_ORDER;

$this->enabled = ((MODULE_PAYMENT_TRANSFERENCIA_STATUS == 'True') ? true : false);

 

if ((int)MODULE_PAYMENT_TRANSFERENCIA_ORDER_STATUS_ID > 0) {

$this->order_status = MODULE_PAYMENT_TRANSFERENCIA_ORDER_STATUS_ID;

}

 

if (is_object($order)) $this->update_status();

}

 

// class methods

function update_status() {

global $order;

 

if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_TRANSFERENCIA_ZONE > 0) ) {

$check_flag = false;

$check_query = tep_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_PAYMENT_NZ_BANK_ZONE . "' and zone_country_id = '" . $order->delivery['country']['id'] . "' order by zone_id");

while ($check = tep_db_fetch_array($check_query)) {

if ($check['zone_id'] < 1) {

$check_flag = true;

break;

} elseif ($check['zone_id'] == $order->delivery['zone_id']) {

$check_flag = true;

break;

}

}

 

if ($check_flag == false) {

$this->enabled = false;

}

}

}

 

function javascript_validation() {

return false;

}

 

function selection() {

return array('id' => $this->code,

'module' => $this->title);

}

 

function pre_confirmation_check() {

return false;

}

 

 

//Função da IFTHEN adaptada ao Módulo

function GenerateMbRef($order_id, $order_value){

if ($order_value < 1){

echo "Lamentamos mas é impossível gerar uma referência MB para valores inferiores a 1 Euro";

return;

}

if ($order_value >= 1000000){

echo "<b>AVISO:</b> Pagamento fraccionado por exceder o valor limite para pagamentos no sistema Multibanco<br>";

}

while ($order_value >= 1000000){

GenerateMbRef($order_id++, 999999.99);

$order_value -= 999999.99;

}

 

$ent_id = MODULE_PAYMENT_TRANSFERENCIA_ENTIDADE;

 

$subent_id = 999;

 

$chk_str = sprintf('%03u%04u%08u', $subent_id, $order_id, round($order_value*100));

 

$chk_val = 923;

 

$chk_array = array(3, 30, 9, 90, 27, 76, 81, 34, 49, 5, 50, 15, 53, 45, 62);

 

for ($i = 0; $i < 15; $i++)

{

$chk_int = substr($chk_str, 14-$i, 1);

$chk_val += ($chk_int%10)*$chk_array[$i];

}

 

$chk_val %= 97;

 

$chk_digits = sprintf('%02u', 98-$chk_val);

 

echo "<pre>";

echo "\n\n<b>Seu pedido será enviado quando confirmado o pagamento. Para agilizar o processo, envie o comprovante por fax: (+351)210 189 050 ou email: [email protected].</b>";

echo "\n\n<b>Dados para pagamento por Multibanco:</b>";

echo "\n\n<b>Entidade: </b>".$ent_id;

echo "\n\n<b>Referência: </b>".$subent_id." ".substr($chk_str, 3, 3)." ".substr($chk_str, 6, 1).$chk_digits;

echo "\n\n<b>Valor: </b>".round($order_value,2)." ".CATALOG_DEFAULT_CURRENCY;

echo "</pre>";

 

 

}

 

function confirmation() {

$pagamento = $this->GenerateMbRef($order->RetOrderNum(), $order->RetPaymentDueAmount());

return $pagamento;

}

 

//fim da adaptação

 

 

function process_button() {

return false;

}

 

function before_process() {

return false;

}

 

function after_process() {

return false;

}

 

function get_error() {

return false;

}

 

function check() {

if (!isset($this->_check)) {

$check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_TRANSFERENCIA_STATUS'");

$this->_check = tep_db_num_rows($check_query);

}

return $this->_check;

}

 

function install() {

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Ativar o módulo Transferência', 'MODULE_PAYMENT_TRANSFERENCIA_STATUS', 'True', '', '6', '1', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Mensagem (Opções de Pagamento)', 'MODULE_PAYMENT_TRANSFERENCIA_TEXT_SELECTION', 'Dados para pagamento por Multibanco', 'Texto a ser exibido para o cliente na tela do opções de pagamento:', '6', '4', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Mensagem (Instruções para o Cliente)', 'MODULE_PAYMENT_TRANSFERENCIA_TEXT_CONFIRMATION', 'Seu pedido será enviado quando confirmado o pagamento. Para agilizar o processo, envie o comprovante por fax: (+351)210 189 050 ou email: [email protected].', 'Texto a ser exibido para o cliente na confirmação da compra', '6', '5', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Titular da Conta Bancária', 'MODULE_PAYMENT_TRANSFERENCIA_TITULAR', 'EmpresaXPTO.', 'Titular da Conta Bancária', '6', '3', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Numero da Entidade', 'MODULE_PAYMENT_TRANSFERENCIA_ENTIDADE', '23456', 'Numero da Entidade', '6', '4', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, use_function, date_added) values ('Status dos pedidos', 'MODULE_PAYMENT_TRANSFERENCIA_ORDER_STATUS_ID', '0', 'Atualiza o status dos pedidos efetuados por este módulo de pagamento para este valor.', '6', '0', 'tep_cfg_pull_down_order_statuses(', 'tep_get_order_status_name', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Ordem de exibição.', 'MODULE_PAYMENT_TRANSFERENCIA_SORT_ORDER', '0', 'Ordem de exibição', '6', '0', now())");

 

 

}

 

 

function remove() {

tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");

}

 

function keys() {

return array('MODULE_PAYMENT_TRANSFERENCIA_STATUS', 'MODULE_PAYMENT_TRANSFERENCIA_TEXT_SELECTION', 'MODULE_PAYMENT_TRANSFERENCIA_TEXT_CONFIRMATION', 'MODULE_PAYMENT_TRANSFERENCIA_TITULAR', 'MODULE_PAYMENT_TRANSFERENCIA_ENTIDADE', 'MODULE_PAYMENT_TRANSFERENCIA_ORDER_STATUS_ID', 'MODULE_PAYMENT_TRANSFERENCIA_SORT_ORDER');

 

}

}

?>

 

 

 

 

Olá,

 

Nós vamos começar o desenvolvimento do modulo de pagamentos por multibanco para Oscommerce, mas será para a ultima versão estável do Os commerce.

 

É uma questão de nos ir visitando em www.pagamentosmultibanco.com.

 

Contamos ter o modulo disponível entretanto.

 

 

Entretanto já existe disponivel para virtuemart 1.0.15 e 1.1.3

 

 

 

Cumprimentos

jsarmento

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...