Blog de développement

Facturation Papier avec MySendingBox

Dernière Modification le :
2024-01-16

MySendingBox a plusieurs caratéristiques qui le rendrent attrayant pour la PME: la facturation est granulaire: on ne paie que ce que l'on consomme, sans frais d'abonnement, etc. Un autre avantage appréciable: un service client et technique qui répond! Donc, une fois qu'on a réglé son backOffice, ca baigne!

DHL (Deutche Post) semble proposer un service avec une API et une documentation en Anglais, mais je n'ai pas trouvé les prix. Lire →

LaPoste propose un service Portail, mais pas d'API. Sa filiale DocuPost/Maileva propose une API, mais il y a un abonnement annuel, au minimum 100 Eu./an (2023). Il faut contacter un conseiller et bla et bla, j'ai laissé tomber... Lire →

Petite comparaison tarifaire, sur la base d'une facture N&B d'une page, en Ecopli:
- DHL: Le similateur de prix ne semble concerner que des envois en (très grand) nombre. J'ai posé la question à mailing-support@deutschepost.de : on me dit que l'offre est réservée à l'Allemagne...
- maileva : impression 0,52 : affranchissement 0,95 total : 1,47 € / courrier (avec abonnement de 100 Eu./an) Tarif →
- MySendingBox: total : 1,064 € / courrier (et pas d'abonnement) Tarif →

Programmer l'API MySendingBox en Ligne de Commande

L'API de MySendingBox est assortie de bibliothèques en Perl, Javasript, Python, ruby, PHP et SHELL! Pour moi qui programme en VBS, le plus accessible est la programmation SHELL.

L'existence et la publicité faite autour des bibliothèques masque un peu l'existence de cette solution clé en main, multiplate-forme, facile à utiliser: la ligne de Commande (SHELL)

Des exemples sont fournis, on les trouve ici:
- Autentification : Lire le code →
- Envoi d'une lettre Lire le code →

Ma Première requête API MySendingBox

Je suis parti de l'exemple fourni... Il faut crér un compte, puis, depuis son compte, il faut accéder aux clés API Lien → . Le site propose 2 clés: une pour le test, l'autre pour la production. On commence avec le test. L'autentification est simple: pas besoin de mot da passe ni de double identification (token): c'est donc immédiat à programmer.

					    ' //Voici l'exemple (dont je me suis inspiré et que j'ai du adapter) 
' //Example Request with a Local File
curl -X POST https://api.mysendingbox.fr/letters \
  -u "test_12345678901234567890:" \
  -F to.name=MySendingBox \
  -F 'to.address_line1=30 rue de la république' \
  -F to.address_postalcode=75015 \
  -F to.address_city=Paris \
  -F to.address_country=France \
  -F color=color \
  -F postage_type=prioritaire \
  -F 'source_file=@path/to/your/local/file.pdf' \
  -F source_file_type=file
				

J'ai du modifier l'exemple donné, car l'utilisation du flag -F dans CURL, tel que donné dans l'exemple, m'a généré des erreurs. Je remplace -F par -d et ça marche illico. Je n'ai pas reussi à faire l'upload direct!

					    	
' // definition et personalisation des chemins	
Set oShell = CreateObject("WScript.Shell")
sDossierRoot = "C:\Documents\MySendingBox\" 
sOutputFileName = "Output_MysendingBox.txt"
sOutputFilePath = sDossierRoot & sOutputFileName
sPDFFileName = "Facture_ESSAI.pdf"
' // la formule remote marche bien! Il faut penser à mettre le PDF sur notre serveur de commerce électronique
sRemotePDFFilePath = "http://www.granuloshop.com/" & sPDFFileName
'sPDFFilePath = sDossierRoot  & sPDFFileName 
sLive = "live_aaaaaaa-33d8-48b3-b67f-yyyyyyy"
sTest = "test_bbbbbbb-27af-478c-a54f-xxxxxxx"
' // Au choix... Test pour commencer...
sFromAccount = sLive
sFromAccount = sTest
	
sCommand = """curl.exe"" -X POST "
sCommand = sCommand & " -o """ & sOutputFilePath & """ " 
sCommand = sCommand & " --url ""https://api.mysendingbox.fr/letters"" "
sCommand = sCommand & " -u """ & sFromAccount & ":"" "
sCommand = sCommand & "  -d ""to.name=Moi Même"" "
sCommand = sCommand & "  -d ""to.address_line1=64 rue de la république"" "
sCommand = sCommand & "  -d ""to.address_postalcode=75005"" " 
sCommand = sCommand & "  -d ""to.address_city=Paris"" "
sCommand = sCommand & "  -d ""to.address_country=France"" " 
' // on choisit en couleur et Noir & Blanc
'sCommand = sCommand & "  -d ""color=color"" "
sCommand = sCommand & "  -d ""color=bw"" "
sCommand = sCommand & "  -d ""both_sides=false"" "
sCommand = sCommand & "  -d ""address_placement=insert_blank_page"" "
sCommand = sCommand & "  -d ""postage_type=prioritaire"" "
' // je n'ai pas réussi à envoyer mon PDF sur le serveur MySendingBox...
 'sCommand = sCommand & "  -d ""source_file=" & sPDFFilePath & """ " '@path/to/your/local/file.pdf' "
 'sCommand = sCommand & "  -d source_file_type=file "
' // alors je le place sur mon serveur et spécifie "remote" : ca marche
sCommand = sCommand & "  -d ""source_file=" & sRemotePDFFilePath & """ "
sCommand = sCommand & "  -d ""source_file_type=remote"" "
' // on lance la ligne de commande
oShell.Run Command, 0, True

				

Zone d'ecrasement

Quand le document imprimé porte l'adresse, la zone correspondante est masquée de blanc et le prestataire ajoute l'adresse: c'est la zone d'écrasement. Quand je prépare une facture 'papier', j'enregistre une version sans l'adresse, qui sera celle soumise à MySendingBox. Je vérifie bien que ma facture n'a rien dans la zone d'écrasement telle que définie par MySendingBox. Lire →

On y lit que toutes les pages Recto ont un ecrasement pour Datamatrix sans que cette zone soit définie. En fait, l'observation de la page 'file_to_send.pdf', obtenue par la simulation test, ne semble pas avoir de zeone d'écrasement au delà de la toute première page.

Cela nous donne l'occasion de voir qu'un professionnel du routage utilise la police Lucida Console, ce qui apporte un éclairage sur la question du choix des polices. Lire →