2011-03-09 12 views
16

¿Hay alguna forma de conectar un lector de tarjetas a mi aplicación web (javascript) para que el usuario no tenga que escribir manualmente la información de la tarjeta de crédito?¿Conectar un lector de tarjeta de crédito a la aplicación web?

Esta aplicación web es para comprar productos en una tienda. El usuario hace clic en los artículos que quiere comprar y luego desliza la tarjeta de crédito en el lector y él recibe un recibo.

+2

La respuesta de Māris Kiseļovs es incorrecta. Marque la respuesta @AngeloS como la respuesta correcta. –

Respuesta

-6

La respuesta corta es - No. Se puede encontrar alguna explicación más How to link access card reader with PHP?

+9

Downvoted. Ver a continuación respuesta, esto es totalmente incorrecto. – SobiborTreblinka

+0

Si selecciona un campo de formulario para que esté activo, y luego deslice una tarjeta de crédito; ese campo se completará con los datos de la tarjeta. Cuando el campo de texto cambia, JavaScript puede activarse para completar automáticamente el formulario. –

30

En realidad, es posible debido al hecho de que los lectores de tarjetas USB sencilla actúan como dispositivos de entrada de teclado. Dado que actúa como una entrada de teclado, una vez que se enfoca una entrada, se puede deslizar la tarjeta, empujarla a un campo oculto usando alguna ingeniosa jQuery, etc. y luego procesarla desde allí.

Please see my answer on that question that Maris linked to.

EDIT: 2/2016

que creó un GitHub Gist con una aplicación muy simple jQuery.

+0

El campo oculto aún le permite al usuario escribir, si así lo desea. Él simplemente no lo verá. –

4

Como se menciona en la otra respuesta, el lector de código de barras o lector de tarjetas funciona como un teclado. Puede adjuntar un oyente, por ejemplo, en todo el documento:

document.onkeypress = function(e) { 
    e = e || window.event; 
    var charCode = (typeof e.which == "number") ? e.which : e.keyCode; 
    // store it , in this example, i use localstorage 
    if(localStorage.getItem("card") && localStorage.getItem("card") != 'null') { 
     // append on every keypress 
     localStorage.setItem("card", localStorage.getItem("card") + String.fromCharCode(charCode)); 
    } else { 
     // remove localstorage if it takes 300 ms (you can set it) 
     localStorage.setItem("card", String.fromCharCode(charCode)); 
     setTimeout(function() { 
      localStorage.removeItem("card"); 
     }, 300); 
    } 
    // when reach on certain length within 300 ms, it is not typed by a human being 
    if(localStorage.getItem("card").length == 8) { 
     // do some validation 
     if(passedonvalidation){ 
      // do some action 
     } 
    } 
} 

puede adjuntar oyente en un cuadro de texto si usted desea. Asegúrese de que esté enfocado cuando se pasa la tarjeta.

+0

Debe comprobar si el usuario copie/pegue el código en la entrada, para hacerlo solo verifique si los modificadores CTRL y SHIFT están encendidos, de ser así simplemente borre el campo. De lo contrario, el usuario simplemente "teclearía" instantáneamente al pegar –

-2

Así es como funciona, creo. La tarjeta de crédito le dará una pieza de software que instalará en su máquina. Ese software expone un servicio en un puerto local.

Su aplicación web ENVIARÁ una solicitud a ese servicio local. La solicitud que realizó puede incluir solo la cantidad que desea cobrar más algún token de autenticación para autenticarse contra el servicio.

Después de lo cual el terminal de la tarjeta de crédito procesará la carga y devolverá un número de referencia en caso de éxito o un mensaje de error.

Como puede ver, este proceso no expone la información de la tarjeta de crédito a su aplicación web. Simplemente se le notifica si la transacción fue aprobada o no para que pueda continuar o rechazar el procesamiento del pedido.

Cuestiones relacionadas