Webpay Rest
Ambientes y Credenciales
La API REST de Webpay está protegida para garantizar que solamente comercios autorizados por Transbank hagan uso de las operaciones disponibles. La seguridad esta implementada mediante los siguientes mecanismos:
- Canal seguro a través de TLSv1.2 para la comunicación del cliente con Webpay.
- Autenticación y autorización mediante el intercambio de headers
Tbk-Api-Key-Id
(código de comercio) yTbk-Api-Key-Secret
(llave secreta).
Ambiente de Producción
Las URLs de endpoints de producción están alojados dentro de https://webpay3g.transbank.cl/.
// Host: https://webpay3g.transbank.cl
// Host: https://webpay3g.transbank.cl
// Host: https://webpay3g.transbank.cl
# Host: https://webpay3g.transbank.cl
# Host: https://webpay3g.transbank.cl
Host: https://webpay3g.transbank.cl
Ambiente de Integración
Las URLs de endpoints de integración están alojados dentro de https://webpay3gint.transbank.cl/.
// Host: https://webpay3gint.transbank.cl
// Host: https://webpay3gint.transbank.cl
// Host: https://webpay3gint.transbank.cl
# Host: https://webpay3gint.transbank.cl
# Host: https://webpay3g.transbank.cl
Host: https://webpay3gint.transbank.cl
Consulta la documentación para conocer las tarjetas de prueba que funcionan en el ambiente de integración.
Credenciales del Comercio
// Tbk-Api-Key-Id: Código de comercio
// Tbk-Api-Key-Secret: Llave secreta
// Content-Type: application/json
// Tbk-Api-Key-Id: Código de comercio
// Tbk-Api-Key-Secret: Llave secreta
// Content-Type: application/json
// Tbk-Api-Key-Id: Código de comercio
// Tbk-Api-Key-Secret: Llave secreta
// Content-Type: application/json
# Tbk-Api-Key-Id: Código de comercio
# Tbk-Api-Key-Secret: Llave secreta
# Content-Type: application/json
# Tbk-Api-Key-Id: Código de comercio
# Tbk-Api-Key-Secret: Llave secreta
# Content-Type: application/json
Tbk-Api-Key-Id: Código de comercio
Tbk-Api-Key-Secret: Llave secreta
Content-Type: application/json
Todas las peticiones que hagas deben incluir el código de comercio y la llave secreta entregada por Transbank, actuando ambas como las credenciales que autorizan distintas operaciones.
Códigos de comercio
En la documentación puedes revisar todos los códigos de comercio del ambiente de integración
Los SDKs ya incluyen esos códigos de comercio y llaves secretas que funcionan en el ambiente de integración, por lo que puedes obtener rápidamente una configuración lista para hacer tus primeras pruebas en dicho ambiente:
// El SDK apunta por defecto al ambiente de pruebas, no es necesario configurar lo siguiente
WebpayPlus.Transaction.setCommerceCode(597055555532);
WebpayPlus.Transaction.setApiKey('579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C');
WebpayPlus.Transaction.setIntegrationType(IntegrationType.TEST);
// El SDK apunta por defecto al ambiente de pruebas, no es necesario configurar lo siguiente
Transbank\Webpay\WebpayPlus::setCommerceCode('597055555532');
Transbank\Webpay\WebpayPlus::setApiKey('579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C');
Transbank\Webpay\WebpayPlus::setIntegrationType('TEST');
// El SDK apunta por defecto al ambiente de pruebas, no es necesario configurar lo siguiente
WebpayPlus.Transaction.CommerceCode = 597055555532;
WebpayPlus.Transaction.ApiKey = "579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C";
WebpayPlus.Transaction.IntegrationType = WebpayIntegrationType.Test;
# El SDK apunta por defecto al ambiente de pruebas, no es necesario configurar lo siguiente
Transbank::Webpay::WebpayPlus::Base.commerce_code = 597055555532;
Transbank::Webpay::WebpayPlus::Base.api_key = "579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C";
Transbank::Webpay::WebpayPlus::Base.integration_type = "TEST";
# El SDK apunta por defecto al ambiente de pruebas, no es necesario configurar lo siguiente
transbank.webpay.webpay_plus.webpay_plus_default_commerce_code = 597055555532
transbank.webpay.webpay_plus.default_api_key = "579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C"
transbank.webpay.webpay_plus.default_integration_type = IntegrationType.TEST
Tbk-Api-Key-Id: 597055555532
Tbk-Api-Key-Secret: 579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C
Webpay Plus
Una transacción de autorización normal (o transacción normal), corresponde a una solicitud de autorización financiera de un pago con tarjetas de crédito o débito, en donde quién realiza el pago ingresa al sitio del comercio, selecciona productos o servicio, y el ingreso asociado a los datos de la tarjeta de crédito, débito o prepago lo realiza en forma segura en Webpay.
Flujo en caso de éxito y abortar un pago
Revisa la documentación de Webpay plus para revisar los diferentes flujos de pago posibles.
Crear una transacción Webpay Plus
Puedes revisar más detalles de esta operación en su documentación
Permite inicializar una transacción en Webpay. Como respuesta a la invocación se genera un token que representa en forma única una transacción.
Para crear una transacción basta llamar al método Transaction.create()
import cl.transbank.webpay.webpayplus.WebpayPlus;
import cl.transbank.webpay.webpayplus.model.CreateWebpayPlusTransactionResponse;
final WebpayPlusTransactionCreateResponse response = WebpayPlus.Transaction.create(
buyOrder, sessionId, amount, returnUrl
);
use Transbank\Webpay\WebpayPlus\Transaction;
$response = Transaction::create($buy_order, $session_id, $amount, $return_url);
using Transbank.Webpay.WebpayPlus;
var response = Transaction.Create(buyOrder, sessionId, amount, returnUrl);
response = Transbank::Webpay::WebpayPlus::Transaction::create(
buy_order: buy_order,
session_id: session_id,
amount: amount,
return_url: return_url
)
response = transbank.webpay.webpay_plus.create(buy_order, session_id, amount, return_url)
POST /rswebpaytransaction/api/webpay/v1.0/transactions
Tbk-Api-Key-Id: 597055555532
Tbk-Api-Key-Secret: 579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C
Content-Type: application/json
{
"buy_order": "ordenCompra12345678",
"session_id": "sesion1234557545",
"amount": 10000,
"return_url": "http://www.comercio.cl/webpay/retorno"
}
Parámetros Transaction.create
Nombre tipo |
Descripción |
---|---|
buy_order String |
Orden de compra de la tienda. Este número debe ser único para cada transacción. Largo máximo: 26. La orden de compra puede tener: Números, letras, mayúsculas y minúsculas, y los signos |_=&%.,~:/?[[email protected]()>- |
session_id String |
Identificador de sesión, uso interno de comercio, este valor es devuelto al final de la transacción. Largo máximo: 61 |
amount Decimal |
Monto de la transacción. Máximo 2 decimales para USD. Largo máximo: 17 |
return_url String |
URL del comercio, a la cual Webpay redireccionará posterior al proceso de autorización. Largo máximo: 256 |
Respuesta Transaction.create
response.getUrl();
response.getToken();
$response.getUrl();
$response.getToken();
response.Url;
response.Token;
response.url
response.token
response.url
response.token
200 OK
Content-Type: application/json
{
"token": "e9d555262db0f989e49d724b4db0b0af367cc415cde41f500a776550fc5fddd3",
"url": "https://webpay3gint.transbank.cl/webpayserver/initTransaction"
}
Nombre tipo |
Descripción |
---|---|
token String |
Token de la transacción. Largo: 64. |
url String |
URL de formulario de pago Webpay. Largo máximo: 255. |
Confirmar una transacción Webpay Plus
Puedes revisar más detalles de esta operación en su documentación
Permite confirmar y obtener el resultado de la transacción una vez que Webpay ha resuelto su autorización financiera.
Cuando el comercio retoma el control mediante return_url
debes confirmar y obtener
el resultado de una transacción usando el método Transaction.commit()
.
final CreateWebpayPlusTransactionResponse response = WebpayPlus.Transaction.commit(token);
use Transbank\Webpay\WebpayPlus\Transaction;
$response = Transaction::commit($token);
using Transbank.Webpay.WebpayPlus;
var response = Transaction.Commit(token);
response = Transbank::Webpay::WebpayPlus::Transaction::commit(token: @token)
response = transbank.webpay.webpay_plus.transaction.commit(token)
PUT /rswebpaytransaction/api/webpay/v1.0/transactions/{token}
Tbk-Api-Key-Id: 597055555532
Tbk-Api-Key-Secret: 579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C
Content-Type: application/json
Parámetros Transaction.commit
Nombre tipo |
Descripción |
---|---|
token String |
Token de la transacción. Largo: 64. (Se envía en la URL, no en el body) |
Respuesta Transaction.commit
response.getVci();
response.getAmount();
response.getStatus();
response.getBuyOrder();
response.getSessionId();
response.getCardDetail();
response.getAccountingDate();
response.getTransactionDate();
response.getAuthorizationCode();
response.getPaymentTypeCode();
response.getResponseCode();
response.getInstallmentsAmount();
response.getInstallmentsNumber();
response.getBalance();
$response->getVci();
$response->getAmount();
$response->getStatus();
$response->getBuyOrder();
$response->getSessionId();
$response->getCardDetail();
$response->getAccountingDate();
$response->getTransactionDate();
$response->getAuthorizationCode();
$response->getPaymentTypeCode();
$response->getResponseCode();
$response->getInstallmentsAmount();
$response->getInstallmentsNumber();
$response->getBalance();
response.Vci;
response.Amount;
response.Status;
response.BuyOrder;
response.SessionId;
response.CardDetail;
response.AccountingDate;
response.TransactionDate;
response.AuthorizationCode;
response.PaymentTypeCode;
response.ResponseCode;
response.InstallmentsAmount;
response.InstallmentsNumber;
response.Balance;
response.vci
response.amount
response.status
response.buy_order
response.session_id
response.card_detail
response.accounting_date
response.transaction_date
response.authorization_code
response.payment_type_code
response.response_code
response.installments_amount
response.installments_number
response.balance
response.vci
response.amount
response.status
response.buy_order
response.session_id
response.card_detail
response.accounting_date
response.transaction_date
response.authorization_code
response.payment_type_code
response.response_code
response.installments_amount
response.installments_number
response.balance
200 OK
Content-Type: application/json
{
"vci": "TSY",
"amount": 10000,
"status": "AUTHORIZED",
"buy_order": "ordenCompra12345678",
"session_id": "sesion1234557545",
"card_detail": {
"card_number": "6623"
},
"accounting_date": "0522",
"transaction_date": "2019-05-22T16:41:21.063Z",
"authorization_code": "1213",
"payment_type_code": "VN",
"response_code": 0,
"installments_number": 0
}
Nombre tipo |
Descripción |
---|---|
vci String |
Resultado de la autenticación del tarjetahabiente. Puede tomar el valor TSY (Autenticación exitosa), TSN (Autenticación fallida), TO (Tiempo máximo excedido para autenticación), ABO (Autenticación abortada por tarjetahabiente), U3 (Error interno en la autenticación), NP (No Participa, probablemente por ser una tarjeta extranjera que no participa en el programa 3DSecure), ACS2 (Autenticación fallida extranjera). Puede ser vacío si la transacción no se autenticó. Largo máximo: 3. Este campo es información adicional suplementaria al responseCode pero el comercio no debe validar este campo. Porque constantemente se agregan nuevos mecanismos de autenticación que se traducen en nuevos valores para este campo que no están necesariamente documentados. (En el caso de tarjetas internacionales que no proveen 3D-Secure, la decisión del comercio de aceptarlas o no se realiza a nivel de configuración del comercio en Transbank y debe ser conversada con el ejecutivo del comercio) |
amount Decimal |
Formato número entero para transacciones en peso y decimal para transacciones en dólares. Largo máximo: 17 |
status String |
Estado de la transacción (INITIALIZED, AUTHORIZED, REVERSED, FAILED, NULLIFIED, PARTIALLY_NULLIFIED, CAPTURED). Largo máximo: 64 |
buy_order String |
Orden de compra de la tienda indicado en Transaction.create() . Largo máximo: 26 |
session_id String |
Identificador de sesión, el mismo enviado originalmente por el comercio en Transaction.create() . Largo máximo: 61. |
card_detail carddetails |
Objeto que representa los datos de la tarjeta de crédito del tarjeta habiente. |
card_detail.card_number String |
4 últimos números de la tarjeta de crédito del tarjetahabiente. Solo para comercios autorizados por Transbank se envía el número completo. Largo máximo: 19. |
accounting_date String |
Fecha de la autorización. Largo: 4, formato MMDD |
transaction_date String |
Fecha y hora de la autorización. Largo: 6, formato: MMDDHHmm |
authorization_code String |
Código de autorización de la transacción Largo máximo: 6 |
payment_type_code String |
Tipo de pago de la transacción. VD = Venta Débito. VN = Venta Normal. VC = Venta en cuotas. SI = 3 cuotas sin interés. S2 = 2 cuotas sin interés. NC = N Cuotas sin interés VP = Venta Prepago. |
response_code String |
Código de respuesta de la autorización. Valores posibles: 0 = Transacción aprobada -1 = Rechazo de transacción - Reintente (Posible error en el ingreso de datos de la transacción) -2 = Rechazo de transacción (Se produjo fallo al procesar la transacción. Este mensaje de rechazo está relacionado a parámetros de la tarjeta y/o su cuenta asociada) -3 = Error en transacción (Interno Transbank) -4 = Rechazo emisor (Rechazada por parte del emisor) -5 = Rechazo - Posible Fraude (Transacción con riesgo de posible fraude) |
installments_amount Number |
Monto de las cuotas. Largo máximo: 17 |
installments_number Number |
Cantidad de cuotas. Largo máximo: 2 |
balance Number |
Monto restante para un detalle anulado. Largo máximo: 17 |
Obtener estado de una transacción Webpay Plus
Puedes revisar más detalles de esta operación en su documentación
Esta operación permite obtener el estado de la transacción en cualquier momento. En condiciones normales es probable que no se requiera ejecutar, pero en caso de ocurrir un error inesperado permite conocer el estado y tomar las acciones que correspondan.
Transaction.status()
final StatusWebpayPlusTransactionResponse response = WebpayPlus.Transaction.status(token);
use Transbank\Webpay\WebpayPlus\Transaction;
$response = Transaction::getStatus($token);
using Transbank.Webpay.WebpayPlus;
var response = Transaction.Status(token);
response = Transbank::Webpay::WebpayPlus::Transaction::status(token: @token)
response = transbank.webpay.webpay_plus.transaction.status(token)
GET /rswebpaytransaction/api/webpay/v1.0/transactions/{token}
Tbk-Api-Key-Id: 597055555532
Tbk-Api-Key-Secret: 579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C
Content-Type: application/json
Parámetros Transaction.status
Nombre tipo |
Descripción |
---|---|
token String |
Token de la transacción. Largo: 64. (Se envía en la URL, no en el body) |
Respuesta Transaction.status
response.getVci();
response.getAmount();
response.getStatus();
response.getBuyOrder();
response.getSessionId();
response.getCardDetail();
response.getAccountingDate();
response.getTransactionDate();
response.getAuthorizationCode();
response.getPaymentTypeCode();
response.getResponseCode();
response.getInstallmentsAmount();
response.getInstallmentsNumber();
response.getBalance();
$response->getVci();
$response->getAmount();
$response->getStatus();
$response->getBuyOrder();
$response->getSessionId();
$response->getCardDetail();
$response->getAccountingDate();
$response->getTransactionDate();
$response->getAuthorizationCode();
$response->getPaymentTypeCode();
$response->getResponseCode();
$response->getInstallmentsAmount();
$response->getInstallmentsNumber();
$response->getBalance();
response.Vci;
response.Amount;
response.Status;
response.BuyOrder;
response.SessionId;
response.CardDetail;
response.AccountingDate;
response.TransactionDate;
response.AuthorizationCode;
response.PaymentTypeCode;
response.ResponseCode;
response.InstallmentsAmount;
response.InstallmentsNumber;
response.Balance;
response.vci
response.amount
response.status
response.buy_order
response.session_id
response.card_detail
response.accounting_date
response.transaction_date
response.authorization_code
response.payment_type_code
response.response_code
response.installments_amount
response.installments_number
response.balance
response.vci
response.amount
response.status
response.buy_order
response.session_id
response.card_detail
response.accounting_date
response.transaction_date
response.authorization_code
response.payment_type_code
response.response_code
response.installments_amount
response.installments_number
response.balance
200 OK
Content-Type: application/json
{
"vci": "TSY",
"amount": 10000,
"status": "AUTHORIZED",
"buy_order": "ordenCompra12345678",
"session_id": "sesion1234557545",
"card_detail": {
"card_number": "6623"
},
"accounting_date": "0522",
"transaction_date": "2019-05-22T16:41:21.063Z",
"authorization_code": "1213",
"payment_type_code": "VN",
"response_code": 0,
"installments_number": 0
}
Nombre tipo |
Descripción |
---|---|
vci String |
Resultado de la autenticación del tarjetahabiente. Puede tomar el valor TSY (Autenticación exitosa), TSN (Autenticación fallida), TO (Tiempo máximo excedido para autenticación), ABO (Autenticación abortada por tarjetahabiente), U3 (Error interno en la autenticación), NP (No Participa, probablemente por ser una tarjeta extranjera que no participa en el programa 3DSecure), ACS2 (Autenticación fallida extranjera). Puede ser vacío si la transacción no se autenticó. Largo máximo: 3. Este campo es información adicional suplementaria al responseCode pero el comercio no debe validar este campo. Porque constantemente se agregan nuevos mecanismos de autenticación que se traducen en nuevos valores para este campo que no están necesariamente documentados. (En el caso de tarjetas internacionales que no proveen 3D-Secure, la decisión del comercio de aceptarlas o no se realiza a nivel de configuración del comercio en Transbank y debe ser conversada con el ejecutivo del comercio) |
amount Formato número entero para transacciones en peso y decimal para transacciones en dólares. |
Monto de la transacción. Largo máximo: 17 |
status String |
Estado de la transacción (INITIALIZED, AUTHORIZED, REVERSED, FAILED, NULLIFIED, PARTIALLY_NULLIFIED, CAPTURED). Largo máximo: 64 |
buy_order String |
Orden de compra de la tienda indicado en Transaction.create() . Largo máximo: 26 |
session_id String |
Identificador de sesión, el mismo enviado originalmente por el comercio en Transaction.create() . Largo máximo: 61. |
card_detail carddetails |
Objeto que representa los datos de la tarjeta de crédito del tarjeta habiente. |
card_detail.card_number String |
4 últimos números de la tarjeta de crédito del tarjetahabiente. Solo para comercios autorizados por Transbank se envía el número completo. Largo máximo: 19. |
accounting_date String |
Fecha de la autorización. Largo: 4, formato MMDD |
transaction_date String |
Fecha y hora de la autorización. Largo: 6, formato: MMDDHHmm |
authorization_code String |
Código de autorización de la transacción Largo máximo: 6 |
payment_type_code String |
Tipo de pago de la transacción. VD = Venta Débito. VN = Venta Normal. VC = Venta en cuotas. SI = 3 cuotas sin interés. S2 = 2 cuotas sin interés. NC = N Cuotas sin interés VP = Venta Prepago. |
response_code String |
Código de respuesta de la autorización. Valores posibles: 0 = Transacción aprobada -1 = Rechazo de transacción - Reintente (Posible error en el ingreso de datos de la transacción) -2 = Rechazo de transacción (Se produjo fallo al procesar la transacción. Este mensaje de rechazo está relacionado a parámetros de la tarjeta y/o su cuenta asociada) -3 = Error en transacción (Interno Transbank) -4 = Rechazo emisor (Rechazada por parte del emisor) -5 = Rechazo - Posible Fraude (Transacción con riesgo de posible fraude) |
installments_amount Number |
Monto de las cuotas. Largo máximo: 17 |
installments_number Number |
Cantidad de cuotas. Largo máximo: 2 |
balance Number |
Monto restante para un detalle anulado. Largo máximo: 17 |
Reversar o Anular un pago Webpay Plus
Puedes revisar más detalles de esta operación en su documentación
Para anular una transacción se debe invocar al método Transaction.refund()
.
Transaction.refund()
Los SDKs permiten indicar opcionalmente el código de comercio de la transacción a anular, para soportar la anulación en comercios Webpay Plus Mall. En comercios Webpay Plus, no es necesario especificar el código de comercio pues se usa el indicado en la configuración.
final RefundWebpayPlusTransactionResponse response = WebpayPlus.Transaction.refund(token, amount);
use Transbank\Webpay\WebpayPlus\Transaction;
$response = Transaction::refund($token, $amount);
using Transbank.Webpay.WebpayPlus;
var response = Transaction.Refund(token, amount);
response = Transbank::Webpay::WebpayPlus::Transaction::refund(token: @token, amount: @amount)
response = Transbank.webpay.webpay_plus.refund(token, amount)
POST /rswebpaytransaction/api/webpay/v1.0/transactions/{token}/refunds
Tbk-Api-Key-Id: 597055555532
Tbk-Api-Key-Secret: 579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C
Content-Type: application/json
{
"amount": 1000
}
Parámetros Transaction.refund
Nombre tipo |
Descripción |
---|---|
token String |
Token de la transacción. Largo: 64. (Se envía en la URL, no en el body) |
amount Formato número entero para transacciones en peso. Sólo en caso de dólar acepta dos decimales. |
Monto que se desea anular o reversar de la transacción. Largo máximo: 17. |
Respuesta Transaction.refund
response.getAuthorizationCode();
response.getAuthorizationDate();
response.getBalance();
response.getNullifiedAmount();
response.getResponseCode();
response.getType();
$response->getAuthorizationCode();
$response->getAuthorizationDate();
$response->getBalance();
$response->getNullifiedAmount();
$response->getResponseCode();
$response->getType();
response.AuthorizationCode;
response.AuthorizationDate;
response.Balance;
response.NullifiedAmount;
response.ResponseCode;
response.Type;
response.authorization_code;
response.authorization_date;
response.balance;
response.nullified_amount;
response.response_code;
response.type;
response.authorization_code
response.authorization_date
response.balance
response.nullified_amount
response.response_code
response.type
200 OK
Content-Type: application/json
{
"type": "NULLIFIED",
"authorization_code": "123456",
"authorization_date": "2019-03-20T20:18:20Z",
"nullified_amount": 1000.00,
"balance": 0.00,
"response_code": 0
}
Nombre tipo |
Descripción |
---|---|
type String |
Tipo de reembolso (REVERSED o NULLIFIED). Si es REVERSED no se devolverán datos de la transacción (authorization code, etc). Largo máximo: 10 |
authorization_code String |
(Solo si es NULLIFIED) Código de autorización de la anulación. Largo máximo: 6 |
authorization_date String |
(Solo si es NULLIFIED) Fecha y hora de la autorización. |
balance Decimal |
(Solo si es NULLIFIED) Saldo actualizado de la transacción (considera la venta menos el monto anulado). Largo máximo: 17 |
nullified_amount Decimal |
(Solo si es NULLIFIED) Monto anulado. Largo máximo: 17 |
response_code Number |
(Solo si es NULLIFIED) Código de resultado de la reversa/anulacion. Si es exitoso es 0, de lo contrario la reversa/anulación no fue realizada Largo Máximo: 2 |
En caso de error pueden aparecer los siguientes códigos de error comunes para el método Transaction.refund()
:
Código | Descripción |
---|---|
304 | Validación de campos de entrada nulos |
245 | Código de comercio no existe |
22 | El comercio no se encuentra activo |
316 | El comercio indicado no corresponde al certificado o no es hijo del comercio MALL en caso de transacciones MALL |
308 | Operación no permitida |
274 | Transacción no encontrada |
16 | La transacción no permite anulación |
292 | La transacción no está autorizada |
284 | Periodo de anulación excedido |
310 | Transacción anulada previamente |
311 | Monto a anular excede el saldo disponible para anular |
312 | Error genérico para anulaciones |
315 | Error del autorizador |
53 | La transacción no permite anulación parcial de transacciones con cuotas |
Capturar una transacción Webpay Plus
Puedes revisar más detalles de esta operación en su documentación
Permite solicitar a Webpay la captura diferida de una transacción con autorización y sin captura simultánea.
Transaction.capture()
final CaptureWebpayPlusTransactionResponse response = WebpayPlus.DeferredTransaction.capture(token, buyOrder, authorizationCode, amount);
use Transbank\Webpay\WebpayPlus;
$response = Transaction::capture($token, $buyOrder, $authCode, $amount);
var response = DeferredTransaction.Capture(token, buyOrder, authorizationCode, captureAmount);
response = Transbank::Webpay::WebpayPlus::DeferredTransaction::capture(
token: @token,
buy_order: @buy_order,
authorization_code: @auth_code,
capture_amount: @amount
)
response = DeferredTransaction.capture(
token=token, buy_order=buy_order, authorization_code=authorization_code, capture_amount=amount
)
PUT /rswebpaytransaction/api/webpay/v1.0/transactions/{token}/capture
Tbk-Api-Key-Id: 597055555531
Tbk-Api-Key-Secret: 579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C
Content-Type: application/json
{
"commerce_code": "597055555531",
"buy_order": "415034240",
"authorization_code": "12345",
"capture_amount": 1000
}
Parámetros Transaction.capture
Nombre tipo |
Descripción |
---|---|
token String |
Token de la transacción. Largo: 64. (Se envía en la URL, no en el body) |
commerce_code Number |
(Opcional, solo usar en caso Mall) Tienda hija que realizó la transacción. Largo: 12. |
buy_order String |
Orden de compra de la transacción que se requiere capturar. Largo máximo: 26. |
authorization_code String |
Código de autorización de la transacción que se requiere capturar Largo máximo: 6. |
capture_amount Decimal |
Monto que se desea capturar. Largo máximo: 17. |
Respuesta Transaction.capture
response.getAuthorizationCode();
response.getAuthorizationDate();
response.getCapturedAmount();
response.getResponseCode();
$response->getAuthorizationCode();
$response->getAuthorizationDate();
$response->getCapturedAmount();
$response->getResponseCode();
response.AuthorizationCode;
response.AuthorizationDate;
response.CapturedAmount;
response.ResponseCode;
response.authorization_code
response.authorization_date
response.captured_amount
response.response_code
response.authorization_code
response.authorization_date
response.captured_amount
response.response_code
200 OK
Content-Type: application/json
{
"token": "e074d38c628122c63e5c0986368ece22974d6fee1440617d85873b7b4efa48a3",
"authorization_code": "123456",
"authorization_date": "2019-03-20T20:18:20Z",
"captured_amount": 1000,
"response_code": 0
}
Nombre tipo |
Descripción |
---|---|
token String |
Token de la transacción. Largo máximo: 64 |
authorization_code String |
Código de autorización de la captura diferida. Largo máximo: 6 |
authorization_date String |
Fecha y hora de la autorización. |
captured_amount Decimal |
Monto capturado. Largo máximo: 6 |
response_code Number |
Código de resultado de la captura. Si es exitoso es 0,de lo contrario la captura no fue realizada. Largo máximo: 2 |
En caso de error pueden aparecer los siguientes códigos exclusivos del método
Transaction.capture()
:
Código | Descripción |
---|---|
304 | Validación de campos de entrada nulos |
245 | Código de comercio no existe |
22 | El comercio no se encuentra activo |
316 | El comercio indicado no corresponde al certificado o no es hijo del comercio Mall en caso de transacciones MALL |
308 | Operación no permitida |
274 | Transacción no encontrada |
16 | La transacción no es de captura diferida |
292 | La transacción no está autorizada |
284 | Periodo de captura excedido |
310 | Transacción reversada previamente |
309 | Transacción capturada previamente |
311 | Monto a capturar excede el monto autorizado |
315 | Error del autorizador |
Webpay Plus Mall
Una transacción Mall Normal corresponde a una solicitud de autorización financiera de un conjunto de pagos con tarjetas de crédito o débito, en donde quién realiza el pago ingresa al sitio del comercio, selecciona productos o servicios, y el ingreso asociado a los datos de la tarjeta de crédito o débito lo realiza una única vez en forma segura en Webpay para el conjunto de pagos. Cada pago tendrá su propio resultado, autorizado o rechazado.
Revisa más detalles sobre esta modalidad en la documentación
Crear una transacción Webpay Plus Mall
Puedes revisar más detalles de esta operación en su documentación
Para crear una transacción basta llamar al método Transaction.create()
Transaction.create() Mall
CreateMallTransactionDetails transactionDetails = CreateMallTransactionDetails.build()
.add(amountMallOne, commerceCodeMallOne, buyOrderMallOne)
.add(amountMallTwo, commerceCodeMallTwo, buyOrderMallTwo);
final CreateWebpayPlusMallTransactionResponse response = WebpayPlus.MallTransaction.create(buyOrder, sessionId, returnUrl, transactionDetails);
use Transbank\Webpay\WebpayPlus;
use Transbank\Webpay\WebpayPlus\Transaction;
WebpayPlus::configureMallForTesting();
$transaction_details = [
[
"amount" => 10000,
"commerce_code" => 597055555536,
"buy_order" => "ordenCompraDetalle1234"
],
[
"amount" => 12000,
"commerce_code" => 597055555537,
"buy_order" => "ordenCompraDetalle4321"
],
];
$response = Transaction::createMall($buy_order, $session_id, $return_url, $transaction_details);
using Transbank.Webpay.WebpayPlus;
var transactionDetails = new List<TransactionDetail>();
transactions.Add(new TransactionDetail(
amountMallOne,
commerceCodeMallOne,
buyOrderMallOne
));
transactions.Add(new TransactionDetail(
amountMallTwo,
comerceCodeMallTwo,
buyOrderMallTwo
));
var result = MallTransaction.Create(buyOrder, sessionId, returnUrl, transactionDetails);
transaction_details = [
{
amount: 10000,
commerce_code: 597055555536,
buy_order: "ordenCompraDetalle1234"
},
{
amount: 12000,
commerce_code: 597055555537,
buy_order: "ordenCompraDetalle4321"
},
]
response = Transbank::Webpay::WebpayPlus::MallTransaction::create(
buy_order: buy_order,
session_id: session_id,
return_url: return_url,
details: transaction_details
)
transaction_details = MallTransactionCreateDetails(
amount_child_1, commerce_code_child_1, buy_order_child_1
).add(
amount_child_2, commerce_code_child_2, buy_order_child_2
)
response = MallTransaction.create(
buy_order=buy_order,
session_id=session_id,
return_url=return_url,
details = transaction_details,
)
POST /rswebpaytransaction/api/webpay/v1.0/transactions
Tbk-Api-Key-Id: 597055555535
Tbk-Api-Key-Secret: 579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C
Content-Type: application/json
{
"buy_order": "ordenCompra12345678",
"session_id": "sesion1234557545",
"return_url": "http://www.comercio.cl/webpay/retorno",
"details": [
{
"amount": 10000,
"commerce_code": 597055555536,
"buy_order": "ordenCompraDetalle1234"
},
{
"amount": 12000,
"commerce_code": 597055555537,
"buy_order": "ordenCompraDetalle4321"
},
]
}
Parámetros Transaction.create Mall
Nombre tipo |
Descripción |
---|---|
buy_order String |
Es el código único de la orden de compra generada por el comercio mall. |
session_id String |
Identificador de sesión, uso interno de comercio, este valor es devuelto al final de la transacción. Largo máximo: 61 |
return_url String |
URL del comercio, a la cual Webpay redireccionará posterior al proceso de autorización Largo máximo: 256. |
details Array |
Lista de objetos, uno por cada tienda diferente del mall que participa en la transacción. |
details [].amount Decimal |
Monto de la transacción de una tienda del mall. Máximo 2 decimales para USD. Largo máximo: 10. |
details [].commerce_code String |
Código comercio asignado por Transbank para la tienda perteneciente al mall a la cual corresponde esta transacción. Largo: 12. |
details [].buy_order String |
Orden de compra de la tienda del mall. Este número debe ser único para cada transacción. Largo máximo: 26. La orden de compra puede tener: Números, letras, mayúsculas y minúsculas, y los signos |_=&%.,~:/?[[email protected]()>- . |
Respuesta Transaction.create() Mall
response.getToken();
response.getUrl();
$response->getToken();
$response->getUrl();
response.Token;
response.Url;
response.token
response.url
response.token
response.url
200 OK
Content-Type: application/json
{
"token": "e9d555262db0f989e49d724b4db0b0af367cc415cde41f500a776550fc5fddd3",
"url": "https://webpay3gint.transbank.cl/webpayserver/initTransaction"
}
Nombre tipo |
Descripción |
---|---|
token String |
Token de la transacción. Largo: 64. |
url String |
URL de formulario de pago Webpay. Largo máximo: 256. |
Confirmar una transacción Webpay Plus Mall
Puedes revisar más detalles de esta operación en su documentación
Permite confirmar una tranascción y obtener el resultado de la transacción una vez que Webpay ha resueltosu autorización financiera.
Transaction.commit() Mall
final CommitWebpayPlusMallTransactionResponse response = WebpayPlus.MallTransaction.commit(token);
use Transbank\Webpay\WebpayPlus\Transaction;
$response = Transaction::commitMall($token);
using Transbank.Webpay.WebpayPlus;
var response = MallTransaction.commit(token);
response = MallTransaction.commit(token)
response = MallTransaction.commit(token)
PUT /rswebpaytransaction/api/webpay/v1.0/transactions/{token}
Tbk-Api-Key-Id: 597055555535
Tbk-Api-Key-Secret: 579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C
Content-Type: application/json
Parámetros Transaction.commit Mall
Nombre tipo |
Descripción |
---|---|
token String |
Token de la transacción. Largo: 64. (Se envía en la URL, no en el body) |
Respuesta Transaction.commit Mall
response.getAccountingDate();
response.getBuyOrder();
final CardDetail cardDetail = response.getCardDetail();
cardDetail.getCardNumber();
response.getSessionId();
response.getTransactionDate();
response.getVci();
final List<Detail> details = response.getDetails();
for (Detail detail : details) {
detail.getAmount();
detail.getAuthorizationCode();
detail.getBuyOrder();
detail.getCommerceCode();
detail.getInstallmentsNumber();
detail.getPaymentTypeCode();
detail.getResponseCode();
detail.getStatus();
}
$response->getAccountingDate();
$response->getBuyOrder();
$card_detail = $response->getCardDetail();
$card_detail->getCardNumber();
$response->getSessionId();
$response->getTransactionDate();
$response->getVci();
$details = $response->getDetails();
foreach($details as $detail){
$detail->getAmount();
$detail->getAuthorizationCode();
$detail->getBuyOrder();
$detail->getCommerceCode();
$detail->getInstallmentsNumber();
$detail->getPaymentTypeCode();
$detail->getResponseCode();
$detail->getStatus();
}
response.AccountingDate;
response.BuyOrder;
var cardDetail = response.CardDetail;
cardDetail.CardNumber;
response.SessionId;
response.TransactionDate;
response.Vci;
var details = response.Details;
foreach (var detail in details) {
detail.Amount;
detail.AuthorizationCode;
detail.BuyOrder;
detail.CommerceCode;
detail.InstallmentsNumber;
detail.PaymentTypeCode;
detail.ResponseCode;
detail.Status;
}
response.accounting_date
response.buy_order
card_detail = response.card_detail
card_detail.card_number
response.session_id
response.transaction_date
response.vci
details = response.details
details.each do |detail|
detail.amount
detail.authorization_code
detail.buy_order
detail.commerce_code
detail.installments_number
detail.payment_type_code
detail.response_code
detail.status
end
response.accounting_date
response.buy_order
card_detail = response.card_detail
card_detail.card_number
response.session_id
response.transaction_date
response.vci
details = response.details
for detail in details:
detail.amount
detail.authorization_code
detail.buy_order
detail.commerce_code
detail.installments_number
detail.payment_type_code
detail.response_code
detail.status
200 OK
Content-Type: application/json
{
"buy_order": "415034240",
"card_detail": {
"card_number": "6623"
},
"accounting_date": "0321",
"transaction_date": "2019-03-21T15:43:48.523Z",
"details": [
{
"amount": 10000,
"status": "AUTHORIZED",
"authorization_code": "1213",
"payment_type_code": "VN",
"response_code": 0,
"installments_number": 0,
"commerce_code": "597055555536",
"buy_order": "505479072",
"status": "AUTHORIZED"
}]
}
Nombre tipo |
Descripción |
---|---|
buy_order String |
Orden de compra del mall. Largo máximo: 26 |
session_id String |
Identificador de sesión, el mismo enviado originalmente por el comercio en Transaction.create() . Largo máximo: 61. |
card_detail carddetails |
Objeto que representa los datos de la tarjeta de crédito del tarjeta habiente. |
card_detail.card_number String |
4 últimos números de la tarjeta de crédito del tarjetahabiente.Solo para comercios autorizados por Transbank se envía el número completo. Largo máximo: 16. |
accouting_date String |
Fecha de la autorización. Largo: 4, formato MMDD |
transaction_date String |
Fecha y hora de la autorización. Largo: 6, formato: MMDDHHmm |
vci String |
Resultado de la autenticación del tarjetahabiente. Puede tomar el valor TSY (Autenticación exitosa), TSN (Autenticación fallida), TO (Tiempo máximo excedido para autenticación), ABO (Autenticación abortada por tarjetahabiente), U3 (Error interno en la autenticación), NP (No Participa, probablemente por ser una tarjeta extranjera que no participa en el programa 3DSecure), ACS2 (Autenticación fallida extranjera). Puede ser vacío si la transacción no se autenticó. Largo máximo: 3. Este campo es información adicional suplementaria al responseCode pero el comercio no debe validar este campo. Porque constantemente se agregan nuevos mecanismos de autenticación que se traducen en nuevos valores para este campo que no están necesariamente documentados. (En el caso de tarjetas internacionales que no proveen 3D-Secure, la decisión del comercio de aceptarlas o no se realiza a nivel de configuración del comercio en Transbank y debe ser conversada con el ejecutivo del comercio) |
details Array |
Lista con resultado de cada una de las transacciones enviados en Transaction.create() . |
details [].authorization_code String |
Código de autorización de la transacción Largo máximo: 6 |
details [].payment_type_code String |
Tipo de pago de la transacción. VD = Venta Débito. VN = Venta Normal. VC = Venta en cuotas. SI = 3 cuotas sin interés. S2 = 2 cuotas sin interés. NC = N Cuotas sin interés VP = Venta Prepago. |
details [].response_code String |
Código de respuesta de la autorización. Valores posibles: 0 = Transacción aprobada -1 = Rechazo de transacción - Reintente (Posible error en el ingreso de datos de la transacción) -2 = Rechazo de transacción (Se produjo fallo al procesar la transacción. Este mensaje de rechazo está relacionado a parámetros de la tarjeta y/o su cuenta asociada) -3 = Error en transacción (Interno Transbank) -4 = Rechazo emisor (Rechazada por parte del emisor) -5 = Rechazo - Posible Fraude (Transacción con riesgo de posible fraude) |
details [].amount Formato número entero para transacciones en peso y decimal para transacciones en dólares. |
Monto de la transacción. Largo máximo: 10 |
details [].installments_amount Number |
Monto de cada cuota. Largo máximo: 17 |
details [].installments_number Number |
Cantidad de cuotas. Largo máximo: 2 |
details [].commerce_code String |
Código comercio de la tienda. Largo: 12 |
details [].buy_order String |
Orden de compra de la tienda. Largo máximo: 26 |
details [].status String |
Estado de la transacción (INITIALIZED, AUTHORIZED, REVERSED, FAILED, NULLIFIED, PARTIALLY_NULLIFIED, CAPTURED). Largo máximo: 26 |
balance Number |
Monto restante para un detalle anulado. Largo máximo: 17 |
Obtener estado de una transacción Webpay Plus Mall
Puedes revisar más detalles de esta operación en su documentación
Esta operación permite obtener el estado de la transacción en cualquier momento. En condiciones normales es probable que no se requiera ejecutar, pero en caso de ocurrir un error inesperado permite conocer el estado y tomar las acciones que correspondan.
Transaction.status() Mall
Obtiene resultado de transacción a partir de un token.
final StatusWebpayPlusMallTransactionResponse response = WebpayPlus.MallTransaction.status(token);
use Transbank\Webpay\WebpayPlus\Transaction;
$response = Transaction::getMallStatus($token);
using Transbank.Webpay.WebpayPlus;
var response = MallTransaction.status(token)
response = MallTransaction.status(token)
response = MallTransaction.status(token)
GET /rswebpaytransaction/api/webpay/v1.0/transactions/{token}
Tbk-Api-Key-Id: 597055555535
Tbk-Api-Key-Secret: 579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C
Content-Type: application/json
Parámetros Transaction.status Mall
Nombre tipo |
Descripción |
---|---|
token String |
Token de la transacción. Largo: 64. (Se envía en la URL, no en el body) |
Respuesta Transaction.status Mall
response.getAccountingDate();
response.getBuyOrder();
final CardDetail cardDetail = response.getCardDetail();
cardDetail.getCardNumber();
response.getSessionId();
response.getTransactionDate();
response.getVci();
final List<Detail> details = response.getDetails();
for (Detail detail : details) {
detail.getAmount();
detail.getAuthorizationCode();
detail.getBuyOrder();
detail.getCommerceCode();
detail.getInstallmentsNumber();
detail.getPaymentTypeCode();
detail.getResponseCode();
detail.getStatus();
}
$response->getAccountingDate();
$response->getBuyOrder();
$card_detail = $response->getCardDetail();
$card_detail->getCardNumber();
$response->getSessionId();
$response->getTransactionDate();
$response->getVci();
$details = $response->getDetails();
foreach($details as $detail){
$detail->getAmount();
$detail->getAuthorizationCode();
$detail->getBuyOrder();
$detail->getCommerceCode();
$detail->getInstallmentsNumber();
$detail->getPaymentTypeCode();
$detail->getResponseCode();
$detail->getStatus();
}
response.AccountingDate;
response.BuyOrder;
var cardDetail = response.CardDetail;
cardDetail.CardNumber;
response.SessionId;
response.TransactionDate;
response.Vci;
var details = response.Details;
foreach (var detail in details) {
detail.Amount;
detail.AuthorizationCode;
detail.BuyOrder;
detail.CommerceCode;
detail.InstallmentsNumber;
detail.PaymentTypeCode;
detail.ResponseCode;
detail.Status;
}
response.accounting_date
response.buy_order
card_detail = response.card_detail
card_detail.card_number
response.session_id
response.transaction_date
response.vci
details = response.details
details.each do |detail|
detail.amount
detail.authorization_code
detail.buy_order
detail.commerce_code
detail.installments_number
detail.payment_type_code
detail.response_code
detail.status
end
response.accounting_date
response.buy_order
card_detail = response.card_detail
card_detail.card_number
response.session_id
response.transaction_date
response.vci
details = response.details
for detail in details:
detail.amount
detail.authorization_code
detail.buy_order
detail.commerce_code
detail.installments_number
detail.payment_type_code
detail.response_code
detail.status
200 OK
Content-Type: application/json
{
"buy_order": "415034240",
"card_detail": {
"card_number": "6623"
},
"accounting_date": "0321",
"transaction_date": "2019-03-21T15:43:48.523Z",
"vci": "TSY",
"details": [
{
"amount": 10000,
"status": "AUTHORIZED",
"authorization_code": "1213",
"payment_type_code": "VN",
"response_code": 0,
"installments_number": 0,
"commerce_code": "597055555536",
"buy_order": "505479072",
"status": "AUTHORIZED"
}]
}
Nombre tipo |
Descripción |
---|---|
buy_order String |
Orden de compra del mall. Largo máximo: 26 |
session_id String |
Identificador de sesión, el mismo enviado originalmente por el comercio en Transaction.create() . Largo máximo: 61. |
card_detail carddetails |
Objeto que representa los datos de la tarjeta de crédito del tarjeta habiente. |
card_detail.card_number String |
4 últimos números de la tarjeta de crédito del tarjetahabiente.Solo para comercios autorizados por Transbank se envía el número completo. Largo máximo: 16. |
accouting_date String |
Fecha de la autorización. Largo: 4, formato MMDD |
transaction_date String |
Fecha y hora de la autorización. Largo: 6, formato: MMDDHHmm |
vci String |
Resultado de la autenticación del tarjetahabiente. Puede tomar el valor TSY (Autenticación exitosa), TSN (Autenticación fallida), TO (Tiempo máximo excedido para autenticación), ABO (Autenticación abortada por tarjetahabiente), U3 (Error interno en la autenticación), NP (No Participa, probablemente por ser una tarjeta extranjera que no participa en el programa 3DSecure), ACS2 (Autenticación fallida extranjera). Puede ser vacío si la transacción no se autenticó. Largo máximo: 3. Este campo es información adicional suplementaria al responseCode pero el comercio no debe validar este campo. Porque constantemente se agregan nuevos mecanismos de autenticación que se traducen en nuevos valores para este campo que no están necesariamente documentados. (En el caso de tarjetas internacionales que no proveen 3D-Secure, la decisión del comercio de aceptarlas o no se realiza a nivel de configuración del comercio en Transbank y debe ser conversada con el ejecutivo del comercio) |
details Array |
Lista con resultado de cada una de las transacciones enviados en Transaction.create() . |
details [].authorization_code String |
Código de autorización de la transacción Largo máximo: 6 |
details [].payment_type_code String |
Tipo de pago de la transacción. VD = Venta Débito. VN = Venta Normal. VC = Venta en cuotas. SI = 3 cuotas sin interés. S2 = 2 cuotas sin interés. NC = N Cuotas sin interés VP = Venta Prepago. |
details [].response_code String |
Código de respuesta de la autorización. Valores posibles: 0 = Transacción aprobada -1 = Rechazo de transacción - Reintente (Posible error en el ingreso de datos de la transacción) -2 = Rechazo de transacción (Se produjo fallo al procesar la transacción. Este mensaje de rechazo está relacionado a parámetros de la tarjeta y/o su cuenta asociada) -3 = Error en transacción (Interno Transbank) -4 = Rechazo emisor (Rechazada por parte del emisor) -5 = Rechazo - Posible Fraude (Transacción con riesgo de posible fraude) |
details [].amount Formato número entero para transacciones en peso y decimal para transacciones en dólares. |
Monto de la transacción. Largo máximo: 10 |
details [].installments_number Number |
Cantidad de cuotas. Largo máximo: 2 |
details [].installments_amount Number |
Monto de cada cuota. Largo máximo: 17 |
details [].commerce_code String |
Código comercio de la tienda. Largo: 12 |
details [].buy_order String |
Orden de compra de la tienda. Largo máximo: 26 |
details [].status String |
Estado de la transacción (INITIALIZED, AUTHORIZED, REVERSED, FAILED, NULLIFIED, PARTIALLY_NULLIFIED, CAPTURED). Largo máximo: 26 |
balance Number |
Monto restante para un detalle anulado. Largo máximo: 17 |
Reversar o Anular un pago Webpay Plus Mall
Puedes revisar más detalles de esta operación en su documentación
Este método permite a todo comercio habilitado reversar o anular una transacción que fue generada en Webpay Plus Mall.
Para anular una transacción se debe invocar al método Transaction.refund()
.
Transaction.refund() Mall
final RefundWebpayPlusMallTransactionResponse response = WebpayPlus.MallTransaction.refund(token, buyOrder, commerceCode, amount);
$response = Transaction::refundMall($token, $buy_order, $commerce_code, $amount);
var response = Transaction.refund(token, buyOrder, commerceCode, amount);
response = Transaction.refund(token, buy_order, commerce_code, amount)
response = Transaction.refund(token, buy_order, commerce_code, amount)
POST /rswebpaytransaction/api/webpay/v1.0/transactions/{token}/refunds
Tbk-Api-Key-Id: 597055555535
Tbk-Api-Key-Secret: 579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C
Content-Type: application/json
{
"commerce_code": "597055555536",
"buy_order": "ordenCompra12345678",
"amount": 1000
}
Parámetros Transaction.refund Mall
Nombre tipo |
Descripción |
---|---|
token String |
Token de la transacción. Largo: 64. (Se envía en la URL, no en el body) |
buy_order String |
Orden de compra de la transacción que se requiere anular. Largo máximo: 26. |
amount Formato número entero para transacciones en peso. Sólo en caso de dólar acepta dos decimales. |
Monto que se desea anular o reversar de la transacción. Largo máximo: 17. |
commerce_code Number |
Código de comercio de la tienda mall que realizó la transacción. Largo: 12. |
Respuesta Transaction.refund Mall
response.getAuthorizationCode();
response.getAuthorizationDate();
response.getBalance();
response.getNullifiedAmount();
response.getResponseCode();
response.getType();
$response->getAuthorizationCode();
$response->getAuthorizationDate();
$response->getBalance();
$response->getNullifiedAmount();
$response->getResponseCode();
$response->getType();
response.AuthorizationCode;
response.AuthorizationDate;
response.Balance;
response.NullifiedAmount;
response.ResponseCode;
response.Type;
response.authorization_code
response.authorization_date
response.balance
response.nullified_amount
response.response_code
response.type
response.authorization_code
response.authorization_date
response.balance
response.nullified_amount
response.response_code
response.type
200 OK
Content-Type: application/json
{
"type": "NULLIFIED",
"authorization_code": "123456",
"authorization_date": "2019-03-20T20:18:20Z",
"nullified_amount": 1000.00,
"balance": 0.00,
"response_code": 0
}
Nombre tipo |
Descripción |
---|---|
type String |
Tipo de reembolso (REVERSED o NULLIFIED). Si es REVERSED no se devolverán datos de la transacción (authorization code, etc). Largo máximo: 10 |
authorization_code String |
(Solo si es NULLIFIED) Código de autorización de la anulación. Largo máximo: 6 |
authorization_date String |
(Solo si es NULLIFIED) Fecha y hora de la autorización. |
balance Decimal |
(Solo si es NULLIFIED) Saldo actualizado de la transacción (considera la venta menos el monto anulado). Largo máximo: 17 |
nullified_amount Decimal |
(Solo si es NULLIFIED) Monto anulado. Largo máximo: 17 |
response_code Number |
(Solo si es NULLIFIED) Código de resultado de la reversa/anulación. Si es exitoso es 0, de lo contrario la reversa/anulación no fue realizada. Largo máximo: 2 |
En caso de error pueden aparecer los siguientes códigos de error comunes para el método Transaction.refund()
:
Código | Descripción |
---|---|
304 | Validación de campos de entrada nulos |
245 | Código de comercio no existe |
22 | El comercio no se encuentra activo |
316 | El comercio indicado no corresponde al certificado o no es hijo del comercio MALL en caso de transacciones MALL |
308 | Operación no permitida |
274 | Transacción no encontrada |
16 | La transacción no permite anulación |
292 | La transacción no está autorizada |
284 | Periodo de anulación excedido |
310 | Transacción anulada previamente |
311 | Monto a anular excede el saldo disponible para anular |
312 | Error genérico para anulaciones |
315 | Error del autorizador |
53 | La transacción no permite anulación parcial de transacciones con cuotas |
Capturar una transacción Webpay Plus Mall
Puedes revisar más detalles de esta operación en su documentación
Permite solicitar a Webpay la captura diferida de una transacción con autorización y sin captura simultánea.
Transaction.capture()
final WebpayPlusMallTransactionCaptureResponse response = WebpayPlus.MallDeferredTransaction.capture(token, childCommerceCode, buyOrder, authorizationCode, amount);
use Transbank\Webpay\WebpayPlus;
$response = Transaction::captureMall($childCommerceCode, $token, $buyOrder, $authorizationCode, $captureAmount);
var response = Transbank.Webpay.WebpayPlus.MallDeferredTransaction.Capture(token, childCommerceCode, buyOrder, authorizationCode, captureAmount);
response = Transbank::Webpay::WebpayPlus::MallDeferredTransaction::capture(
token: @token,
child_commerce_code: @child_commerce_code,
buy_order: @buy_order,
authorization_code: @auth_code,
capture_amount: @amount
)
response = MallDeferredTransaction.capture(
token=token, capture_amount=amount, commerce_code=commerce_code,
buy_order=buy_order, authorization_code=authorization_code
)
PUT /rswebpaytransaction/api/webpay/v1.0/transactions/{token}/capture
Tbk-Api-Key-Id: 597055555531
Tbk-Api-Key-Secret: 579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C
Content-Type: application/json
{
"commerce_code": "597055555531",
"buy_order": "415034240",
"authorization_code": "12345",
"capture_amount": 1000
}
Parámetros Transaction.capture
Nombre tipo |
Descripción |
---|---|
token String |
Token de la transacción. Largo: 64. (Se envía en la URL, no en el body) |
commerce_code Number |
(Opcional, solo usar en caso Mall) Tienda hija que realizó la transacción. Largo: 12. |
buy_order String |
Orden de compra de la transacción que se requiere capturar. Largo máximo: 26. |
authorization_code String |
Código de autorización de la transacción que se requiere capturar Largo máximo: 6. |
capture_amount Decimal |
Monto que se desea capturar. Largo máximo: 17. |
Respuesta Transaction.capture
response.getAuthorizationCode();
response.getAuthorizationDate();
response.getCapturedAmount();
response.getResponseCode();
$response->getAuthorizationCode();
$response->getAuthorizationDate();
$response->getCapturedAmount();
$response->getResponseCode();
response.AuthorizationCode;
response.AuthorizationDate;
response.CapturedAmount;
response.ResponseCode;
response.authorization_code
response.authorization_date
response.captured_amount
response.response_code
response.authorization_code
response.authorization_date
response.captured_amount
response.response_code
200 OK
Content-Type: application/json
{
"token": "e074d38c628122c63e5c0986368ece22974d6fee1440617d85873b7b4efa48a3",
"authorization_code": "123456",
"authorization_date": "2019-03-20T20:18:20Z",
"captured_amount": 1000,
"response_code": 0
}
Nombre tipo |
Descripción |
---|---|
token String |
Token de la transacción. Largo máximo: 64 |
authorization_code String |
Código de autorización de la captura diferida. Largo máximo: 6 |
authorization_date String |
Fecha y hora de la autorización. |
captured_amount Decimal |
Monto capturado. Largo máximo: 6 |
response_code Number |
Código de resultado de la captura. Si es exitoso es 0,de lo contrario la captura no fue realizada. Largo máximo: 2 |
En caso de error pueden aparecer los siguientes códigos exclusivos del método
Transaction.capture()
:
Código | Descripción |
---|---|
304 | Validación de campos de entrada nulos |
245 | Código de comercio no existe |
22 | El comercio no se encuentra activo |
316 | El comercio indicado no corresponde al certificado o no es hijo del comercio Mall en caso de transacciones MALL |
308 | Operación no permitida |
274 | Transacción no encontrada |
16 | La transacción no es de captura diferida |
292 | La transacción no está autorizada |
284 | Periodo de captura excedido |
310 | Transacción reversada previamente |
309 | Transacción capturada previamente |
311 | Monto a capturar excede el monto autorizado |
315 | Error del autorizador |
Oneclick Mall
Revisa la documentación de Oneclick Mall para tener más información sobre como funciona el producto y tener más detalles sobre como realizar tu integración.
Crear una inscripción Oneclick Mall
Puedes revisar más detalles de esta operación en su documentación
Permite comenzar con el proceso de inscripción.
OneclickMallInscriptionStartResponse response = OneclickMall.Inscription.start(userName, email, responseUrl);
use Transbank\Webpay\Oneclick;
$response = MallInscription::start($userName, $email, $responseUrl);
using Transbank.Webpay.Oneclick;
var response = Inscription.Start(userName, email, returnUrl);
response = Transbank::Webpay::Oneclick::MallInscription::start(
user_name: user_name,
email: email,
response_url: response_url
)
MallInscription.start(
user_name=user_name,
email=email,
response_url=response_url)
POST /rswebpaytransaction/api/oneclick/v1.0/inscriptions
Tbk-Api-Key-Id: 597055555541
Tbk-Api-Key-Secret: 579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C
Content-Type: application/json
{
"username": "juanperez",
"email": "[email protected]",
"response_url": "http://www.comercio.cl/return_inscription"
}
Parámetros inscripción Oneclick Mall
Nombre tipo |
Descripción |
---|---|
username String |
Identificador del usuario registrado en el comercio. Largo máximo: 40. |
email String |
Email del usuario registrado en el comercio. Largo máximo: 100. |
response_url String |
URL del comercio a la cual Webpay redireccionará posterior al proceso de inscripción. Largo máximo: 255. |
Respuesta inscripción Oneclick Mall
response.getToken();
response.getUrlWebpay();
$response->getToken();
$response->getUrlWebpay();
response.Token;
response.UrlWebpay
response.token
response.url_webpay
response.token
response.url_webpay
200 OK
Content-Type: application/json
{
"token": "e128a9c24c0a3cbc09223973327b97c8c474f6b74be509196cce4caf162a016a",
"url_webpay": "https://webpay3g.transbank.cl/webpayserver/bp_inscription.cgi"
}
Nombre tipo |
Descripción |
---|---|
token String |
Identificador, único, del proceso de inscripción. Largo: 64. |
url_webpay String |
URL de Webpay para iniciar la inscripción. Largo: 255. |
Confirmar una inscripción Oneclick Mall
Puedes revisar más detalles de esta operación en su documentación
Permite finalizar el proceso de inscripción obteniendo el usuario tbk.
final OneclickMallInscriptionFinishResponse response = OneclickMall.Inscription.finish(token);
use Transbank\Webpay\Oneclick;
$response = MallInscription::finish($token);
using Transbank.Webpay.Oneclick;
var response = Inscription.Finish(token);
response = Transbank::Webpay::Oneclick::MallInscription::finish(token: token)
response = MallInscription.finish(token=token)
PUT /rswebpaytransaction/api/oneclick/v1.0/inscriptions/{token}
Tbk-Api-Key-Id: 597055555541
Tbk-Api-Key-Secret: 579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C
Content-Type: application/json
Parámetros Confirmar inscripción Oneclick Mall
Nombre tipo |
Descripción |
---|---|
token String |
Identificador del proceso de inscripción. Es entregado por Webpay en la respuesta del método Inscription.start() . (See envía en la URL, no en el body) |
Respuesta Confirmar inscripción Oneclick Mall
response.getAuthorizationCode();
response.getCardType();
response.getCardNumber();
response.getResponseCode();
response.getTbkUser();
$response->getAuthorizationCode();
$response->getCardType();
$response->getCardNumber();
$response->getResponseCode();
$response->getTbkUser();
response.ResponseCode;
response.TransbankUser;
response.AuthorizationCode;
response.CardType;
response.CardNumber;
response.response_code
response.transbank_user
response.authorization_code
response.card_type
response.card_number
response.response_code
response.transbank_user
response.authorization_code
response.card_type
response.card_number
200 OK
Content-Type: application/json
{
"response_code": 0,
"tbk_user": "b6bd6ba3-e718-4107-9386-d2b099a8dd42",
"authorization_code": "123456",
"card_type": "Visa",
"card_number": "XXXXXXXXXXXX6623"
}
Nombre tipo |
Descripción |
---|---|
response_code Number |
Código de respuesta de la autorización. Largo: 2. Valores posibles: 0 = Transacción aprobada -1 = Rechazo de transacción - Reintente (Posible error en el ingreso de datos de la transacción) -2 = Rechazo de transacción (Se produjo fallo al procesar la transacción. Este mensaje de rechazo está relacionado a parámetros de la tarjeta y/o su cuenta asociada) -3 = Error en transacción (Interno Transbank) -4 = Rechazo emisor (Rechazada por parte del emisor) -5 = Rechazo - Posible Fraude (Transacción con riesgo de posible fraude) |
tbk_user String |
Identificador único de la inscripción del cliente en Oneclick, que debe ser usado para realizar pagos o borrar la inscripción. Largo: 40. |
authorization_code String |
Código que identifica la autorización de la inscripción. Largo: 6. |
card_type cardType |
Indica el tipo de tarjeta inscrita por el cliente (Visa, AmericanExpress, MasterCard, Diners, Magna, Redcompra). Largo: 10. |
card_number String |
Últimos 4 dígitos de la tarjeta inscrito: Largo: 4. |
Eliminar una inscripción con Oneclick Mall
Puedes revisar más detalles de esta operación en su documentación
Una vez finalizado el proceso de inscripción es posible eliminarla de ser necesario. Para esto debes usar el método llamado Inscription.remove()
.
Inscription.remove() Oneclick Mall
Permite eliminar un usuario enrolado a Oneclick Mall.
Oneclick.MallInscription.delete(tbkUser, userName)
use Transbank\Webpay\Oneclick;
MallInscription::delete($tbkUser, $userName);
using Transbank.Webpay.Oneclick;
Inscription.Delete(userName, tbkUser);
MallInscription::delete(user_name: user_name, tbk_user: tbk_user)
MallInscription.delete(tbk_user, user_name)
DELETE /rswebpaytransaction/api/oneclick/v1.0/inscriptions
Tbk-Api-Key-Id: 597055555541
Tbk-Api-Key-Secret: 579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C
Content-Type: application/json
{
"tbk_user": "b6bd6ba3-e718-4107-9386-d2b099a8dd42",
"username": "juanperez",
}
Parámetros Inscription.remove Oneclick Mall
Nombre tipo |
Descripción |
---|---|
tbk_user String |
Identificador único de la inscripción del cliente (devuelto por Inscription.finish() ). Largo: 40. |
username String |
Identificador del usuario en los sistemas del comercio (el mismo indicado en Inscription.start() ). Largo máximo: 40. |
Respuesta Inscription.remove Oneclick Mall
// 204 OK
// 204 OK
// 204 OK
# 204 OK
# 204 OK
204 OK
Content-Type: application/json
Autorizar un pago con Oneclick Mall
Puedes revisar más detalles de esta operación en su documentación
Una vez realizada la inscripción, el comercio puede usar el tbkUser
recibido
para realizar transacciones. Para eso debes usar el método Transaction.authorize()
.
Transaction.authorize() Oneclick Mall
Permite autorizar un pago.
MallTransactionCreateDetails transactionDetails = MallTransactionCreateDetails.build()
.add(amountMallOne, commerceCodeMallOne, buyOrderMallOne, installmentsNumberMallOne)
.add(amountMallTwo, commerceCodeMallTwo, buyOrderMallTwo, installmentsNumberMallTwo);
final OneclickMallTransactionAuthorizeResponse response = OneclickMall.Transaction.authorize(username, tbkUser, buyOrder, transactionDetails);
use Transbank\Webpay\Oneclick;
$details = [
[
"commerce_code" => "597055555542",
"buy_order" => "ordenCompra123445",
"amount" => 1000,
"installments_number" => 5
]
];
$response = MallTransaction::authorize($userName, $tbkUser, $parentBuyOrder, $details);
using Transbank.Webpay.Oneclick;
List<PaymentRequest> details = new List<PaymentRequest>();
details.Add(new PaymentRequest(
childCommerceCodeOne, buyOrderMallOne, amountMallOne, installmentsNumber
));
details.Add(new PaymentRequest(
childCommerceCodeTwo, buyOrderMallTwo, amountMallTwo, installmentsNumber
));
var result = MallTransaction.Authorize(userName, tbkUser, buyOrder, details);
details = [
{
commerce_code: amountMallOne,
buy_order: buyOrderMallOne,
amount: amountMallOne,
installments_number: installmentsNumberMallOne
},
{
commerce_code: amountMallTwo,
buy_order: buyOrderMallTwo,
amount: amountMallTwo,
installments_number: installmentsNumberMallTwo
}
]
Transbank::Webpay::Oneclick::MallTransaction::authorize(username: username,
tbk_user: tbk_user,
parent_buy_order: buy_order,
details: details)
details = MallTransactionAuthorizeDetails(
commerce_code, buy_order_child, installments_number, amount
).add(
commerce_code2, buy_order_child2, installments_number2, amount2
)
MallTransaction.authorize(
user_name=user_name,
tbk_user=tbk_user,
buy_order=buy_order,
details=details
)
POST /rswebpaytransaction/api/oneclick/v1.0/transactions
Tbk-Api-Key-Id: 597055555541
Tbk-Api-Key-Secret: 579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C
Content-Type: application/json
{
"username": "juanperez",
"tbk_user": "b6bd6ba3-e718-4107-9386-d2b099a8dd42",
"buy_order": "ordenCompra123456789",
"details": [
{
"commerce_code": "597055555542",
"buy_order": "ordenCompra123445",
"amount": 1000,
"installments_number": 5
}]
}
Parámetros Transaction.authorize Oneclick Mall
Nombre tipo |
Descripción |
---|---|
username String |
Identificador del usuario en los sistemas del comercio (el mismo indicado en Inscription.start() ). Largo máximo: 40. |
tbk_user String |
Identificador único de la inscripción del cliente (devuelto por Inscription.finish() ). Largo: 40. |
buy_order Number |
Identificador único de la compra generado por el comercio. Largo máximo: 26. |
details Array |
Lista de objetos, uno por cada tienda diferente del mall que participa en la transacción. |
details [].commerce_code String |
Código comercio asignado por Transbank para la tienda perteneciente al mall a la cual corresponde esta transacción. Largo: 12. |
details [].buy_order String |
Identificador único de la compra generado por el comercio hijo (tienda). Largo máximo: 26. |
details [].amount Decimal |
Monto de la transacción de pago. Largo máximo: 17. |
details [].installments_number Number |
Cantidad de cuotas de la transacción de pago. Largo 2. No obligatorio. |
Respuesta Transaction.authorize Oneclick Mall
response.getAccountingDate();
response.getBuyOrder();
response.getTransactionDate();
final CardDetail cardDetail = response.getCardDetail();
cardDetail.getCardNumber();
final List<Detail> detailsResp = response.getDetails();
for (Detail detail : detailsResp) {
detail.getAmount();
detail.getAuthorizationCode();
detail.getBuyOrder();
detail.getCommerceCode();
detail.getInstallmentsNumber();
detail.getPaymentTypeCode();
detail.getStatus();
}
$response->getAccountingDate();
$response->getBuyOrder();
$card_detail = response->getCardDetail();
$card_detail->getCardNumber();
$response->getTransactionDate();
$response->getVci();
$details = response->getDetails();
foreach($details as $detail){
detail->getAmount();
detail->getAuthorizationCode();
detail->getBuyOrder();
detail->getCommerceCode();
detail->getInstallmentsNumber();
detail->getPaymentTypeCode();
detail->getResponseCode();
detail->getStatus();
}
response.AccountingDate;
response.BuyOrder;
var cardDetail = response.CardDetail;
cardDetail.CardNumber;
response.SessionId;
response.TransactionDate;
response.Vci;
var details = response.Details;
foreach (var detail in details) {
detail.Amount;
detail.AuthorizationCode;
detail.BuyOrder;
detail.CommerceCode;
detail.InstallmentsNumber;
detail.PaymentTypeCode;
detail.ResponseCode;
detail.Status;
}
response.accounting_date
response.buy_order
card_detail = response.card_detail
card_detail.card_number
response.session_id
response.transaction_date
response.vci
details = response.details
details.each do |detail|
detail.amount
detail.authorization_code
detail.buy_order
detail.commerce_code
detail.installments_number
detail.payment_type_code
detail.response_code
detail.status
end
response.accounting_date
response.buy_order
card_detail = response.card_detail
card_detail.card_number
response.session_id
response.transaction_date
response.vci
details = response.details
for detail in details:
detail.amount
detail.authorization_code
detail.buy_order
detail.commerce_code
detail.installments_number
detail.payment_type_code
detail.response_code
detail.status
200 OK
Content-Type: application/json
{
"buy_order": "415034240",
"card_detail": {
"card_number": "6623"
},
"accounting_date": "0321",
"transaction_date": "2019-03-21T15:43:48.523Z",
"details": [
{
"amount": 500,
"status": "AUTHORIZED",
"authorization_code": "1213",
"payment_type_code": "VN",
"response_code": 0,
"installments_number": 0,
"commerce_code": "597055555542",
"buy_order": "505479072"
}]
}
Nombre tipo |
Descripción |
---|---|
buy_order String |
Orden de compra generada por el comercio padre. |
card_detail cardDetail |
Objeto que contiene información de la tarjeta utilizado por el tarjetahabiente. |
card_detail.card_number String |
Los últimos 4 dígitos de la tarjeta usada en la transacción. |
accounting_date String |
Fecha contable de la autorización del pago. |
transaction_date DateTime |
Fecha completa (timestamp) de la autorización del pago. ISO 8601 |
details Array |
Lista con el resultado de cada transacción de las tiendas hijas. |
details [].amount Decimal |
Monto de la transacción de pago. |
details [].status String |
Estado de la transacción (INITIALIZED, AUTHORIZED, REVERSED, FAILED, NULLIFIED, PARTIALLY_NULLIFIED, CAPTURED). |
details [].authorization_code String |
Código de autorización de la transacción de pago. |
details [].payment_type_code String |
Tipo de pago de la transaccion. VD = Venta Débito. VP = Venta prepago VN = Venta Normal. VC = Venta en cuotas. SI = 3 cuotas sin interés. S2 = 2 cuotas sin interés. NC = N Cuotas sin interés |
details [].response_code Number |
Código del resultado del pago, donde: 0 (cero) es aprobado. Valores posibles: 0 = Transacción aprobada -1 = Rechazo de transacción - Reintente (Posible error en el ingreso de datos de la transacción) -2 = Rechazo de transacción (Se produjo fallo al procesar la transacción. Este mensaje de rechazo está relacionado a parámetros de la tarjeta y/o su cuenta asociada) -3 = Error en transacción (Interno Transbank) -4 = Rechazo emisor (Rechazada por parte del emisor) -5 = Rechazo - Posible Fraude (Transacción con riesgo de posible fraude) -96: tbk_user no existente -97: Límites Oneclick, máximo monto diario de pago excedido. -98: Límites Oneclick, máximo monto de pago excedido -99: Límites Oneclick, máxima cantidad de pagos diarios excedido. |
details [].installments_number Number |
Cantidad de cuotas de la transacción de pago. |
details [].commerce_code Number |
Código de comercio del comercio hijo (tienda). |
details [].buy_order String |
Orden de compra generada por el comercio hijo para la transacción de pago. |
Consultar un pago realizado con Oneclick Mall
Puedes revisar más detalles de esta operación en su documentación
Esta operación permite obtener el estado de la transacción en cualquier momento. En condiciones normales es probable que no se requiera ejecutar, pero en caso de ocurrir un error inesperado permite conocer el estado y tomar las acciones que correspondan.
Transaction.status() Oneclick Mall
Permite consultar el estado de pago realizado a través de Oneclick. Retorna el resultado de la autorización.
final OneclickMallTransactionStatusResponse response =
OneclickMall.Transaction.status(buyOrder);
use Transbank\Webpay\Oneclick;
$response = MallTransaction::getStatus($buyOrder);
using Transbank.Webpay.Oneclick;
var result = MallTransaction.Status(buyOrder);
response = Transbank::Webpay::Oneclick::MallTransaction::status(buy_order: buy_order)
var response = MallTransaction.status(buy_order)
GET /rswebpaytransaction/api/oneclick/v1.0/transactions/{buyOrder}
Tbk-Api-Key-Id: 597055555541
Tbk-Api-Key-Secret: 579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C
Content-Type: application/json
Parámetros Transaction.status Oneclick Mall
Nombre tipo |
Descripción |
---|---|
buy_order String |
Orden de compra de la transacción a consultar (se envía en la URL, no en el body). |
Respuesta Transaction.status Oneclick Mall
response.getAccountingDate();
response.getBuyOrder();
response.getTransactionDate();
final CardDetail cardDetail = response.getCardDetail();
cardDetail.getCardNumber();
final List<Detail> detailsResp = response.getDetails();
for (Detail detail : detailsResp) {
detail.getAmount();
detail.getAuthorizationCode();
detail.getBuyOrder();
detail.getCommerceCode();
detail.getInstallmentsNumber();
detail.getPaymentTypeCode();
detail.getStatus();
}
$response->getAccountingDate();
$response->getBuyOrder();
$card_detail = $response->getCardDetail();
$card_detail->getCardNumber();
$response->getTransactionDate();
$response->getVci();
$details = $response->getDetails();
foreach($details as $detail){
$detail->getAmount();
$detail->getAuthorizationCode();
$detail->getBuyOrder();
$detail->getCommerceCode();
$detail->getInstallmentsNumber();
$detail->getPaymentTypeCode();
$detail->getResponseCode();
$detail->getStatus();
}
response.AccountingDate;
response.BuyOrder;
var cardDetail = response.CardDetail;
cardDetail.CardNumber;
response.SessionId;
response.TransactionDate;
response.Vci;
var details = response.Details;
foreach (var detail in details) {
detail.Amount;
detail.AuthorizationCode;
detail.BuyOrder;
detail.CommerceCode;
detail.InstallmentsNumber;
detail.PaymentTypeCode;
detail.ResponseCode;
detail.Status;
}
response.accounting_date
response.buy_order
card_detail = response.card_detail
card_detail.card_number
response.session_id
response.transaction_date
response.vci
details = response.details
details.each do |detail|
detail.amount
detail.authorization_code
detail.buy_order
detail.commerce_code
detail.installments_number
detail.payment_type_code
detail.response_code
detail.status
end
response.accounting_date
response.buy_order
card_detail = response.card_detail
card_detail.card_number
response.session_id
response.transaction_date
response.vci
details = response.details
for detail in details:
detail.amount
detail.authorization_code
detail.buy_order
detail.commerce_code
detail.installments_number
detail.payment_type_code
detail.response_code
detail.status
200 OK
Content-Type: application/json
{
"buy_order": "415034240",
"card_detail": {
"card_number": "6623"
},
"accounting_date": "0321",
"transaction_date": "2019-03-21T15:43:48.523Z",
"details": [
{
"amount": 500,
"status": "AUTHORIZED",
"authorization_code": "1213",
"payment_type_code": "VN",
"response_code": 0,
"installments_number": 0,
"commerce_code": "597055555542",
"buy_order": "505479072"
}]
}
Nombre tipo |
Descripción |
---|---|
buy_order String |
Orden de compra generada por el comercio padre. |
card_detail cardDetail |
Objeto que contiene información de la tarjeta utilizado por el tarjetahabiente. |
card_detail.card_number String |
Los últimos 4 dígitos de la tarjeta usada en la transacción. |
accounting_date String |
Fecha contable de la autorización del pago. |
transaction_date DateTime |
Fecha completa (timestamp) de la autorización del pago. |
details Array |
Lista con el resultado de cada transacción de las tiendas hijas. |
details [].amount Decimal |
Monto de la sub-transacción de pago. |
details [].status String |
Estado de la transacción (INITIALIZED, AUTHORIZED, REVERSED, FAILED, NULLIFIED, PARTIALLY_NULLIFIED, CAPTURED). |
details [].authorization_code String |
Código de autorización de la sub-transacción de pago. |
details [].payment_type_code String |
Tipo de pago de la transaccion. VD = Venta Débito. VP = Venta prepago VN = Venta Normal. VC = Venta en cuotas. SI = 3 cuotas sin interés. S2 = 2 cuotas sin interés. NC = N Cuotas sin interés |
details [].response_code Number |
Código de retorno del proceso de pago, donde: 0 (cero) es aprobado. Valores posibles: 0 = Transacción aprobada -1 = Rechazo de transacción - Reintente (Posible error en el ingreso de datos de la transacción) -2 = Rechazo de transacción (Se produjo fallo al procesar la transacción. Este mensaje de rechazo está relacionado a parámetros de la tarjeta y/o su cuenta asociada) -3 = Error en transacción (Interno Transbank) -4 = Rechazo emisor (Rechazada por parte del emisor) -5 = Rechazo - Posible Fraude (Transacción con riesgo de posible fraude) -96: tbk_user no existente -97: Límites Oneclick, máximo monto diario de pago excedido. -98: Límites Oneclick, máximo monto de pago excedido -99: Límites Oneclick, máxima cantidad de pagos diarios excedido. |
details [].installments_number Number |
Cantidad de cuotas de la sub-transacción de pago. |
details [].commerce_code Number |
Código de comercio del comercio hijo (tienda). |
details [].buy_order String |
Orden de compra generada por el comercio hijo para la sub-transacción de pago. |
status Text |
Estado de la transacción (INITIALIZED, AUTHORIZED, REVERSED, FAILED, NULLIFIED, PARTIALLY_NULLIFIED, CAPTURED). Largo máximo: 64 |
balance Decimal |
Monto restante de la sub-transacción de pago original: monto inicial – monto anulado. Largo máximo: 17 |
Reversar o Anular un pago Oneclick Mall
Puedes revisar más detalles de esta operación en su documentación
Permite reversar o anular una transacción de venta autorizada con anterioridad. Este método retorna como respuesta un identificador único de la transacción de reversa/anulación.
final OneclickMallTransactionRefundResponse response =
OneclickMall.Transaction.refund(buyOrder, childCommerceCode, childBuyOrder, amount);
use Transbank\Webpay\Oneclick;
$response = MallTransaction::refund($buyOrder, $childCommerceCode, $childBuyOrder, $amount);
using Transbank.Webpay.Oneclick;
var response = MallTransaction.Refund(buyOrder, childCommerceCode,childBuyOrder,amount);
response = Transbank::Webpay::Oneclick::MallTransaction::refund(
buy_order: buy_order,
child_commerce_code: child_commerce_code,
child_buy_order: child_buy_order,
amount: amount
)
var response = MallTransaction.refund(buy_order, child_commerce_code, child_buy_order, amount)
POST /rswebpaytransaction/api/oneclick/v1.0/transactions/{buyOrder}/refunds
Tbk-Api-Key-Id: 597055555541
Tbk-Api-Key-Secret: 579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C
Content-Type: application/json
{
"commerce_code": "597055555542",
"detail_buy_order": "ordenCompra12345",
"amount": 1000
}
Parámetros Transaction.refund Oneclick Mall
Nombre tipo |
Descripción |
---|---|
buy_order String |
Orden de compra de la transacción a reversar o anular. Se envía en la URL, no en el body. Largo máximo: 26. |
commerce_code String |
Código de comercio hijo. Largo máximo: 12. |
detail_buy_order String |
Orden de compra hija de la transacción a reversar o anular. Largo máximo: 26. |
amount Formato número entero para transacciones en peso. Sólo en caso de dólar acepta dos decimales. |
Monto que se desea anular o reversar de la transacción. Largo máximo: 17 |
Respuesta Transaction.refund Oneclick Mall
response.getAuthorizationCode();
response.getAuthorizationDate();
response.getBalance();
response.getNullifiedAmount();
response.getResponseCode();
response.getType();
$response->getAuthorizationCode;
$response->getAuthorizationDate;
$response->getBalance;
$response->getNullifiedAmount;
$response->getResponseCode;
$response->getType;
response.AuthorizationCode;
response.AuthorizationDate;
response.Balance;
response.NullifiedAmount;
response.ResponseCode;
response.Type;
response.authorization_code
response.authorization_date
response.balance
response.nullified_amount
response.response_code
response.type
response.authorization_code
response.authorization_date
response.balance
response.nullified_amount
response.response_code
response.type
200 OK
Content-Type: application/json
{
"type": "NULLIFIED",
"authorization_code": "123456",
"authorization_date": "2019-03-20T20:18:20Z",
"nullified_amount": 1000.00,
"balance": 0.00,
"response_code": 0
}
Nombre tipo |
Descripción |
---|---|
type String |
Tipo de reembolso (REVERSED o NULLIFIED). Si es REVERSED no se devolverán datos de la transacción (authorization code, etc). Largo máximo: 10 |
authorization_code Boolean |
(Solo si es NULLIFIED) Código de autorización. Largo máximo: 6 |
authorization_date ISO8601 |
(Solo si es NULLIFIED) Fecha de la autorización de la transacción. |
nullified_amount Decimal |
(Solo si es NULLIFIED) Monto anulado. Largo máximo: 17 |
balance Decimal |
(Solo si es NULLIFIED) Monto restante de la transacción de pago original: monto inicial – monto anulado. Largo máximo: 17 |
response_code Number |
C(Solo si es NULLIFIED) ódigo del resultado del pago, donde: 0 (cero) es aprobado. Largo máximo: 2 |
buy_order String |
(Solo si es NULLIFIED) Orden de compra generada por el comercio hijo para la transacción de pago. Largo máximo: 26. |
Captura Diferida Oneclick Mall
Revisa más detalles sobre esta modalidad en la documentación
final OneclickMallTransactionCaptureResponse response = Oneclick.MallDeferredTransaction.capture(
childCommerceCode, childBuyOrder, amount, authorizationCode
);
// Esta funcion aun no se encuentra disponible en el SDK
// Esta funcion aun no se encuentra disponible en el SDK
@response = Transbank::Webpay::Oneclick::MallDeferredTransaction::capture(
child_commerce_code: @commerce_code, child_buy_order: @buy_order,
amount: @capture_amount, authorization_code: @authorization_code
)
# Esta funcion aun no se encuentra disponible en el SDK
PUT /rswebpaytransaction/api/oneclick/v1.0/transactions/capture
Tbk-Api-Key-Id: 597055555547
Tbk-Api-Key-Secret: 579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C
Content-Type: application/json
{
"commerce_code": 597055555548,
"buy_order": "OCDT12345678",
"capture_amount": 50,
"authorization_code": "1213"
}
Parámetros capture Oneclick Mall
Nombre tipo |
Descripción |
---|---|
commerce_code Number |
Tienda hija que realizó la transacción. Largo: 6. |
buy_order String |
Orden de compra de la transacción que se requiere capturar. Largo máximo: 26. |
capture_amount Decimal |
Monto que se desea capturar. Largo máximo: 17. |
authorization_code String |
Código de autorización de la transacción que se requiere capturar Largo máximo: 6. |
Respuesta capture Oneclick Mall
response.getAuthorizationCode();
response.getAuthorizationDate();
response.getCapturedAmount();
response.getResponseCode();
// Esta función aun no se encuentra disponible en el SDK
// Esta función aun no se encuentra disponible en el SDK
response.authorization_code
response.authorization_date
response.captured_amount
response.response_code
# Esta función aun no se encuentra disponible en el SDK
200 OK
Content-Type: application/json
{
"authorization_code": "152759",
"authorization_date": "2020-04-03T01:49:50.181Z",
"captured_amount": 50,
"response_code": 0
}
Nombre tipo |
Descripción |
---|---|
authorization_code String |
Código de autorización de la captura diferida. Largo máximo: 6 |
authorization_date String |
Fecha y hora de la autorización. |
captured_amount Decimal |
Monto capturado. Largo máximo: 6 |
response_code Number |
Código de resultado de la captura. Si es exitoso es 0,de lo contrario la captura no fue realizada. Largo máximo: 2 |
Transacción Completa
Una transacción completa permite al comercio presentar al tarjetahabiente un
formulario propio para almacenar los datos de la tarjeta, fecha de vencimiento
y cvv (no necesario para comercios con la opción sin cvv
habilitada) .
Crear una Transacción Completa
Para crear una transacción completa basta llamar al método Transaction.create()
Transaction.create() Completa
Permite inicializar una transacción completa en Webpay. Como respuesta a la invocación se genera un token que representa en forma única una transacción.
final FullTransactionCreateResponse response = FullTransaction.Transaction.create(
buyOrder, // ordenCompra12345678
sessionId, // sesion1234564
amount, // 10000
cardNumber, // 123
cardExpirationDate, // 4239000000000000
cvv // 22/10
);
use Transbank\TransaccionCompleta\Transaction;
$response = Transaction::create(
$buy_order, // ordenCompra12345678
$session_id, // sesion1234564
$amount, // 10000
$cvv, // 123
$card_number, // 4239000000000000
$card_expiration_date // 22/10
);
FullTransaction.Create(
buyOrder: buy_order, // ordenCompra12345678
sessionId: session_id, // sesion1234564
amount: amount, // 10000
cvv: cvv, // 123
cardNumber: card_number, // 4239000000000000
cardExpirationDate: card_expiration_date // 22/10
);
Transbank::TransaccionCompleta::Transaction::create(
buy_order: 'ordenCompra12345678',
session_id: 'sesion1234564',
amount: 10000,
card_number: 4239000000000000,
cvv: 123,
card_expiration_date: '22/10'
)
from transbank.transaccion_completa.transaction import Transaction
#...
Transaction.create(
buy_order = 'ordenCompra12345678',
session_id = 'sesion1234564',
amount = 10000,
card_number = 4239000000000000,
cvv = 123,
card_expiration_date = '22/10'
)
POST /rswebpaytransaction/api/webpay/v1.0/transactions
Tbk-Api-Key-Id: 597055555530
Tbk-Api-Key-Secret: 579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C
Content-Type: application/json
{
"buy_order": "ordenCompra12345678",
"session_id": "sesion1234564",
"amount": 10000,
"cvv": 123,
"card_number": "4239000000000000",
"card_expiration_date": "22/10"
}
Parámetros Transaction.create Completa
Nombre tipo |
Descripción |
---|---|
buy_order String |
Orden de compra de la tienda. Este número debe ser único para cada transacción. Largo máximo: 26. La orden de compra puede tener: Números, letras, mayúsculas y minúsculas, y los signos |_=&%.,~:/?[[email protected]()>- |
session_id String |
Identificador de sesión, uso interno de comercio, este valor es devuelto al final de la transacción. Largo máximo: 61 |
amount Decimal |
Monto de la transacción. Máximo 2 decimales para USD. Largo máximo: 17 |
cvv String |
(Opcional) Código que se utiliza como método de seguridad en transacciones en las que la tarjeta no está físicamente presente. Largo máximo: 4. No se debe enviar para comercios con la opción sin cvv habilitada. |
card_number String |
Número de tarjeta. Largo máximo: 16 |
card_expiration_date String |
Fecha de expiración de la tarjeta con la que se realiza la transacción. Largo máximo: 5 |
Respuesta Transaction.create Completa
response.getToken();
$response->getToken();
response.Token;
response.token
response.token
200 OK
Content-Type: application/json
{
"token": "e074d38c628122c63e5c0986368ece22974d6fee1440617d85873b7b4efa48a3",
}
Nombre tipo |
Descripción |
---|---|
token String |
Token de la transacción. Largo: 64. |
Modalidad sin cvv
Para modalidad del producto Transacción completa sin CVV
, este campo no debe ser enviado.
200 OK
Content-Type: application/json
{
"buy_order": "ordenCompra12345678",
"session_id": "sesion1234564",
"amount": 10000,
"card_number": "4239000000000000",
"card_expiration_date": "22/10"
}
Consulta de cuotas Completa
Para consultar el valor de las cuotas que pagará el tarjeta habiente en una
transacción completa, es necesario llamar al método Transaction.installments()
Transaction.installments() Completa
Operación que permite obtener el monto de la cuota a partir del número de cuotas. El id de la consulta que selecciona el tarjetahabiente debe ser informado en la invocación de la confirmación.
final FullTransactionInstallmentsResponse response = FullTransaction.Transaction.installment(token, installments_number);
use Transbank\TransaccionCompleta\Transaction;
$installments = Transaction::installments($token_ws, $installments_number);
using Transbank.Webpay.TransaccionCompleta;
FullTransaction.Installments(
token,
installments_number
);
Transbank::TransaccionCompleta::Transaction::installments(
token: token,
installments_number: installments_number
)
from transbank.transaccion_completa.transaction import Transaction
Transaction.installments(
token=token,
installments_number=installments_number
)
POST /rswebpaytransaction/api/webpay/v1.0/transactions/{token}/installments
Tbk-Api-Key-Id: 597055555530
Tbk-Api-Key-Secret: 579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C
Content-Type: application/json
{
"installments_number": 10
}
Parámetros Transaction.installments Completa
Nombre tipo |
Descripción |
---|---|
token String |
Token de la transacción. Largo: 64. (Se envía en la URL, no en el body) |
installments_number Number |
Cantidad de cuotas. Largo máximo: 2 |
Respuesta Transaction.installments Completa
response.getInstallmentsAmount();
response.getIdQueryInstallments();
DeferredPeriod deferredPeriod = response.getDeferredPeriods()[0];
deferredPeriod.getAmount();
deferredPeriod.getPeriod();
$response->getInstallmentsAmount();
$response->getIdQueryInstallments();
$response->getDeferredPeriods();
response.InstallmentsAmount;
respone.IdQueryInstallments;
response.DeferredPeriods;
response.installments_amount
response.id_query_installments
response.deferred_periods
response.installments_amount
response.id_query_installments
response.deferred_periods
Si el comercio no tiene configurado periodos diferidos, la respuesta de deferred_periods
será []
:
200 OK
Content-Type: application/json
{
"installments_amount": 3334,
"id_query_installments": 11,
"deferred_periods": [
{
"amount": 1000,
"period": 1
}
]
}
Nombre tipo |
Descripción |
---|---|
installments_amount String |
Monto de cada cuota. Largo: 17. |
id_query_installments String |
Identificador de las cuotas. Largo: 19. |
deferred_periods Array |
Arreglo con periodos diferidos. |
deferred_periods [].amount String |
Monto. Largo: 17. |
deferred_periods [].period String |
Índice de periodo. Largo: 2. |
Confirmación de la transacción Completa
Una vez iniciada la transacción y consultado el monto de las cuotas, puedes
confirmar y obtener el resultado de una transacción completa usando el metodo
Transaction.commit()
.
Transaction.commit() Completa
Operación que permite confirmar una transacción. Retorna el estado de la transacción.
import cl.transbank.transaccioncompleta.FullTransaction;
final FullTransactionCommitResponse response = FullTransaction.Transaction.commit(
token, idQueryInstallments, deferredPeriodIndex, gracePeriod
);
use Transbank\TransaccionCompleta\Transaction;
//...
Transaction::commit(
$token_ws,
$id_query_installments,
$deferred_period_index,
$grace_period
);
using Transbank.Webpay.TransaccionCompleta;
FullTransaction.Commit(
token, idQueryInstallments, deferredPeriodsIndex, gracePeriods
);
Transbank::TransaccionCompleta::Transaction::commit(
token: token,
id_query_installments: id_query_installments,
deferred_period_index: deferred_period_index,
grace_period: grace_period
)
from transbank.transaccion_completa.transaction import Transaction
Transaction.commit(
token=token,
id_query_installments=id_query_installments,
deferred_period_index=deferred_period_index,
grace_period=grace_period
)
PUT /rswebpaytransaction/api/webpay/v1.0/transactions/{token}
Tbk-Api-Key-Id: 597055555530
Tbk-Api-Key-Secret: 579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C
Content-Type: application/json
{
"id_query_installments": 15,
"deferred_period_index": 1,
"grace_period": false
}
Parámetros Transaction.commit Completa
Nombre tipo |
Descripción |
---|---|
token String |
Token de la transacción. Largo: 64. (Se envía en la URL, no en el body) |
id_query_installments Number |
(Opcional) Identificador de cuota. Largo máximo: 19. Solo enviar si el pago es en cuotas |
deferred_period_index Number |
(Opcional) Cantidad de periodo diferido. Largo máximo: 2. Solo enviar si el pago es en cuotas |
grace_period Boolean |
(Opcional) Indicador de periodo de gracia. Solo enviar si el pago es en cuotas |
Respuesta Transaction.commit Completa
response.getAccountingDate();
response.getAmount();
response.getAuthorizationCode();
response.getBuyOrder();
CardDetail cardDetail = response.getCardDetail();
cardDetail.getCardNumber();
response.getInstallmentsAmount();
response.getInstallmentsNumber();
response.getPaymentCodeType();
response.getResponseCode();
response.getSessionId();
response.getTransactionDate();
$response->getAccountingDate();
$response->getAmount();
$response->getAuthorizationCode();
$response->getBuyOrder();
cardDetail = $response->getCardDetail();
cardDetail->getCardNumber();
$response->getInstallmentsAmount();
$response->getInstallmentsNumber();
$response->getPaymentCodeType();
$response->getResponseCode();
$response->getSessionId();
$response->getTransactionDate();
response.AccountingDate;
response.Amount;
response.AuthorizationCoda;
response.BuyOrder;
var cardDetail = response.CardDetail;
cardDetail.CardNumber;
response.InstallmentsAmount;
response.InstallmentsNumber;
response.PaymentTypeCode;
response.ResponseCode;
response.SessionId;
response.Status;
response.TransactionDate;
response.amount
response.status
response.buy_order
response.session_id
response.card_number
response.accounting_date
response.transaction_date
response.authorization_code
response.payment_type_code
response.response_code
response.installments_number
response.installments_amount
response.balance
response.amount
response.status
response.buy_order
response.session_id
response.card_number
response.accounting_date
response.transaction_date
response.authorization_code
response.payment_type_code
response.response_code
response.installments_number
response.installments_amount
response.balance
200 OK
Content-Type: application/json
{
"amount": 10000,
"status": "AUTHORIZED",
"buy_order": "ordenCompra12345678",
"session_id": "sesion1234557545",
"card_detail": {
"card_number": "1234"
},
"accounting_date": "0320",
"transaction_date": "2019-03-20T20:18:20Z",
"authorization_code": "877550",
"payment_type_code": "VN",
"response_code": 0,
"installments_number": 0,
"installmentsAmount": 0
}
Nombre tipo |
Descripción |
---|---|
amount Number |
Monto de la transacción. Sólo en caso de dolar acepta dos decimales. Largo máximo: 17 |
status String |
Estado de la transacción (INITIALIZED, AUTHORIZED, REVERSED, FAILED, NULLIFIED, PARTIALLY_NULLIFIED, CAPTURED). Largo máximo: 64 |
buy_order String |
Número de orden de compra. Largo máximo: 26 |
session_id String |
ID de sesión de la compra. Largo máximo: 61 |
card_detail cardDetail |
Objeto que contiene información de la tarjeta utilizado por el tarjetahabiente. |
card_number String |
Los últimos 4 dígitos de la tarjeta usada en la transacción, solo si el comercio tiene configurado el poder recibir el número de tarjeta. Largo máximo: 19 |
accounting_date String |
Fecha contable de la transacción en formato MMYY. |
transaction_date ISO8601 |
Fecha de la transacción. |
authorization_code String |
Código de autorización de la transacción de pago. Largo máximo: 6 |
payment_type_code String |
Indica el tipo de tarjeta utilizada. Largo máximo: 2 VD = Venta Débito. (Próximamente) VN = Venta Normal. VP = Venta Prepago. (Próximamente) VC = Venta en cuotas. SI = 3 cuotas sin interés. S2 = 2 cuotas sin interés. NC = N Cuotas sin interés |
response_code Number |
Código de respuesta de la autorización. Valores posibles: 0 = Transacción aprobada -1 = Rechazo de transacción - Reintente (Posible error en el ingreso de datos de la transacción) -2 = Rechazo de transacción (Se produjo fallo al procesar la transacción. Este mensaje de rechazo está relacionado a parámetros de la tarjeta y/o su cuenta asociada) -3 = Error en transacción (Interno Transbank) -4 = Rechazo emisor (Rechazada por parte del emisor) -5 = Rechazo - Posible Fraude (Transacción con riesgo de posible fraude) |
installments_amount Number |
Monto de la cuota. Se envía solo si tiene valor cuota. Largo máximo: 17 |
installments_number Number |
Número de cuotas de la transacción. Largo máximo: 2 |
prepaid_balance Number |
Saldo de la tarjeta de prepago. Se envía solo si se informa saldo. Largo máximo: 17 |
Consultar estado de una transacción Completa
Esta operación permite obtener el estado de la transacción en cualquier momento. En condiciones normales es probable que no se requiera ejecutar, pero en caso de ocurrir un error inesperado permite conocer el estado y tomar las acciones que correspondan.
Transaction.status() Completa
Obtiene resultado de transacción a partir de un token.
import cl.transbank.transaccioncompleta.FullTransaction;
final FullTransactionStatusResponse response = FullTransaction.Transaction.status(token);
use Transbank\TransaccionCompleta\Transaction;
Transaction::getStatus($token_ws);
using Transbank.Webpay.TransaccionCompleta;
FullTransaction.Status(token);
Transbank::TransaccionCompleta::Transaction::status(token: token)
from transbank.transaccion_completa.transaction import Transaction
Transaction.status(token=token)
GET /rswebpaytransaction/api/webpay/v1.0/transactions/{token}
Tbk-Api-Key-Id: 597055555530
Tbk-Api-Key-Secret: 579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C
Content-Type: application/json
Parámetros Transaction.status Completa
Nombre tipo |
Descripción |
---|---|
token String |
Token de la transacción. Largo: 64. (Se envía en la URL, no en el body) |
Respuesta Transaction.status Completa
response.getAccountingDate();
response.getAmount();
response.getAuthorizationCode();
response.getBuyOrder();
CardDetail cardDetail = response.getCardDetail();
cardDetail.getCardNumber();
response.getInstallmentsAmount();
response.getInstallmentsNumber();
response.getPaymentCodeType();
response.getResponseCode();
response.getSessionId();
response.getTransactionDate();
$response->getAccountingDate();
$response->getAmount();
$response->getAuthorizationCode();
$response->getBuyOrder();
cardDetail = $response->getCardDetail();
cardDetail->getCardNumber();
$response->getInstallmentsAmount();
$response->getInstallmentsNumber();
$response->getPaymentCodeType();
$response->getResponseCode();
$response->getSessionId();
$response->getTransactionDate();
response.AccountingDate;
response.Amount;
response.AuthorizationCoda;
response.BuyOrder;
var cardDetail = response.CardDetail;
cardDetail.CardNumber;
response.InstallmentsAmount;
response.InstallmentsNumber;
response.PaymentTypeCode;
response.ResponseCode;
response.SessionId;
response.Status;
response.TransactionDate;
response.amount
response.status
response.buy_order
response.session_id
response.card_number
response.accounting_date
response.transaction_date
response.authorization_code
response.payment_type_code
response.response_code
response.installments_number
response.installments_amount
response.balance
response.amount
response.status
response.buy_order
response.session_id
response.card_number
response.accounting_date
response.transaction_date
response.authorization_code
response.payment_type_code
response.response_code
response.installments_number
response.installments_amount
response.balance
200 OK
Content-Type: application/json
{
"amount": 10000,
"status": "AUTHORIZED",
"buy_order": "ordenCompra12345678",
"session_id": "sesion1234557545",
"card_detail": {
"card_number": "1234"
},
"accounting_date": "0320",
"transaction_date": "2019-03-20T20:18:20Z",
"authorization_code": "877550",
"payment_type_code": "VN",
"response_code": 0,
"installments_number": 0
}
Nombre tipo |
Descripción |
---|---|
amount Number |
Monto de la transacción. Sólo en caso de dolar acepta dos decimales. Largo máximo: 17 |
status String |
Estado de la transacción (INITIALIZED, AUTHORIZED, REVERSED, FAILED, NULLIFIED, PARTIALLY_NULLIFIED, CAPTURED). Largo máximo: 64 |
buy_order String |
Número de orden de compra. Largo máximo: 26 |
session_id String |
ID de sesión de la compra. Largo máximo: 61 |
card_detail cardDetail |
Objeto que contiene información de la tarjeta utilizado por el tarjetahabiente. |
card_detail.card_number String |
Los últimos 4 dígitos de la tarjeta usada en la transacción. Largo máximo: 19 |
accounting_date String |
Fecha contable de la transacción. |
transaction_date ISO8601 |
Fecha de la transacción. |
authorization_code String |
Código de autorización de la transacción de pago. Largo máximo: 6 |
payment_type_code String |
Indica el tipo de tarjeta utilizada. Largo máximo: 2 VD = Venta Débito. (Próximamente) VN = Venta Normal. VP = Venta Prepago. (Próximamente) VC = Venta en cuotas. SI = 3 cuotas sin interés. S2 = 2 cuotas sin interés. NC = N Cuotas sin interés |
response_code Number |
Código de respuesta de la autorización. Valores posibles: 0 = Transacción aprobada -1 = Rechazo de transacción - Reintente (Posible error en el ingreso de datos de la transacción) -2 = Rechazo de transacción (Se produjo fallo al procesar la transacción. Este mensaje de rechazo está relacionado a parámetros de la tarjeta y/o su cuenta asociada) -3 = Error en transacción (Interno Transbank) -4 = Rechazo emisor (Rechazada por parte del emisor) -5 = Rechazo - Posible Fraude (Transacción con riesgo de posible fraude) |
installments_number Number |
Número de cuotas de la transacción. Largo máximo: 2 |
installments_amount Number |
Monto de la cuota. Se envía solo si tiene valor cuota. Largo máximo 17 |
balance Number |
Monto restante. Largo máximo: 17. Este campo solo viene cuando la transacción fue anulada |
prepaid_balance Number |
Saldo de la tarjeta de prepago. Se envía solo si se informa saldo. Largo máximo: 17 |
Reversar o Anular un pago Transacción Completa
Este método permite a todo comercio habilitado reversar o anular una transacción completa. El método permite generar el reembolso del total o parte del monto de una transacción dependiendo de la siguiente lógica de negocio la invocación a esta operación generará una reversa o una anulación:
- Si el monto enviado es menor al monto total entonces se ejecutará una anulación parcial.
- Si el monto enviado es igual al total, entonces se evaluará una anulación o reversa. Será reversa si el tiempo para ejecutarla no ha terminado, de lo contrario se ejecutará una anulación.
La anulación puede realizarse máximo 90 días después de la fecha de la transacción original.
Puedes leer más sobre la anulación en la información del producto Webpay para conocer más detalles y restricciones.
Para anular una transacción se debe invocar al método Transaction.refund()
.
Permite generar el reembolso del total o parte del monto de una transacción completa. Dependiendo de la siguiente lógica de negocio la invocación a esta operación generará una reversa o una anulación:
- Si se especifica un valor en el campo “amount” se ejecutará siempre una anulación.
- Si se supera el tiempo máximo para ejecutar una reversa se ejecutará una anulación.
- Si no se ha dado ninguno de los casos anteriores se ejecutará una reversa.
Transaction.refund() Completa
Permite solicitar a Webpay la anulación de una transacción realizada previamente y que se encuentre vigente.
import cl.transbank.transaccioncompleta.FullTransaction;
final FullTransactionRefundResponse response = FullTransaction.Transaction.refund(token,amount);
use Transbank\TransaccionCompleta\Transaction;
Transaction::refund($token, $amount);
using Transbank.Webpay.TransaccionCompleta;
FullTransaction.Refund(token, amount);
Transbank::TransaccionCompleta::Transaction::refund(token: token, amount: amount)
from transbank.transaccion_completa.transaction import Transaction
Transaction.refund(token=token, amount=amount)
POST /rswebpaytransaction/api/webpay/v1.0/transactions/{token}/refund
Tbk-Api-Key-Id: 597055555530
Tbk-Api-Key-Secret: 579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C
Content-Type: application/json
{
"amount": 1000
}
Parámetros Transaction.refund Completa
Nombre tipo |
Descripción |
---|---|
token String |
Token de la transacción. Largo: 64. (Se envía en la URL, no en el body) |
amount Formato número entero para transacciones en peso. Sólo en caso de dólar acepta dos decimales. |
Monto que se desea anular o reversar de la transacción. Largo máximo: 17. |
Respuesta Transaction.refund Completa
response.getType();
response.getAuthorizationCode();
response.getAuthorizationDate();
response.getNullifiedAmount();
response.getBalance();
response.getResponse();
$response->getType();
$response->getAuthorizationCode();
$response->getAuthorizationDate();
$response->getNullifiedAmount();
$response->getBalance();
$response->getResponse();
response.AuthorizationCode;
response.AuthorizationDate;
response.Balance;
response.NullifiedAmount;
response.ResponseCode;
response.Type;
response.type
response.authorization_code
response.authorization_date
response.nullified_amount
response.balance
response.response_code
response.type
response.authorization_code
response.authorization_date
response.nullified_amount
response.balance
response.response_code
200 OK
Content-Type: application/json
{
"type": "NULLIFIED",
"authorization_code": "123456",
"authorization_date": "2019-03-20T20:18:20Z",
"nullified_amount": 1000.00,
"balance": 0.00,
"response_code": 0
}
Nombre tipo |
Descripción |
---|---|
type String |
Tipo de reembolso (REVERSED. NULLIFIED). Si es REVERSED no se devolverán datos de la transacción (authorization code, etc) Largo máximo: 10 |
authorization_code String |
Código de autorización de la anulación. Largo máximo: 6. Solo viene en caso de anulación. |
authorization_date String |
Fecha y hora de la autorización. Solo viene en caso de anulación. |
nullified_amount Decimal |
Monto anulado. Largo máximo: 17. Solo viene en caso de anulación. |
balance Decimal |
Saldo actualizado de la transacción (considera la venta menos el monto anulado). Largo máximo: 17. Solo viene en caso de anulación. |
response_code Number |
Código de resultado de la anulación. Si es exitoso es 0, de lo contrario la anulación no fue realizada. Largo máximo: 2. Solo viene en caso de anulación. |
Transacción Completa Mall
Una transacción Completa Mall corresponde a una solicitud de transacciones completas de un conjunto de pagos con tarjetas de crédito, en donde quién realiza el pago ingresa al sitio del comercio, selecciona productos o servicios, y el ingreso asociado a los datos de la tarjeta de crédito lo realiza una única vez en forma segura en Webpay para el conjunto de pagos. Cada pago tendrá su propio resultado, autorizado o rechazado.
El Mall Webpay agrupa múltiples tiendas, son estas últimas las que pueden generar transacciones. Tanto el mall como las tiendas asociadas son identificadas a través de un número denominado código de comercio.
Flujo Transacción Completa Mall
El flujo de Transacción Completa Mall es en general el mismo que el de Transacción Completa tanto de cara al tarjeta habiente como de cara al integrador.
Las diferencias son:
- Se debe usar un código de comercio configurado para modalidad Mall en Transbank, el cual debe ser indicado al iniciar la transacción.
- Se pueden indicar múltiples transacciones, cada una asociada a un código de comercio de tienda (que debe estar configurada en Transbank como perteneciente al mall).
- Se debe verificar por separado el resultado de cada una de esas transacciones individualmente, pues es posible que el emisor de la tarjeta autorice algunas y otras no.
Crear una Transacción Completa Mall
Para crear una Transacción Completa Mall basta llamar al método Transaction.create()
Transaction.create() Completa Mall
Permite inicializar una transacción Completa Mall en Webpay. Como respuesta a la invocación se genera un token que representa en forma única una transacción.
MallTransactionCreateDetails transactionDetails = MallTransactionCreateDetails.build()
.add(amountMallOne, commerceCodeMallOne, buyOrderMallOne, installmentsNumberMallOne)
.add(amountMallTwo, commerceCodeMallTwo, buyOrderMallTwo, installmentsNumberMallTwo);
final MallFullTransactionCreateResponse response = MallFullTransaction.Transaction.create(
buyOrder, // ordenCompra12345678
sessionId, // sesion1234564
cardNumber, // 4239000000000000
cardExpirationDate, // 22/10
transactionDetails
);
use Transbank\TransaccionCompleta\MallTransaccionCompleta;
$transaction_details = [
{
"amount": 10000,
"commerce_code": 597055555552,
"buy_order": "123456789"
},
{
"amount": 12000,
"commerce_code": 597055555553,
"buy_order": "123456790"
},
];
$response = MallTransaction::create(
$buy_order, // ordenCompra12345678
$session_id, // sesion1234564
$card_number, // 4239000000000000
$card_expiration_date, // 22/10
$transaction_details
);
using Transbank.Webpay.TransaccionCompletaMall;
var transactionDetails = new List<CreateDetails>();
transactionDetails.Add(new CreateDetails(
amountMallOne,
commerceCodeMallOne,
buyOrderMallOne
));
transactionDetails.Add(new CreateDetails(
amountMallTwo,
comerceCodeMallTwo,
buyOrderMallTwo
));
var response = MallFullTransaction.Create(
buyOrder,
sessionId,
cardNumber,
cardExpirationDate,
transactionDetails
);
details = [
{
amount: 10000,
commerce_code: 597055555552,
buy_order: '123456789'
},
{
amount: 12000,
commerce_code: 597055555553,
buy_order: '123456790'
}
]
response = Transbank::TransaccionCompleta::MallTransaction::create(
buy_order: 'ordenCompra12345678',
session_id: 'sesion1234564',
card_number: 4239000000000000,
card_expiration_date: '22/10',
details: details
)
details = [
{
'commerce_code': 597055555552,
'buy_order': '123456789',
'amount': 10000
},
{
'commerce_code': 597055555553,
'buy_order': '123456790',
'amount': 12000
}
]
response = Transaction.create(
buy_order=buy_order,
session_id=session_id,
card_number=card_number, card_expiration_date=card_expiration_date, details=details
)
POST /rswebpaytransaction/api/webpay/v1.0/transactions
Tbk-Api-Key-Id: 597055555551
Tbk-Api-Key-Secret: 579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C
Content-Type: application/json
{
"buy_order": "ordenCompra12345678",
"session_id": "sesion1234564",
"card_number": "4239000000000000",
"card_expiration_date": "22/10",
"details": [
{
"amount": 10000,
"commerce_code": "597055555552",
"buy_order": "123456789"
},
{
"amount": 10000,
"commerce_code": "597055555553",
"buy_order": "123456790"
}
]
}
Parámetros Transaction.create Completa Mall
Nombre tipo |
Descripción |
---|---|
buy_order String |
Es el código único de la orden de compra generada por el comercio mall. Largo máximo: 26 |
session_id String |
Identificador de sesión, uso interno de comercio, este valor es devuelto al final de la transacción. Largo máximo: 61 |
card_number String |
Número de la tarjeta con la que se debe hacer la transacción. Largo máximo: 19 |
card_expiration_date String |
Fecha de expiración de la tarjeta con la que se realiza la transacción. Largo máximo: 5 |
details Array |
Lista de objetos, uno por cada tienda diferente del mall que participa en la transacción. |
details [].amount Decimal |
Monto de la transacción de una tienda del mall. Máximo 2 decimales para USD. Largo máximo: 17. |
details [].commerce_code String |
Código comercio asignado por Transbank para la tienda perteneciente al mall a la cual corresponde esta transacción. Largo: 12. |
details [].buy_order String |
Orden de compra de la tienda del mall. Este número debe ser único para cada transacción. Largo máximo: 26. La orden de compra puede tener: Números, letras, mayúsculas y minúsculas, y los signos |_=&%.,~:/?[[email protected]()>- . Largo máximo: 26 |
Respuesta Transaction.create Completa Mall
response.getToken();
$response->getToken();
response.Token;
response.token
response.token
200 OK
Content-Type: application/json
{
"token": "e074d38c628122c63e5c0986368ece22974d6fee1440617d85873b7b4efa48a3",
}
Nombre tipo |
Descripción |
---|---|
token String |
Token identificador de la transacción. Largo: 64. |
Consulta de cuotas Completa Mall
Para consultar el valor de las cuotas que pagará el tarjeta habiente en cada transacción dentro transacción completa mall, es necesario llamar al método Transaction.installments()
Transaction.installments() Completa Mall
Operación que permite obtener el monto de la cuota a partir del número de cuotas. El id de la consulta que selecciona el tarjetahabiente debe ser informado en la invocación de la confirmación.
MallFullTransactionInstallmentsDetails installmentsDetails = MallFullTransactionInstallmentsDetails.build().add(commerceCode, buyOrder, installmentsNumber);
final MallFullTransactionInstallmentsResponse response = MallFullTransaction.Transaction.installment(token, installmentsDetails);
$installments_details = [
{
"commerce_code": 597055555552,
"buy_order": "123456789",
"installments_number": 2
},
{
"commerce_code": 597055555553,
"buy_order": "123456790",
"installments_number": 2
},
];
$res = MallTransaction::installments(
$token,
$installments_details
);
using Transbank.Webpay.TransaccionCompletaMall;
var installmentsDetails = new List<MallInstallmentsDetails>();
installmentsDetails.Add(new CreateDetails(
commerceCodeMallOne,
buyOrderMallOne,
installmentsNumberMallOne
));
installmentsDetails.Add(new CreateDetails(
comerceCodeMallTwo,
buyOrderMallTwo,
installmentsNumberMallTwo
));
var response = MallFullTransaction.Installments(
token, installmentDetails
);
installment_details = [
{
commerce_code: 597055555552,
buy_order: '123456789',
installments_number: 2
},
{
commerce_code: 597055555553,
buy_order: '123456790',
installments_number: 2
},
]
response = Transbank::TransaccionCompleta::MallTransaction::installments(token, installment_details)
from transbank.transaccion_completa_mall.transaction import Transaction
details = [
{
'commerce_code': 597055555552,
'buy_order': '123456789',
'installments_number': 2
},
{
'commerce_code': 597055555553,
'buy_order': '123456790',
'installments_number': 2
}
]
response = Transaction.installments(token=token, details=details)
POST /rswebpaytransaction/api/webpay/v1.0/transactions/{token}/installments
Tbk-Api-Key-Id: 597055555551
Tbk-Api-Key-Secret: 579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C
Content-Type: application/json
{
"commerce_code": 597055555552,
"buy_order": "123456789",
"installments_number": 10
}
Parámetros Transaction.installments Completa Mall
Nombre tipo |
Descripción |
---|---|
token String |
Token de la transacción. Largo: 64. (Se envía en la URL, no en el body) |
commerce_code String |
Código comercio asignado por Transbank para la tienda perteneciente al mall a la cual corresponde esta transacción. Largo: 12 |
buy_order String |
Orden de compra de la tienda del mall. Largo máximo: 26 |
installments_number Number |
Cantidad de cuotas. Largo máximo: 2 |
Respuesta Transaction.installments Completa Mall
response.getInstallmentsAmount();
response.getIdQueryInstallments();
DeferredPeriod deferredPeriod = response.getDeferredPeriods()[0];
deferredPeriod.getAmount();
deferredPeriod.getPeriod();
$response->getInstallmentsAmount();
$response->getIdQueryInstallments();
$deferredPeriod = response->getDeferredPeriods()[0];
$deferredPeriod->getAmount();
$deferredPeriod->getPeriod();
response.InstallmentsAmount;
response.IdQueryInstallments;
var deferredPeriod = response.DeferredPeriods[0];
deferredPeriod.Amount;
deferredPeriod.Period;
response.installments_amount
response.id_query_installments
deferred_period = response.deferred_periods[0]
deferred_period.amount
deferred_period.period
response.installments_amount
response.id_query_installments
deferred_period = response.deferred_periods[0]
deferred_period.amount
deferred_period.period
200 OK
Content-Type: application/json
{
"installments_amount": 3334,
"id_query_installments": 11,
"deferred_periods": [
{
"amount": 1000,
"period": 1
}
]
}
Nombre tipo |
Descripción |
---|---|
installments_amount String |
Monto de cada cuota. Largo: 17. |
id_query_installments String |
Identificador de las cuotas. Largo: 19. |
deferred_periods Array |
Arreglo con periodos diferidos. |
deferred_periods [].amount String |
Monto. Largo: 17. |
deferred_periods [].period String |
Índice de periodo. Largo: 2. |
Confirmación de la transacción Completa Mall
Una vez iniciada la transacción y consultado el monto de las cuotas por cada subtransacción, puedes confirmar y obtener el resultado de una transacción completa usando el metodo Transaction.commit()
.
Transaction.commit() Completa Mall
Operación que permite confirmar una transacción. Retorna el estado de la transacción.
MallTransactionCommitDetails details = MallTransactionCommitDetails.build().add(
commerceCode,buyOrder,idQueryInstallments,deferredPeriodIndex,gracePeriod
);
final MallFullTransactionCommitResponse response = MallFullTransaction.Transaction.commit(token, details);
use Transbank\TransaccionCompleta\Transaction;
$details = [
[
"commerce_code" => '597055555552',
"buy_order" => 'ordenCompra1234',
"id_query_installments" => 12,
"deferred_period_index" => 1,
"grace_period" => false
],
[
"commerce_code" => '597055555553',
"buy_order" => 'ordenCompra12345',
"id_query_installments" => 12,
"deferred_period_index" => 1,
"grace_period" => false
]
]
$res = MallTransaction::commit(
$token,
$details
);
using Transbank.Webpay.TransaccionCompletaMall;
var transactionDetails = new List<MallCommitDetails>();
transactionDetails.Add(new MallCommitDetails(
commerceCodeMallOne,
buyOrderMallOne,
idQueryInstallmentsOne,
deferredPeriodIndexOne,
gracePeriodOne
));
transactionDetails.Add(new MallCommitDetails(
commerceCodeMallTwo,
buyOrderMallTwo,
idQueryInstallmentsTwo,
deferredPeriodIndexTwo,
gracePeriodTwo
));
var response = MallFullTransaction.Commit(
token, transactionDetails
);
details = [
{
commerce_code: '597055555552',
buy_order: 'ordenCompra1234',
id_query_installments: 12,
deferred_period_index: 1,
grace_period: false
},
{
commerce_code: '597055555553',
buy_order: 'ordenCompra12345',
id_query_installments: 12,
deferred_period_index: 1,
grace_period: false
}
]
response = Transbank::TransaccionCompleta::MallTransaction::commit(
token: token, details: details
)
details = [
{
"commerce_code": '597055555552',
"buy_order": 'ordenCompra1234',
"id_query_installments": 12,
"deferred_period_index": 1,
"grace_period": false
},
{
"commerce_code": '597055555553',
"buy_order": 'ordenCompra12345',
"id_query_installments": 12,
"deferred_period_index": 1,
"grace_period": false
}
]
response = Transaction.commit(
token=token, details=details
)
PUT /rswebpaytransaction/api/webpay/v1.0/transactions/{token}
Tbk-Api-Key-Id: 597055555551
Tbk-Api-Key-Secret: 579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C
Content-Type: application/json
{
"details": [
{
"commerce_code": 597055555552,
"buy_order": "ordenCompra1234",
"id_query_installments": 12,
"deferred_period_index": 1,
"grace_period": false
}
]
}
Parámetros Transaction.commit Completa Mall
Nombre tipo |
Descripción |
---|---|
token String |
Token de la transacción. Largo: 64. (Se envía en la URL, no en el body) |
details details |
Listado con las transacciones mall. |
commerce_code String |
Código comercio asignado por Transbank para la tienda perteneciente al mall a la cual corresponde esta transacción. Largo máximo: 12 |
buy_order String |
Orden de compra de la tienda del mall. Largo máximo: 26 |
id_query_installments Number |
(Opcional) Identificador de cuota. Largo máximo: 19. Solo enviar si el pago es en cuotas |
deferred_period_index Number |
(Opcional) Cantidad de periodo diferido. Largo máximo: 2. Solo enviar si el pago es en cuotas |
grace_period Boolean |
(Opcional) Indicador de periodo de gracia. Solo enviar si el pago es en cuotas |
Respuesta Transaction.commit Completa Mall
response.getBuyOrder();
response.getCardNumber();
response.getAccountingDate();
response.getTransactionDate();
Detail detail = response.getDetails()[0];
detail.getAuthorizationCode();
detail.getPaymentCodeType();
detail.getResponseCode();
detail.getInstallmentsAmount();
detail.getInstallmentsNumber();
detail.getAmount();
detail.getCommerceCode();
detail.getBuyOrder();
detail.getStatus();
detail.getBalance();
$response->getBuyOrder();
$response->getCardNumber();
$response->getAccountingDate();
$response->getTransactionDate();
$detail = $response->getDetails()[0];
$detail->getAuthorizationCode();
$detail->getPaymentCodeType();
$detail->getResponseCode();
$detail->getInstallmentsAmount();
$detail->getInstallmentsNumber();
$detail->getAmount();
$detail->getCommerceCode();
$detail->getBuyOrder();
$detail->getStatus();
$detail->getBalance();
response.BuyOrder;
response.CardNumber;
response.AccountingDate;
response.TransactionDate;
detail = response.Details[0];
detail.AuthorizationCode;
detail.PaymentCodeType;
detail.ResponseCode;
detail.InstallmentsAmount;
detail.InstallmentsNumber;
detail.Amount;
detail.CommerceCode;
detail.BuyOrder;
detail.Status;
detail.Balance;
response.buy_order
response.card_number
response.accounting_date
response.transaction_date
detail = response.details[0]
detail.authorization_code
detail.payment_code_type
detail.response_code
detail.installments_amount
detail.installments_number
detail.amount
detail.commerce_code
detail.buy_order
detail.status
detail.balance
response.buy_order
response.card_number
response.accounting_date
response.transaction_date
detail = response.details[0]
detail.authorization_code
detail.payment_code_type
detail.response_code
detail.installments_amount
detail.installments_number
detail.amount
detail.commerce_code
detail.buy_order
detail.status
detail.balance
200 OK
Content-Type: application/json
{
"buy_order": "415034240",
"card_detail": {
"card_number": "6623"
},
"accounting_date": "0321",
"transaction_date": "2019-03-21T15:43:48.523Z",
"details": [
{
"amount": 500,
"status": "AUTHORIZED",
"authorization_code": "1213",
"payment_type_code": "VN",
"response_code": 0,
"installments_number": 0,
"commerce_code": "597055555552",
"buy_order": "505479072"
}
]
}
Nombre tipo |
Descripción |
---|---|
buy_order String |
Orden de compra del mall. Largo máximo: 26 |
card_detail carddetails |
Objeto que representa los datos de la tarjeta de crédito del tarjeta habiente. |
card_detail.card_number String |
4 últimos números de la tarjeta de crédito del tarjetahabiente. Solo para comercios autorizados por Transbank se envía el número completo. Largo máximo: 19. |
accounting_date String |
Fecha de la autorización. Largo: 4, formato MMYY |
transaction_date String |
Fecha y hora de la autorización. formato: ISO8601 |
details Array |
Lista con resultado de cada una de las transacciones enviadas. |
details [].amount Number |
Monto de la transacción. Largo máximo: 17 Acepta decimales en caso de ser operación en dolares |
details [].status String |
Estado de la transacción (INITIALIZED, AUTHORIZED, REVERSED, FAILED, NULLIFIED, PARTIALLY_NULLIFIED, CAPTURED). Largo máximo: 64 |
details [].authorization_code String |
Código de autorización de la transacción Largo máximo: 2 |
details [].payment_type_code String |
Tipo de pago de la transacción. VN = Venta Normal. VC = Venta en cuotas. SI = 3 cuotas sin interés. S2 = 2 cuotas sin interés. NC = N Cuotas sin interés. VD = Venta Débito. (Próximamente) VP = Venta Prepago. (Próximamente) |
details [].responseCode Number |
Código de respuesta de la autorización. Valores posibles: 0 = Transacción aprobada -1 = Rechazo de transacción - Reintente (Posible error en el ingreso de datos de la transacción) -2 = Rechazo de transacción (Se produjo fallo al procesar la transacción. Este mensaje de rechazo está relacionado a parámetros de la tarjeta y/o su cuenta asociada) -3 = Error en transacción (Interno Transbank) -4 = Rechazo emisor (Rechazada por parte del emisor) -5 = Rechazo - Posible Fraude (Transacción con riesgo de posible fraude) |
details [].installments_number Number |
Cantidad de cuotas. Largo máximo: 2 |
details [].installments_amount Number |
Monto de cada cuota. Largo máximo: 17 |
details [].commerce_code String |
Código comercio de la tienda. Largo: 12 |
details [].buy_order String |
Orden de compra de la tienda. Largo máximo: 26 |
prepaid_balance Number |
Saldo de la tarjeta de prepago. Se envía solo si se informa saldo. Largo máximo 17 |
Consultar estado de una transacción Completa Mall
Esta operación permite obtener el estado de la transacción Completa Mall en cualquier momento. En condiciones normales es probable que no se requiera ejecutar, pero en caso de ocurrir un error inesperado permite conocer el estado y tomar las acciones que correspondan.
Transaction.status() Completa Mall
Obtiene resultado de transacción a partir de un token.
MallFullTransaction.Transaction.status(token)
use Transbank\TransaccionCompleta\Transaction;
$response = MallTransaction::status(token)
using Transbank.Webpay.TransaccionCompletaMall;
MallFullTransaction.Status(token);
Transbank::TransaccionCompleta::MallTransaction::status(token)
Transaction.status(token)
GET /rswebpaytransaction/api/webpay/v1.0/transactions/{token}
Tbk-Api-Key-Id: 597055555551
Tbk-Api-Key-Secret: 579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C
Content-Type: application/json
Parámetros Transaction.status Completa Mall
Nombre tipo |
Descripción |
---|---|
token String |
Token de la transacción. Largo: 64. (Se envía en la URL, no en el body) |
Respuesta Transaction.status Completa Mall
response.getBuyOrder();
response.getCardNumber();
response.getAccountingDate();
response.getTransactionDate();
Detail detail = response.getDetails()[0];
detail.getAuthorizationCode();
detail.getPaymentCodeType();
detail.getResponseCode();
detail.getInstallmentsAmount();
detail.getInstallmentsNumber();
detail.getAmount();
detail.getCommerceCode();
detail.getBuyOrder();
detail.getStatus();
detail.getBalance();
$response->getBuyOrder();
$response->getCardNumber();
$response->getAccountingDate();
$response->getTransactionDate();
$detail = $response->getDetails()[0];
$detail->getAuthorizationCode();
$detail->getPaymentCodeType();
$detail->getResponseCode();
$detail->getInstallmentsAmount();
$detail->getInstallmentsNumber();
$detail->getAmount();
$detail->getCommerceCode();
$detail->getBuyOrder();
$detail->getStatus();
$detail->getBalance();
response.BuyOrder;
response.CardNumber;
response.AccountingDate;
response.TransactionDate;
detail = response.Details[0];
detail.AuthorizationCode;
detail.PaymentCodeType;
detail.ResponseCode;
detail.InstallmentsAmount;
detail.InstallmentsNumber;
detail.Amount;
detail.CommerceCode;
detail.BuyOrder;
detail.Status;
detail.Balance;
response.buy_order
response.card_number
response.accounting_date
response.transaction_date
detail = response.details[0]
detail.authorization_code
detail.payment_code_type
detail.response_code
detail.installments_amount
detail.installments_number
detail.amount
detail.commerce_code
detail.buy_order
detail.status
detail.balance
response.buy_order
response.card_number
response.accounting_date
response.transaction_date
detail = response.details[0]
detail.authorization_code
detail.payment_code_type
detail.response_code
detail.installments_amount
detail.installments_number
detail.amount
detail.commerce_code
detail.buy_order
detail.status
detail.balance
200 OK
Content-Type: application/json
{
"buy_order": "415034240",
"card_detail": {
"card_number": "6623"
},
"accounting_date": "0321",
"transaction_date": "2019-03-21T15:43:48.523Z",
"details": [
{
"amount": 500,
"status": "AUTHORIZED",
"authorization_code": "1213",
"payment_type_code": "VN",
"response_code": 0,
"installments_number": 0,
"commerce_code": "597055555552",
"buy_order": "505479072"
}
]
}
Nombre tipo |
Descripción |
---|---|
buy_order String |
Orden de compra del mall. Largo máximo: 26 |
card_detail carddetails |
Objeto que representa los datos de la tarjeta de crédito del tarjeta habiente. |
card_detail.card_number String |
4 últimos números de la tarjeta de crédito del tarjetahabiente. Solo para comercios autorizados por Transbank se envía el número completo. Largo máximo: 19. |
accouting_date String |
Fecha de la autorización. Largo: 4, formato MMDD |
transaction_date String |
Fecha y hora de la autorización. Largo: 6, formato: ISO8601 |
details Array |
Lista con resultado de cada una de las transacciones enviadas. |
details [].amount Number |
Monto de la transacción. Largo máximo: 17 Acepta decimales en caso de ser operación en dolares |
details [].status String |
Estado de la transacción (INITIALIZED, AUTHORIZED, REVERSED, FAILED, NULLIFIED, PARTIALLY_NULLIFIED, CAPTURED). Largo máximo: 64 |
details [].authorization_code String |
Código de autorización de la transacción Largo máximo: 6 |
details [].payment_type_code String |
Tipo de pago de la transacción. VN = Venta Normal. VC = Venta en cuotas. SI = 3 cuotas sin interés. S2 = 2 cuotas sin interés. NC = N Cuotas sin interés. VD = Venta Débito. (Próximamente) VP = Venta Prepago. (Próximamente) |
details [].responseCode Number |
Código de respuesta de la autorización. Valores posibles: 0 = Transacción aprobada -1 = Rechazo de transacción - Reintente (Posible error en el ingreso de datos de la transacción) -2 = Rechazo de transacción (Se produjo fallo al procesar la transacción. Este mensaje de rechazo está relacionado a parámetros de la tarjeta y/o su cuenta asociada) -3 = Error en transacción (Interno Transbank) -4 = Rechazo emisor (Rechazada por parte del emisor) -5 = Rechazo - Posible Fraude (Transacción con riesgo de posible fraude) |
details [].installments_number Number |
Cantidad de cuotas. Largo máximo: 2 |
details [].installments_amount Number |
Monto de cada cuota. Largo máximo: 17 |
details [].commerce_code String |
Código comercio de la tienda. Largo: 12 |
details [].buy_order String |
Orden de compra de la tienda. Largo máximo: 26 |
balance Number |
Monto restante para un detalle anulado. Largo máximo: 17 |
prepaid_balance Number |
Saldo de la tarjeta de prepago. Se envía solo si se informa saldo. Largo máximo 17 |
Anulación Transacción Completa
Permite generar el reembolso del total o parte del monto de una transacción completa. Dependiendo de la siguiente lógica de negocio la invocación a esta operación generará una reversa o una anulación:
- Si se especifica un valor en el campo “amount” se ejecutará siempre una anulación.
- Si se supera el tiempo máximo para ejecutar una reversa se ejecutará una anulación.
- Si no se ha dado ninguno de los casos anteriores se ejecutará una reversa.
Transaction.refund() Completa
Permite solicitar a Webpay la anulación de una transacción realizada previamente y que se encuentre vigente.
final MallFullTransactionRefundResponse response = MallFullTransaction.Transaction.refund(
token, amount, commerceCode, buyOrder
);
use Transbank\TransaccionCompleta\Transaction;
MallTransaction::refund(
token,
child_buy_order,
child_commerce_code,
amount
);
using Transbank.Webpay.TransaccionCompletaMall;
MallRefundRequest(
token,
childBuyOrder,
childCommerceCode,
amount
);
Transbank::TransaccionCompleta::MallTransaction::refund(
token: token,
child_buy_order: child_buy_order,
child_commerce_code: child_commerce_code,
amount: amount
)
from transbank.transaccion_completa_mall.transaction import Transaction
Transaction.refund(
token=token, amount=amount, child_commerce_code=child_commerce_code, child_buy_order=child_buy_order
)
POST /rswebpaytransaction/api/webpay/v1.0/transactions/{token}/refunds
Tbk-Api-Key-Id: 597055555551
Tbk-Api-Key-Secret: 579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C
Content-Type: application/json
{
"buy_order": "415034240",
"commerce_code": "597055555552",
"amount": 1000
}
Parámetros Transaction.refund Completa
Nombre tipo |
Descripción |
---|---|
token String |
Token de la transacción. Largo: 64. (Se envía en la URL, no en el body) |
buy_order String |
Orden de compra de la transacción que se requiere capturar. Largo máximo: 26. |
commerce_code Number |
Tienda hija que realizó la transacción. Largo: 12. |
amount Formato número entero para transacciones en peso. Sólo en caso de dólar acepta dos decimales. |
Monto que se desea anular o reversar de la transacción. Largo máximo: 17 |
Respuesta Transaction.refund Completa
response.getType();
response.getAuthorizationCode();
response.getAuthorizationDate();
response.getNullifiedAmount();
response.getBalance();
response.getResponseCode();
$response->getType();
$response->getAuthorizationCode();
$response->getAuthorizationDate();
$response->getNullifiedAmount();
$response->getBalance();
$response->getResponseCode();
response.Type;
response.AuthorizationCode;
response.AuthorizationDate;
response.NullifiedAmount;
response.Balance;
response.ResponseCode;
response.type
response.authorization_code
response.authorization_date
response.nullified_amount
response.balance
response.response_code
response.type
response.authorization_code
response.authorization_date
response.nullified_amount
response.balance
response.response_code
200 OK
Content-Type: application/json
{
"type": "NULLIFIED",
"authorization_code": "123456",
"authorization_date": "2019-03-20T20:18:20Z",
"nullified_amount": 1000.00,
"balance": 0.00,
"response_code": 0
}
Nombre tipo |
Descripción |
---|---|
type String |
Tipo de reembolso (REVERSED o NULLIFIED). Si es REVERSED no se devolverán datos de la transacción (authorization code, etc). Largo máximo: 10 |
authorization_code String |
Código de autorización de la anulación. Largo máximo: 6. Solo viene en caso de anulación. |
authorization_date String |
Fecha y hora de la autorización. Solo viene en caso de anulación.RE |
nullified_amount Decimal |
Monto anulado. Largo máximo: 17. Solo viene en caso de anulación. |
balance Decimal |
Saldo actualizado de la transacción (considera la venta menos el monto anulado). Largo máximo: 17. Solo viene en caso de anulación. |
response_code Number |
Código del resultado del pago. Si es exitoso es 0, de lo contrario el pago no fue realizado. Largo máximo: 2. Solo viene en caso de anulación. |
Códigos y mensajes de error
Al realizar cualquier solicitud al API REST, además de los datos de respuesta, se incluirá uno de los siguientes códigos de estado de respuesta HTTP dependiendo del resultado obtenido:
Solicitud exitosa
Cuando la operación solicitada es ejecutada correctamente, se pueden recibir estos status HTTP:
Código de estado HTTP | Descripción |
---|---|
200 | La operación se ha ejecutado exitosamente |
204 | La operación DELETE se ha ejecutado exitosamente |
Códigos de error
Todos los errores reportados por la API REST de Webpay despliegan un mensaje JSON con una descripción del error.
{
"error_message": "token is required"
}
Código de estado HTTP | Descripción |
---|---|
400 | El mensaje JSON es inválido. Puedes ser que no corresponda a un mensaje bien estructurado o que contenga un campo no esperado. |
401 | No autorizado. API Key y/o API Secret inválidos |
404 | La transacción no ha sido encontrada. |
405 | Método no permitido. |
406 | No fue posible procesar la respuesta en el formato que el cliente indica. |
415 | Tipo de mensaje no permitido. |
422 | El requerimiento no ha podido ser procesado ya sea por validaciones de datos o por lógica de negocios. |
500 | Ha ocurrido un error inesperado. |
Puesta en Producción
Puedes revisar el proceso necesario para operar en el ambiente de producción en la documentación
Configuración para producción utilizando los SDK
Si estas utilizando algún SDK oficial de Transbank, entonces debes seguir los siguientes pasos.
Revisa la esta sección de la documentación para ver el código necesario para configurar tu propio código de comercio y Api Key Secret.