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; }
/** * 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); }