Guest Posted July 3, 2009 Share Posted July 3, 2009 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 More sharing options...
Guest Posted August 13, 2009 Share Posted August 13, 2009 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 More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.