public function validSend($data)
 {
     $total = $this->format_value($data['total']);
     $order_id = $this->session->data['order_id'];
     $this->load->model('account/customer');
     $array_customer = $this->model_account_customer->getCustomer((int) $data['customer_id']);
     $xml_send = '<payOrder>';
     $xml_send .= '<order_data>';
     $xml_send .= '<merch_ref>' . substr($order_id, 0, 20) . '</merch_ref>';
     $xml_send .= '<origin>e-commerce</origin>';
     $xml_send .= '<currency>BRL</currency>';
     $xml_send .= '<tax_freight>000</tax_freight>';
     $xml_send .= '<discount_plus>000</discount_plus>';
     $xml_send .= '<order_subtotal>' . $total . '</order_subtotal>';
     $xml_send .= '<order_total>' . $total . '</order_total>';
     $xml_send .= '<order_items>';
     $xml_send .= '<order_item>';
     $xml_send .= '<code>123456</code>';
     $xml_send .= '<description>Compras</description>';
     $xml_send .= '<units>1</units>';
     $xml_send .= '<unit_value>' . $total . '</unit_value>';
     $xml_send .= '</order_item>';
     $xml_send .= '</order_items>';
     $xml_send .= '</order_data>';
     $xml_send .= '<behavior_data>';
     $xml_send .= '<language>ptbr</language>';
     $xml_send .= '<url_post_bell>' . HTTP_SERVER . 'index.php?route=payment/boldcron_bell/bell</url_post_bell>';
     $xml_send .= '<url_redirect_success>' . HTTP_SERVER . URL_SUCCESS . '</url_redirect_success>';
     $xml_send .= '<url_redirect_error>' . HTTP_SERVER . URL_SUCCESS . '</url_redirect_error>';
     $xml_send .= '</behavior_data>';
     $xml_send .= '<payment_data>';
     $xml_send .= '<payment>';
     $xml_send .= '<payment_method>boleto_itau</payment_method>';
     $xml_send .= '<installments>1</installments>';
     $xml_send .= '<payment_value>' . $total . '</payment_value>';
     $xml_send .= '</payment>';
     $xml_send .= '</payment_data>';
     $xml_send .= '<customer_data>';
     $xml_send .= '<customer_id>' . (int) $data['customer_id'] . '</customer_id>';
     $xml_send .= '<customer_ip>' . $this->db->escape($data['ip']) . '</customer_ip>';
     $xml_send .= '<customer_info>';
     $xml_send .= '<first_name>' . substr($this->db->escape($data['firstname']), 0, 30) . '</first_name>';
     $xml_send .= '<last_name>' . substr($this->db->escape($data['lastname']), 0, 30) . '</last_name>';
     $xml_send .= '<email>' . substr($this->db->escape($data['email']), 0, 256) . '</email>';
     $xml_send .= '<birthday>' . str_replace("-", "", $array_customer['birthday']) . '</birthday>';
     if ($array_customer['type_person'] == 'F') {
         $xml_send .= '<document_type>0</document_type><document>' . $array_customer['cpf_cnpj'] . '</document>';
     } else {
         $xml_send .= '<document_type>1</document_type><document>' . $array_customer['cpf_cnpj'] . '</document>';
     }
     $xml_send .= '<address_street>' . substr($this->db->escape($data['payment_address_1']), 0, 100) . '</address_street>';
     $xml_send .= '<address_street_nr>' . substr($this->db->escape($data['payment_number_home']), 0, 25) . '</address_street_nr>';
     $xml_send .= '<address_comunity>' . substr($this->db->escape($data['payment_neighborhood']), 0, 25) . '</address_comunity>';
     $xml_send .= '<address_city>' . substr($this->db->escape($data['payment_city']), 0, 25) . '</address_city>';
     $xml_send .= '<address_state>' . substr($this->db->escape($data['payment_zone']), 0, 25) . '</address_state>';
     $xml_send .= '<address_country>BR</address_country>';
     $xml_send .= '<address_zip>' . $this->db->escape($data['payment_postcode']) . '</address_zip>';
     $xml_send .= '</customer_info>';
     $xml_send .= '<billing_info>';
     $xml_send .= '<first_name>' . substr($this->db->escape($data['firstname']), 0, 30) . '</first_name>';
     $xml_send .= '<last_name>' . substr($this->db->escape($data['lastname']), 0, 30) . '</last_name>';
     $xml_send .= '<email>' . substr($this->db->escape($data['email']), 0, 256) . '</email>';
     $xml_send .= '<birthday>' . str_replace("-", "", $array_customer['birthday']) . '</birthday>';
     if ($array_customer['type_person'] == 'F') {
         $xml_send .= '<document_type>0</document_type><document>' . $array_customer['cpf_cnpj'] . '</document>';
     } else {
         $xml_send .= '<document_type>1</document_type><document>' . $array_customer['cpf_cnpj'] . '</document>';
     }
     $xml_send .= '<address_street>' . substr($this->db->escape($data['payment_address_1']), 0, 100) . '</address_street>';
     $xml_send .= '<address_street_nr>' . substr($this->db->escape($data['payment_number_home']), 0, 25) . '</address_street_nr>';
     $xml_send .= '<address_comunity>' . substr($this->db->escape($data['payment_neighborhood']), 0, 25) . '</address_comunity>';
     $xml_send .= '<address_city>' . substr($this->db->escape($data['payment_city']), 0, 25) . '</address_city>';
     $xml_send .= '<address_state>' . substr($this->db->escape($data['payment_zone']), 0, 25) . '</address_state>';
     $xml_send .= '<address_country>BR</address_country>';
     $xml_send .= '<address_zip>' . $this->db->escape($data['payment_postcode']) . '</address_zip>';
     $xml_send .= '</billing_info>';
     $xml_send .= '<shipment_info>';
     $xml_send .= '<first_name>' . substr($this->db->escape($data['firstname']), 0, 30) . '</first_name>';
     $xml_send .= '<last_name>' . substr($this->db->escape($data['lastname']), 0, 30) . '</last_name>';
     $xml_send .= '<email>' . substr($this->db->escape($data['email']), 0, 256) . '</email>';
     $xml_send .= '<birthday>' . str_replace("-", "", $array_customer['birthday']) . '</birthday>';
     if ($array_customer['type_person'] == 'F') {
         $xml_send .= '<document_type>0</document_type><document>' . $array_customer['cpf_cnpj'] . '</document>';
     } else {
         $xml_send .= '<document_type>1</document_type><document>' . $array_customer['cpf_cnpj'] . '</document>';
     }
     $xml_send .= '<address_street>' . substr($this->db->escape($data['shipping_address_1']), 0, 100) . '</address_street>';
     $xml_send .= '<address_street_nr>' . substr($this->db->escape($data['shipping_number_home']), 0, 25) . '</address_street_nr>';
     $xml_send .= '<address_comunity>' . substr($this->db->escape($data['shipping_neighborhood']), 0, 25) . '</address_comunity>';
     $xml_send .= '<address_city>' . substr($this->db->escape($data['shipping_city']), 0, 25) . '</address_city>';
     $xml_send .= '<address_state>' . substr($this->db->escape($data['shipping_zone']), 0, 25) . '</address_state>';
     $xml_send .= '<address_country>BR</address_country>';
     $xml_send .= '<address_zip>' . $this->db->escape($data['shipping_postcode']) . '</address_zip>';
     $xml_send .= '</shipment_info>';
     $xml_send .= '</customer_data>';
     $xml_send .= '</payOrder>';
     ini_set('soap.wsdl_cache_enabled', 0);
     $paramVersion = '1.1.0';
     $paramAction = 'payOrder';
     $paramMerchant = $this->config->get('boldcron_billet_merchant_id');
     $paramUser = $this->config->get('boldcron_billet_user');
     $paramPassword = $this->config->get('boldcron_billet_password');
     $paramData = utf8_encode($xml_send);
     if ((int) $this->config->get('boldcron_billet_ambient') == 0) {
         $client = new SoapClient('https://certificacao.bpag.uol.com.br/bpag2/services/BPagWS?wsdl', array("trace" => 1, "exceptions" => 0));
     } else {
         $client = new SoapClient('https://bpag.uol.com.br/bpag2/services/BPagWS?wsdl', array("trace" => 1, "exceptions" => 0));
     }
     $response = $client->doService(array('data' => $paramData, 'version' => $paramVersion, 'action' => $paramAction, 'merchant' => $paramMerchant, 'user' => $paramUser, 'password' => $paramPassword));
     $xmlResponse = simplexml_load_string($response->doServiceReturn);
     if (isset($this->session->data['installments'])) {
         $parcelas = $this->session->data['installments'];
     } else {
         $parcelas = '1';
     }
     if (isset($this->session->data['payment_type'])) {
         $tipo_pagamento = $this->session->data['payment_type'];
     } else {
         $tipo_pagamento = '';
     }
     if (isset($this->session->data['cc_number'])) {
         $numero_cartao = $this->session->data['cc_number'];
     } else {
         $numero_cartao = '';
     }
     if (isset($this->session->data['cc_cvv'])) {
         $num_security = $this->session->data['cc_cvv'];
     } else {
         $num_security = '';
     }
     if (isset($this->session->data['cc_exp_month'])) {
         $date_month = $this->session->data['cc_exp_month'];
     } else {
         $date_month = '';
     }
     if (isset($this->session->data['cc_exp_year'])) {
         $date_year = $this->session->data['cc_exp_year'];
     } else {
         $date_year = '';
     }
     if (isset($this->session->data['cc_card_holder'])) {
         $nome_cartao = $this->session->data['cc_card_holder'];
     } else {
         $nome_cartao = '';
     }
     $this->addTransacao($xmlResponse->status, str_replace("'", "", $xmlResponse->msg), $xmlResponse->bpag_data->status, $xmlResponse->bpag_data->msg, $xmlResponse->bpag_data->url, $xmlResponse->bpag_data->id, $this->session->data['order_id'], $total);
     return true;
 }
 public function bell()
 {
     $this->load->model('payment/boldcron_bell');
     $this->load->model('checkout/order');
     if (isset($this->request->post['merch_ref'])) {
         $id = $this->request->post['merch_ref'];
     } else {
         if (isset($this->request->get['merch_ref'])) {
             $id = $this->request->get['merch_ref'];
         } else {
             $id = '';
         }
     }
     $return_xml = '<bellReturn>';
     $xml_send = '<probe><merch_ref>' . $id . '</merch_ref></probe>';
     ini_set('soap.wsdl_cache_enabled', 0);
     $paramVersion = '1.1.0';
     $paramAction = 'probe';
     $paramMerchant = $this->config->get('boldcron_card_merchant_id');
     $paramUser = $this->config->get('boldcron_card_user');
     $paramPassword = $this->config->get('boldcron_card_password');
     $paramData = utf8_encode($xml_send);
     if ((int) $this->config->get('boldcron_card_ambient') == 0) {
         $client = new SoapClient('https://certificacao.bpag.uol.com.br/bpag2/services/BPagWS?wsdl', array("trace" => 1, "exceptions" => 0));
     } else {
         $client = new SoapClient('https://asp.bpag.com.br/bpag2/services/BPagWS?wsdl', array("trace" => 1, "exceptions" => 0));
     }
     $response = $client->doService(array('data' => $paramData, 'version' => $paramVersion, 'action' => $paramAction, 'merchant' => $paramMerchant, 'user' => $paramUser, 'password' => $paramPassword));
     $xmlResponse = simplexml_load_string($response->doServiceReturn);
     $query = $this->db->query("SELECT order_id FROM " . DB_PREFIX . "transaction_boldcron_card WHERE order_id = '" . $id . "' ");
     $table = '';
     if ($query->rows) {
         $table = 'transaction_boldcron_card';
     }
     $query = $this->db->query("SELECT order_id FROM " . DB_PREFIX . "transaction_boldcron_billet WHERE order_id = '" . $id . "' ");
     if ($query->rows) {
         $table = 'transaction_boldcron_billet';
     }
     if ($xmlResponse->status == 0) {
         $return_xml .= '<status>1</status>';
         $return_xml .= '<msg>SUCESSO</msg>';
         if ((string) $xmlResponse->status == '0') {
             switch ((string) $xmlResponse->order_data->order->bpag_data->msg) {
                 case 'PAGO':
                     $msg_email = 'Recebemos o pagamento de seu pedido e o mesmo ja esta apto para ser enviado.';
                     $this->model_checkout_order->addOrderHistory($id, 5, $msg_email, 1, '', false, 'boldcron_bell');
                     $this->model_payment_boldcron_bell->alterOrder($id, $table, $xmlResponse->order_data->order->bpag_data->status, $xmlResponse->order_data->order->bpag_data->msg, $xmlResponse->order_data->order->bpag_data->url, $xmlResponse->status, $xmlResponse->msg);
                     break;
                 case 'NAO PAGO':
                     $msg_email = 'O seu pedido nao foi pago. Entre em contato com a loja para mais detalhes.';
                     $this->model_checkout_order->addOrderHistory($id, 17, $msg_email, 1, '', false, 'boldcron_bell');
                     $this->model_payment_boldcron_bell->alterOrder($id, $table, $xmlResponse->order_data->order->bpag_data->status, $xmlResponse->order_data->order->bpag_data->msg, $xmlResponse->order_data->order->bpag_data->url, $xmlResponse->status, $xmlResponse->msg);
                     break;
                 case 'INVALIDO':
                     $msg_email = 'O seu pedido foi invalidado. Entre em contato com a loja para mais detalhes.';
                     $this->model_checkout_order->addOrderHistory($id, 21, $msg_email, 1, '', false, 'boldcron_bell');
                     $this->model_payment_boldcron_bell->alterOrder($id, $table, $xmlResponse->order_data->order->bpag_data->status, $xmlResponse->order_data->order->bpag_data->msg, $xmlResponse->order_data->order->bpag_data->url, $xmlResponse->status, $xmlResponse->msg);
                     break;
                 case 'ESTORNADO':
                     $msg_email = 'O seu pedido foi estornado. Entre em contato com a loja para mais detalhes.';
                     $this->model_checkout_order->addOrderHistory($id, 21, $msg_email, 1, '', false, 'boldcron_bell');
                     $this->model_payment_boldcron_bell->alterOrder($id, $table, $xmlResponse->order_data->order->bpag_data->status, $xmlResponse->order_data->order->bpag_data->msg, $xmlResponse->order_data->order->bpag_data->url, $xmlResponse->status, $xmlResponse->msg);
                     break;
                 case 'NAO EFETIVADO':
                     $msg_email = 'O seu pedido nao foi efetivado. Entre em contato com a loja para mais detalhes.';
                     $this->model_checkout_order->addOrderHistory($id, 21, $msg_email, 1, '', false, 'boldcron_bell');
                     $this->model_payment_boldcron_bell->alterOrder($id, $table, $xmlResponse->order_data->order->bpag_data->status, $xmlResponse->order_data->order->bpag_data->msg, $xmlResponse->order_data->order->bpag_data->url, $xmlResponse->status, $xmlResponse->msg);
                     break;
                 case 'CANCELADO':
                     $msg_email = 'O seu pedido foi cancelado. Entre em contato com a loja para mais detalhes.';
                     $this->model_checkout_order->addOrderHistory($id, 21, $msg_email, 1, '', false, 'boldcron_bell');
                     $this->model_payment_boldcron_bell->alterOrder($id, $table, $xmlResponse->order_data->order->bpag_data->status, $xmlResponse->order_data->order->bpag_data->msg, $xmlResponse->order_data->order->bpag_data->url, $xmlResponse->status, $xmlResponse->msg);
                     break;
                 case 'PENDENTE DE LIBERACAO':
                     $msg_email = 'O seu pedido esta pendente de liberacao. Entre em contato com a loja para mais detalhes.';
                     $this->model_checkout_order->addOrderHistory($id, 22, $msg_email, 1, '', false, 'boldcron_bell');
                     $this->model_payment_boldcron_bell->alterOrder($id, $table, $xmlResponse->order_data->order->bpag_data->status, $xmlResponse->order_data->order->bpag_data->msg, $xmlResponse->order_data->order->bpag_data->url, $xmlResponse->status, $xmlResponse->msg);
                     break;
                 case 'PENDENTE DE SALDO':
                     $msg_email = 'O seu pedido esta pendente de pagamento. Entre em contato com a loja para mais detalhes.';
                     $this->model_checkout_order->addOrderHistory($id, 21, $msg_email, 1, '', false, 'boldcron_bell');
                     $this->model_payment_boldcron_bell->alterOrder($id, $table, $xmlResponse->order_data->order->bpag_data->status, $xmlResponse->order_data->order->bpag_data->msg, $xmlResponse->order_data->order->bpag_data->url, $xmlResponse->status, $xmlResponse->msg);
                     break;
                 case 'PENDENTE DE PAGAMENTO':
                     $msg_email = 'O seu pedido esta aguardando pagamento. Entre em contato com a loja para mais detalhes.';
                     $this->model_checkout_order->addOrderHistory($id, 17, $msg_email, 1, '', false, 'boldcron_bell');
                     $this->model_payment_boldcron_bell->alterOrder($id, $table, $xmlResponse->order_data->order->bpag_data->status, $xmlResponse->order_data->order->bpag_data->msg, $xmlResponse->order_data->order->bpag_data->url, $xmlResponse->status, $xmlResponse->msg);
                     break;
             }
         }
     } else {
         $return_xml .= '<status>0</status>';
         $return_xml .= '<msg>Erro ao executar probe.</msg>';
     }
     $return_xml .= '</bellReturn>';
     header("Content-type: text/xml");
     echo $return_xml;
 }
Example #3
0
 /**
  * Inicializa a conexão com o webservice do CobreDireto
  *
  * Faz as chamadas iniciais do webservice.
  * @access private
  **/
 protected function initCobreDireto($action)
 {
     $__CD = new SoapClient($this->__url);
     $retorno = $__CD->doService(array('version' => '1.1.0', 'action' => $action, 'merchant' => $this->codloja, 'user' => $this->usuario, 'password' => $this->senha, 'data' => $this->request->saveXML()));
     $this->xml = simplexml_load_string($retorno->doServiceReturn);
 }