Jump to content

Search the Community

Showing results for tags 'wsdl'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Q&A Desenvolvimento
    • Perguntas e respostas rápidas
  • Web Development
    • HTML e CSS
    • Javascript
    • PHP
    • Ruby
    • Python
    • Java
    • .NET
    • Docker, Kubernets and other environments
    • WordPress
    • Mobile
    • Agile
    • Desenvolvimento de Games
    • Banco de Dados
    • Design and UX
    • Algoritmos & Outras Tecnologias
  • Entretenimento e uso pessoal
    • Segurança & Malwares
    • Geral
    • iMasters's pub

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Google+


Hangouts


Skype


Twitter


deviantART


Github


Flickr


LinkedIn


Pinterest


Facebook


Site Pessoal


Localização


Interesses

Found 7 results

  1. Preciso consumir um web service soap (wsdl) com certificado digital mas não estou a conseguir. Testei através do SoapUI e resultou sem erros, mas na hora de aplicar num script de php, não estou a conseguir que funcione. O que fiz até ao momento: converti o certificado digital de .pfx para .pem com chave privada incluída e procurei executar o script com os parâmetros de conexão e xsd de saída. Na documentação consta este xsd de saída: A resposta, se com erro, deverá ser: Resposta sem erro: O meu script: <?php date_default_timezone_set("America/Fortaleza"); $time = new DateTime; $data = $time->format(DateTime::ATOM); $wsdl = 'https://selodigital.tjce.jus.br/wsselodigital-homologacao/SolicitacaoSelo?wsdl'; $endpoint = 'https://selodigital.tjce.jus.br/wsselodigital-homologacao/SolicitacaoSelo'; $certificate = "certificado.pem"; $password = 'senha'; $options = array( 'location' => $endpoint, 'keep_alive' => true, 'trace' => true, 'local_cert' => $certificate, 'passphrase' => $password, 'cache_wsdl' => WSDL_CACHE_NONE, array('versao' => '1.12', 'dataHora' => $data, 'ambiente' => '2', 'codigoServentia' => '000123', 'nomePessoa' => 'Nome de Teste', 'tipoDocumento' => '1', 'idSolicitacaoSelo' => '1', 'sequencial' => '1', 'codigo' => '6', 'quantidade' => '10' ) ); try { $soapClient = new SoapClient($wsdl, $options); } catch(Exception $e) { var_dump($e); } O erro que tenho recebido: Onde estarei errando?
  2. Bom dia caros amigos, estou precisando fazer uma consulta em um WS da Receita Federal mas estou me batendo com algumas dúvidas. Instalei o certificado que eles me passaram na minha máquina e pelo navegador quando colo a URL do WS ele mostra tudo correto os tipos de consultas e tal, meu problema está no desenvolvimento do client para fazer essa consulta, eu preciso instalar algum Certificado localmente? E como devo fazer a conexão da minha aplicação com esse WS? Estou tentando assim: <?php require("biblioteca/nusoap.php"); $wsdl = "https://acesso.infoconv.receita.fazenda.gov.br/ws/cpf/ConsultarCPF.asmx?wsdl"; $formaBusca = "listarEmpPorCPF"; $ListaDeCPF = "12345678910"; $CPFUsuario = "12345678910"; $sslcertfile = 'certificado.pem'; $sslkeyfile = 'key.pem'; $passphrase = 'senha'; $param = array('CPFUsuario' => $CPFUsuario, 'ListaDeCPF' => $ListaDeCPF); $soap = new nusoap_client($wsdl, 'wsdl'); $soap->setCredentials("", "", 'certificate', array( 'sslcertfile' => $sslcertfile, 'sslkeyfile' => $sslkeyfile, 'passphrase' => $passphrase, 'verifypeer' => 0, 'verifyhost' => 0 ) ); if($err = $soap->getError()) { die('Error: '.$err); } $result = $soap->call($formaBusca, array('parameters' => $param), '', '', false, true); if($soap->fault) { echo 'Fault! <pre>'; var_dump($result); echo '</pre>'; } else { if($err = $soap->getError()) { die('Error: '.$err); } else { echo '<pre>'; var_dump($result); die('</pre>'); } } ?> E está me dando o seguinte erro: Error: wsdl error: Getting https://acesso.infoconv.receita.fazenda.gov.br/ws/cpf/ConsultarCPF.asmx?wsdl - HTTP ERROR: cURL ERROR: 58: could not load PEM client certificate, OpenSSL error error:02001003:system library:fopen:No such process, (no key found, wrong pass phrase, or wrong file format?)
  3. Bom dia, estou tentando criar uma integração a um webservice utilizando o seguinte link do serviço: https://wwwh.cnj.jus.br/pjemni-2x/intercomunicacao?wsdl Para tanto, fiz o seguinte código-teste: <?php $client = new SoapClient("https://wwwh.cnj.jus.br/pjemni-2x/intercomunicacao?wsdl"); $function = "consultarProcesso"; $arguments = array ( "idConsultante" => "xxx", "senhaConsultante" => "xxx", "numeroProcesso" => "50243604120198130702", "movimentos" => true ); $result = $client->__soapCall($function, $arguments); print $result; ?> Contudo, ao executar o código, recebo o seguinte erro: Fatal error: Uncaught SoapFault exception: [soap:Client] Message part param1 was not recognized. (Does it exist in service WSDL?) in C:\xampp\htdocs\wstest\test.php:13 Stack trace: #0 C:\xampp\htdocs\wstest\test.php(13): SoapClient->__soapCall('consultarProces...', Array) #1 {main} thrown in C:\xampp\htdocs\wstest\test.php on line 13 Se alguém puder me ajudar, agradeço muito!!
  4. Boa noite, estou tentando enviar com PHP SOAP o XML de um lote RPS assinado para o Web Service da Betha também conhecido como Fly e-nota. No entanto, não tenho tido nenhum retorno quanto a se deu algum erro ou algo do tipo. Documentação https://e-gov.betha.com.br/e-nota-test/ambienteteste.faces Ambiente Teste Webservice https://e-gov.betha.com.br/e-nota-contribuinte-test-ws/recepcionarLoteRps?wsdl https://e-gov.betha.com.br/e-nota-contribuinte-test-ws/consultarLoteRps?wsdl Layout https://e-gov.betha.com.br/e-nota/manuais/layout.pdf Modelo Conceitual http://www.abrasf.org.br/arquivos/files/NFSE-NACIONAL_Modelo_Conceitual versao 2-02.pdf Manual de Integração ABRASF http://www.abrasf.org.br/arquivos/files/NFSE-NACIONAL_Manual_De_Integracao versao 2-02.pdf Tem uma opção na área administrativa Fly e-nota para solicitar a prefeitura autorização para impressão de RPS tanto manual como eletrônica. Não sei se isso é obrigatório ou se é necessário para o meu objetivo. Parte do código para o envio: ------------------------------ function transmiteRps($xmlAssinado,$certificadoPem,$senha){ $wsdl = 'https://e-gov.betha.com.br/e-nota-contribuinte-test-ws/recepcionarLoteRps?wsdl'; $endpoint = 'https://e-gov.betha.com.br/e-nota-contribuinte-test-ws/recepcionarLoteRps'; $certificate = $certificadoPem; $password = $senha; $options = array( 'location' => $endpoint, 'keep_alive' => true, 'trace' => true, 'local_cert' => $certificate, 'passphrase' => $password, 'cache_wsdl' => WSDL_CACHE_NONE ); try { $client = new SoapClient($wsdl, $options); $function = 'EnviarLoteRpsEnvio'; $arguments = ['EnviarLoteRpsEnvio' => ['xml'=>$xmlAssinado]]; $options = []; $result = $client -> __soapCall($function, $arguments, $options); } catch(Exception $e){ $result = false; } if($result!==false){ return xml2array($result->return); }else{ return false; } }//transmiteRps ---------------------------------------------------------- function xml2array($xmlstring){ $xml = simplexml_load_string($xmlstring); $json = json_encode($xml); $array = json_decode($json, TRUE); return $array; } ----------------------------------------------- function consultaRps($cnpj, $inscricao, $protocolo, $certificadoPem, $senha){ $wsdl = 'https://e-gov.betha.com.br/e-nota-contribuinte-test-ws/consultarLoteRps?wsdl'; $endpoint = 'https://e-gov.betha.com.br/e-nota-contribuinte-test-ws/consultarLoteRps'; $certificate = $certificadoPem; $password = $senha; $xml = '<?xml version="1.0" encoding="utf-8"?> <ConsultarLoteRpsEnvio xmlns="http://www.betha.com.br/e-nota-contribuinte-test-ws"> <Prestador> <CpfCnpj> <Cnpj>'.$cnpj.'</Cnpj> </CpfCnpj> <InscricaoMunicipal>'.$inscricao.'</InscricaoMunicipal> </Prestador> <Protocolo>'.$protocolo.'</Protocolo> </ConsultarLoteRpsEnvio>'; $options = array( 'location' => $endpoint, 'keep_alive' => true, 'trace' => true, 'local_cert' => $certificate, 'passphrase' => $password, 'cache_wsdl' => WSDL_CACHE_NONE ); try { $client = new SoapClient($wsdl, $options); $function = 'consultarLoteRps'; $arguments = ['consultarLoteRps' => ['xml'=>$xml]]; $options = []; $result = $client -> __soapCall($function, $arguments, $options); } catch(Exception $e){ $result = false; } if($result!==false){ return $result->return; }else{ return false; } } //consultaRps -------------------------------- $certificadoPem=dirname(__FILE__).'/certificado.pem'; $senha='xxxxx'; //senha do certificado ---------------------------------- //assina RPS $xmlAssinado=assinaRps(dirname(__FILE__).'/only_rps.xml'); //usei para assinar só a RPS file_put_contents(dirname(__FILE__).'/rps_temp/rps1.xml','<?xml version="1.0" encoding="utf-8"?> <EnviarLoteRpsEnvio xmlns="https://e-gov.betha.com.br/e-nota-contribuinte-test-ws"><LoteRps Id="LOTE1"><NumeroLote>1</NumeroLote><Cnpj>xxxxxxxxxxxxxx</Cnpj><InscricaoMunicipal>xxxx</InscricaoMunicipal><QuantidadeRps>1</QuantidadeRps> <ListaRps>'.str_replace('<?xml version="1.0" encoding="utf-8"?>','',$xmlAssinado).'</ListaRps></LoteRps></EnviarLoteRpsEnvio>'); $_SESSION['nome_uri']='LOTE1'; $xmlAssinado=assinaRps(dirname(__FILE__).'/rps_temp/rps1.xml'); //usei para assinar o Lote RPS $resultado=transmiteRps($xmlAssinado, $certificadoPem, $senha); if(!empty($resultado["Protocolo"])){//se tem protocolo e sucesso //$resultado["NumeroLote"] //$resultado["Protocolo"] //consulta lote e pega nfse $nfseResposta = consultaRps('xxxxxxxxxxxxx', //cnpj 'xxxx', //inscrição municipal $resultado["Protocolo"], $certificadoPem, $senha); if($nfseResposta!==false){ echo '<textarea cols="120" rows="70">'; echo $nfseResposta; echo '</textarea>'; }else{ echo 'Erro ao consultar RPS'; } }else{ echo "erro no envio"; } Vídeo Tutorial do código NFSe acima porém para outro webservice que não é da Betha. https://www.youtube.com/watch?v=v1rByVX1_FY Desde já agradeço a atenção e colaboração dos colegas. Funcionando postarei aqui a solução com o código completo para quem precisar.
  5. Estou tendo problemas com array em php. Eu preciso enviar um xml via soap para o webservice com alguns itens do produto, mas uma tag está me trazendo dúvidas. O manual wsdl tem um xml como este: <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://service.edei.correios.com.br/"> <soapenv:Header/> <soapenv:Body> <ser:solicitarCodigoEtiquetaInternacional> <!--Optional:--> <xml> <remessa> <idioma>PT</idioma> <encomendas> <encomenda> <cartaoDePostagem>0061962740</cartaoDePostagem> <codigoControleCliente>100052202</codigoControleCliente> <nomeRemetente>magento.COM</nomeRemetente> <enderecoRemetente>Street Test</enderecoRemetente> <numeroEnderecoRemetente>2017</numeroEnderecoRemetente> <complementoEnderecoRemetente></complementoEnderecoRemetente> <codigoPostalRemetente>83642</codigoPostalRemetente> <cidadeRemetente>MERIDIAN</cidadeRemetente> <estadoRemetente>ID</estadoRemetente> <paisRemetente>US</paisRemetente> <emailRemetente>sales@bodybuilding.com</emailRemetente> <telefoneRemetente></telefoneRemetente> <siteRemetente>www.bodybuilding.com</siteRemetente> <nomeDestinatario>Junior Maia</nomeDestinatario> <tipoDocumentoDestinatario>1</tipoDocumentoDestinatario> <numeroDocumentoDestinatario>16549651468</numeroDocumentoDestinatario> <enderecoDestinatario>Street Test</enderecoDestinatario> <numeroEnderecoDestinatario>S/N</numeroEnderecoDestinatario> <complementoEnderecoDestinatario>Test</complementoEnderecoDestinatario> <codigoPostalDestinatario>70680506</codigoPostalDestinatario> <caixaPostalDestinatario></caixaPostalDestinatario> <cidadeDestinatario>Curitiba</cidadeDestinatario> <ufDestinatario>PR</ufDestinatario> <paisDestinatario>BR</paisDestinatario> <emailDestinatario>comoquepode@gmail.com</emailDestinatario> <telefoneDestinatario></telefoneDestinatario> <pesoObjeto>150</pesoObjeto> <comprimentoObjeto>16</comprimentoObjeto> <larguraObjeto>11</larguraObjeto> <alturaObjeto>2</alturaObjeto> <modalidadeDistribuicaoObjeto>33375</modalidadeDistribuicaoObjeto> <modalidadePagamentoImpostosObjeto>1</modalidadePagamentoImpostosObjeto> <codigoMoeda>USD</codigoMoeda> <valorFreteObjeto>50.00</valorFreteObjeto> <valorSeguroObjeto>0.00</valorSeguroObjeto> <modoDevolucaoObjeto>1</modoDevolucaoObjeto> <seguroDevolucaoObjeto>N</seguroDevolucaoObjeto> <itensEncomenda> <itemEncomenda> <codigoSHItem>100190</codigoSHItem> <codigoSKUItem>TYH820040</codigoSKUItem> <descricaoItem>BPI SPORTS BLOX - 110 SERVINGS - BLUEBERRY</descricaoItem> <quantidadeItem>1</quantidadeItem> <valorUnitario>100.00</valorUnitario> <pesoUnitario></pesoUnitario> </itemEncomenda> <itemEncomenda> <codigoSHItem>100191</codigoSHItem> <codigoSKUItem>TYH820041</codigoSKUItem> <descricaoItem>BPI SPORTS BLOX - 110 SERVINGS - WHITE</descricaoItem> <quantidadeItem>1</quantidadeItem> <valorUnitario>100.00</valorUnitario> <pesoUnitario></pesoUnitario> </itemEncomenda> <itemEncomenda> <codigoSHItem>100192</codigoSHItem> <codigoSKUItem>TYH820042</codigoSKUItem> <descricaoItem>BPI SPORTS BLOX - 110 SERVINGS - RED</descricaoItem> <quantidadeItem>1</quantidadeItem> <valorUnitario>100.00</valorUnitario> <pesoUnitario></pesoUnitario> </itemEncomenda> </itensEncomenda> </encomenda> </encomendas> </remessa>]]> </xml> </ser:solicitarCodigoEtiquetaInternacional> </soapenv:Body> Observe que a tag <itemEncomenda> se repete dependendo de quantos produtos o pedido possui, e é exatamente isso que não consigo alimentar no php. Estou usando o StdClass para montar um array com as posições solicitadas no exemplo e montar o xml com o SoapVar, está funcionando para todas as tags, mas para itemEncomendanão! Por exemplo, eu tenho 4 itens na ordem, apenas o último está escrito na tag <itemEncomenda>, os outros não aparecem. Imagino que isso aconteça porque um índice itemEncomenda é criado na matriz e ele sobrescreve as posições antigas. Eu realmente não sei como montar uma matriz repetindo essa tag. Aqui meu código para montar o xml com StdClasse montar o xml: $var = new StdClass; $var->xml = new stdClass; $var->xml->remessa = new stdClass; $var->xml->remessa->idioma = $this->idioma; $var->xml->remessa->encomendas = new stdClass; $var->xml->remessa->encomendas->encomenda = new stdClass; //remetende $var->xml->remessa->encomendas->encomenda->cartaoDePostagem = $this->cartao_postagem; $var->xml->remessa->encomendas->encomenda->codigoControleCliente = ''; $var->xml->remessa->encomendas->encomenda->nomeRemetente = $this->remetente_nome; $var->xml->remessa->encomendas->encomenda->enderecoRemetente = $this->remetente_rua; $var->xml->remessa->encomendas->encomenda->numeroEnderecoRemetente = $this->remetente_numero; $var->xml->remessa->encomendas->encomenda->complementoEnderecoRemetente = $this->remetente_complemento; $var->xml->remessa->encomendas->encomenda->codigoPostalRemetente = $this->remetente_cep; $var->xml->remessa->encomendas->encomenda->cidadeRemetente = $this->remetente_cidade; $var->xml->remessa->encomendas->encomenda->estadoRemetente = $this->remetente_estado; $var->xml->remessa->encomendas->encomenda->paisRemetente = $this->remetente_pais; $var->xml->remessa->encomendas->encomenda->emailRemetente = $this->remetente_email; $var->xml->remessa->encomendas->encomenda->telefoneRemetente = $this->remetente_telefone; $var->xml->remessa->encomendas->encomenda->siteRemetente = $this->remetente_site; //destinatário customer $var->xml->remessa->encomendas->encomenda->nomeDestinatario = $customer_nome; $var->xml->remessa->encomendas->encomenda->tipoDocumentoDestinatario = '1'; //1-cpf 2-cnpj 3-passport 4-not informed $var->xml->remessa->encomendas->encomenda->numeroDocumentoDestinatario = $customer_taxvat; $var->xml->remessa->encomendas->encomenda->enderecoDestinatario = $customer_rua; $var->xml->remessa->encomendas->encomenda->numeroEnderecoDestinatario = $customer_rua_numero; $var->xml->remessa->encomendas->encomenda->complementoEnderecoDestinatario = $customer_compemento; $var->xml->remessa->encomendas->encomenda->codigoPostalDestinatario = $customer_cep; $var->xml->remessa->encomendas->encomenda->caixaPostalDestinatario = ''; $var->xml->remessa->encomendas->encomenda->cidadeDestinatario = $customer_cidade; $var->xml->remessa->encomendas->encomenda->ufDestinatario = $customer_uf; $var->xml->remessa->encomendas->encomenda->paisDestinatario = $customer_pais; $var->xml->remessa->encomendas->encomenda->emailDestinatario = $customer_email; $var->xml->remessa->encomendas->encomenda->telefoneDestinatario = $customer_telefone; //objeto $var->xml->remessa->encomendas->encomenda->pesoObjeto = ''; $var->xml->remessa->encomendas->encomenda->comprimentoObjeto = ''; $var->xml->remessa->encomendas->encomenda->larguraObjeto = ''; $var->xml->remessa->encomendas->encomenda->alturaObjeto = ''; $var->xml->remessa->encomendas->encomenda->modalidadeDistribuicaoObjeto = $this->modalidade_distribuicao_objeto; $var->xml->remessa->encomendas->encomenda->modalidadePagamentoImpostosObjeto = $this->modalidade_pagamento_imposto; $var->xml->remessa->encomendas->encomenda->codigoMoeda = $this->moeda; $var->xml->remessa->encomendas->encomenda->valorFreteObjeto = ''; $var->xml->remessa->encomendas->encomenda->valorSeguroObjeto = ''; $var->xml->remessa->encomendas->encomenda->modoDevolucaoObjeto = $this->modo_devolocao; $var->xml->remessa->encomendas->encomenda->seguroDevolucaoObjeto = $this->seguro_devolucao ; //itens $var->xml->remessa->encomendas->encomenda->itensEncomenda = new stdClass; foreach ($invoice->getAllItems() as $item){ if ($item->getOrderItem()->getParentItem()) { continue; } $item_name = $item->getName(); $item_sku = $item->getSku(); $item_id = $item->getProductId(); $item_qty = $item->getQty(); $item_price = $item->getPrice(); $_product = Mage::getModel('catalog/product')->load($item_id); $item_peso = $_product->getWeight(); $var->xml->remessa->encomendas->encomenda->itensEncomenda->itemEncomenda = new stdClass; $var->xml->remessa->encomendas->encomenda->itensEncomenda->itemEncomenda->codigoSHItem = ''; $var->xml->remessa->encomendas->encomenda->itensEncomenda->itemEncomenda->codigoSKUItem = $item_sku; $var->xml->remessa->encomendas->encomenda->itensEncomenda->itemEncomenda->descricaoItem = $item_name; $var->xml->remessa->encomendas->encomenda->itensEncomenda->itemEncomenda->quantidadeItem = $item_qty; $var->xml->remessa->encomendas->encomenda->itensEncomenda->itemEncomenda->valorUnitario = $item_price; $var->xml->remessa->encomendas->encomenda->itensEncomenda->itemEncomenda->pesoUnitario = $item_peso; } print_r($var); A saída no console é um array exatamente conforme necessário, mas com apenas 1 item, e $invoice->getAllItems()há 5! Saída do array acima: 2017-12-14T18:17:04+00:00 DEBUG (7): stdClass Object ( [xml] => stdClass Object ( [remessa] => stdClass Object ( [idioma] => PT [encomendas] => stdClass Object ( [encomenda] => stdClass Object ( [cartaoDePostagem] => 0057018901 [codigoControleCliente] => [nomeRemetente] => [enderecoRemetente] => [numeroEnderecoRemetente] => [complementoEnderecoRemetente] => [codigoPostalRemetente] => [cidadeRemetente] => [estadoRemetente] => [paisRemetente] => [emailRemetente] => [telefoneRemetente] => [siteRemetente] => [nomeDestinatario] => josué ribeiro de frança rocha [tipoDocumentoDestinatario] => 1 [numeroDocumentoDestinatario] => 69077886168 [enderecoDestinatario] => QNE 34 casa 16 Taguatinga Norte [numeroEnderecoDestinatario] => 16 [complementoEnderecoDestinatario] => Sandu Norte [codigoPostalDestinatario] => 72125340 [caixaPostalDestinatario] => [cidadeDestinatario] => Brasília [ufDestinatario] => DF [paisDestinatario] => BR [emailDestinatario] => josurbeiro@gmail.com [telefoneDestinatario] => (61) 98379-7370 [pesoObjeto] => [comprimentoObjeto] => [larguraObjeto] => [alturaObjeto] => [modalidadeDistribuicaoObjeto] => 33367 [modalidadePagamentoImpostosObjeto] => 1 [codigoMoeda] => BRL [valorFreteObjeto] => [valorSeguroObjeto] => [modoDevolucaoObjeto] => 1 [seguroDevolucaoObjeto] => 1 [itensEncomenda] => stdClass Object ( [itemEncomenda] => stdClass Object ( [codigoSHItem] => [codigoSKUItem] => LI-60669896245-preto [descricaoItem] => Smartwatch DZ09 Câmera 2.0 MP Bluetooth Conectividade Redes Sociais Fashion - Preto [quantidadeItem] => 2.0000 [valorUnitario] => 49.9000 [pesoUnitario] => 0.4000 ) ) ) ) ) ) ) Deveria ser assim (com 5 tags [itemEncomenda]) para montar o xml corretamente: 2017-12-14T18:17:04+00:00 DEBUG (7): stdClass Object ( [xml] => stdClass Object ( [remessa] => stdClass Object ( [idioma] => PT [encomendas] => stdClass Object ( [encomenda] => stdClass Object ( [cartaoDePostagem] => 0057018901 [codigoControleCliente] => [nomeRemetente] => [enderecoRemetente] => [numeroEnderecoRemetente] => [complementoEnderecoRemetente] => [codigoPostalRemetente] => [cidadeRemetente] => [estadoRemetente] => [paisRemetente] => [emailRemetente] => [telefoneRemetente] => [siteRemetente] => [nomeDestinatario] => josué ribeiro de frança rocha [tipoDocumentoDestinatario] => 1 [numeroDocumentoDestinatario] => 69077886168 [enderecoDestinatario] => QNE 34 casa 16 Taguatinga Norte [numeroEnderecoDestinatario] => 16 [complementoEnderecoDestinatario] => Sandu Norte [codigoPostalDestinatario] => 72125340 [caixaPostalDestinatario] => [cidadeDestinatario] => Brasília [ufDestinatario] => DF [paisDestinatario] => BR [emailDestinatario] => josurbeiro@gmail.com [telefoneDestinatario] => (61) 98379-7370 [pesoObjeto] => [comprimentoObjeto] => [larguraObjeto] => [alturaObjeto] => [modalidadeDistribuicaoObjeto] => 33367 [modalidadePagamentoImpostosObjeto] => 1 [codigoMoeda] => BRL [valorFreteObjeto] => [valorSeguroObjeto] => [modoDevolucaoObjeto] => 1 [seguroDevolucaoObjeto] => 1 [itensEncomenda] => stdClass Object ( [itemEncomenda] => stdClass Object ( [codigoSHItem] => [codigoSKUItem] => LI-60669896245-preto [descricaoItem] => Smartwatch DZ09 Câmera 2.0 MP Bluetooth Conectividade Redes Sociais Fashion - Preto [quantidadeItem] => 2.0000 [valorUnitario] => 49.9000 [pesoUnitario] => 0.4000 ) [itemEncomenda] => stdClass Object ( [codigoSHItem] => [codigoSKUItem] => LI-60669896245-branco [descricaoItem] => Smartwatch DZ09 Câmera 2.0 MP Bluetooth Conectividade Redes Sociais Fashion - Branco [quantidadeItem] => 2.0000 [valorUnitario] => 49.9000 [pesoUnitario] => 0.4000 ) [itemEncomenda] => stdClass Object ( [codigoSHItem] => [codigoSKUItem] => LI-60669896245-vermelho [descricaoItem] => Smartwatch DZ09 Câmera 2.0 MP Bluetooth Conectividade Redes Sociais Fashion - Vermelho [quantidadeItem] => 3.0000 [valorUnitario] => 49.9000 [pesoUnitario] => 0.4000 ) [itemEncomenda] => stdClass Object ( [codigoSHItem] => [codigoSKUItem] => LI-60669896245-verde [descricaoItem] => Smartwatch DZ09 Câmera 2.0 MP Bluetooth Conectividade Redes Sociais Fashion - Verde [quantidadeItem] => 1.0000 [valorUnitario] => 49.9000 [pesoUnitario] => 0.4000 ) [itemEncomenda] => stdClass Object ( [codigoSHItem] => [codigoSKUItem] => LI-60669896245-cinca [descricaoItem] => Smartwatch DZ09 Câmera 2.0 MP Bluetooth Conectividade Redes Sociais Fashion - Cinza [quantidadeItem] => 4.0000 [valorUnitario] => 49.9000 [pesoUnitario] => 0.4000 ) ) ) ) ) ) ) Talvez esse xml não deva ser montado com array, pois a tag itemEncomenda precisa aparecer várias vezes (de acordo com a quantidade produtos do foreach) no mesmo XML, isso significa (a meu ver) que teria que repetir o key do array com o mesmo nome, o que não é permitido no PHP. Eu tentei também criar um array conforme demonstrado abaixo, mas tropeço no mesmo problema, array com key com o mesmo nome: $soapArgs = array( 'xml' => array( 'remessa' => array( 'idioma' => 'PT', 'encomendas' => array( 'encomenda' => array( //remetende 'cartaoDePostagem' => $this->cartao_postagem, 'codigoControleCliente' => '', 'nomeRemetente' => $this->remetente_nome, 'enderecoRemetente' => $this->remetente_rua, 'numeroEnderecoRemetente' => $this->remetente_numero, 'complementoEnderecoRemetente' => $this->remetente_complemento, 'codigoPostalRemetente' => $this->remetente_cep, 'cidadeRemetente' => $this->remetente_cidade, 'estadoRemetente' => $this->remetente_estado, 'paisRemetente' => $this->remetente_pais, 'emailRemetente' => $this->remetente_email, 'telefoneRemetente' => $this->remetente_telefone, 'siteRemetente' => $this->remetente_site, //destinatário customer 'nomeDestinatario' => $customer_nome, 'tipoDocumentoDestinatario' => 1, //1-cpf 2-cnpj 3-passport 4-not informed 'numeroDocumentoDestinatario' => $customer_taxvat, 'enderecoDestinatario' => $customer_rua, 'numeroEnderecoDestinatario' => $customer_rua_numero, 'complementoEnderecoDestinatario' => $customer_compemento, 'codigoPostalDestinatario' => $customer_cep, 'caixaPostalDestinatario' => '', 'cidadeDestinatario' => $customer_cidade, 'ufDestinatario' => $customer_uf, 'paisDestinatario' => $customer_pais, 'emailDestinatario' => $customer_email, 'telefoneDestinatario' => $customer_telefone, //objeto 'pesoObjeto' => '', 'comprimentoObjeto' => '', 'larguraObjeto' => '', 'alturaObjeto' => '', 'modalidadeDistribuicaoObjeto' => '', 'modalidadePagamentoImpostosObjeto' => '', 'codigoMoeda' => '', 'valorFreteObjeto' => '', 'valorSeguroObjeto' => '', 'modoDevolucaoObjeto' => '', 'seguroDevolucaoObjeto' => '', //itens 'itensEncomenda' => array( 'itemEncomenda' => array( 'codigoSHItem' => '', 'codigoSKUItem' => '', 'descricaoItem' => '', 'quantidadeItem' => '', 'valorUnitario' => '', 'pesoUnitario' => '' ), //itemEncomenda 'itemEncomenda' => array( 'codigoSHItem' => '', 'codigoSKUItem' => '', 'descricaoItem' => '', 'quantidadeItem' => '', 'valorUnitario' => '', 'pesoUnitario' => '' ), //itemEncomenda 'itemEncomenda' => array( 'codigoSHItem' => '', 'codigoSKUItem' => '', 'descricaoItem' => '', 'quantidadeItem' => '', 'valorUnitario' => '', 'pesoUnitario' => '' ), //itemEncomenda ), //itensEncomenda ), //encomenda ), //encomendas ), //remessa ) //xml ); Percebe-se que dentro do array 'itensEncomenda' => array(várias key com itemEncomenda), e é aqui que eu não consigo achar uma solução. Talvez deveria montar o XML com XWMWrite() ou SimpleXML() mas aí eu me deparo com o problema de não conseguir colocar um XML feito na "mão" dentro de um SoapVar() para enviar no padrão correto que o webservice wsdl espera. Eu achei um cara que passou pelo mesmo problema que o meu, repetição de tag no xml, ele resolveu com ArrayObject(), mas eu não consegui aplicar no meu código: Problema igual resolvido Alguém pode me dar uma força?
  6. Bom dia!! Estou tentando via PHP, fazer uma requisição a um WebService SOAP, porém estou tendo os seguintes erros(todos no mesmo retorno, apenas separei para facilitar a leitura) SoapFault Object ( [message:protected] => The formatter threw an exception while trying to deserialize the message: Error in deserializing body of request message for operation 'CancelaSMP'. End element 'Body' from namespace 'http://schemas.xmlsoap.org/soap/envelope/' expected. Found element 'param1' from namespace ''. Line 2, position 151. [string:Exception:private] => [code:protected] => 0 [file:protected] => C:\wamp\www\ws\webservice\teste.php [line:protected] => 59 [trace:Exception:private] => Array [previous:Exception:private] => [faultstring] => The formatter threw an exception while trying to deserialize the message: Error in deserializing body of request message for operation 'CancelaSMP'. End element 'Body' from namespace 'http://schemas.xmlsoap.org/soap/envelope/' expected. Found element 'param1' from namespace ''. Line 2, position 151. [faultcode] => a:DeserializationFailed [detail] => stdClass Object ( [ExceptionDetail] => stdClass Object ( [HelpLink] => [InnerException] => stdClass Object ( [HelpLink] => [InnerException] => [Message] => End element 'Body' from namespace 'http://schemas.xmlsoap.org/soap/envelope/' expected. Found element 'param1' from namespace ''. Line 2, position 151. [StackTrace] => at System.Xml.XmlExceptionHelper.ThrowXmlException(XmlDictionaryReader reader, String res, String arg1, String arg2, String arg3) at System.Xml.XmlBaseReader.ReadEndElement() at System.ServiceModel.Channels.Message.ReadFromBodyContentsToEnd(XmlDictionaryReader reader, EnvelopeVersion envelopeVersion) at System.ServiceModel.Dispatcher.OperationFormatter.DeserializeBodyContents(Message message, Object[] parameters, Boolean isRequest) at System.ServiceModel.Dispatcher.OperationFormatter.DeserializeRequest(Message message, Object[] parameters) [Type] => System.Xml.XmlException ) [Message] => The formatter threw an exception while trying to deserialize the message: Error in deserializing body of request message for operation 'CancelaSMP'. End element 'Body' from namespace 'http://schemas.xmlsoap.org/soap/envelope/' expected. Found element 'param1' from namespace ''. Line 2, position 151. [StackTrace] => at System.ServiceModel.Dispatcher.OperationFormatter.DeserializeRequest(Message message, Object[] parameters) at System.ServiceModel.Dispatcher.DispatchOperationRuntime.DeserializeInputs(MessageRpc& rpc) at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc) at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet) [Type] => System.ServiceModel.Dispatcher.NetDispatcherFaultException ) ) Segue o meu codigo PHP: <?php $wsdl = "http://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?wsdl"; $trace = true; $exceptions = false; $token = 999999999; $xml_array['token'] = $token; $xml_array['AnoSMP'] = 2016; $xml_array['NumeroSMP'] = 0; $xml = ' <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/" xmlns:apis="http://schemas.datacontract.org/2004/07/ApisulLog.Integracao.Modelo.Chamada"> <soapenv:Body> <tem:CancelaSMP> <!--Optional:--> <tem:token>386228449</tem:token> <!--Optional:--> <tem:cancelaSMPModeloIntegracao> <!--Optional:--> <apis:AnoSMP>2016</apis:AnoSMP> <!--Optional:--> <apis:NumeroSMP>0</apis:NumeroSMP> </tem:cancelaSMPModeloIntegracao> </tem:CancelaSMP> </soapenv:Body> </soapenv:Envelope> '; print_r($xml_array); try { $client = new SoapClient($wsdl, array('trace' => $trace, 'exceptions' => $exceptions)); $response = $client->CancelaSMP($token, $xml); } catch (Exception $e) { echo "Error!"; echo $e -> getMessage (); echo 'Last response: '. $client->__getLastResponse(); } echo "<pre>"; print_r($response); echo "</pre>"; Lembrando que o conteudo de $xml foi pego diretamente do SoapUI, onde esta requisição foi feita com sucesso.
  7. patrick848

    Web Service WSDL

    Olá, Estou desenvolvendo um client para um WEB Service, porém o mesmo não envia os dados que estão no array, abaixo segue o código. $client = new SoapClient('URL DE SERVIÇO AQUI COM ?wsdl'); $function = 'EnviarLote'; $arguments = array( 'LoteExportacao' => array( 'CodigoLote' => '0', 'Tabelas' => array( 'TabelaExportacao' => array( 'Campos' => array( 'string' => 'CODIGO', 'string' => 'CODIGOVEICULO', 'string' => 'CODIGOLINHA', 'string' => 'CODIGOTABELA', 'string' => 'CODIGOJORNADA', 'string' => 'DATAEXECUCAO', 'string' => 'VIAGENS', 'string' => 'TIPOVEICULO', 'string' => 'DESCRICAO', ), 'Descricao' => 'LINHASTABELAIMP', 'Registros' => array( 'RegistroTabela' => array( 'Valores' => array( 'ValorCampo' => array( 'Sequencia' => '0', 'Valor' => '1157955' ), 'ValorCampo' => array( 'Sequencia' => '1', 'Valor' => '4810' ), 'ValorCampo' => array( 'Sequencia' => '2', 'Valor' => 'U100' ), 'ValorCampo' => array( 'Sequencia' => '3', 'Valor' => '001' ), 'ValorCampo' => array( 'Sequencia' => '4', 'Valor' => '01' ), 'ValorCampo' => array( 'Sequencia' => '5', 'Valor' => '2016-09-09' ), 'ValorCampo' => array( 'Sequencia' => '6', 'Valor' => '14' ), 'ValorCampo' => array( 'Sequencia' => '7', 'Valor' => 'ONIBUS' ), 'ValorCampo' => array( 'Sequencia' => '8', 'Valor' => 'RODOVIARIA' ) ) ) ) ) ) ) ); $options = array('location' => 'URL DE SERVIÇO AQUI'); $resultado = $client->__soapCall($function, $arguments, $options); echo 'Retorno da chamada: '; print_r($resultado); ?> Esse script só envia a função que é enviarlote e o webservice acaba por responder que o objeto do lote está vazio. O que devo fazer?
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.