Repost - FI 71 indbetalingskort fra C++ til PHP

Tags:    php

Så reposter jeg denne.

Jeg har fået en herinde til at skrive en C++ kode men da jeg ikke fatter en yard af c++ og gerne skal bruge det i php håber jeg der er en som vil skrive den om!

// FI17 beregning made by Janus S. Andersen dato : 04/03-2003
#include<dos.h>
#include<conio.h>
#include<iostream.h>

/////////////////////////////////
// Udregner tæller i FI17 //
// Input : //
// str : Betalingsident //
// Output : Tæller //
int fi(int str)
{
static int vagt=1; // Opretter var til vægtning
int Tel; // Tæller
int Sum; // Sum
Sum=((int)str*vagt); // Beregner sum. id * vægt

Tel=Sum/10+(int(Sum-(Sum/10)*10)); // Et`er + ti`er

// cout<<"\\n Vægt : "<<vagt;
// cout<<"\\n Sum : "<<((int)str*vagt);
// cout<<"\\n Tel : "<<Tel;

vagt++; // Forøger vægtnings var
if(vagt>2) // Er vægtnings var over 2
vagt=1; // Herved sætes denne til 1
return Tel; // Aflevere Tælleren
}

void FI17Test()
{
int TelSum=0;
TelSum+=fi(0);
TelSum+=fi(2);
TelSum+=fi(6);
TelSum+=fi(8);
TelSum+=fi(4);
TelSum+=fi(0);
TelSum+=fi(1);
TelSum+=fi(4);
TelSum+=fi(9);
TelSum+=fi(9);
TelSum+=fi(6);
TelSum+=fi(5);
TelSum+=fi(3);
TelSum+=fi(2);
cout<<"\\nTæller sum \\t\\t: "<<TelSum;
cout<<"\\nModel \\t\\t\\t: "<<(TelSum%10);
cout<<"\\nKontrol cifre \\t\\t: "<<10-(TelSum%10);
}
////////////////////////////
// Udregner FI71 af //
// Input : //
// Data som et array //
// Output : //
// Kontrol cifre //
int FI17(int *data,int size)
{
int TelSum=0;
for(int i=0;i<size;i++)
TelSum+=fi(data);

return (10-(TelSum%10));
}

void main()
{
cout<<"FI17 test\\n";
FI17Test(); // Test af funktion
int a[14]={0,2,6,8,4,0,1,4,9,9,6,5,3,2};
cout<<"\\n\\nTest resultat \\t\\t: "<<FI17(a,14);
}

// FI17 kaldes med data. FI17 bruger FI. Ellers kan resten slettes. FI og FI17 anvendes
Med venlig Hilsen
Janus

P.s Havde lige lidt meget at se til. Jeg ved godt metoden ikke hedder FI17 men FI71 dette kan rettes...... Er ved at lave nogle robotter og har et par andre projekter på dagsordenen


Med venlig hilsen

Dennis Hansen
post@dennishansen.com



3 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Email er i din inbox med javascript og php version.
Testet grundigt, men du komer bar med feedback når du har set på det .. her eller pr email er lige fint.



Hvad er FI71 ?
Checksum af betalingkort, eller noget helt andet?

Hvis det er til check af betalingskort, så virker den c++ code ikke, for den tager numrene
fra venstre til höjre, og ikke omvendt.
Desuden laver konstruktoren dette:
Fold kodeboks ind/udKode 


istedet for nmoget i stil ned dette:
Fold kodeboks ind/udKode 


Nå, men endeligt så er dette check afligevel ikke nok for at sikre sig at et kort er gyldigt.
Det er en betingelse at dette check opfyldes, men det er ikke nok, for måske findes kortet ikke afligevel, eller det er udlöbet, eller der er ikke penge tilbage på det eller hvad ved jeg.

Denne slags check kan kun bruges som et pre-check inden man beder et clearing hus (pbs) om at checke hos kortudgiver.

Derfor er det også fint at checke hvad type kort vi snakker om, så du kan spare kald til clearing med forkert kort type .. brugeren burde jo kende sin kort type, ikke ?!?

Jeg ville have dette både i php, inden kaldet til clearing, men også i javascript i selve formen der submitter, så brugeren ikke skal vente unödigt længe hvis han har skrevet et tal forkert i kortnumeret.

Har allerede lavet et javascript der checker kort-type og nummer, bruger LUHN mod 10, som ser rimelig ens ud med den algoritme som FI71 baserer sig på, bortset fra at LUHN altid skal udföres fra höjre til venstre (höjre tal först) .. men jeg har en mistanke om at det samme gælder FI71 .. ihvertfald hvis den skal checke et betalingskorts nummer-gyldighed.

Se her for LUHN og korttype detekt: http://www.beachnet.com/~hstiles/cardtype.html

Og skriv endelig tilbage og fortæl hvad FI71 er og hvad du skal bruge det til.

Hilsen Jonatan

ok nu kan jeg se at det var udviklerens furom der lavede data(i) om til data
[Redigeret d. 25/04-03 09:43:17 af Jonatan Hertel]



FI71 er indbetalingskortet (girokort) som du modtager når du får en regning.

Denne læses fra venstre mod højre, da der til sidst er et tjek ciffer!

Se www.sj-compute.dk/fi71.pdf der står beskrevet hvordan denne regnes ud![Redigeret d. 25/04-03 13:23:56 af Dennis Hansen]



t