13. Split Payments
Es una nueva uncionalidad para realizar dos autorizaciones de pago a comercios distntos en una misma transacción. Esta pensado para operar únicamente con tarjetas de crédito, pudiendo utilizar un medio de pago distinto en cada transaccion.
Para el caso del pago, se hará un POST a:
Firmado como todos los demás paquetes con la versión JSON del objeto SplitPaymentRequest, que deberá los dos objetos de tipo PaymentRequest (MainPeymentRequest y SecondaryPaymentRequest) que contienen:
El campo CybersourceDeviceFingerprint es mandatorio para todas las transacciones con VISA (por Totalnet) y cuya implementación se detalla más adelante.
Se obtendrá como respuesta la versión en JSON de un objeto Transaction con la información de la transacción realizada
IMPORTANTE: Hay que tener importante cuidado en el manejo de los campos de tipo “decimal” en Objetos como Item.Amount o FinancialInclusion.BilledAmount donde por motivos de deserialización JSON del lado del servidor, los valores enteros deben venir siempre con un formato “#.0” que indique un número decimal. Es decir, si pretendemos enviar un valor de 300, debe generarse como 300.0 antes de generar la firma y ser enviado (el punto como separador de decimales).
DeviceFingerprint para VISA y MasterCard (adquirencia de Totalnet u OCA)
Para estos casos se solicita la implementación de la captura del DeviceFingerprint en cada transacción obligatoriamente, información que se utiliza en los sistemas de control de fraude.
Antes de hacer una invocación a Plexo con el token del medio de pago, desde la Web o APP de e-commerce deben primero obtener el DeviceFingerprint del dispositivo del usuario final (un script en la Web, o API desde una APP).
La URL es https://h.online-metrix.net/fp/tags.js?org_id=IdEnvironment&session_id=IdComercio IdInvocacion donde:
IdEnvironment: donde se debe utilizar 45ssiuz3 para test y 9ozphlqx para producción.
IdComercio: en el caso de VISA es el ID del comercio para el cual se va a hacer la transacción. Si es MasterCard procesado por OCA se utiliza oca_plexo.
IdInvocacion: es un ID que tiene que ser único por invocación. Se recomienda utilizar el mismo ID de la transacción de pago.
Agregar Script de invocación a la Web de e-commerce:
<head>
<script type="text/javascript"
src="https://h.online-metrix.net/fp/tags.js?org_id=45ssiuz3&session_id=visanetuy_px_1234TRX2157"></script>
</head>
<body>
<noscript>
<iframe style="width: 100px; height: 100px; border: 0; position: absolute; top: -5000px;"
src="https://h.online-metrix.net/fp/tags?org_id=45ssiuz3&session_id=visanetuy_px_1234TRX2157"></iframe>
</noscript>
</body>
En este ejemplo, se ejecuta este Script en el e-commerce del cliente antes de invocar a Plexo, para el comercio “visanetuy_px_1234” (oca_plexo en caso de Master vía OCA) y con un ID “TRX2157”. Luego en el momento de invocar a Plexo, se envía en el campo opcional CybersourceDeviceFingerprint el valor TRX2157.
En el caso de requerir implementar esto para una APP, ponerse en contacto con el grupo de soporte de Plexo para poder ampliar la información.
Resultado
A diferencia de una autorizacion de pago normal, en que se recibe un objeto Transaction, en el caso de Split Payments se recibe un SplittedTransaction que contiene:
PurchaseTransaction - es un objeto Transaction con la informacion de pago principal.
SplitTransaction - es un objeto Transaction con la informacion de la transaccion de pago secundario.
Status - que es un objeto de tipo TransactionResult, donde se indica el resultado de la autorizacion de ambas transacciones.
Solamente en las transacciones que fueron procesadas correctamente se recibe un Status = 0 (OK). Si alguna de las auotrizaciones de pago fallo, se va a recibir un resultado diferente. De esta forma se puede saber fácilmente si se autorizaron ambas transacciones o alguna falló y quedaron canceladas.
Luego se puede evaluar el contenido de cada objeto Transaction para ver cual fallo y el motivo del mismo. Si por ejemplo la PurchaseTransaction fue aprobada, pero la SplitTransaction fallo, entonces Statuis será distinto de 0, PurchaseTransaction debería estar CANCELADA y SplitTransaction DENEGADA con el mensaje del motivo.
Last updated