Sample code for 30+ languages & platforms
Tcl

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