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