1
I have the following JSON:
{
"status": true,
"msg": "",
"frete": [
{
"Transportadora": "Correios",
"Tempo": "16",
"Msg": "",
"Codigo": "04510",
"Servico": "PAC",
"Valor": "131.30"
},
{
"Transportadora": "Correios",
"Tempo": "10",
"Msg": "",
"Codigo": "04014",
"Servico": "Sedex",
"Valor": "239.80"
}
],
"embalagem": "60x32x28,7000"
}
How do I mount this json in PHP?
I have the following code:
function calculaFrete($cod_servico = null, $cep_origem, $cep_destino, $peso, $altura = '2', $largura = '11', $comprimento = '16', $valor_declarado = '0.50') {
$parametros = array();
$parametros['nCdEmpresa'] = '';
$parametros['sDsSenha'] = '';
$parametros['sCepOrigem'] = $cep_origem;
$parametros['sCepDestino'] = $cep_destino;
$parametros['nVlPeso'] = $peso;
$parametros['nCdFormato'] = '1';
$parametros['nVlComprimento'] = $comprimento;
$parametros['nVlAltura'] = $altura;
$parametros['nVlLargura'] = $largura;
$parametros['nVlDiametro'] = '0';
$parametros['sCdMaoPropria'] = 's';
$parametros['nVlValorDeclarado'] = $valor_declarado;
$parametros['sCdAvisoRecebimento'] = 'n';
$parametros['StrRetorno'] = 'xml';
$parametros['nCdServico'] = '04014,04510';
$parametros = http_build_query($parametros);
$url = 'http://ws.correios.com.br/calculador/CalcPrecoPrazo.aspx';
$curl = curl_init($url . '?' . $parametros);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$dados = curl_exec($curl);
$dados = simplexml_load_string($dados);
$json = array();
$json['status'] = true;
$json['msg'] = '';
foreach ($dados->cServico as $linhas) {
if ($linhas->Erro == 0) {
if ($linhas->Codigo == '04510'):
$servico = 'PAC';
elseif ($linhas->Codigo == '04014'):
$servico = 'SEDEX';
endif;
$json['frete']['Transportadora'] = 'Correios';
$json['frete']['Tempo'] = $linhas->PrazoEntrega;
$json['frete']['Msg'] = '';
$json['frete']['Codigo'] = $linhas->Codigo;
$json['frete']['Servico'] = $servico;
$json['frete']['Valor'] = $linhas->Valor;
} else {
echo $linhas->MsgErro;
}
}
$json['embalagem'] = "60x32x28,7000";
echo json_encode($json);
}
calculaFrete(null, '40760170', '40760210', 7.000, 28, 32, 60, 35);
This PHP returns me this, totally different:
{"status":true,"msg":"","frete":{"Transportadora":"Correios","Tempo":{"0":"10"},"Msg":"","Codigo":{"0":"04510"},"Servico":"PAC","Valor":{"0":"35,85"}},"embalagem":"60x32x28,7000"}
Both json are valid, but RFC different. What’s the problem?
– Mauro Alexandre
for example: did not give the loop, Pac and sedex and in the time code parameters, appears 0, and can not stay like this
– Alisson Maciel