Skip to main content

Fan Courier Python API Client Library

Project description

Fan Courier Python API Client Library

A client developed as a library, easy to integrate Fan Courier in Python projects

Official documentation: https://cloud.mail.ru/public/3ki1/2X2QSMyA2
Details: https://cloud.mail.ru/public/4Gyq/5pNssPQ7W

Install:

pip install fan-courier-client

Initialization

import fan_courier_client

client = fan_courier_client.Client(client_id, username, password)

Get client list

client.list()
[
  {
    "client_id": "7024738",
    "nume": "FAN Courier Corespondenta Pipera",
    "adresa": "Bucuresti, Ridicare din sediul FAN Pipera (Sediu), , Sos Fabrica de Glucoza 11 C, 020331"
  },
  {
    "client_id": "7032158",
    "nume": "FAN COURIER - cont test",
    "adresa": "Bucuresti, Fabrica de Glucoza (sosea), 11C, FAN, 020331"
  },
  ...
]

Get addresses list

# Optional fields: 'judet', 'localitate', 'language'
client.addresses.get()
[
    OrderedDict([
        ('judet', 'Alba'),
        ('localitate', 'Abrud'),
        ('strada', ''),
        ('de_la', '1'),
        ('pana_la', 'T'),
        ('paritate', '2'),
        ('cod_postal', '515100'),
        ('tip', ''),
        ('cod_cartare', '6642'),
        ('numar_depozit', 'R3.23'),
        ('id_strada', '124795'),
        ('cod_sortare_vizual', '01-02'),
        ('litera_cartare', 'F'),
        ('agentie', 'Campeni')
    ]),
    OrderedDict([
        ('judet', 'Alba'),
        ('localitate', 'Abrud'),
        ('strada', '1 Decembrie 1918'),
        ('de_la', '1'),
        ('pana_la', 'T'),
        ('paritate', '2'),
        ('cod_postal', '515100'),
        ('tip', 'Strada'),
        ('cod_cartare', '6642'),
        ('numar_depozit', 'R3.23'),
        ('id_strada', '149847'),
        ('cod_sortare_vizual', '01-02'),
        ('litera_cartare', 'F'),
        ('agentie', 'Campeni')
    ]),
    ...
]

Get cities list

client.addresses.cities()
[
    OrderedDict([
        ('judet', 'Alba'),
        ('localitate', 'Abrud'),
        ('agentie', 'Campeni'),
        ('km', '0'),
        ('cod_rutare', '6641'),
        ('id_localitate_fan', '10001'),
        ('litera_cartare', 'F'),
        ('dep_no', 'R3.23')
    ]),
    OrderedDict([
        ('judet', 'Alba'),
        ('localitate', 'Abrud-Sat'),
        ('agentie', 'Campeni'),
        ('km', '0'),
        ('cod_rutare', '6641'),
        ('id_localitate_fan', '21913'),
        ('litera_cartare', 'F'),
        ('dep_no', 'R3.23')
    ]),
    ...
]

Get rates

request_data = {
    'serviciu': 'Standard',
    'localitate_dest': 'Vrancea',
    'judet_dest': 'Test',
    'plicuri': 1,
    'colete': 1,
    'greutate': 20,
    'lungime': 10,
    'latime': 10,
    'inaltime': 10,
    'val_decl': 10,
    'plata_ramburs': 'destinatar',
    'optiuni': 'A'
}

client.rates.get(**request_data)
81.90

Get AWB in HTML

client.awb.get(awb_id=2324000120066)
# html text response
b'\r\n<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//E... 

Create AWB

request_data = {
    'tip_serviciu': 'Standard',
    'banca': 'Test',
    'iban': 'XXXXXXX',
    'nr_plicuri': 1,
    'nr_colete': 0,
    'greutate': 1,
    'plata_expeditie': 'ramburs',
    'rambursbani': 100,
    'plata_ramburs_la': 'destinatar',
    'valoare_declarata': 400,
    'persoana_contact_expeditor': 'Test User',
    'observatii': 'Lorem ipsum',
    'continut': 'Fragil',
    'nume_destinatar': 'Test',
    'persoana_contact': 'Test',
    'telefon': '123456789',
    'fax': '123456789',
    'email': 'example@example.com',
    'judet': 'Galati',
    'localitatea': 'Tecuci',
    'strada': 'Lorem',
    'nr': '2',
    'cod_postal': '123456',
    'bloc': '',
    'scara': '',
    'etaj': '',
    'apartament': '',
    'inaltime_pachet': '',
    'latime_pachet': '',
    'lungime_pachet': '',
    'restituire': '',
    'centru_cost': '',
    'optiuni': '',
    'packing': '',
    'date_personale': ''
}
client.awb.create(**request_data)
[
    OrderedDict([
        ('number', '1'),
        ('success', '1'),
        ('awb_id', '2324000120066'),
        ('tariff', '')
    ])
]

Export AWB in PDF

client.awb.export(awb_id=2324000120066)
b'%PDF-1.4\n1 0 obj\n<<\n/Title (\xfe\xff)\n/Creator (\xfe\xff)\n/Producer...

Delete AWB

client.awb.delete(awb_id=2324000120066)
'2324000120066 DELETED'

Track AWB

client.awb.tracking(awb_id=2324000120066)
Code Result
2 Livrat
3 Avizat
6 Refuz primire
7 Refuz plata transport
8 Livrare din sediul FAN Courier
9 Redirectionat
12 Contactat, livrare ulterioara
14 Restrictii acces la adresa
15 Refuz predare ramburs
38 AWB neexpediat
42 Adresa gresita
43 Retur
47 Predat partener extern
{
  'progressdetail': None
}

Track AWB list

client.awb.tracking_list(awb_list=[2324000120066, 2322000120004])
[
    {
        'awb': None,
        'oras destinatar': '',
        'continut': '',
        'nume confirmare': '',
        'data confirmare': '',
        'ora confirmare': '',
        'awb retur': '',
        'ramburs': '',
        'data virament': '',
        '0': {
            'id': 0,
            'status': 'AWB-ul nu a fost predat catre FAN Courier',
            'data': '',
            'ora': '',
            'oras': '',
            'traseu': ''
        }
    }
]
client.awb.download(awb_id=2322000120004)  # text
client.awb.download_scan(awb_id=2322000120004)  # text
client.awb.errors()  # dict list

Get services list

client.services.get()
[
    'Standard',
    'RedCode',
    'Caiet Sarcini',
    'Express Loco 1H',
    'Express Loco 2H',
    'Express Loco 4H',
    'Express Loco 6H',
    'Cont Colector',
    'Express Loco 1H-Cont Colector',
    'Express Loco 2H-Cont Colector',
    'Express Loco 4H-Cont Colector',
    'Express Loco 6H-Cont Colector',
    'Red code-Cont Colector',
    'Export',
    'Export-Cont Colector',
    'Produse Albe',
    'Produse Albe-Cont Colector',
    'Transport Marfa',
    'Transport Marfa-Cont Colector',
    'Transport Marfa Produse Albe',
    'Transport Marfa Produse Albe-Cont Colector'
]

Get remarks list

Remarks

client.remarks.get()
[
    'Livrare urgenta',
    'Livrare Luni',
    'Livrare Luni-Apel telefonic inainte',
    'A se contacta telefonic',
    'Atentie-FRAGIL',
    'Livrare cu stampila si semnatura',
    'Livrare dupa ora 16:00',
    'Livrare in intervalul 09:00 - 17:00',
    'Livrare personala cu CNP/serie CI'
]

Get sheet by date

client.sheets.get(data='17.11.2020')
[
    OrderedDict([
        ('nr_crt', '1'),
        ('awb', '2322000120004'),
        ('client_dest', 'asdasd asdasda'),
        ('telefon_dest', '0748069725'),
        ('stradadestinatar', 'Strada Campia Libertatii, nr. 43, bl. MC3, sc. A, et. 2, ap. 13'),
        ('nrdestinatar', ''),
        ('blocdestinatar', ''),
        ('scaradestinatar', ''),
        ('etajdestinatar', ''),
        ('apdestinatar', ''),
        ('oras_dest', 'Bistrita'),
        ('orasel', 'Agrisu de Jos'),
        ('plic', '0'),
        ('colet', '1'),
        ('kg', '1.00'),
        ('continut', ''),
        ('plata_la', 'expeditor'),
        ('val_decl', ''),
        ('ramburs', '600.75'),
        ('obs', ''),
        ('persexpeditor', 'Alina Mircea'),
        ('persdest', 'asdasd asdasda'),
        ('depnr', '18-Bistrita'),
        ('kmextdest', '40'),
        ('data_awb', '17.11.2020'),
        ('ora_awb', '07:34:21'),
        ('ridicat', 'NU'),
        ('centru_cost', ''),
        ('status', 'Nepreluat'),
        ('data_confirmarii', ''),
        ('ora_confirmarii', ''),
        ('nume_confirmare', ''),
        ('client_exp', 'FAN COURIER - cont test'),
        ('restituire', ''),
        ('tip_serviciu', 'Cont Colector'),
        ('banca', 'RAIFFEISEN BANK ROMANA'),
        ('iban', 'RO53RZBR0000060009520959'),
        ('awb_retur', '')
    ]),
    OrderedDict([
        ('nr_crt', '2'),
        ('awb', '2322000120007'),
        ...
    ]),
    ...
]

Export sheet in HTML

client.sheets.export()
b'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//E...

Get transfers

client.transfers.get(data='18.11.2020')
[
    {
        'oras_destinatar': ...,
        'data_awb': ...,
        'suma_incasata': ...,
        'numar_awb': ...,
        'expeditor': ...,
        'destinatar': ...,
        'continut': ...,
        'persoanad': ...,
        'data_virament': ...,
        'persoanae': ...,
        'ramburs_la_awb': ...,
        'awb_retur': ...,
        'incasare_card': ...
    },
    ...
]

Get orders

client.orders.get(data='17.11.2020')
[
    OrderedDict([
        ('nr_crt', '1'),
        ('data_ridicare_comanda', '17.11.2020'),
        ('ora_de_la', '12:30'),
        ('ora_pana_la', '16:45'),
        ('persoana_contact', 'DORU'),
        ('telefon', '0787787639'),
        ('email', 'it@fancourier.ro'),
        ('colete', '3'),
        ('plicuri', '0'),
        ('greutate', '45.00'),
        ('inaltime', '10.00'),
        ('latime', '10.00'),
        ('lungime', '10.00'),
        ('observatii', 'RIDICARE JIULUI NR 2'),
        ('strada', ''),
        ('nr', ''),
        ('bloc', ''),
        ('scara', ''),
        ('etaj', ''),
        ('ap', ''),
        ('localitate', ''),
        ('judet', ''),
        ('numar_comanda', ''),
        ('status', 'In asteptare')
    ])
]

Create order

request_data = {
    'pers_contact': 'pers_contact',
    'tel': 'tel',
    'email': 'email@mail.com',
    'greutate': 10,
    'inaltime': 1,
    'lungime': 1,
    'latime': 1,
    'ora_ridicare': '17:00'
}
client.orders.create(**request_data)
'Inregistrarea comenzii este finalizata cu SUCCES. In intervalul specificat, FAN Courier va ridica expeditia din locatia indicata. Va multumim!'

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fan_courier_client-0.4.tar.gz (12.4 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page