El ejecutar el servicio Charges de la PreAuth puede que nos responda de 3 maneras las cuales son: failed , success y review
Success
Cuando el estatus es success nos indica que la transacción se completo correctamente y el flujo termina hasta este punto.
{
"source": "token_q8L5Bf-2XCzmybLpkOiRShJnwhYVo",
"amount": 500.0,
"description": "Pago de Inscripción del Jugador Jdnxn Dhsb de la categoria Hormigas",
"status": "success",
"transactionTokenId": "5dced89c-2b6e-4a1c-a715-c19b0a51a51e",
"redirect3dsUri": "http://example.com/",
"returnUrl": null,
"paymentMethod": "card",
"currency": "MXN",
"createdAt": "2022-11-17T22:17:58.178+0000",
"error": null,
"installments": null,
"ship": null,
"client": null,
"saveCard": false,
"instegrationsdk": "Custom",
"integrationSdkVersion": "3.5",
"cvv": null,
"service3DSecureResponse": null,
"merchantRefCode": null,
"tokenRequestDTO": null,
"transactionType": "Auth",
"surcharge": null,
"tokenAmount": null,
"expiryDate": null,
"threeDSecureResponse": null,
"seamless": false,
"paymentSource": {
"cardDefault": false,
"card": {
"token": "token_q8L5Bf-2XCzmybLpkOiRShJnwhYVo",
"expYear": "25",
"expMonth": "04",
"lastFourDigits": "0002",
"brand": "visa",
"deviceFingerPrint": "1665526382330",
"ipAddress": "201.172.172.140",
"bank": "ABC CAPITAL",
"type": "debit",
"country": "MX",
"scheme": "debit",
"cardPrefix": "400000",
"preAuth": false,
"vault": true,
"simpleUse": false
},
"source": "token_q8L5Bf-2XCzmybLpkOiRShJnwhYVo",
"type": "card"
},
"billing": {
"firstName": "Roberto",
"lastName": "Frias",
"email": "[email protected]",
"phone": "8182107894",
"ipAddress": "201.172.172.140",
"merchantReferenceCode": "iiXUizeYHI",
"address": {
"city": "monterrey",
"country": "MX",
"postalCode": "56680",
"state": "Nuevo León",
"street1": "Jdiis",
"street2": ""
}
},
"referenceID": "1668110499354"
}
Failed
Cuando el estatus es failed nos indica que la transacción no fue posible y el flujo termina hasta este punto.
{
"source": "token_q8L5Bf-2XCzmybLpkOiRShJnwhYVo",
"amount": 500.0,
"description": "Pago de Inscripción del Jugador Jdnxn Dhsb de la categoria Hormigas",
"status": "failed",
"transactionTokenId": "0d8abee3-df0a-4a2b-8d78-2b937bc24e1a",
"redirect3dsUri": "http://example.com/",
"returnUrl": null,
"paymentMethod": "card",
"currency": "MXN",
"createdAt": "2022-11-17T22:30:33.377+0000",
"error": "Rejected by Decision Manager",
"installments": null,
"ship": null,
"client": null,
"saveCard": false,
"instegrationsdk": "Custom",
"integrationSdkVersion": "3.5",
"cvv": null,
"service3DSecureResponse": null,
"merchantRefCode": null,
"tokenRequestDTO": null,
"transactionType": "Auth",
"surcharge": null,
"tokenAmount": null,
"expiryDate": null,
"threeDSecureResponse": null,
"seamless": false,
"paymentSource": {
"cardDefault": false,
"card": {
"token": "token_q8L5Bf-2XCzmybLpkOiRShJnwhYVo",
"expYear": "25",
"expMonth": "04",
"lastFourDigits": "0002",
"brand": "visa",
"deviceFingerPrint": "1665526382330",
"ipAddress": "201.172.172.140",
"bank": "ABC CAPITAL",
"type": "debit",
"country": "MX",
"scheme": "debit",
"cardPrefix": "400000",
"preAuth": false,
"vault": true,
"simpleUse": false
},
"source": "token_q8L5Bf-2XCzmybLpkOiRShJnwhYVo",
"type": "card"
},
"billing": {
"firstName": "Roberto",
"lastName": "Frias",
"email": "[email protected]",
"phone": "8182107894",
"ipAddress": "201.172.172.140",
"merchantReferenceCode": "VmiQgQupub",
"address": {
"city": "monterrey",
"country": "MX",
"postalCode": "56680",
"state": "Nuevo León",
"street1": "Jdiis",
"street2": ""
}
},
"referenceID": "1668110499354"
}
Review
Cuando el estatus es review nos indica que la transacción requiere una validación extra por medio de 3Ds, a continuación se indican los pasos para realizar este proceso.
Variables que se tiene que enviar en el proceso y de donde obtenerlas.
Variable | De donde la Obtenemos |
---|---|
status | se obtiene de la respuesta del servicio Charges |
responseCode | se obtiene de la respuesta del servicio Charges dentro del arreglo threeDSecureResponse |
acsUrl | se obtiene de la respuesta del servicio Charges dentro del arreglo threeDSecureResponse |
paReq | se obtiene de la respuesta del servicio Charges dentro del arreglo threeDSecureResponse |
authenticationTransactionID | se obtiene de la respuesta del servicio Charges dentro del arreglo threeDSecureResponse |
Ejemplo de respuesta:
{
"source": "token_q8L5Bf-2XCzmybLpkOiRShJnwhYVo",
"amount": 500.0,
"description": "Pago de Inscripción del Jugador Jdnxn Dhsb de la categoria Hormigas",
"status": "review",
"transactionTokenId": "b895a3de-596f-4be9-880a-54bfa04d5b0a",
"redirect3dsUri": "http://example.com/",
"returnUrl": "https://gateway-154.netpaydev.com/gateway-ecommerce/v1/three-d-secure/paymenth-auth-enroll/b895a3de-596f-4be9-880a-54bfa04d5b0a?webHook=http://example.com/",
"paymentMethod": "card",
"currency": "MXN",
"createdAt": "2022-11-17T23:10:39.465+0000",
"error": null,
"installments": null,
"ship": null,
"client": null,
"saveCard": false,
"instegrationsdk": "Custom",
"integrationSdkVersion": "3.5",
"cvv": null,
"service3DSecureResponse": {
"acsURL": "https://merchantacsstag.cardinalcommerce.com/MerchantACSWeb/pareq.jsp?vaa=b&gold=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"paReq": "eNpVUstuwjAQvPsrItSzXyRA0dZS2orCAQSlRe0xdVYkVUnAcYDw9bUD9HHb2Yd3ZtbwkhnExyXq2qCCKVZVssYgT+86ejCyVqzeunvxLMay4nLBOwrm8TPuFOzRVHlZKEE5lcCukLgnjM6SwipI9O5+MlNh71aKHrALJLBBM3lUQnbDqNcHdoYEimSDaoY2mCdNsKQxDVIMHuiKAmtLBHRZF9Y0KhyEwK6AQG2+VGbtthoydjgcqG4+HJuyNhqpLjcMmO8gwH6pzWsfVU7xMU/V+yl7SseL4+prfUo/R8vp67rRp7h5fYnvgPkOAmliUUkupRCiH8juUPBh6IS3eQLJxtNRN0HEOeXcqT0nCGz9qviMXNHX/qacqtoYLPRV1hURwOO2LND1uDU/sZPxS/5h7F3W1vnXE9FAyIG3ucXteO78kREP2/m8NYv5GXY5Irvc20X//sE3T7qrSw==",
"veresEnrolled": "Y",
"responseCode": 475,
"secXid": null,
"request_token": null,
"order_id": null,
"request_id": null,
"responseMsg": null,
"sec_status": null,
"eciRaw": null,
"secEci": null,
"eci": null,
"authenticationResult": null,
"cavv": null,
"paresStatus": null,
"authentication_status_message": null,
"invalidField[0]": null,
"xid": "YzhGdHQxVlgzdjFSMUgyczAyUTA=",
"specificationVersion": "1.0.2",
"ecommerceIndicator": null,
"ucafAuthenticationData": null,
"TransactionId": "c8Ftt1VX3v1R1H2s02Q0",
"cardTypeName": "VISA"
},
"merchantRefCode": null,
"tokenRequestDTO": null,
"transactionType": "Auth",
"surcharge": null,
"tokenAmount": null,
"expiryDate": null,
"threeDSecureResponse": {
"responseCode": 475,
"status": "PROCEED_TO_VALIDATE_AUTHENTICATION",
"redirect": true,
"authUrl": "https://gateway-154.netpaydev.com/gateway-ecommerce/v1/three-d-secure/paymenth-auth-enroll/b895a3de-596f-4be9-880a-54bfa04d5b0a",
"jwt": null,
"acsUrl": "https://merchantacsstag.cardinalcommerce.com/MerchantACSWeb/pareq.jsp?vaa=b&gold=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"paReq": "eNpVUstuwjAQvPsrItSzXyRA0dZS2orCAQSlRe0xdVYkVUnAcYDw9bUD9HHb2Yd3ZtbwkhnExyXq2qCCKVZVssYgT+86ejCyVqzeunvxLMay4nLBOwrm8TPuFOzRVHlZKEE5lcCukLgnjM6SwipI9O5+MlNh71aKHrALJLBBM3lUQnbDqNcHdoYEimSDaoY2mCdNsKQxDVIMHuiKAmtLBHRZF9Y0KhyEwK6AQG2+VGbtthoydjgcqG4+HJuyNhqpLjcMmO8gwH6pzWsfVU7xMU/V+yl7SseL4+prfUo/R8vp67rRp7h5fYnvgPkOAmliUUkupRCiH8juUPBh6IS3eQLJxtNRN0HEOeXcqT0nCGz9qviMXNHX/qacqtoYLPRV1hURwOO2LND1uDU/sZPxS/5h7F3W1vnXE9FAyIG3ucXteO78kREP2/m8NYv5GXY5Irvc20X//sE3T7qrSw==",
"apiIdentifier": "5cf8a7aa0e423d0f7cf284d5",
"apiKey": "f259a31f-fbba-4c21-9066-f1ad2db840ed",
"orgUnitId": "5cf88ffbe0919f07acac88b6",
"specificationVersion": "1.0.2",
"eci": null,
"eciRaw": null,
"authenticationTransactionID": "c8Ftt1VX3v1R1H2s02Q0",
"continueTransaction": true,
"frictionLess": null,
"xid": "YzhGdHQxVlgzdjFSMUgyczAyUTA=",
"paresStatus": null
},
"seamless": false,
"paymentSource": {
"cardDefault": false,
"card": {
"token": "token_q8L5Bf-2XCzmybLpkOiRShJnwhYVo",
"expYear": "25",
"expMonth": "04",
"lastFourDigits": "0002",
"brand": "visa",
"deviceFingerPrint": "1665526382330",
"ipAddress": "201.172.172.140",
"bank": "ABC CAPITAL",
"type": "debit",
"country": "MX",
"scheme": "debit",
"cardPrefix": "400000",
"preAuth": false,
"vault": true,
"simpleUse": false
},
"source": "token_q8L5Bf-2XCzmybLpkOiRShJnwhYVo",
"type": "card"
},
"billing": {
"firstName": "Roberto",
"lastName": "Frias",
"email": "[email protected]",
"phone": "8182107894",
"ipAddress": "201.172.172.140",
"merchantReferenceCode": "NsrRUesJfU",
"address": {
"city": "monterrey",
"country": "MX",
"postalCode": "56680",
"state": "Nuevo León",
"street1": "Jdiis",
"street2": ""
}
},
"referenceID": "1668110499354"
}
Después de la respuesta del servicio Chargues se tienen que realizar el siguiente flujo iniciando con la función canProceed donde se envía el status de la transacción, el responseCode que se encuentra dentro del arreglo threeDSecureResponse asi como el acsUrl esto nos arrojara un valor TRUE o FALSE en dado que sea TRUE consinua el proceso con la funcion proceed donde se pasa el acsUrl el paReq y el authenticationTransactionID estos se obtienen de la respuesta del Chargues dentro del arreglo threeDSecureResponse despues mostrara la ventana que se muestra en la imagen siguiente:
Se ingresa el codigo y se da en confirmar esto llama a la funcion callbackProceed de manera automática y esta nos genera el processorTransactionId y esta a su ves llama a la funcion confirm
let canProceed = netpay3ds.canProceed(data->status, data->threeDSecureResponse->responseCode, data->threeDSecureResponse->acsUrl);
if(canProceed) {
const callbackProceed = function(_this, processorTransactionId, status) {
if(status == 'success') {
confirm(data->transactionTokenId, processorTransactionId);
}else {
//Rechazar transacción, mostrar mensaje de transacción rechazada
console.log('error');
}
}
netpay3ds.proceed(_this, data->threeDSecureResponse->acsUrl , data->threeDSecureResponse->paReq, data->threeDSecureResponse->authenticationTransactionID, callbackProceed);
}else {
//Realizar confirmacion
console.log("Realizamos confirmacion");
confirm(data->transactionTokenId, null);
}