Esta versão da biblioteca foi projetada para fancourier api v2.0 (respostas baseadas em JSON). O código funciona e há exemplos para todas as solicitações da API, porém a documentação ainda não está pronta.
Todas as solicitações possuem o método getData()
que retorna a resposta não processada da API. Funções adicionais dependem do tipo de objeto de resposta para retornar dados processados.
NOTA No momento ele foi projetado para funcionar com PHP 7.0 e versões mais recentes.
No entanto, o plano é adicionar declarações de tipo e retorno de tipo para todas as funções que irão empurrar os requisitos para o PHP 8.1 no mínimo
Exigir o pacote via compositor
composer require shusaura85/fancourier-api
Se usado sem o compositor, você precisará solicitar manualmente o arquivo autoload.php
require_once ' /path/to/fancourier-api/src/autoload.php ' ;
No momento, a documentação completa e adequada ainda não está disponível. No entanto, existem exemplos para cada tipo de solicitação que você pode fazer.
Dentro deles você também encontrará comentários com lista completa de funções para cada request
, response
e object
.
Crie uma nova instância de Fancourier.php
fornecendo client_id
, username
, password
e token
.
$ clientId = ' your_client_id ' ;
$ username = ' your_username ' ;
$ password = ' your_password ' ;
$ token = ' load from cache or leave as empty string ' ;
$ fan = new Fancourier Fancourier ( $ clientId , $ username , $ password , $ token );
Ou você pode usar o método estático da instância de teste:
$ fan = Fancourier Fancourier:: testInstance ( $ token );
O token gerado tem vida útil de 24 horas e deve ser atualizado após esse período. Você pode obter o token gerado usando a função:
$force_refresh = false;
$token = $fan->getToken($force_refresh);
Se o token especificado estiver vazio ao criar a instância, ele será gerado automaticamente na primeira solicitação.
Solicitar
$ request = new Fancourier Request GetCosts ();
$ request
-> setParcels ( 1 )
-> setWeight ( 1 )
-> setCounty ( ' Arad ' )
-> setCity ( ' Aciuta ' )
-> setDeclaredValue ( 125 );
Resposta
if ( $ response -> isOk ()) {
var_dump ( $ response -> getData ()); // raw data
// or just the information you want
echo " extraKmCost: " . $ response -> getKmCost (). ' <br /> ' ;
echo " weightCost: " . $ response -> getWeightCost (). ' <br /> ' ;
echo " insuranceCost: " . $ response -> getInsuranceCost (). ' <br /> ' ;
echo " optionsCost: " . $ response -> getOptionsCost (). ' <br /> ' ;
echo " fuelCost: " . $ response -> getFuelCost (). ' <br /> ' ;
echo " costNoVAT: " . $ response -> getCost (). ' <br /> ' ;
echo " vat: " . $ response -> getCostVat (). ' <br /> ' ;
echo " total: " . $ response -> getCostTotal (). ' <br /> ' ;
} else {
var_dump ( $ response -> getErrorMessage ());
print_r ( $ response -> getAllErrors ());
}
Solicitar
$ awb = new Fancourier Objects AwbIntern ();
$ awb
-> setService ( ' Cont Colector ' )
-> setPaymentType ( Fancourier Request CreateAwb:: TYPE_SENDER )
-> setParcels ( 1 )
-> setWeight ( 1 ) // in kg
-> setReimbursement ( 199.99 ) // suma de incasat
-> setDeclaredValue ( 1000 )
-> setSizes ( 10 , 5 , 1 ) // in cm
-> setNotes ( ' testing notes ' )
-> setContents ( ' SKU-1, SKU-2 ' )
-> setRecipientName ( " John Ivy " )
-> setPhone ( ' 0723000000 ' )
-> setCounty ( ' Arad ' )
-> setCity ( ' Aciuta ' )
-> setStreet ( ' Str Lunga ' )
-> setNumber ( 1 )
-> addOption ( ' S ' )
-> addOption ( ' X ' );
$ request = new Fancourier Request CreateAwb ();
$ request -> addAwb ( $ awb );
Resposta
$ response = $ fan -> createAwb ( $ request );
if ( $ response -> isOk ()) {
var_dump ( $ response -> getData ()); // raw data
// or the AWBIntern objects updated with the response information
$ al = $ response -> getAll ();
echo " Count: " . count ( $ al ). " <br /> " ;
foreach ( $ al as $ awbr )
{
if ( $ awbr -> hasErrors ())
{
print_r ( $ awbr -> getErrors ());
}
else
{
echo " AWB: " . $ awbr -> getAwb (). " <br /> " ;
}
}
} else {
var_dump ( $ response -> getErrorMessage ());
}
Ao contrário da versão anterior, não há mais uma solicitação CreateAwbBulk. Basta criar quantos objetos AWBIntern e adicioná-los à solicitação
Solicitar
$ request = new Fancourier Request CreateAwb ();
// create the first awb
$ awb = new Fancourier Objects AwbIntern ();
$ awb
-> setService ( ' Cont Colector ' )
. . . .
-> addOption ( ' X ' );
// add it to the request
$ request -> addAwb ( $ awb );
// create another awb
$ awb = new Fancourier Objects AwbIntern ();
$ awb
-> setService ( ' Cont Colector ' )
. . . .
-> addOption ( ' X ' );
// add it to the request
$ request -> addAwb ( $ awb );
// create another awb
$ awb = new Fancourier Objects AwbIntern ();
$ awb
-> setService ( ' Cont Colector ' )
. . . .
-> addOption ( ' X ' );
// add it to the request
$ request -> addAwb ( $ awb );
Resposta
$ response = $ fan -> createAwb ( $ request );
if ( $ response -> isOk ()) {
var_dump ( $ response -> getData ()); // raw data
// or the AWBIntern objects updated with the response information
$ al = $ response -> getAll ();
echo " Count: " . count ( $ al ). " <br /> " ;
foreach ( $ al as $ awbr )
{
if ( $ awbr -> hasErrors ())
{
print_r ( $ awbr -> getErrors ());
}
else
{
echo " AWB: " . $ awbr -> getAwb (). " <br /> " ;
}
}
} else {
var_dump ( $ response -> getErrorMessage ());
}
Solicitar
$ request = new Fancourier Request TrackAwb ();
$ request
-> setAwb ( ' 2150900120086 ' );
Resposta
$ response = $ fan -> trackAwb ( $ request );
if ( $ response -> isOk ()) {
print_r ( $ response -> getData ()); // raw data
print_r ( $ response -> getAll ()); // array of AwbTracker objects
} else {
var_dump ( $ response -> getErrorMessage ());
}
Ao contrário da versão anterior, você pode usar o mesmo objeto TrackAwb() e adicionar quantos AWBs forem necessários para rastrear
Solicitar
$ request = new Fancourier Request TrackAwb ();
$ request
-> addAwb ( ' 2150900120084 ' )
-> addAwb ( ' 2150900120085 ' )
-> addAwb ( ' 2150900120086 ' );
Resposta
$ response = $ fan -> trackAwb ( $ request );
if ( $ response -> isOk ()) {
print_r ( $ response -> getData ()); // raw data
print_r ( $ response -> getAll ()); // array of AwbTracker objects
} else {
var_dump ( $ response -> getErrorMessage ());
}
Agora você pode obter facilmente informações sobre os locais FANBox e PayPoint disponíveis. FAN Courier chama lá de PUDO (Pick Up Drop Off).
Ao criar um AWB para eles, defina o endereço para o endereço do PUDO conforme recebido aqui e também chame a função setPickupLocation(PUDO_ID)
com o ID do PUDO selecionado.
Solicitar
$ request = new Fancourier Request GetPudo ();
$ request
-> setType ( Fancourier Request GetPudo:: PUDO_FANBOX );
Resposta
$ response = $ fan -> getPudo ( $ request );
if ( $ response -> isOk ()) {
print_r ( $ response -> getData ()); // raw data
print_r ( $ response -> getAll ()); // array of PUDO objects
} else {
var_dump ( $ response -> getErrorMessage ());
}
A solicitação de impressão pode imprimir um ou mais AWBs usando uma única solicitação.
Você pode especificar o tamanho do AWB usando a função ->setSize()
. As opções disponíveis são: vazio , A4 , A5 e A6 . A6 só pode ser usado com a opção ePod.
A impressão de PDF é o modo padrão de impressão.
Observe que você não pode solicitar ZPL e PDF ao mesmo tempo. Usar setPdf()
desativará automaticamente a opção ZPL, se definida.
Solicitar
$ request = new Fancourier Request PrintAwb ();
$ request
-> setPdf ( true )
-> setAwb ( ' 2150900120086 ' );
Resposta
$ response = $ fan -> printAwb ( $ request );
if ( $ response -> isOk ()) {
echo $ response -> getData ();
} else {
var_dump ( $ response -> getErrorMessage ());
print_r ( $ response -> getAllErrors ());
}
Você pode solicitar o AWB no formato ZPL (Zebra Programming Language) para uso com uma impressora de etiquetas.
Observe que você não pode solicitar ZPL e PDF ao mesmo tempo. Usar setZpl()
desativará automaticamente a opção PDF, se definida.
Solicitar
$ request = new Fancourier Request PrintAwb ();
$ request
-> setZpl ( true )
-> setAwb ( ' 2150900120086 ' );
Resposta
$ response = $ fan -> printAwb ( $ request );
if ( $ response -> isOk ()) {
echo $ response -> getData ();
} else {
var_dump ( $ response -> getErrorMessage ());
print_r ( $ response -> getAllErrors ());
}
Se você deseja o AWB em formato HTML, basta usar ->setPdf(false) para obter dados HTML em vez de PDF.
Solicitar
$ request = new Fancourier Request PrintAwb ();
$ request
-> setPdf ( false )
-> setAwb ( ' 2150900120086 ' );
Resposta
$ response = $ fan -> printAwb ( $ request );
if ( $ response -> isOk ()) {
echo $ response -> getData ();
} else {
var_dump ( $ response -> getErrorMessage ());
print_r ( $ response -> getAllErrors ());
}
Solicitar
$ request = new Fancourier Request DeleteAwb ();
$ request -> setAwb ( ' 2150900120086 ' );
Resposta
$ response = $ fan -> deleteAwb ( $ request );
if ( $ response -> isOk ()) {
var_dump ( $ response -> getData ());
} else {
var_dump ( $ response -> getErrorMessage ());
}
fancourier api é um software de código aberto licenciado sob a licença MIT.