Ir para conteúdo
Fórum Script Brasil
  • 0

Sistema De Boleto Para Oscommerce


Curioso

Pergunta

Olá para todos da Comunidade!!! Sou iniciante em PHP e já estou dando minhas cabeçadas!!! :D

Tenho instalado uma Loja virtual OSCommerce e estou tentando configurar um sistema de boletos para ela... achei um script pago na internet (www.netdinamica.com.br) e comprei o mesmo... acontece que agora eu não estou conseguindo fazer a passagem dos dados da compra para o boleto... ou melhor consigo passar todos os dados menos o valor e a data de vencimento...

Já fiz a instalação desta mesma loja outra vez e usei o sistema de boletos da CobreBem - Thisf foi muito fácil e eles até disponibilizam o script da passagem de dados para download no site deles... desta vez preferi comprar o da Net dinamica por ser mais barato e quebrei a cara! :(

Agradeço a todos que puderem me ajudar!

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

o sistema d boleto, você pode falar com o seu banco q ele passa para você...

ms já tm um monte de post ai falando sobre boleto da uma olhada neles, q se eu não me engano eles ensina a fazer......

ms se você quiser, você vai t d mandar o codigo do seu boleto para darmos uma olhada.. para ver o q esta acontecendo... :lol:

Link para o comentário
Compartilhar em outros sites

  • 0

E como você faz a passagem dos dados da compra para a URL do seu banco? Esse é justamente o meu problema... o sistema da NETDinamica até funciona, mas a passagem dos dados da compra para o boleto é que está sendo um parto...

Consegui fazer a passagem de alguns dados como nome e endereço do cliente, n° do documento, nosso n° , e mensagens adicionais... mas o valor e a data de vencimento eu não consigo...

1°- A data de vencimento ou fica em branco ou aparece o numero 5 que é a quantidade de dias que eu configuro para o boleto vencer, lá no modulo de pagamentos da loja...

2° - O valor sempre vem sem os centavos e sem os milhares...ex: 1.550,00 no boleto aparece como 1550

Quem puder me ajudar, agradeço imensamente!!!!

Link para o comentário
Compartilhar em outros sites

  • 0

Para melhor entendimento, segue abaixo o codigo do script da loja que paga os dados e do boleto que recebe...

<?php

/* Este script deve ser instalado no diretório includes/modules/payment */

/*
  boleto.php 06/08/2002

  Módulo de Pagamento para osCommerce

  Copyright (c) 2002 Rodrigo S. Ferreira <rsferreira@terra.com.br>
  Released under the GNU General Public License
*/

class boleto {
    var $code, $title, $description, $enabled;

// !Class constructor -> initialize class variables.
// Sets the class code, description, and status.
    function boleto() {
      $this->code = 'boleto';
      $this->title = MODULE_PAYMENT_BOLETO_TEXT_TITLE;
      $this->email_footer = MODULE_PAYMENT_BOLETO_TEXT_CONFIRMATION;          
      $this->description = MODULE_PAYMENT_BOLETO_TEXT_DESCRIPTION;
      $this->enabled = MODULE_PAYMENT_BOLETO_STATUS;
  }

function javascript_validation() {
    return false;
}

function selection() {
    global $customer_id;
    $selection_string = MODULE_PAYMENT_BOLETO_TEXT_SELECTION . tep_draw_hidden_field('numero_boleto', $customer_id . rand(100,999));
    return $selection_string;
}

function pre_confirmation_check() {
    return false;    
}

function confirmation() { 

$confirmation_string = MODULE_PAYMENT_BOLETO_TEXT_CONFIRMATION;

global $HTTP_POST_VARS, $total_cost, $total_tax, $shipping_cost, $customer_id, $customer_default_address_id;

$cliente_query = tep_db_query("select c.customers_firstname, c.customers_lastname, a.entry_street_address, a.entry_suburb, a.entry_postcode, a.entry_city, a.entry_state, a.entry_zone_id, entry_country_id, c.documento_cliente from " . TABLE_CUSTOMERS . " c, " . TABLE_ADDRESS_BOOK . " a where c.customers_id = '" .  $customer_id . "' and a.customers_id = c.customers_id and a.address_book_id = '" . $customer_default_address_id . "'");
$cliente = tep_db_fetch_array($cliente_query);

$confirmation_string .= "<p align=\"justify\"><font face=\"arial\" color=\"#000000\">ATENÇÃO: Clique em \"Gerar Boleto\" para abrir o boleto bancário em uma nova janela. ";
$confirmation_string .= "Imprima o boleto seguindo as instruções. Após imprimir o boleto volte a esta página e clique em \"Confirmar\" para que seu pedido seja processado. ";
$confirmation_string .= "Este boleto poderá ser pago em qualquer banco ou através do <u>homebanking</u>. Caso não tenha como imprimir, utilize os dados do boleto para efetuar o depósito em nossa conta bancária.</font></p> ";

$confirmation_string .= "\n<form method=\"get\" action=\"" . MODULE_PAYMENT_BOLETO_CGIPATH . "\" target=\"_blank\">";

$confirmation_string .= "\n<input type=hidden name=\"PrazoVencimento\" value=\"" . MODULE_PAYMENT_BOLETO_PRAZOVENCIMENTO . "\">";
$confirmation_string .= "\n<input type=hidden name=\"VencimentoDiaUtil\" value=\"S\">";
$confirmation_string .=    "\n<input type=hidden name=\"NumeroDocumento\" value=\"" . $HTTP_POST_VARS['numero_boleto'] . "\">";
$confirmation_string .=    "\n<input type=hidden name=\"ValorDocumento\" value=\"" . ($total_cost + $total_tax + $shipping_cost) . "\">";
$confirmation_string .= "\n<input type=hidden name=\"CaracterDecimal\" value=\".\">";
$confirmation_string .= "\n<input type=hidden name=\"NossoNumero\" value=\"" .  $HTTP_POST_VARS['numero_boleto'] . "\">";
$confirmation_string .= "\n<input type=hidden name=\"CalculaDac\" value=\"S\">";
$confirmation_string .=    "\n<input type=hidden name=\"NomeSacado\" value=\"" . $cliente['customers_firstname'] . ' ' . $cliente['customers_lastname'] . "\">";
$confirmation_string .=    "\n<input type=hidden name=\"EnderecoSacado\" value=\"" . $cliente['entry_street_address'] . "\">";
$confirmation_string .=    "\n<input type=hidden name=\"CepSacado\" value=\"" . $cliente['entry_postcode'] . "\">";
$confirmation_string .=    "\n<input type=hidden name=\"BairroSacado\" value=\"" . $cliente['entry_suburb'] . "\">";
$confirmation_string .=    "\n<input type=hidden name=\"CidadeSacado\" value=\"" . $cliente['entry_city'] . "\">";
$confirmation_string .=    "\n<input type=hidden name=\"EstadoSacado\" value=\"" . tep_get_zone_code($cliente['entry_country_id'], $cliente['entry_zone_id'], $cliente['entry_state']) . "\">";
$confirmation_string .=    "\n<input type=hidden name=\"CNPJCPFSacado\" value=\"" . $cliente['documento_cliente'] . "\">";
$confirmation_string .=    "\n<input type=hidden name=\"Demonstrativo\" value=\"" . MODULE_PAYMENT_BOLETO_DEMONSTRATIVO . "\">";
$confirmation_string .=    "\n<input type=hidden name=\"InstrucoesCaixaCedente\" value=\"" . MODULE_PAYMENT_BOLETO_INSTRUCOESCAIXACEDENTE . "\">";

$$confirmation_string .=    "\n<input type=hidden name=\"PrefixoNossoNumero\" value=\"" . MODULE_PAYMENT_BOLETO_PREFIXONOSSONUMERO . "\">";

$confirmation_string .= "\n<center><input type=\"submit\" value=\"Gerar Boleto\" name=\"B1\"></center></form>";
      
return $confirmation_string;
}

function process_button() {
  global $HTTP_POST_VARS;      
  $process_button_string = tep_draw_hidden_field('numero_boleto', $HTTP_POST_VARS['numero_boleto']);

return $process_button_string;
}  

function before_process() { 
    return false;
}

function after_process() {
    return false;
}

function output_error() {
    return false;  
}

function check() {
    $check = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_BOLETO_STATUS'");
    $check = tep_db_num_rows($check);

    return $check;
}

function install() {
    tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Emitir Boleto Bancário? (0=NÃO 1=SIM)', 'MODULE_PAYMENT_BOLETO_STATUS', '0', '', '6', '1', 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_BOLETO_TEXT_SELECTION', 'Boleto Bancário', 'Texto a ser exibido para o cliente na tela do opções de pagamento:', '6', '2', 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_BOLETO_TEXT_CONFIRMATION', 'Seu pedido será enviado após o processamento do boleto no sistema bancário.', 'Texto a ser exibido para o cliente na confirmação da compra', '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 ('Prazo de Vencimento', 'MODULE_PAYMENT_BOLETO_PRAZOVENCIMENTO', '5', 'Este campo deve ser preenchido com a quantidade de dias a serem somados à data da compra para determinar a data de vencimento do boleto (o vencimento será calculado para cair em dia útil). Caso este parâmetro esteja em branco será utilizada a data de vencimento À Vista.', '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 ('Demonstrativo', 'MODULE_PAYMENT_BOLETO_DEMONSTRATIVO', 'Referente a compra de produtos realizada através do site <b>www.seusite.com.br</b>' , 'Informe neste parâmetro o código HTML que será exibido no demonstrativo do recibo do seu cliente.', '6', '7', now())");
    tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Instruções Caixa', 'MODULE_PAYMENT_BOLETO_INSTRUCOESCAIXACEDENTE', '<b>Sr. Caixa, não receber após o vencimento</b>', 'Informe neste parâmetro o código HTML que será exibido nas instruções para o caixa na ficha de compensação do boleto.', '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 ('Prefixo Nosso Número', 'MODULE_PAYMENT_BOLETO_PREFIXONOSSONUMERO', '', 'Caso este parâmetro seja informado o Nosso Número será precedido dos números informados aqui.', '6', '5', now())");
    
}

function remove() {
    tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_BOLETO_STATUS'");
    tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_BOLETO_TEXT_SELECTION'");
    tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_BOLETO_TEXT_CONFIRMATION'");
    tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_BOLETO_PRAZOVENCIMENTO'");
    tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_BOLETO_DEMONSTRATIVO'");
    tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_BOLETO_INSTRUCOESCAIXACEDENTE'");
    tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_BOLETO_PREFIXONOSSONUMERO'");
}

function keys() {
    $keys = array('MODULE_PAYMENT_BOLETO_STATUS', 'MODULE_PAYMENT_BOLETO_TEXT_SELECTION', 'MODULE_PAYMENT_BOLETO_TEXT_CONFIRMATION', 'MODULE_PAYMENT_BOLETO_PRAZOVENCIMENTO', 'MODULE_PAYMENT_BOLETO_DEMONSTRATIVO', 'MODULE_PAYMENT_BOLETO_INSTRUCOESCAIXACEDENTE', 'MODULE_PAYMENT_BOLETO_PREFIXONOSSONUMERO');
    return $keys;
    }
  }
?>
Script que gera o boleto na tela:
//=========Dados Obrigatórios para gerar o Boleto Banco do Brasil

$entra["data_vencimento"]  = gmdate('d/m/y'); // Data de Vencimento do Boleto
$entra["agencia"]  = "0383"; // Numero da Agência 4 Digitos s/DAC
$entra["digito_agencia"]    = "2";  // 1 Digito
$entra["conta"]      = "16641";    // Numero da Conta Até 8 Digitos s/ Digito
$entra["digito_conta"]  = "3";  // Digito da Conta Corrente 1 Digito
$entra["convenio"]  = "299648";  // numero do Convenio 6 Digitos
$entra["nosso_numero"]  =  $_GET["NossoNumero"];  // Nosso Numero Até 5 Digitos S/ DAC
$entra["carteira"]  = "18";  // Código da Carteira 18 - 17 ou 11
$entra["data_documento"]  = gmdate('d/m/y'); // Data de emissão do Boleto
$entra["valor"]      =   $_GET["ValorDocumento"];    // Valor do Boleto (Utilizar virgula como separador decimal, não use pontos)
$entra["numero_documento"]    = $_GET["NumeroDocumento"];    // Numero do Pedido ou Nosso Numero

//=============Dados da Sua empresa===============
$entra["cpf_cnpj_cedente"]  = "71.537.328/0001-90";
$entra["endereco"]    = "Rua Santa Ifigênia, 611, Loja 09";
$entra["cidade"]    = "São Paulo - SP";
$entra["cedente"]    = "A2N2 Com. de Equip. Eletrônicos Ltda-EPP";

//===Dados do seu Cliente (Opcional)===============
$entra["sacado"]  = $_GET["NomeSacado"];
$entra["endereco1"]     = $_GET["EnderecoSacado"];
$entra["endereco2"]     = $_GET["CNPJCPFSacado"];

//==Os Campos Abaixo são Opcionais=================
$entra["instrucoes"]      = $_GET["InstrucoesCaixaCedente"]; //Instruçoes para o Cliente
$entra["instrucoes1"]      = $_GET["InstrucoesCaixaCedente"]; // Por exemplo "Não receber apos o vencimento" ou "Cobrar Multa de 1% ao mês"
$entra["instrucoes2"]      = $_GET["Demonstrativo"];
$entra["instrucoes3"]      = "";
$entra["instrucoes4"]      = "";
$entra["instrucoes5"]      = "";
$entra["data_processamento"]= "";
$entra["quantidade"]  = "";
$entra["valor_unitario"]  = "";

$entra["aceite"] = "N";      
$entra["uso_banco"] = "";  
$entra["especie"] = "R$"; 
$entra["especie_doc"] = "DM";

Notem que até consegui fazer ele puxar a data atual como vencimento através do gmdate mais isso não resolve o problema pois o boleto tem que vencer pelo menos depois de 3 dias da data em que foi gerado... sem contar que ainda não sei se o gmdate irá influenciar na geração do código de barras do boleto, se bem que eu também não sei se este boleto usa o tal do fator vencimento, para evitar que um boleto seja pago depois de vencido.... :unsure:

Link para o comentário
Compartilhar em outros sites

  • 0

Marcos, não posso fazer isso pois o script é pago e se eu ficar passando ele para os outros poderei ter problemas com copyrigth... a parte do código onde estava o problema é justamente essa que eu postei no forum.... depois de muitas tentativas e de ler alguns outros tópicos antigos aqui do forum, consegui resolver o problema!!!

Luciano - A netdinamica diz dar suporte na instalação do produto, mas no meu caso como tinha que mexer em um arquivo da loja OSCommerce para fazer a integração da loja com o script de boleto, eles queriam me cobrar a "bagatela" de R$400,00 para criar o script! :angry:

Vão roubar de outro, por que de mim, não!!! :)

Link para o comentário
Compartilhar em outros sites

  • 0

Sim.... consegui!!!

O script de boleto em si é bom e funciona, principalmente se for usado através de um form simples em HTML como por exemplo numa página de assinatura de hospedagem de sites... é algo simples, e rápido de ser implementado...

Mas no meu caso eu tinha que pegar dados dinâmicos como data e valor da compra do site para poder passar para o boleto... fiz de curioso, mesmo porque sou iniciante em PHP...

Justamente nos campos dinâmicos como data e valor é que eu quebrei mais a cabeça!!! Para começar eu acessei a parte de downloads do Cobre Bem que é outro sistema de boleto só que mais caro que o da Netdinamica, e pasmem!!! eles oferecem de graça para download o script que faz a ligação entre a loja e o sistema de boletos...(ao invés de cobrar R$400,00 como a outra!)

Com este script na mão, tirei algumas linhas e acrescentei outras e consegui fazer tudo rodar!!! :lol:

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...