WN

WN (https://www.wn.se/forum/index.php)
-   E-kommers (https://www.wn.se/forum/forumdisplay.php?f=10)
-   -   Validering kort (https://www.wn.se/forum/showthread.php?t=11950)

jaffa 2006-01-21 20:20

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.

Lindahl 2006-01-21 20:33

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


nicce 2006-01-22 00:44

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);
        }


jaffa 2006-01-22 12:50

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.

Lindahl 2006-01-22 12:56

De kollar bara att kontrollsiffran är korrekt, och säger ingenting annat. Du måste debitera för att vara säker.

shibaja 2006-01-23 12:39

Går ju att göra en "authorize" men ingen "capture", dvs enbart reservera beloppet på kundens kort.

jaffa 2006-01-23 16:02

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.


Alla tider är GMT +2. Klockan är nu 11:40.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson