FAQ |
Kalender |
2006-01-21, 20:20 | #1 | ||
|
|||
Medlem
|
Någon som vet hur man gör om man vill kolla om ett Visa/MC/amex etc kort är giltigt utan att ta betalt av kunden?
Om man t.ex vill ha uppgifterna för att garantera en senare betalning eller en beställning. Har hört att det finns något som kallas mod 10 metoden för detta som ska innebära att man jobbar utifrån de givna parametrar som finns för korten (börjar på vissa siffror etc.). En sorts validering liknande den man kan göra för att kolla att en e-post adress är korrekt angiven. |
||
Svara med citat |
2006-01-21, 20:33 | #2 | ||
|
|||
Mycket flitig postare
|
Om du bara vill kolla om det är giltigt kortnummer så kan du ju använda detta scriptet (asp) som jag hittade på internet, men det bevisar ju egentligen ingenting så nyttan av användandet är nog ganska begränsad.
Kod:
function isCreditCard(cardNo) isCreditCard = false lCard=len(cardNo) lC=right(cardNo,1) cStat=0 for i=(lCard-1) to 1 step -1 tempChar= mid(cardNo,i,1) d=cint(tempChar) if lcard mod 2 = 1 then temp=d*(1+((i+1) mod 2)) else temp=d*(1+(i mod 2)) end if if temp < 10 then cStat = cStat + temp else cStat = cStat + temp - 9 end if next cStat = (10-(cStat mod 10)) mod 10 if cint(lC) = cStat then isCreditCard = true end function |
||
Svara med citat |
2006-01-22, 00:44 | #3 | |||
|
||||
Medlem
|
Här har du en för javascript också....
Kod:
function checkcardnumber(CardNumber) { var RegularExpression = /^[0-9]{13,16}$/i; if (! ValidateField(RegularExpression, CardNumber)) { alert('Malformed Card number.'); return false; } sum = 0; mul = 1; l = CardNumber.length; for (i = 0; i < l; i++) { digit = CardNumber.substring(l-i-1,l-i); tproduct = parseInt(digit ,10)*mul; if (tproduct >= 10) sum += (tproduct % 10) + 1; else sum += tproduct; if (mul == 1) mul++; else mul--; } if (!(sum % 10) == 0) { alert('Malformed Card number.'); return false; } } function ValidateField(pattern, FieldStr) { return pattern.test(FieldStr); } |
|||
Svara med citat |
2006-01-22, 12:50 | #4 | ||
|
|||
Medlem
|
Ok, tack. Men vad gör dessa kodsnuttar mer exakt? kollar de så att kortnumret är ett riktigt kortnummer enligt de regler som finns för hur dessa ska vara uppställda?
kan man också kontrollera giltighetstiden på nåt sätt eller är det endast genom att debitera kortet? hälsn. |
||
Svara med citat |
2006-01-22, 12:56 | #5 | ||
|
|||
Mycket flitig postare
|
De kollar bara att kontrollsiffran är korrekt, och säger ingenting annat. Du måste debitera för att vara säker.
|
||
Svara med citat |
2006-01-23, 12:39 | #6 | ||
|
|||
Medlem
|
Går ju att göra en "authorize" men ingen "capture", dvs enbart reservera beloppet på kundens kort.
|
||
Svara med citat |
2006-01-23, 16:02 | #7 | ||
|
|||
Medlem
|
iochför sig men då blir man ju inte så värst populär hos inlösaren efter ett tag om man gör många sådana. Vill inte heller reservera belopp på kundens kort. uppgifterna ska fungera som en garanti för min leverantör från kunden. Men kunden ska betala hos leverantören senare.
men jag antar att det enda helt säkra sättet är att debitera en förskottsbetalning eller liknande. de andra scripten etc. ökar mest bara sannolikheten för att kortet är riktigt om jag förstått allt rätt. |
||
Svara med citat |
Svara |
|
|