Пример #1
0
 protected static function createTestCustomer($_attributes = array())
 {
     $attributes = array("email" => "*****@*****.**", "name" => "Patrick Negri");
     return Iugu_Customer::create(array_merge($attributes, $_attributes));
 }
 public function confirm()
 {
     //5 = Falha no Pagamento
     $this->log->write('Pagamento iugu Boleto - Dentro do confirm()');
     //Carregando os models e linguagem
     $this->load->model('checkout/order');
     $this->load->model('account/customer');
     $this->load->model('payment/iugu_bankslip');
     $this->language->load('payment/iugu_bankslip');
     //Dados do Pedido
     $order_info = $this->model_checkout_order->getOrder($this->session->data['order_id']);
     $cliente = $this->model_account_customer->getCustomer($order_info['customer_id']);
     $produtos = $this->cart->getProducts();
     //Token de Segurança
     Iugu::setApiKey($this->config->get('iugu_bankslip_token'));
     //Montando Dados
     $name = trim($order_info['payment_firstname']) . ' ' . trim($order_info['payment_lastname']);
     $email = trim($order_info['email']);
     //Produtos
     foreach ($produtos as $product) {
         $options_names = '';
         foreach ($product['option'] as $option) {
             $options_names .= ' - ' . $option['name'] . ': ' . $option['option_value'];
         }
         //Até 80 caracteres para a descrição do Produto
         $description = mb_substr($product['name'] . $options_names, 0, 80, 'UTF-8');
         if ($this->currency->format($product['price'], $order_info['currency_code'], false, false) * 100 >= 1) {
             $item[] = array('description' => $description, 'quantity' => $product['quantity'], 'price_cents' => $this->currency->format($product['price'], $order_info['currency_code'], false, false) * 100);
         }
     }
     $desconto = 0;
     $taxa_extra = $this->currency->format($order_info['total'] - $this->cart->getSubTotal(), $order_info['currency_code'], false, false) * 100;
     if ($taxa_extra >= 1) {
         $item[] = array('description' => $this->language->get('text_extra_amount'), 'quantity' => 1, 'price_cents' => $taxa_extra);
     } else {
         $desconto = abs($taxa_extra);
     }
     $this->log->write('Pagamento iugu Boleto - Dados adicionados');
     //PASSO 1
     //Criando Cliente
     //Verificando se existe o cliente cadastrado
     if (empty($cliente['iugu_customer_id'])) {
         //Criando Cliente na iugu
         $this->log->write('Pagamento iugu Boleto - Criando cliente');
         $cliente = Iugu_Customer::create(array("email" => $email, "name" => $name));
         //Adicionando cliente ao Banco de Dados
         if (!empty($cliente['id'])) {
             $this->log->write('Pagamento iugu Boleto - Adicionando referência do cliente ao Banco. ID = ' . $cliente['id']);
             $this->db->query("UPDATE `" . DB_PREFIX . "customer`\r\n              SET iugu_customer_id= '" . $cliente['id'] . "'\r\n              WHERE customer_id = '" . $order_info['customer_id'] . "' ");
             $this->log->write('Pagamento iugu Boleto - Adicionado iugu_customer_id');
         }
     } else {
         $cliente['id'] = $cliente['iugu_customer_id'];
     }
     //Passo 2
     //Criando Boleto
     $this->log->write('Pagamento iugu Boleto - Criando o Boleto');
     if ($this->config->get('iugu_bankslip_cobrança') == 1) {
         $cobranca = 'false';
     } else {
         $cobranca = 'true';
     }
     $p = Iugu_Invoice::create(array("email" => $email, "due_date" => date('Y-m-d', strtotime("+" . $this->config->get('iugu_bankslip_vencimento') . " days")), "items" => $item, "return_url" => $this->url->link('checkout/success', '', 'SSL'), "expired_url" => $this->url->link('checkout/success', '', 'SSL'), "notification_url" => $this->url->link('payment/iugu_bankslip/callback', '', 'SSL'), "discount_cents" => $desconto, "customer_id" => $cliente['id'], "ignore_due_email" => $cobranca));
     //Verificando se Boleto foi criado com sucesso
     if (!empty($p['id']) and !empty($p['secure_url'])) {
         $this->log->write('Pagamento iugu Boleto - Boleto Criado com sucesso');
         $url = $p['secure_url'] . '.pdf?bs=true';
         $boleto = array('url' => $url, 'total' => 'R$ ' . number_format($this->currency->format($order_info['total'], $order_info['currency_code'], false, false), 2, ',', ''), 'barcodel' => $p['bank_slip']->digitable_line, 'barcode' => $p['bank_slip']->barcode);
         $pagamento = "\r\n            Se não tiver pago, abra o Boleto abaixo para pagar<br>\r\n            <a href='{$url}' rel='nofollow' target='_blank'><img src='image/iugu/imprimir-boleto.png'></a>\r\n        ";
         //Confirmando Pedido
         $this->model_checkout_order->confirm($this->session->data['order_id'], $this->config->get('iugu_bankslip_order_aguardando_pagamento'), $pagamento, true);
         $this->db->query("UPDATE `" . DB_PREFIX . "order` SET iugu_order_id = '" . $p['id'] . "' WHERE order_id = '" . (int) $this->session->data['order_id'] . "'");
         //Adicionando dados do Boleto na sessão, para ser usado no Confirmar
         $this->session->data['boleto'] = $boleto;
         $this->log->write('Pagamento iugu Boleto - Retornando URL do Sucesso');
         echo $this->url->link('checkout/iugu_success');
     } else {
         $this->log->write('Pagamento iugu Boleto - Criação da Fatura falhou');
         echo 5;
     }
 }