Perl: upload

La chiamata usa l'API upload_single_document passando i parametri di autenticazione, facendo upload di un documento, specificandone i metadati e firmando il documento con la firma digitale precaricata. In più, sono specificati i metadati per la trasmissione via email, fax e postale. Per il dettaglio dei parametri, consulta la funzione upload_single_document.

Nell'esempio che segue i valori dei campi 'INTERFACE_code', 'INTERFACE_pass', 'user@acme.it' e 'user_pass' sono solo di esempio e vanno sostituiti con quelli forniti da KPNQwest.


use v5.10;
use strict;
use warnings;
use LWP::UserAgent;
use HTTP::Request::Common;
use JSON::XS qw(decode_json);

my $SERVER_URL = 'https://docubank.kpnqwest.it/backend/v1.0/public/script/';

my $INTERFACE_CODE     = 'INTERFACE_code';
my $INTERFACE_PASSWORD = 'INTERFACE_pass';
my $USER_LOGIN         = 'user@acme.it';
my $USER_PASSWORD      = 'user_pass';
my $ORGANIZATION_CODE  = 'Customer';
my $DOCUMENT_TYPE      = 'Fatture';
my $PATH_TO_FILE       = 'path/to/my/file.pdf';

my $user_agent = LWP::UserAgent->new;

my %data = (
    'message_type'                      => 'UPLOAD_SINGLE_DOCUMENT',
    'version'                           => '1.0',
    'authentication.interface_code'     => $INTERFACE_CODE,
    'authentication.interface_password' => $INTERFACE_PASSWORD,
    'authentication.login'              => $USER_LOGIN,
    'authentication.password'           => $USER_PASSWORD,
    'organization_code'                 => $ORGANIZATION_CODE,
    'document_type'                     => $DOCUMENT_TYPE,
    'metadata.Ragione sociale'          => 'Acme Spa',
    'metadata.Numero documento'         => time(),
    'metadata.Data'                     => '2010-08-11',
    'content'                           => [$PATH_TO_FILE],
    'filename'                          => 'new_filename.pdf',
    'mimetype'                          => 'application/pdf',
    'label'                             => 'Grupo 1',
    'sendto.fax_number'                 => '0245552485552',
    'sendto.email'                      => 'contabilita@acme.it',
    'sendto.address_1'                  => 'Acme Spa',
    'sendto.address_2'                  => 'Ufficio Contabilità',
    'sendto.address_3'                  => 'Via Roma, 9',
    'sendto.address_4'                  => '20123 Milano MI',
    'sendto.address_5'                  => 'Italia',
    'sendto.zipcode'                    => '20123',
    'reference_year'                    => '2010',
    'alias'                             => 'test',
    'pin'                               => 'test',
);

my $response = $user_agent->request(
    POST $SERVER_URL,
    'Content_Type' => 'form-data',
    'Content'      => [%data] );

my $parsed_response = decode_json( $response->decoded_content );

if ( $response->is_success ) {
    print "Document ID: $parsed_response->{'document_id'}";
} else {
    given ( $parsed_response->{'status'} ) {
        when ('BAD_INTERFACE_CODE_PASSWORD') {
            # ...
        }
        when ('USER_AUTHENTICATION_FAILURE') {
            # ...
        }
        when ('INVALID_MIME_TYPE') {
            # ...
        }
        when ('DOCUMENT_ALREADY_EXISTS') {
            # ...
        }
        when ('BAD_METADATA_VALUE') {
            # ...
        }
        when ('DOCUMENT_NOT_ARCHIVED_DUE_TO_ERROR') {
            # ...
        }
        when ('BAD_ALIAS_OR_PIN') {
            # ...
        }
        when ('STRING_METADATA_TOO_LONG') {
            # ...
        }
        when ('INVALID_INTEGER_METADATA') {
            # ...
        }
        when ('INVALID_DATE_METADATA') {
            # ...
        }
        when ('BACKEND_SERVER_ERROR') {
            # ...
        }
        default {
            die 'Should not arrive here'
        }
    }
}

 

Attenzione: le informazioni riportate in questa sezione possono non essere perfettamente allineate con la versione corrente del servizio, in continua evoluzione. Per qualunque informazione specifica, vi preghiamo di contattarci.