Primero, estoy haciendo algunas suposiciones aquí:
- Por “sistema de pago móvil”, quiere decir que está interesado en procesar tarjetas de crédito.
- Ya ha decidido que no desea utilizar la solución de otra persona (por ejemplo, Paypal, Square, etc.)
En este punto, ha decidido efectivamente que desea implementar el procesamiento de tarjetas de crédito en su aplicación. Hay buenas razones por las que es posible que desee hacer esto, pero primero eche un vistazo a algunas de las soluciones listas para usar.
El enfoque básico es elegir un swiper de hardware (o swipers) que desee admitir, configurar un servidor en un centro de datos compatible con PCI, asociarse con un procesador de pagos y escribir un servidor HTTP regular para conectar todo.
- ¿La versión beta de iOS 10 parece ser una mejora para el iPhone o un detrimento?
- Si actualizo mi Xcode a Xcode 8.3.1, ¿funcionará mi aplicación desarrollada en Xcode 8.2.1?
- ¿Cuál es el costo de desarrollar la aplicación de Android e IOS en India?
- Mi aplicación IOS está en revisión durante 24 horas después de 3 días de tiempo de espera, y la aplicación db muestra que últimamente no se ha realizado ninguna acción. ¿Esto es normal?
- ¿Cuál es el alojamiento más económico para alojar su aplicación de iPhone después del desarrollo?
Analicemos eso.
Primero, deberá elegir un proveedor de hardware para proporcionar un accesorio para realmente deslizar tarjetas. Existen varias opciones (utilizamos Magtek), pero querrás asegurarte de probarlas físicamente antes de decidirte por una. Varían considerablemente en cuanto a su robustez y lo fácil que es ejecutar las cartas. Aquellos que se conectan al puerto de accesorios (en lugar de la toma de auriculares) tienden a tener la mejor sensación para ellos.
Los swipers de hardware vendrán con una biblioteca de iOS que compilará en su aplicación. En general, esto vendrá con una API que invocará su código cuando se desliza una tarjeta y le dará cierta información pública (por ejemplo, el nombre del cliente, los últimos 4 dígitos) y un blob cifrado de información confidencial (por ejemplo, la tarjeta real número y CVV).
Luego, querrá establecer una conexión segura (es decir, HTTPS o SSL) a su servidor. Tenga en cuenta que cualquier servidor que reciba esta información estará sujeto a algunas reglas de seguridad (PCI) muy estrictas, y usted * no * querrá que esto se implemente en el mismo hardware que su servidor normal. De hecho, hay empresas de alojamiento especializadas que se centran en servidores PCI de alta seguridad y quejas (he usado FireHost en el pasado y funcionó muy bien).
Su cliente luego (de forma segura) enviará los datos de la tarjeta de crédito a este servidor. Este servidor será responsable de descifrar la carga útil e interactuar con su procesador de pagos. Las tarjetas de crédito son complicadas, por lo que puede contar con pasar un buen rato con la referencia API de su procesador de pagos y aprender mucho sobre los entresijos del procesamiento de tarjetas de crédito.
Una vez que este servidor maneja una solicitud determinada, debe enviar una respuesta al cliente diciéndole cómo fueron las cosas. Con las tarjetas de crédito, existe una gran variedad de posibles estados de error, por lo que será importante que brinde al cliente suficiente información para que el usuario pueda distinguir fácilmente entre las condiciones que se pueden volver a intentar (por ejemplo, tiempo de espera del servidor, CVV incorrecto) fallas permanentes (por ejemplo, cuenta inválida, cuenta sobregirada) y transmitir esa información a sus clientes.
Finalmente, querrás asegurarte * realmente * de que pruebes el infierno de tu solución. Aquí se trata de dinero real, y las cosas van muy mal de maneras que no se hacen evidentes hasta que ha pasado mucho tiempo. En particular, debes:
- Tenga un comprobante de prueba para el procesador de pagos para que pueda probar todas las diversas condiciones de error. Esto es particularmente importante para asegurarse de que los informes de errores de su cliente funcionen bien.
- Configure una cuenta bancaria de prueba y escriba un proceso de prueba que rutinariamente mueva dinero a través del sistema y verifique que se muestren las cantidades correctas. Esto lo ayudará a asegurarse de que no está arruinando sus solicitudes al procesador de pagos de alguna manera sutil.
- Pruebe * todas * las posibles interacciones API de todas las condiciones posibles (p. Ej., ¿Qué sucede si intenta anular un pago después de que se haya capturado? ¿Qué sucede si intenta capturar 2 veces lo que autorizó?)
Si aún no lo he dejado claro … esto es complicado (especialmente pasar una auditoría PCI). Sin embargo, es realmente posible, y es principalmente una cuestión de prestar especial atención a los detalles de los requisitos de PCI, las pruebas y ser más defensivo en su código que para otras aplicaciones.