14. Split Payments via ExpressCheckout
Se agrega la funcionalidad de realizar un Split Payment desde ExpressCheckout, donde de debe tener en cuenta la ssiguientes restricciones:
Solo se permite pago con Tarjeta de Crédito o Débito.
La seleccion de cuotas es solamente para el pago principal, el Split es siempre al contado.
No se muestra la descripcion de detalles de los Items enviados.
Para el caso del pago, se hará un POST a:
Firmado como todos los demás paquetes con la versión JSON del objeto ExpressCheckoutSplitRequest, que contiene lo que hoy se envía en los puntos 1 (Authorization) y 14 (SplitRequest) en un servicio que los nuclea.
En particular, en este caso el Authorization.ActionType debe enviar el Flag ExpressCheckout (64).
En cuanto a los Items que se envian, estan los de la transaccion principal (lista de Items) y los que pertenecen a la Split (un solo Item y no una lista). Como si indica previamente a diferenencia del ExpressCheckout comun, aqui no se despliega detalle de la lista de Items a pagar.
Como en este caso no se cuenta con un Token a ser enviado en el PaymentRequest ni en el SplitRequest, los campo PaymentInstrumentInput y SplitPaymentInstrumentInput se pueden obviar.
Ejemplo de invocación a SplitPayment en modo ExpressCheckout:
{
"Object":{
"Fingerprint":"06356B6157EF3AB24D20EBCC5158C75E371D3734",
"Object":{
"Client":"Fvidal",
"Request":{
"AuthorizationData":{
"Action":64,
"ClientInformation":{
"Name":"Francisco Vidal",
"Address":"Av Italia 2020",
"Email":"fvidal@plexo.com.uy",
"Identification":"123456758",
"IdentificationType":"0"
},
"DoNotUseCallback":false,
"LimitIssuers":[
"4",
"4_2",
"11",
"14",
"15",
"16",
"17",
"12"
],
"MetaReference":"eput12@plexo.com.uy",
"OptionalCommerceId":84,
"RedirectUri":"http://www.sitiocliente.com/plexo/XXX/YYY",
"Type":2
},
"PaymentData":{
"ClientReferenceId":"12345648",
"CurrencyId":1,
"FinancialInclusion":{
"BilledAmount":20.0,
"InvoiceNumber":10050031,
"TaxedAmount":16.39,
"Type":6
},
"Installments":1,
"Item":{
"Amount":12.2,
"ClientItemReferenceId":"40010050031",
"Description":"Merchant Fee",
"Quantity":1
},
"Items":[
{
"Amount":10.0,
"ClientItemReferenceId":"40010050031",
"Description":"Pantalon",
"Quantity":1
},
{
"Amount":10.0,
"ClientItemReferenceId":"4510058031",
"Description":"Camisa",
"Quantity":1
}
],
"OptionalCommerceId":84,
"OptionalMetadata":"Prubea optional Metadata",
"SplitClientReferenceId":"12345648",
"SplitCommerceId":10196,
"SplitCurrencyId":1,
"SplitFinancialInclusion":{
"BilledAmount":12.2,
"InvoiceNumber":1234567,
"TaxedAmount":10.0,
"Type":6
}
}
}
},
"UTCUnixTimeExpiration":1724439196
},
"Signature":"JS80Kebz2qmOFYb5Wa7Gn46gOv0U0cOydqWMBOLQZPokdF6irymRjR7RNLhPn64a0Jb2EahkYt1deQZLikD0fgNkHzBkmR7O1hJ54tU1xS4W4D1OJN+DquJOcxUA8x+HQGZyLaZ5jflGV54SXUzHO3jvisL5KEap5hMRA6O/oyj9+4QafzuHEvrzVcfj8edHd2woGm1otqpMYSwqnS0vcjOqeZ03I/Haar6fyCLUZfR+GtsyXSy3eiHubFzjDQ9tJV337/Z1CsTisTN2y09gE0f5rP5eXjWlyJJe2qd7L17HT+hasapuGL/gPB6ufCfuhU1mqSE5a1qHO4FR/sv/6Rd8x1i6/pLEW2962LLWRZDsji5Nr4bMjEH5F5BIUawyN42uW4XM/NpVX6ORSf7NIcaOxORW7HQ4qYOpHCb866vN/ofIMUmKPOGYcco0Sxt4FGJljgLbx4YSeuGmYTWQ8XzaxDwoouylYfomNh1jHyTCtFAAggKfRmgdNEx0az+hpPvfZJxzuzMwkSfrbcSPZeHdKAnIhGMTdTLfh6JmwgUuc3oBRdHzbpZ01+Yb8wfSGrAELQgwP91wYE7nih8aXifJcPL3WW3vnvcPcqU48JEnnLFkUrQ3pi5VFSHaFlNGG7S2R4V2afQuoSrTpRjfXSJ9FcqIJM3pBRY2f5zdOt0="
}
Como respuesta se recibe una URL, que al abrirla se despliega lo siguiente:

Se despliegan directamente el formulario para ingresar tarjetas, ya que son los únicos medios de pago aceptados por este servicio. Se debe configurar previamente para cada Comercio/Issuer las cuotas que son aceptadas para cada tarjeta aceptada. De esta forma, a la hora de seleccionar una tarjeta de crédito, según el Sello y el Comercio utilizado, se despliega una pantalla de selección de cuotas.

Esta seleccion de pago en cuotas es solamente para la transaccion principal (con los articulos de la venta) ya que la transaccion Split se hace solamente en una cuota.
Resultado
A diferencia de una autorizacion de pago normal, en que se recibe un objeto Transaction, en el caso de Split Payments via ExpressCheckout se recibe un un objeto de tipo SplittedTransaction dentro de un SplittedTransactionCallback (se especifica la URL en CallbackURL del SplitRequest) 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 ojceto 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