Array
(
)

Como usar o PHP para emitir NFe no Tiny

PHP
Bico
   - 25 set 2012

É possível integrar um sistema em PHP com o Tiny para emissão de notas fiscais eletrônicas (NFe) de forma simples e rápida.
Para utilizar este serviço, basta possuir uma conta no Tiny. É possível inscrever-se gratuitamente e também existe a possibilidade de experimentar um dos planos pagos por 30 dias sem custos e sem compromisso, diretamente no site http://www.tiny.com.br
Na conta Tiny, deve-se gerar uma API key para que seja possível a integração através de webservices. Está opção está disponível em "Preferências->API para web services".
Segue, abaixo, uma rotina de exemplo para o envio de uma nota fiscal para uma conta no Tiny:
#Código
function enviarNotaFiscal($xml) {
$url = 'http://www.tiny.com.br/recepcao.nfe.php';
$data = "apiKey='955968a58683ec4b78be217e2dcdf45be7f93090'&pedidoXML='$xml'"; // Substituir pela API key da sua conta no Tiny
enviarPedidoREST($url, $data);
}
function enviarPedidoREST($url, $data, $optional_headers = null) {
$params = array('http' => array(
'method' => 'POST',
'content' => $data
));
if ($optional_headers !== null) {
$params['http']['header'] = $optional_headers;
}
$ctx = stream_context_create($params);
$fp = @fopen($url, 'rb', false, $ctx);
if (!$fp) {
throw new Exception("Problema com $url, $php_errormsg");
}
$response = @stream_get_contents($fp);
if ($response === false) {
throw new Exception("Problema obtendo retorno de $url, $php_errormsg");
}
return $response;
}

Exemplo do XML passado como parâmetro:
#Código
<pedido>
<cliente>
<nome>Tiny Software</nome>
<tipoPessoa>J</tipoPessoa>
<cpf_cnpj>00000000000000</cpf_cnpj>
<ie_rg>3067663000</ie_rg>
<endereco>Travessa Manaus</endereco>
<numero>136</numero>
<complemento>Sala 2</complemento>
<bairro>Cidade Alta</bairro>
<cep>95.700-000</cep>
<cidade>Bento Gonçalves</cidade>
<uf>RS</uf>
<fone>(54) 3055-3808</fone>
<email>teste@teste.com.br</email>
</cliente>
<transporte>
<transportadora>Transportadora XYZ</transportadora>
<cpf_cnpj>11122233345</cpf_cnpj>
<ie_rg>1122334455</ie_rg>
<endereco>Rua Silvio Orlandini, 435</endereco>
<cidade>Roca Sales</cidade>
<uf>RS</uf>
<placa>ILM-1020</placa>
<uf_veiculo>RS</uf_veiculo>
<tipo_frete>R</tipo_frete>
<qtde_volumes>10</qtde_volumes>
<especie>Volumes</especie>
<numero>425</numero>
<peso_bruto>157</peso_bruto>
<peso_liquido>142</peso_liquido>
</transporte>
<itens>
<item>
<codigo>001</codigo>
<descricao>Caneta 001</descricao>
<un>Pç</un>
<qtde>10</qtde>
<vlr_unit>1.68</vlr_unit>
<tipo>P</tipo>
<peso_bruto>0.2</peso_bruto>
<peso_liq>0.18</peso_liq>
<class_fiscal>1000.00.10</class_fiscal>
<origem>0</origem>
</item>
<item>
<codigo>002</codigo>
<descricao>Caderno 002</descricao>
<un>Un</un>
<qtde>3</qtde>
<vlr_unit>3.75</vlr_unit>
<tipo>P</tipo>
<peso_bruto>0.75</peso_bruto>
<peso_liq>0.7</peso_liq>
<class_fiscal>1000.00.10</class_fiscal>
<origem>0</origem>
</item>
<item>
<codigo>003</codigo>
<descricao>Teclado 003</descricao>
<un>Cx</un>
<qtde>7</qtde>
<vlr_unit>18.65</vlr_unit>
<tipo>P</tipo>
<peso_bruto>0.65</peso_bruto>
<peso_liq>0.52</peso_liq>
<class_fiscal>1000.00.10</class_fiscal>
<origem>0</origem>
</item>
</itens>
<parcelas>
<parcela>
<dias>10</dias>
<data>01/09/2012</data>
<vlr>100</vlr>
<obs>Teste obs 1</obs>
</parcela>
<parcela>
<dias>15</dias>
<data>06/09/2012</data>
<vlr>50</vlr>
<obs></obs>
</parcela>
<parcela>
<dias>20</dias>
<data>11/09/2012</data>
<vlr>50</vlr>
<obs>Teste obs 3</obs>
</parcela>
</parcelas>
<numero_nf>10</numero_nf>
<nf_produtor_rural_referenciada>
<numero>001020</numero>
<serie>0</serie>
<ano_mes_emissao>1202</ano_mes_emissao>
</nf_produtor_rural_referenciada>
<vlr_frete>15</vlr_frete>
<vlr_seguro>7</vlr_seguro>
<vlr_despesas>2.5</vlr_despesas>
<vlr_desconto>10</vlr_desconto>
<obs>Observações da nota fiscal</obs>
</pedido>

O sistema também disponibiliza outros webservices para usuários mais avançados.
Em caso de dúvidas, a equipe de suporte do Tiny responde através do e-mail suporte@tiny.com.br