2009-11-06 41 views
5

Tôi đang cố gắng xác thực số thẻ tín dụng bằng jQuery nhưng tôi không muốn sử dụng plugin xác thực, có plugin nào khác để thực hiện việc này không?Xác thực thẻ tín dụng với Jquery

+4

Có vấn đề gì với plugin xác thực? – Bartek

+1

Yeah? Thực tế là Google không thực sự trả về bất cứ điều gì rõ ràng hơn là xác nhận plugin là đủ tốt gợi ý – Bostone

Trả lời

11

http://en.wikipedia.org/wiki/Luhn_algorithm

Bạn có thể giảm thiểu điều này bên dưới thành một dấu chân rất nhỏ trong mã của bạn.

function isCreditCard(CC) 
{       
     if (CC.length > 19) 
      return (false); 

     sum = 0; mul = 1; l = CC.length; 
     for (i = 0; i < l; i++) 
     { 
      digit = CC.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) 
      return (true); 
     else 
      return (false); 
} 
+1

+1 - Luhn sẽ là cách duy nhất để 'xác nhận' nó ở phía khách hàng. –

+0

Việc kiểm tra Luhn thực sự chỉ hữu ích cho việc phát hiện lỗi chuyển vị. Bạn cũng sẽ cần phải kiểm tra phạm vi nhận dạng người phát hành (sáu chữ số đầu tiên của số thẻ) là hợp lệ. – PaulG

2

Nếu bạn muốn chắc chắn rằng đó là số thẻ hợp lệ, bạn sẽ cần phải kiểm tra nhiều hơn số Luhn.

Các Luhn chữ số chỉ dùng để kiểm tra lỗi chuyển vị, và có thể dễ dàng bị giả mạo với những con số như 22222222222222222

Sáu chữ số đầu tiên của số thẻ nên được kiểm tra. Những chữ số này được gọi là số nhận dạng người phát hành và có thể được sử dụng để đảm bảo rằng số nằm trong phạm vi được công nhận. Thật không may bạn sẽ đấu tranh để tìm một danh sách toàn diện của IIN, không ít bởi vì các tổ chức phát hành liên tục bổ sung và loại bỏ các phạm vi. Wikipedia có một cái nhìn tổng quan rất cơ bản mặc dù: Bank card number

Nếu bạn có thể xác định loại thẻ từ IIN, bạn có thể bị đâm khi xác nhận độ dài của số đó.

Trừ khi bạn có lý do rất tốt, việc sử dụng một thứ gì đó giống như trình cắm thêm xác thực dễ dàng hơn nhiều.

0

tôi khuyên bạn nên sử dụng biểu hiện thường xuyên ... Bạn có thể kiểm tra kho của tôi, tôi có một đoạn mã để xác nhận Visa, Master card, Discovery, american express và mã an ninh

https://github.com/leojavier/RegexCollection


Ghi ... chỉ vì bạn giới hạn số lượng chữ số không có nghĩa là nó sẽ đúng.

ví dụ:
- Tất cả số thẻ Visa bắt đầu bằng 4. Thẻ mới có 16 chữ số.
- Tất cả số MasterCard bắt đầu bằng các số từ 51 đến 55. Tất cả đều có 16 chữ số. và cứ thế ...

Chỉ mục.html là mẫu, để cho bạn biết cách sử dụng! Vui lòng viết cho tôi nếu bạn có bất kỳ câu hỏi nào :)

Các vấn đề liên quan