Sample code for 30+ languages & platforms
Tcl Requires Chilkat v11.0.0+

Aruba Fatturazione Elettronica Get Zip by Filename

See more Aruba Fatturazione Examples

Returns an invoice with all of its notifications in Zip format (e.g. IT01879020517_abcde.xml.p7m).

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

#  This example assumes the Chilkat API to have been previously unlocked.
#  See Global Unlock Sample for sample code.

set http [new_CkHttp]

#  Implements the following CURL command:

#  curl -X GET https://ws.fatturazioneelettronica.aruba.it/services/invoice/in/getZipByFilename?filename=IT01879020517_jtlk1.xml.p7m \
#    -H "Accept: application/json" \
#    -H "Authorization: Bearer NLOGDVXLVaF3tzmnVPkTwpkuh7dG0i09uSCcog3u+rE="

#  Use the following online tool to generate HTTP code from a CURL command
#  Convert a cURL Command to HTTP Source Code

#  Adds the "Authorization: Bearer NLOGDVXLVaF3tzmnVPkTwpkuh7dG0i09uSCcog3u+rE=" header.
CkHttp_put_AuthToken $http "NLOGDVXLVaF3tzmnVPkTwpkuh7dG0i09uSCcog3u+rE="
CkHttp_SetRequestHeader $http "Accept" "application/json"

set bdZip [new_CkBinData]

set success [CkHttp_QuickGetBd $http "https://ws.fatturazioneelettronica.aruba.it/services/invoice/in/getZipByFilename?filename=IT01879020517_jtlk1.xml.p7m" $bdZip]
if {$success == 0} then {
    puts [CkHttp_lastErrorText $http]
    delete_CkHttp $http
    delete_CkBinData $bdZip
    exit
}

set respStatusCode [CkHttp_get_LastStatus $http]
puts "response status code = $respStatusCode"

if {$respStatusCode != 200} then {
    #  If it failed, the response body will not contain the .zip file data.
    #  It will likely contain an error message.
    puts [CkBinData_getString $bdZip utf-8]
    puts "Failed."
    delete_CkHttp $http
    delete_CkBinData $bdZip
    exit
}

#  Open the zip and extract the .p7m
set zip [new_CkZip]

set success [CkZip_OpenBd $zip $bdZip]
if {$success == 0} then {
    puts [CkZip_lastErrorText $zip]
    delete_CkHttp $http
    delete_CkBinData $bdZip
    delete_CkZip $zip
    exit
}

#  If desired, we can unzip to the filesystem..
set numUnzipped [CkZip_Unzip $zip "c:/mySignedInvoices"]
if {$numUnzipped < 0} then {
    puts [CkZip_lastErrorText $zip]
    delete_CkHttp $http
    delete_CkBinData $bdZip
    delete_CkZip $zip
    exit
}

#  Alternatively, we can unzip into memory..
set entry [new_CkZipEntry]

set success [CkZip_EntryAt $zip 0 $entry]
if {$success == 0} then {
    puts [CkZip_lastErrorText $zip]
    delete_CkHttp $http
    delete_CkBinData $bdZip
    delete_CkZip $zip
    delete_CkZipEntry $entry
    exit
}

set bdP7m [new_CkBinData]

set success [CkZipEntry_UnzipToBd $entry $bdP7m]
if {$success == 0} then {
    puts [CkZipEntry_lastErrorText $entry]
    delete_CkHttp $http
    delete_CkBinData $bdZip
    delete_CkZip $zip
    delete_CkZipEntry $entry
    delete_CkBinData $bdP7m
    exit
}

#  Verify the signature and extract the XML from the p7m
#  If the signature verification is successful, the contents of bdP7m are unwrapped and what
#  remains is the original signed document..
set crypt [new_CkCrypt2]

set success [CkCrypt2_OpaqueVerifyBd $crypt $bdP7m]
if {$success == 0} then {
    puts [CkCrypt2_lastErrorText $crypt]
    delete_CkHttp $http
    delete_CkBinData $bdZip
    delete_CkZip $zip
    delete_CkZipEntry $entry
    delete_CkBinData $bdP7m
    delete_CkCrypt2 $crypt
    exit
}

puts "The signature was verified."

#  The bdp7m now contains the XML that was originally signed.
puts "Original XML:"
puts [CkBinData_getString $bdP7m utf-8]

delete_CkHttp $http
delete_CkBinData $bdZip
delete_CkZip $zip
delete_CkZipEntry $entry
delete_CkBinData $bdP7m
delete_CkCrypt2 $crypt