Anti-Fraudes
Preguntas generales
¿Qué es la herramienta antifraudes?
{"category": "gateway","description": "The card was declined by fraud system","http_code": 402,"error_code": 3005,"request_id": "4fc452d8-5ddc-4464-ae70-e03569622850"}
Ver la página de errores para mas información del formato del objeto de error.
¿Qué puedo hacer si quiero que una transacción marcada como fraudulenta sea aprobada?
Implementación con JavaScript
1.- Carga e inicialización
<script type='text/javascript' src="https://js.openpay.pe/openpay-data.v1.min.js"></script><script type="text/javascript">var deviceSessionId = OpenPay.deviceData.setup("formId", "deviceIdHiddenFieldName");</script>
Nota: openpay-data.js depende de la libreria openpay.js. Cuida ejecutar primero el metodo setSandboxMode() de la libreria openpay.js y despues el metodo setup.El parámetro formId, recibe el id del formulario que contiene la información del cargo que se enviara a tu servidor. Indica a la librería que en ese formulario es donde se va a agregar un campo oculto con el valor del device_session_id.El parámetro deviceIdHiddenFieldName, recibe el nombre del campo oculto donde se asignara el device_session_id.
device_session_id es almacenarlo en una variable y posteriormente adjuntarlo a alguna petición tipo ajax. Este proceso es manual:
<script type='text/javascript' src="https://js.openpay.pe/openpay-data.v1.min.js"></script><script type="text/javascript">var deviceSessionId = OpenPay.deviceData.setup();</script>
2.- Manejo del lado del servidorCada vez que alguien entra en tu página o sitio, se recolectarán de forma transparente datos del dispositivo desde donde esté accediendo, y se genera el device_session_id. Una vez que tu cliente realiza el cargo con tarjeta, asegurate de enviar a tu servidor, como parte de los datos de la transacción, el device_session_id.
device_session_id como parte de la petición a los servidores de openpay, como se muestra a continuación:
<?php$openpay = Openpay::getInstance('merchant_id', 'private_key');
$chargeData = array( ‘method’ => ‘card’, ‘source_id’ => $POST[«source_id»], ‘amount’ => (float)$POST[«amount»], ‘description’ => $POST[«description»], ‘order_id’ => ‘ORDEN-00071’, ‘device_session_id’ => $POST[«deviceIdHiddenFieldName»] );$charge = $openpay->charges->create($chargeData);?>
Para ver un ejemplo completo de como hacer un cargo, revisa el tutorial de cargos.
Implementación en Android
Descarga e instalación de la librería en: https://github.com/open-pay/openpay-androidLa libreria openpay-android, permite usar la herramienta anti-fraudes de dos formas diferentes.
<uses-permission android:name="android.permission.INTERNET"></uses-permission><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" ></uses-permission>
1.- Carga e inicialización
device_session_id:
Openpay openpay = new Openpay("MERCHANT_ID", "PUBLIC_API_KEY", productionMode);String deviceSessionId = openpay.getDeviceCollectorDefaultImpl().setup(this.getActivity());
Nota: El método setup requiere que se pase el activity desde el que se está invocando. En caso de que se invoque desde un fragment, se puede recuperar el objeto activity invocando el método fragment.getActivity().
device_session_id y posteriormente enviarlo como parte de la invocación a nuestra api.
CreateCardChargeParams charge = new CreateCardChargeParams().cardId(this.registeredCard.getId()).amount(amount).description(desc).orderId(orderId).capture(false).deviceSessionId(deviceSessionId);Charge transaction = this.api.charges().create(charge);
Parámetros adicionalesa) Configuración de timeout
long millis=300000;//5minopenpay.getDeviceCollectorDefaultImpl().setCancelSetupTime(millis);
b) Obtener Errores
String errors = openpay.getDeviceCollectorDefaultImpl().getErrorMessage();Log.d(this.getClass().getName(), errors);
Implementación en iOS
Descarga e instalación de la librería en: https://github.com/open-pay/openpay-ios
createDeviceSessionId
Openpay *openpayAPI = [[Openpay alloc]initWithMerchantId:MERCHANT_IDapyKey:API_KEYisProductionMode:NO];
NSString *sessionId= [openpayAPI createDeviceSessionId];
Nota: Crea la variable de Openpay a nivel de la clase y no a nivel de método.
