Hier een perl module om girotel gegevens via het internet op te halen:

nieuwe versie

Girotel.pm

recente updates

2003-01-21 : updated Girotel module to now download the csv file, instead of parsing html. 2003-01-21 : girotel number is now 6 digits instead of 9. ( since september already )
2002-02-11 : added 'txtSysteem=GTO' to login proc.
? .... : changed command to get data into command=141
2000-04-01 : changed urlparam prefix from 'tf' to 'txt'

oude versies

Girotel.v1.pm
Girotel.v2.pm
Girotel.v3.pm
procpage.pm
prochtml.v1.pm
prochtml.pm

todo

gebruik nieuwe 'download als text of csv file' optie.

hoe te gebruiken

zet de 'Girotel.pm' perl module in je perl @INC path, of in de current directory. het 'testgirotel.pl' script heeft als output een html pagina met de het giro overzicht van de afgelopen maand. Om SSL onder perl te kunnen gebruiken moeten de volgende zaken geinstalleerd zijn:
  1. openssl-0.9.3 of latere versie
  2. perl module Crypt-SSLeay-0.18
  3. perl module Net_SSLeay.pm-1.05
  4. perl module IO-Socket-SSL-0.76
  5. perl module libwww

hoe de nieuwste module te gebruiken

#!/usr/bin/perl -w
use strict;
$|=1;
use Girotel;

my $ws= WebServer->new("https://www.p3.postbank.nl");

my $gt = Girotel->new($ws);

$gt->pblogin(@ARGV);

print $gt->download();

hoe deze (v1 .. v3 ) modules te gebruiken

transactie overzicht

#!/usr/bin/perl -w
use strict;

use Girotel;
use procpage;

my $gt = Girotel->new();

# het girotelnummer, de girotelcode en het ginnummer zijn allen 6 cijfers.

$gt->pblogin("..girotelnummer..", "..girotelcode..", "..ginnummer..");
# ... dit is voor de oude versie
#my $content = $gt->pbrequest("11", "..rekeningnummer..");

my $content= $gt->overzicht();
print "\n$content\n";

# deze functie maakt gebruik van de HTML::Tree module.
my $lines= processgtpage($content);
foreach my $line (@$lines)
{
	print join("\t", @$line)."\n";
}

# dit werkt momenteel even niet in de nieuwe versie:
#my @lines= processgtdata(7, $content);
#foreach my $line (@lines)
#{
	#print join("\t", @$line)."\n";
#}

huidige saldo

#!/usr/bin/perl -w
use strict;

require "/home/itsme/prj/girotel/Girotel.pm";
require "/home/itsme/prj/girotel/Girotel/prochtml.pm";

my $gt = Girotel->new();

$gt->pblogin("..girotelnummer..", "..girotelcode..", "..ginnummer..");
my $content = $gt->pbrequest("12", "..rekeningnummer..");

my @lines= processgtdata(4, $content);
foreach my $line (@lines)
{
	print join("\t", @$line)."\n";
}

online protocol

dit zijn de commands voor zover ik ze heb kunnen vinden. [de laatste keer dat ik dit onderzocht heb is voor maart 2000, dus het kan inmiddels veranderd zijn]
#command=0
#command=11 - rekeningoverzicht
#command=12  - saldo girorekening
#command=121  - saldo sparen
#command=122  - saldo beleggen
#command=123  - totaal saldo
#command=13 - reserveringen
#command=161 - verzamelstaat overzichten
#command=14 - overschrijving
#command=141 - overschrijving
#      ba=
#      c=$rekeningnr
#      d=NLG
#      du=
#      aw=
#      e=Alle
#      bg=0
#      w=$rekeningnr
#      ad=0|1
#      af=1|2
#      ag=Plusrekening
#      ae=
#      ah=
#      ai=
#      aj=
#      ak=
#      ao=van%20Girorekening%20naar%20Plusrekening
#      as=
#      at=
#      iv=false
#      al=25
#      am=00
#      ar=11
#      aq=12
#      ap=2000
#      av=0
#      au=
#      c=$rekeningnr
#      du=
#      aw=
#      d=NLG
#command=15 - leegboeking
#command=16 - verzamelstaat overschrijvingen
#command=17 - geauthoriseerde overschrijving:
#    POST sVerstuur=
#     c => $rekeningnr
#     d => $valuta
#     du => ""
#     aw => ""
#     e => "Alle"
#     bg => "1"
#     kl => $TANHASH
#     ov => ""
#     bx => "o"
#     kk => "0"
#     ox =>
"0|1|$rekeningnr|1|2|$rekeningnr||$bedrag|$valuta|$datum||||"
#     ov => ""
# TANHASH is calculated as follows:
#    PBGN1(ox_without_bars, $TANCODE, $girotelnummer, $serverkey)
#         'ox' without '|' chars.
#         $serverkey= 'bu' sent in most pages. (16 hex digits)
#    PBGN2() = $TANHASH (8 hex digits)

#   .. PBGN1 en PBGN2 reside in the https://www.p3.postbank.nl/PBGN.jar
file.

#command=171
#command=172
#  
#command=41 - blokkeren TAN lijst
#command=42 - wijzig GIN
#command=44 - voorkeuren
#command=46 - adresboek
#command=462
#     ba => ""
#     c => $rekeningnr
#     d => "NLG"
#     du => "20001203"    # startdate
#     aw => "20011211"    # end date
#     e => $rekeningnr
#     bg => "0~lf=4~lg=$gironummerlijst"
#   
#command=90  - logout
#command=91
#command=103