/** * @param \PhpSigep\Model\AbstractModel|\PhpSigep\Model\SolicitaEtiquetas $params * * @throws \PhpSigep\Services\Exception * @throws InvalidArgument * @return BuscaClienteResult */ public function execute(AbstractModel $params) { if (!$params instanceof \PhpSigep\Model\AccessData) { throw new InvalidArgument(); } $soapArgs = array('idContrato' => $params->getNumeroContrato(), 'idCartaoPostagem' => $params->getCartaoPostagem(), 'usuario' => $params->getUsuario(), 'senha' => $params->getSenha()); $result = new Result(); try { if (!$params->getUsuario() || !$params->getSenha() || !$params->getNumeroContrato() || !$params->getCartaoPostagem()) { throw new Exception('Para usar este serviço você precisa setar o nome de usuário, a senha, o numero ' . 'do contrato e o número do cartão de postagem.'); } $r = SoapClientFactory::getSoapClient()->buscaCliente($soapArgs); if (!$r || !is_object($r) || !isset($r->return) || $r instanceof \SoapFault) { if ($r instanceof \SoapFault) { throw $r; } throw new \Exception('Erro ao consultar os dados do cliente. Retorno: "' . $r . '"'); } $result->setResult(new BuscaClienteResult((array) $r->return)); } catch (\Exception $e) { if ($e instanceof \SoapFault) { $result->setIsSoapFault(true); $result->setErrorCode($e->getCode()); $result->setErrorMsg(SoapClientFactory::convertEncoding($e->getMessage())); } else { $result->setErrorCode($e->getCode()); $result->setErrorMsg($e->getMessage()); } } return $result; }
/** * @param \PhpSigep\Model\VerificaDisponibilidadeServico $params * @return Result<\PhpSigep\Model\VerificaDisponibilidadeServicoResposta> */ public function execute(\PhpSigep\Model\VerificaDisponibilidadeServico $params) { $servicosDePostagem = $params->getServicos(); $codigoDosServicos = array_map(array($this, 'arrayMapCallback'), $servicosDePostagem); $soapArgs = array('codAdministrativo' => $params->getAccessData()->getCodAdministrativo(), 'numeroServico' => implode(',', $codigoDosServicos), 'cepOrigem' => $params->getCepOrigem(), 'cepDestino' => $params->getCepDestino(), 'usuario' => $params->getAccessData()->getUsuario(), 'senha' => $params->getAccessData()->getSenha()); $cacheKey = md5(serialize($soapArgs)); $cache = Bootstrap::getConfig()->getCacheInstance(); if ($cachedResult = $cache->getItem($cacheKey)) { return unserialize($cachedResult); } $r = SoapClientFactory::getSoapClient()->verificaDisponibilidadeServico($soapArgs); $errorCode = null; $errorMsg = null; $result = new Result(); if (!$r) { $errorCode = 0; } else { if ($r instanceof \SoapFault) { $errorCode = $r->getCode(); $errorMsg = SoapClientFactory::convertEncoding($r->getMessage()); $result->setSoapFault($r); } else { if ($r instanceof \stdClass && property_exists($r, 'return')) { $result->setResult(new VerificaDisponibilidadeServicoResposta(array('disponivel' => (bool) $r->return))); $cache->setItem($cacheKey, serialize($result)); } else { $errorCode = 0; $errorMsg = "A resposta do Correios não está no formato esperado."; } } } $result->setErrorCode($errorCode); $result->setErrorMsg($errorMsg); return $result; }
public function execute($numeroCartaoPostagem, $usuario, $senha) { $soapArgs = array('numeroCartaoPostagem' => $numeroCartaoPostagem, 'usuario' => $usuario, 'senha' => $senha); $r = SoapClientFactory::getSoapClient()->getStatusCartaoPostagem($soapArgs); $errorCode = null; $errorMsg = null; $result = new Result(); if (!$r) { $errorCode = 0; } else { if ($r instanceof \SoapFault) { $errorCode = $r->getCode(); $errorMsg = SoapClientFactory::convertEncoding($r->getMessage()); $result->setSoapFault($r); } else { if ($r instanceof \stdClass && property_exists($r, 'return')) { $status = new VerificarStatusCartaoPostagemResposta(); $status->setReturn($r->return); $result->setResult($status); } else { $errorCode = 0; $errorMsg = "A resposta do Correios não está no formato esperado."; } } } $result->setErrorCode($errorCode); $result->setErrorMsg($errorMsg); return $result; }
/** * @param \PhpSigep\Model\AbstractModel|\PhpSigep\Model\SolicitaEtiquetas $params * * @throws \PhpSigep\Services\Exception * @throws InvalidArgument * @return Result<Etiqueta[]> */ public function execute(AbstractModel $params) { if (!$params instanceof \PhpSigep\Model\SolicitaEtiquetas) { throw new InvalidArgument(); } $soapArgs = array('tipoDestinatario' => 'C', 'identificador' => $params->getAccessData()->getCnpjEmpresa(), 'idServico' => $params->getServicoDePostagem()->getIdServico(), 'qtdEtiquetas' => 1, 'usuario' => $params->getAccessData()->getUsuario(), 'senha' => $params->getAccessData()->getSenha()); $result = new Result(); try { if (!$params->getAccessData() || !$params->getAccessData()->getUsuario() || !$params->getAccessData()->getSenha()) { throw new Exception('Para usar este serviço você precisa setar o nome de usuário e senha.'); } $etiquetasReservadas = array(); for ($i = 0; $i < $params->getQtdEtiquetas(); $i++) { $r = SoapClientFactory::getSoapClient()->solicitaEtiquetas($soapArgs); if (class_exists('\\StaLib_Logger')) { \StaLib_Logger::log('Retorno SIGEP solicitar etiquetas: ' . print_r($r, true)); } if ($r && is_object($r) && isset($r->return) && !$r instanceof \SoapFault) { $r = explode(',', $r->return); // $etiquetasReservadas[] = str_replace(' ', '', $r[0]); $etiqueta = new Etiqueta(); $etiqueta->setEtiquetaSemDv($r[0]); $etiquetasReservadas[] = $etiqueta; } else { if ($r instanceof \SoapFault) { throw $r; } throw new \Exception('Não foi possível obter as etiquetas solicitadas. Retorno: "' . $r . '"'); } } $result->setResult($etiquetasReservadas); } catch (\Exception $e) { if ($e instanceof \SoapFault) { $result->setIsSoapFault(true); $result->setErrorCode($e->getCode()); $result->setErrorMsg("Resposta do Correios: " . SoapClientFactory::convertEncoding($e->getMessage())); } else { $result->setErrorCode($e->getCode()); $result->setErrorMsg($e->getMessage()); } } return $result; }
public function execute($cep) { $cep = preg_replace('/[^\\d]/', '', $cep); $soapArgs = array('cep' => $cep); $r = SoapClientFactory::getSoapClient()->consultaCep($soapArgs); $errorCode = null; $errorMsg = null; $result = new Result(); if (!$r) { $errorCode = 0; } else { if ($r instanceof \SoapFault) { $errorCode = $r->getCode(); $errorMsg = SoapClientFactory::convertEncoding($r->getMessage()); $result->setSoapFault($r); } else { if ($r instanceof \stdClass) { if (property_exists($r, 'return') && $r->return instanceof \stdClass) { $consultaCepResposta = new ConsultaCepResposta(); $consultaCepResposta->setBairro(SoapClientFactory::convertEncoding($r->return->bairro)); $consultaCepResposta->setCep($r->return->cep); $consultaCepResposta->setCidade(SoapClientFactory::convertEncoding($r->return->cidade)); $consultaCepResposta->setComplemento1(SoapClientFactory::convertEncoding($r->return->complemento)); $consultaCepResposta->setComplemento2(SoapClientFactory::convertEncoding($r->return->complemento2)); $consultaCepResposta->setEndereco(SoapClientFactory::convertEncoding($r->return->end)); $consultaCepResposta->setId($r->return->id); $consultaCepResposta->setUf($r->return->uf); $result->setResult($consultaCepResposta); } else { $errorCode = 0; $errorMsg = "Resposta em branco. Confirme se o CEP '{$cep}' realmente existe."; } } else { $errorCode = 0; $errorMsg = "A resposta do Correios não está no formato esperado."; } } } $result->setErrorCode($errorCode); $result->setErrorMsg($errorMsg); return $result; }
/** * @param PreListaDePostagem $params * * @return \PhpSigep\Services\Result<\PhpSigep\Model\FechaPlpVariosServicosRetorno> */ public function execute(\PhpSigep\Model\PreListaDePostagem $params) { $xmlDaPreLista = $this->getPlpXml($params); $listaEtiquetas = array(); foreach ($params->getEncomendas() as $objetoPostal) { $listaEtiquetas[] = $objetoPostal->getEtiqueta()->getEtiquetaSemDv(); } $xml = utf8_encode($xmlDaPreLista->flush()); // $xml = utf8_encode($xml); // $xml = iconv('UTF-8', 'ISO-8859-1', $xml); $soapArgs = array('xml' => $xml, 'idPlpCliente' => '', 'cartaoPostagem' => $params->getAccessData()->getCartaoPostagem(), 'listaEtiquetas' => $listaEtiquetas, 'usuario' => $params->getAccessData()->getUsuario(), 'senha' => $params->getAccessData()->getSenha()); $result = new Result(); try { $r = SoapClientFactory::getSoapClient()->fechaPlpVariosServicos($soapArgs); /*if (class_exists('\StaLib_Logger')) { \StaLib_Logger::log('Retorno SIGEP fecha PLP: ' . print_r($r, true)); }*/ if ($r instanceof \SoapFault) { throw $r; } if ($r && $r->return) { $result->setResult(new FechaPlpVariosServicosRetorno(array('idPlp' => $r->return))); } else { $result->setErrorCode(0); $result->setErrorMsg('A resposta do Correios não está no formato esperado. Resposta recebida: "' . $r . '"'); } } catch (\Exception $e) { if ($e instanceof \SoapFault) { $result->setIsSoapFault(true); $result->setErrorCode($e->getCode()); $result->setErrorMsg(SoapClientFactory::convertEncoding($e->getMessage())); } else { $result->setErrorCode($e->getCode()); $result->setErrorMsg($e->getMessage()); } } return $result; }
/** * @param \PhpSigep\Model\GeraDigitoVerificadorEtiquetas $params * * @return Etiqueta[] */ public function execute(\PhpSigep\Model\GeraDigitoVerificadorEtiquetas $params) { $soapArgs = array('etiquetas' => array(), 'usuario' => $params->getAccessData()->getUsuario(), 'senha' => $params->getAccessData()->getSenha()); // É necessário garantir que o array estará indexado por order natural começando do zero para setarmos os // DV retornados pelo webservice. $etiquetas = array_values($params->getEtiquetas()); /** @var $etiqueta Etiqueta */ foreach ($etiquetas as $etiqueta) { $soapArgs['etiquetas'][] = $etiqueta->getEtiquetaSemDv(); } $result = new Result(); try { $soapReturn = SoapClientFactory::getSoapClient()->geraDigitoVerificadorEtiquetas($soapArgs); if ($soapReturn && is_object($soapReturn) && $soapReturn->return) { if (!is_array($soapReturn->return)) { $soapReturn->return = (array) $soapReturn->return; } foreach ($soapReturn->return as $k => $dv) { $etiquetas[$k]->setDv((int) $dv); } $result->setResult($etiquetas); } else { $result->setErrorCode(0); $result->setErrorMsg('A resposta do Correios não está no formato esperado. Resposta recebida: "' . $soapReturn . '"'); } } catch (\Exception $e) { if ($e instanceof \SoapFault) { $result->setIsSoapFault(true); $result->setErrorCode($e->getCode()); $result->setErrorMsg(SoapClientFactory::convertEncoding($e->getMessage())); } else { $result->setErrorCode($e->getCode()); $result->setErrorMsg($e->getMessage()); } } return $result; }