Эта версия библиотеки предназначена для fancourier api v2.0 (ответы на основе JSON). Код работает и есть примеры для всех запросов API, однако документация еще не готова.
Все запросы имеют метод getData()
, который возвращает необработанный ответ API. Дополнительные функции зависят от типа объекта ответа для возврата обработанных данных.
ПРИМЕЧАНИЕ. На данный момент он предназначен для работы с PHP 7.0 и новее.
Однако планируется добавить объявления типов и возвращаемых типов для всех функций, которые будут как минимум соответствовать требованиям PHP 8.1.
Требовать пакет через композитор
composer require shusaura85/fancourier-api
При использовании без композитора вам потребуется вручную запросить файл autoload.php
require_once ' /path/to/fancourier-api/src/autoload.php ' ;
На данный момент полная и надлежащая документация еще не доступна. Однако есть примеры для каждого типа запроса, который вы можете сделать.
Внутри них вы также найдете комментарии с полным списком функций для каждого request
, response
и object
.
Создайте новый экземпляр Fancourier.php
указав client_id
, username
, password
и 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 );
Или вы можете использовать статический метод тестового экземпляра:
$ fan = Fancourier Fancourier:: testInstance ( $ token );
Сгенерированный токен имеет срок действия 24 часа и должен быть обновлен по истечении этого периода. Получить сгенерированный токен можно с помощью функции:
$force_refresh = false;
$token = $fan->getToken($force_refresh);
Если при создании экземпляра указанный токен пуст, он будет сгенерирован автоматически при первом запросе.
Запрос
$ request = new Fancourier Request GetCosts ();
$ request
-> setParcels ( 1 )
-> setWeight ( 1 )
-> setCounty ( ' Arad ' )
-> setCity ( ' Aciuta ' )
-> setDeclaredValue ( 125 );
Ответ
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 ());
}
Запрос
$ 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 );
Ответ
$ 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 ());
}
В отличие от предыдущей версии, здесь больше нет запроса CreateAwbBulk. Просто создайте как можно больше объектов AWBTern и добавьте их в запрос.
Запрос
$ 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 );
Ответ
$ 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 ());
}
Запрос
$ request = new Fancourier Request TrackAwb ();
$ request
-> setAwb ( ' 2150900120086 ' );
Ответ
$ 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 ());
}
В отличие от предыдущей версии, вы можете использовать тот же объект TrackAwb() и добавлять столько AWB, сколько вам нужно для отслеживания.
Запрос
$ request = new Fancourier Request TrackAwb ();
$ request
-> addAwb ( ' 2150900120084 ' )
-> addAwb ( ' 2150900120085 ' )
-> addAwb ( ' 2150900120086 ' );
Ответ
$ 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 ());
}
Теперь вы можете легко получить информацию о доступных местах FANBox и PayPoint. FAN Courier вызывает туда PUDO (Pick Up Drop Off).
При создании для них AWB установите адрес PUDO, полученный здесь, а также вызовите функцию setPickupLocation(PUDO_ID)
с идентификатором выбранного PUDO.
Запрос
$ request = new Fancourier Request GetPudo ();
$ request
-> setType ( Fancourier Request GetPudo:: PUDO_FANBOX );
Ответ
$ 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 ());
}
Запрос на печать может распечатать один или несколько AWB, используя один запрос.
Вы можете указать размер AWB, используя функцию ->setSize()
. Доступные варианты: пустой , A4 , A5 и A6 . A6 можно использовать только с опцией ePod.
Печать PDF является режимом печати по умолчанию.
Обратите внимание, что вы не можете запросить ZPL и PDF одновременно. Использование setPdf()
автоматически отключит опцию ZPL, если она установлена.
Запрос
$ request = new Fancourier Request PrintAwb ();
$ request
-> setPdf ( true )
-> setAwb ( ' 2150900120086 ' );
Ответ
$ response = $ fan -> printAwb ( $ request );
if ( $ response -> isOk ()) {
echo $ response -> getData ();
} else {
var_dump ( $ response -> getErrorMessage ());
print_r ( $ response -> getAllErrors ());
}
Вы можете запросить AWB в формате ZPL (язык программирования Zebra) для использования с принтером этикеток.
Обратите внимание, что вы не можете запросить ZPL и PDF одновременно. Использование setZpl()
автоматически отключит опцию PDF, если она установлена.
Запрос
$ request = new Fancourier Request PrintAwb ();
$ request
-> setZpl ( true )
-> setAwb ( ' 2150900120086 ' );
Ответ
$ response = $ fan -> printAwb ( $ request );
if ( $ response -> isOk ()) {
echo $ response -> getData ();
} else {
var_dump ( $ response -> getErrorMessage ());
print_r ( $ response -> getAllErrors ());
}
Если вам нужен AWB в формате HTML, просто используйте ->setPdf(false), чтобы получить данные HTML вместо PDF.
Запрос
$ request = new Fancourier Request PrintAwb ();
$ request
-> setPdf ( false )
-> setAwb ( ' 2150900120086 ' );
Ответ
$ response = $ fan -> printAwb ( $ request );
if ( $ response -> isOk ()) {
echo $ response -> getData ();
} else {
var_dump ( $ response -> getErrorMessage ());
print_r ( $ response -> getAllErrors ());
}
Запрос
$ request = new Fancourier Request DeleteAwb ();
$ request -> setAwb ( ' 2150900120086 ' );
Ответ
$ response = $ fan -> deleteAwb ( $ request );
if ( $ response -> isOk ()) {
var_dump ( $ response -> getData ());
} else {
var_dump ( $ response -> getErrorMessage ());
}
fancourier api — это программное обеспечение с открытым исходным кодом, лицензированное по лицензии MIT.