API Referencia
undefined

Webpay


Ambientes y Credenciales

Ambiente de Producción

Configuration configuration = new Configuration();
configuration.setEnvironment(Webpay.Environment.LIVE);
$configuration = new Configuration();
$configuration->setEnvironment("PRODUCCION");
var configuration = new Configuration();
configuration.Environment = "PRODUCCION";

Las URLs de endpoints de producción están alojados dentro de https://webpay3g.transbank.cl/.

Los SDKs traen pre-configurado los certificados de Transbank y validan automáticamente las respuestas. Sólo debes asegurarte de mantener tu SDK actualizado para evitar que los certificados preconfigurados expiren. O también puedes sobre-escribir manualmente el certificado de Webpay a usar para la validación:

configuration.setWebpayCert(
    "-----BEGIN CERTIFICATE-----\n" +
    "MIIEDzCCAvegAwIBAgIJAMaH4DFTKdnJMA0GCSqGSIb3DQEBCwUAMIGdMQswCQYD\n" +
    "VQQGEwJDTDERMA8GA1UECAwIU2FudGlhZ28xETAPBgNVBAcMCFNhbnRpYWdvMRcw\n" +
    ...
    "MX5lzVXafBH/sPd545fBH2J3xAY3jtP764G4M8JayOFzGB0=\n" +
    "-----END CERTIFICATE-----\n");
$configuration->setWebpayCert(
     "-----BEGIN CERTIFICATE-----\n" .
    "MIIEDzCCAvegAwIBAgIJAMaH4DFTKdnJMA0GCSqGSIb3DQEBCwUAMIGdMQswCQYD\n" .
    "VQQGEwJDTDERMA8GA1UECAwIU2FudGlhZ28xETAPBgNVBAcMCFNhbnRpYWdvMRcw\n" .
    ...
    "MX5lzVXafBH/sPd545fBH2J3xAY3jtP764G4M8JayOFzGB0=\n" .
    "-----END CERTIFICATE-----\n");
);
configuration.WebpayCertPath = @"C:\Certs\certificado-publico-transbank.crt"

Para validar las respuestas generadas por Transbank debes usar un certificado público de Webpay. En el repositorio GitHub transbank-webpay-credenciales podrás encontrar el certificado actualizado.

Ambiente de Integración

configuration.setEnvironment(Webpay.Environment.TEST);
$configuration->setEnvironment("INTEGRACION");
configuration.Environment = "INTEGRACION";

Las URLs de endpoints de integración están alojados dentro de 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

configuration.setCommerceCode("597020000540");
configuration.setPrivateKey(
    "-----BEGIN RSA PRIVATE KEY-----\n" +
    ... +
    "-----END RSA PRIVATE KEY-----\n"
);
configuration.setPublicCert(
    "-----BEGIN CERTIFICATE-----\n" +
    ... +
    "-----END CERTIFICATE-----\n"
);
$configuration->setCommerceCode("597020000540");
$configuration->setPrivateKey(
    "-----BEGIN RSA PRIVATE KEY-----\n" .
    ... .
    "-----END RSA PRIVATE KEY-----\n"
);
$configuration->setPublicCert(
    "-----BEGIN CERTIFICATE-----\n" .
    ... .
    "-----END CERTIFICATE-----\n"
);
configuration.CommerceCode = "597020000540";
configuration.PrivateCertPfxPath = @"C:/Path/to/private/Cert.pfx";
configuration.Password = "PfxPassword";

Todas las peticiones que hagas deben estar firmadas con tu llave privada y certificado enviado a Transbank. Dichas credenciales deben coincidir con el código de comercio usado en cada petición.

Consulta la documentación para generar una llave privada y un certificado usando openssl si no sabes aún como realizarlo.

En el repositorio GitHub transbank-webpay-credenciales podrás encontrar códigos de comercios y certificados actualizados para probar en integración aunque aún no tengas tu propio código de comercio.

Los SDKs ya incluyen esos códigos de comercio, certificados y llaves privadas 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:

Configuration configuration =
    Configuration.forTestingWebpayPlusNormal();

Configuration configuration =
    Configuration.forTestingWebpayPlusCapture();

Configuration configuration =
    Configuration.forTestingWebpayPlusMall();

Configuration configuration =
    Configuration.forTestingWebpayOneClickNormal();
$configuration = Configuration::forTestingWebpayPlusNormal();

$configuration = Configuration::forTestingWebpayPlusCapture();

$configuration = Configuration::forTestingWebpayPlusMall();

$configuration = Configuration::forTestingWebpayOneClickNormal();
var configuration = Configuration.ForTestingWebpayPlusNormal();

var configuration = Configuration.ForTestingWebpayPlusCapture();

var configuration = Configuration.ForTestingWebpayPlusMall();

var configuration = Configuration.ForTestingWebpayOneClickNormal();

Webpay Plus Normal

WebpayNormal transaction =
    new Webpay(configuration).getNormalTransaction();
$transaction =
    (new Webpay($configuration))->getNormalTransaction();
var transaction = new Webpay(configuration).NormalTransaction;

WSDL: /WSWebpayTransaction/cxf/WSWebpayService?wsdl

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 o débito lo realiza en forma segura en Webpay.

Flujo en caso de éxito

De cara al tarjetahabiente, el flujo de páginas para la transacción es el siguiente:

Flujo de páginas Webpay Plus Normal

Desde el punto de vista técnico, la secuencia es la siguiente:

Diagrama de secuencia Webpay Plus Normal

  1. Una vez seleccionado los bienes o servicios, tarjetahabiente decide pagar a través de Webpay.
  2. El comercio inicia una transacción en Webpay, invocando el método initTransaction().
  3. Webpay procesa el requerimiento y entrega como resultado de la operación el token de la transacción y URL de redireccionamiento a la cual se deberá redirigir al tarjetahabiente.
  4. Comercio redirecciona al tarjetahabiente hacia Webpay, con el token de la transacción a la URL indicada en punto 3. La redirección se realiza enviando por método POST el token en variable token_ws.
  5. El navegador Web del tarjetahabiente realiza una petición HTTPS a Webpay, en base al redireccionamiento generado por el comercio en el punto 4.
  6. Webpay responde al requerimiento desplegando el formulario de pago de Webpay. Desde este punto la comunicación es entre Webpay y el tarjetahabiente, sin interferir el comercio. El formulario de pago de Webpay despliega, entre otras cosas, el monto de la transacción, información del comercio como nombre y logotipo, las opciones de pago a través de crédito o débito.
  7. Tarjetahabiente ingresa los datos de la tarjeta, hace clic en pagar en formulario Webpay.
  8. Webpay procesa la solicitud de autorización (primero autenticación bancaria y luego la autorización de la transacción).
  9. Una vez resuelta la autorización, Webpay retorna el control al comercio, realizando un redireccionamiento HTTPS hacia la página de transición del comercio, en donde se envía por método POST el token de la transacción en la variable token_ws. El comercio debe implementar la recepción de esta variable.
  10. El navegador Web del tarjetahabiente realiza una petición HTTPS al sitio del comercio, en base a la redirección generada por Webpay en el punto 9.
  11. El sitio del comercio recibe la variable token_ws e invoca el segundo método Web, getTransactionResult() (mientras se despliega la página de transición), para obtener el resultado de la autorización. Se recomienda que el resultado de la autorización sea persistida en los sistemas del comercio, ya que este método se puede invocar una única vez por transacción.
  12. Comercio recibe el resultado de la invocación del método getTransactionResult().
  13. Para que el comercio informe a Webpay que el resultado de la transacción se ha recibido sin problemas, el sistema del comercio debe consumir el tercer método acknowledgeTransaction(). Si esto fue ejecutado correctamente el producto puede ser liberado al cliente.

  14. Una vez recibido el resultado de la transacción e informado a Webpay su correcta recepción, el sitio del comercio debe redirigir al tarjetahabiente nuevamente a Webpay, con la finalidad de desplegar el comprobante de pago. Es importante realizar este punto para que el tarjetahabiente entienda que el proceso de pago fue exitoso, y que involucrará un cargo a su tarjeta bancaria. El redireccionamiento a Webpay se hace utilizando como destino la URL informada por el método getTransactionResult()enviando por método POST el token de la transacción en la variable token_ws.

  15. Webpay recibe un requerimiento con la variable token_ws
  16. Webpay identifica la transacción y despliega el comprobante de pago al tarjetahabiente.
  17. Una vez visualizado el comprobante de pago por un periodo acotado de tiempo, el tarjetahabiente es redirigido de vuelta al sitio del comercio, por medio de redireccionamiento con el token en la variable token_ws enviada por método POST hacia la página final informada por el comercio en el método initTransaction.
  18. Sitio del comercio despliega página final de pago

Flujo si usuario aborta el pago

Diagrama de secuencia si usuario aborta el pago

Si el tarjetahabiente anula la transacción en el formulario de pago de Webpay, el flujo cambia y los pasos son los siguientes:

  1. Una vez seleccionado los bienes o servicios, tarjetahabiente decide pagar a través de Webpay.
  2. El comercio inicia una transacción en Webpay, invocando el método initTransaction().
  3. Webpay procesa el requerimiento y entrega como resultado de la operación el token de la transacción y URL de redireccionamiento a la cual se deberá redirigir al tarjetahabiente.
  4. Comercio redirecciona al tarjetahabiente hacia Webpay, con el token de la transacción a la URL indicada en punto 3. La redirección se realiza enviando por método POST el token en variable token_ws.
  5. El navegador Web del tarjetahabiente realiza una petición HTTPS a Webpay, en base al redireccionamiento generado por el comercio en el punto 4.
  6. Webpay responde al requerimiento desplegando el formulario de pago de Webpay. Desde este punto la comunicación es entre Webpay y el tarjetahabiente, sin interferir el comercio. El formulario de pago de Webpay despliega, entre otras cosas, el monto de la transacción, información del comercio como nombre y logotipo, las opciones de pago a través de crédito o débito.
  7. Tarjetahabiente hace clic en “anular”, en formulario Webpay.
  8. Webpay retorna el control al comercio, realizando un redireccionamiento HTTPS hacia la página de final del comercio, en donde se envía por método POST el token de la transacción en la variable TBK_TOKEN además de las variables TBK_ORDEN_COMPRA y TBK_ID_SESION.

  9. El comercio con la variable TBK_TOKEN debe invocar el método getTransactionResult(), para obtener el resultado de la autorización. En este caso debe obtener una excepción (Timeout 272), pues el pago fue abortado.

  10. El comercio debe informar al tarjetahabiente que su pago no se completó.

Otros flujos

Es importante destacar los siguientes flujos adicionales que se deben contemplar:

  1. Una vez que el tarjetahabiente es redirigido al formulario de pago, tiene 10 minutos para completarlo. Pasado ese tiempo, Webpay cierra la transacción automáticamente y redirecciona al usuario de vuelta al comercio, enviándolo a la URL de finish (página final del comercio). Esta vez, a diferencia del flujo al abortar con el botón 'Anular transacción', no llega el parametro TBK_TOKEN, y solo llega TBK_ID_SESION y TBK_ORDEN_COMPRA.

  2. Si ocurre un error mientras el tarjetahabiente está en el formulario de pago (por ejemplo, si cierra la pestaña del navegador y tratar de recuperarla o en otros casos de borde), se le despliega una pantalla de error informando que no se le han realizado cobros y adicionalmente presenta un enlace para volver al sitio del comercio. Al hacer click sobre ese enlace, es redirigido a la URL de finish (página final del comercio). Esta vez, a diferencia de los casos anteriores, enviando TBK_TOKEN y token_ws (ambos campos con el mismo token). Este caso es importante de destacar, ya que si se configura la misma URL para returnUrl y finishUrl en el initTransaction, no es posible saber si se trata de un flujo de pago fallido que llega directo a finishUrl, o si es un flujo normal y llegó al returnUrl con un éxito/rechazo. Por esto, se recomienda siempre tener URLs diferentes para returnUrl y finishUrl.

Crear una transacción Webpay Plus Normal

Para crear una transacción basta llamar al método initTransaction()

initTransaction()

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.

WsInitTransactionOutput initResult =
    transaction.initTransaction(
        amount, sessionId, buyOrder, returnUrl, finalUrl);
$initResult = $transaction->initTransaction(
        $amount, $buyOrder, $sessionId, $returnUrl, $finalUrl);
var initResult = transaction.initTransaction(
        amount, buyOrder, sessionId, returnUrl, finalUrl);

Parámetros initTransaction

Nombre
tipo
Descripción
WSTransactionType
wsTransactionType
Indica el tipo de transacción, su valor debe ser siempre TR_NORMAL_WS para transacciones normales. Los SDKs se encargan automáticamente de este parámetro
sessionId
xs:string
(Opcional) Identificador de sesión, uso interno de comercio, este valor es devuelto al final de la transacción. Largo máximo: 61
returnURL
xs:anyURI
URL del comercio, a la cual Webpay redireccionará posterior al proceso de autorización. Largo máximo: 256
finalURL
xs:anyURI
URL del comercio a la cual Webpay redireccionará posterior al voucher de éxito de Webpay. Largo máximo 256
transactionDetails
wsTransactionDetail
Lista de objetos del tipo wsTransactionDetail, el cual contiene datos de la transacción. Para transacciones normales debe contener exactamente un elemento
transactionDetails[0].amount
xs:decimal
Monto de la transacción. Máximo 2 decimales para USD. Largo máximo: 10
transactionDetails[0].buyOrder
xs: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 |_=&%.,~:/?[+!@()>-
transactionDetails[0].commerceCode
xs:string
Código comercio de la tienda entregado por Transbank. Largo: 12, Si el código que posees es de 8 dígitos debes anteponer 5970. Los SDKs se encargan automáticamente de este parámetro a partir de la configuración de comercio y certificados/llaves usada para iniciar la transacción

Respuesta initTransaction

initResult.getToken();
initResult.getUrl();
$initResult->token;
$initResult->url;
initResult.token;
initResult.url;
Nombre
tipo
Descripción
token
xs:string
Token de la transacción. Largo: 64.
url
xs:string
URL de formulario de pago Webpay. Largo máximo: 256.

Confirmar una transacción Webpay Plus Normal

Cuando el comercio retoma el control mediante returnURL puedes confirmar una transacción usando los métodos getTransactionResult() y acknowledgeTransaction()

getTransactionResult()

Permite obtener el resultado de la transacción una vez que Webpay ha resuelto su autorización financiera.

TransactionResultOutput result =
    transaction.getTransactionResult(
        request.getParameter("token_ws"));
$result = transaction->getTransactionResult(
    $request->input("token_ws"));
var result = transaction.getTransactionResult(tokenWs));

Parámetros getTransactionResult

Nombre
tipo
Descripción
tokenInput
xs:string
Token de la transacción. Largo: 64.

Respuesta getTransactionResult


WsTransactionDetailOutput output =
    result.getDetailOutput().get(0);
if (output.getResponseCode() == 0) {
    // Transaccion exitosa, puedes procesar el resultado
    // con el contenido de las variables result y output.
    result.getBuyOrder();
    result.getSessionId();
    result.getCardDetail().getCardNumber();
    result.getCardDetail().getCardExpirationDate();
    result.getAccountingDate();
    result.getTransactionDate();
    result.getVci();
    result.getUrlRedirection();
    output.getAuthorizationCode();
    output.getPaymentType();
    output.getAmount();
    output.getSharesNumber();
    output.getCommerceCode();
    output.getBuyOrder();
}
$output = $result->detailOutput;
if ($output->responseCode == 0) {
    // Transaccion exitosa, puedes procesar el resultado
    // con el contenido de las variables $result y $output.
    $result->buyOrder;
    $result->sessionId;
    $result->cardDetail->cardNumber;
    $result->cardDetail->cardExpirationDate;
    $result->accountingDate;
    $result->transactionDate;
    $result->vci;
    $result->urlRedirection;
    $output->authorizationCode;
    $output->paymentType;
    $output->amount;
    $output->sharesNumber;
    $output->commerceCode;
    $output->buyOrder;
}
var output = result.detailOutput[0]
if (output.responseCode == 0) {
    // Transaccion exitosa, puedes procesar el resultado
    // con el contenido de las variables result y output.
    result.buyOrder;
    result.sessionId;
    result.cardDetail.cardNumber;
    result.cardDetail.cardExpirationDate;
    result.accountingDate;
    result.transactionDate;
    result.vci;
    result.urlRedirection;
    output.authorizationCode;
    output.paymentType;
    output.amount;
    output.sharesNumber;
    output.commerceCode;
    output.buyOrder;
}
Nombre
tipo
Descripción
buyOrder
xs:string
Orden de compra de la tienda indicado en initTransaction(). Largo máximo: 26
sessionId
xs:string
Identificador de sesión, el mismo enviado originalmente por el comercio en initTransaction(). Largo máximo: 61.
cardDetails
carddetails
Objeto que representa los datos de la tarjeta de crédito del tarjeta habiente.
cardDetails.cardNumber
xs: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.
cardDetails.cardExpirationDate
xs:string
(Opcional) Fecha de expiración de la tarjeta de crédito del tarjetahabiente. Formato YYMM Solo para comercios autorizados por Transbank. Largo máximo: 4
accountingDate
xs:string
Fecha de la autorización. Largo: 4, formato MMDD
transactionDate
xs:string
Fecha y hora de la autorización. Largo: 6, formato: MMDDHHmm
VCI
xs: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
A = Intento de autenticación
INV = Autenticación inválida
EOP = Error Operativo
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)
urlRedirection
xs:string
URL de redirección para visualización de voucher. Largo máximo: 256
detailsOutput
wsTransactionDetailOutput
Lista con resultado de cada una de las transactionDetails enviados en initTransaction(). Para Webpay Plus Normal tiene máximo un elemento.
detailsOutput[0].authorizationCode
xs:string
Código de autorización de la transacción Largo máximo: 6
detailsOutput[0].paymentTypeCode
xs: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.
detailsOutput[0].responseCode
xs: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)
detailsOutput[0].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
detailsOutput[0].sharesNumber
xs:int
Cantidad de cuotas. Largo máximo: 2
detailsOutput[0].commerceCode
xs:string
Código comercio de la tienda. Largo: 12
detailsOutput[0].buyOrder
xs:string
Orden de compra de la tienda. Largo máximo: 26

acknowledgeTransaction()

Indica a Webpay que se ha recibido conforme el resultado de la transacción.

Parámetros acknowledgeTransaction

Los SDKs ejecutan automáticamente acknowledgeTransaction() cuando reciben la respuesta de getTransactionResult().

Nombre
tipo
Descripción
tokenInput
xs:string
Token de la transacción. Largo: 64.

Respuesta acknowledgeTransaction

Los SDKs arrojarán una excepción dentro de getTransactionResult() si falla el acknowledgeTransaction() que se ejecuta automáticamente.

Ninguna.

Webpay Plus Mall

WebpayMallNormal transaction =
    new Webpay(configuration).getMallNormalTransaction();
$transaction =
    (new Webpay(configuration))->getMallNormalTransaction();
var transaction =
    new Webpay(configuration).MallNormalTransaction;

WSDL: /WSWebpayTransaction/cxf/WSWebpayService?wsdl

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.

Desagregación de un pago Webpay Mall

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 Webpay Plus Mall

El flujo de Webpay Plus Mall es en general el mismo que el de Webpay Plus Normal 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 Webpay Plus Mall

Para crear una transacción basta llamar al método initTransaction()

initTransaction() Mall

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.

WsTransactionDetail storeTransaction = new WsTransactionDetail();
List<WsTransactionDetail> transactions = new ArrayList<>();

storeTransaction.setAmount(amount);
storeTransaction.setCommerceCode(storeCode);
storeTransaction.setBuyOrder(storeBuyOrder);
transactions.add(storeTransaction);

storeTransaction.setAmount(anotherAmount);
storeTransaction.setCommerceCode(anotherStoreCode);
storeTransaction.setBuyOrder(anotherStoreBuyOrder);
transactions.add(storeTransaction);

WsInitTransactionOutput initResult = transaction.initTransaction(
    buyOrder, sessionId, returnUrl, finalUrl, transactions);
$transactions = array();
$transactions[] = array(
    "storeCode" => $storeCode,
    "amount" => $amount,
    "buyOrder" => $buyOrder,
    "sessionId" => $sessionId
)
$transactions[] = array(
    "storeCode" => $anotherStoreCode,
    "amount" => $anotherAmount,
    "buyOrder" => $anotherBuyOrder,
    "sessionId" => $anotherSessionId
)

$initResult = $transaction->initTransaction(
    $buyOrder, $sessionId, $returnUrl, $finalUrl, $transactions);
var transactions = new Dictionary<string, string[]>();

transactions.Add(storeCode,
    new string[] {storeCode, amount, buyOrder});
transactions.Add(anotherStoreCode,
    new string[] {anotherStoreCode, anotherAmount, anotherBuyOrder});

var initResult = transaction.initTransaction(
    buyOrder, sessionId, returnUrl, finalUrl, transactions);

Parámetros initTransaction Mall

Nombre
tipo
Descripción
WSTransactionType
wsTransactionType
Indica el tipo de transacción, su valor debe ser siempre TR_MALL_WS para transacciones mall. Los SDKs se encargan automáticamente de este parámetro.
sessionId
xs:string
(Opcional) Identificador de sesión, uso interno de comercio, este valor es devuelto al final de la transacción. Largo máximo: 61
returnURL
xs:anyURI
URL del comercio, a la cual Webpay redireccionará posterior al proceso de autorización Largo máximo: 256.
finalURL
xs:anyURI
URL del comercio a la cual Webpay redireccionará posterior al voucher de éxito de Webpay. Largo máximo 256.
buyOrder
xs:string
Es el código único de la orden de compra generada por el comercio mall.
transactionDetails
wsTransactionDetail
Lista de objetos del tipo wsTransactionDetail, uno por cada tienda diferente del mall que participa en la transacción.
transactionDetails[].amount
xs:decimal
Monto de la transacción de una tienda del mall. Máximo 2 decimales para USD. Largo máximo: 10.
transactionDetails[].buyOrder
xs: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 |_=&%.,~:/?[+!@()>-.
transactionDetails[].commerceCode
xs:string
Código comercio asignado por Transbank para la tienda perteneciente al mall a la cual corresponde esta transacción. Largo: 12.
Si el código que posees es de 8 dígitos debes anteponer 5970.

Respuesta initTransaction Mall

initResult.getToken();
initResult.getUrl();
$initResult->token;
$initResult->url;
initResult.token;
initResult.url;
Nombre
tipo
Descripción
token
xs:string
Token de la transacción. Largo: 64.
url
xs:string
URL de formulario de pago Webpay. Largo máximo: 256.

Confirmar una transacción Webpay Plus Mall

Para confirmar una transacción se deben usar los métodos getTransactionResult() y acknowledgeTransaction()

getTransactionResult() Mall

Permite obtener el resultado de la transacción una vez que Webpay ha resuelto su autorización financiera.

TransactionResultOutput result =
    transaction.getTransactionResult(
        request.getParameter("token_ws"));
$result = transaction->getTransactionResult(
    $request->input("token_ws"));
var result = transaction.getTransactionResult(tokenWs));

Parámetros getTransactionResult Mall

Nombre
tipo
Descripción
tokenInput
xs:string
Token de la transacción. Largo: 64.

Respuesta getTransactionResult Mall

for (WsTransactionDetailOutput output: result.getDetailOutput()) {
    // Se debe chequear cada transacción de cada tienda del
    // mall por separado:
    if (output.getResponseCode() == 0) {
        // Transaccion exitosa, puedes procesar el resultado
        // con el contenido de las variables result y output.
        output.getAuthorizationCode();
        output.getPaymentType();
        output.getAmount();
        output.getSharesNumber();
        output.getCommerceCode();
        output.getBuyOrder();
    }
}
result.getBuyOrder();
result.getSessionId();
result.getCardDetail().getCardNumber();
result.getCardDetail().getCardExpirationDate();
result.getAccountingDate();
result.getTransactionDate();
result.getVci();
result.getUrlRedirection();
foreach ($result->detailOutput as $output) {
    // Se debe chequear cada transacción de cada tienda del
    // mall por separado:
    if ($output->responseCode == 0) {
        // Transaccion exitosa, puedes procesar el resultado
        // con el contenido de las variables result y output.
        output->authorizationCode;
        output->paymentType;
        output->amount;
        output->sharesNumber;
        output->commerceCode;
        output->buyOrder;
    }
}
result->buyOrder;
result->sessionId;
result->cardDetail->cardNumber;
result->cardDetail->cardExpirationDate;
result->accountingDate;
result->transactionDate;
result->vci;
result->urlRedirection;
foreach (var output in result.detailOutput) {
    // Se debe chequear cada transacción de cada tienda del
    // mall por separado:
    if (output.responseCode == 0) {
        // Transaccion exitosa, puedes procesar el resultado
        // con el contenido de las variables result y output.
        output.authorizationCode;
        output.paymentType;
        output.amount;
        output.sharesNumber;
        output.commerceCode;
        output.buyOrder;
    }
}
result.buyOrder;
result.sessionId;
result.cardDetail.cardNumber;
result.cardDetail.cardExpirationDate;
result.accountingDate;
result.transactionDate;
result.vci;
result.urlRedirection;
Nombre
tipo
Descripción
buyOrder
xs:string
Orden de compra del mall. Largo máximo: 26
sessionId
xs:string
Identificador de sesión, el mismo enviado originalmente por el comercio en initTransaction(). Largo máximo: 61.
cardDetails
carddetails
Objeto que representa los datos de la tarjeta de crédito del tarjeta habiente.
cardDetails.cardNumber
xs: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.
cardDetails.cardExpirationDate
xs:string
(Opcional) Fecha de expiración de la tarjeta de crédito del tarjetahabiente. Formato YYMM Solo para comercios autorizados por Transbank. Largo máximo: 4
accoutingDate
xs:string
Fecha de la autorización. Largo: 4, formato MMDD
transactionDate
xs:string
Fecha y hora de la autorización. Largo: 6, formato: MMDDHHmm
VCI
xs: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
A = Intento de autenticación
INV = Autenticación inválida
EOP = Error Operativo
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)
urlRedirection
xs:string
URL de redirección para visualización de voucher. Largo máximo: 256
detailsOutput
wsTransactionDetailOutput
Lista con resultado de cada una de las transactionDetails enviados en initTransaction().
detailsOutput[].authorizationCode
xs:string
Código de autorización de la transacción Largo máximo: 6
detailsOutput[].paymentTypeCode
xs: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.
detailsOutput[].responseCode
xs: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)
detailsOutput[].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
detailsOutput[].sharesNumber
xs:int
Cantidad de cuotas. Largo máximo: 2
detailsOutput[].commerceCode
xs:string
Código comercio de la tienda. Largo: 12
detailsOutput[].buyOrder
xs:string
Orden de compra de la tienda. Largo máximo: 26

acknowledgeTransaction() Mall

Indica a Webpay que se ha recibido conforme el resultado de la transacción.

Parámetros acknowledgeTransaction Mall

Los SDKs ejecutan automáticamente acknowledgeTransaction() cuando reciben la respuesta de getTransactionResult().

Nombre
tipo
Descripción
tokenInput
xs:string
Token de la transacción. Largo: 64.

Respuesta acknowledgeTransaction Mall

Los SDKs arrojarán una excepción dentro de getTransactionResult() si falla el acknowledgeTransaction() que se ejecuta automáticamente.

Ninguna.

Otros Servicios Webpay Plus

WSDL: /WSWebpayTransaction/cxf/WSCommerceIntegrationService?wsdl

Captura diferida Webpay Plus

Este método permite a todo comercio habilitado realizar capturas de una transacción autorizada sin captura generada en Webpay Plus o Oneclick. El método contempla una única captura por cada autorización. Para ello se deberá indicar los datos asociados a la transacción de venta con autorización sin captura y el monto requerido para capturar el cual debe ser menor o igual al monto originalmente autorizado.

Las ejecuciones con errores entregarán un SoapFault de acuerdo a la codificación de errores definida más abajo.

Para capturar una transacción, ésta debe haber sido creada (según lo visto anteriormente para Webpay Plus Normal o Webpay Plus Mall) por un código de comercio configurado para captura diferida. De esa forma la transacción estará autorizada pero requerirá una captura explícita posterior para confirmar la transacción.

Puedes leer más sobre la captura en la información del producto Webpay para conocer más detalles y restricciones.

Para realizar esa captura explícita debe usarse el método capture()

capture()

Permite solicitar a Webpay la captura diferida de una transacción con autorización y sin captura simultánea.

Los SDKs permiten indicar opcionalmente el código de comercio de la transacción a capturar, para soportar la captura en comercios Webpay Plus Mall. En comercios Webpay Plus Normal, no es necesario especificar el código de comercio pues se usa el indicado en la configuración.

WebpayCapture transaction =
    new Webpay(configuration).getCaptureTransaction();

// Para comercios Webpay Plus Normal
CaptureOutput captureResult = transaction.capture(
    authorizationCode, capturedAmount, buyOrder);

// Para comercios Webpay Plus Mall
CaptureOutput captureResult = transaction.capture(
    authorizationCode, capturedAmount, buyOrder, storeCommerceCode);
$transaction = (new Webpay(configuration))->getCaptureTransaction();

// Para comercios Webpay Plus Normal
$captureResult = transaction.capture(
    $authorizationCode, $capturedAmount, $buyOrder);

// Para comercios Webpay Plus Mall
$captureResult = transaction.capture(
    $authorizationCode, $capturedAmount, $buyOrder, $storeCommerceCode);
var transaction = new Webpay(configuration).CaptureTransaction;

// Para comercios Webpay Plus Normal
var captureResult = transaction.capture(
    authorizationCode, capturedAmount, buyOrder);

// Para comercios Webpay Plus Mall
var captureResult = transaction.capture(
    authorizationCode, capturedAmount, buyOrder, storeCommerceCode);

Parámetros capture

Nombre
tipo
Descripción
authorizationCode
xs:string
Código de autorización de la transacción que se requiere capturar Largo máximo: 6.
buyOrder
xs:string
Orden de compra de la transacción que se requiere capturar. Largo máximo: 26.
commerceId
xs:long
Código de comercio o tienda mall que realizó la transacción. Largo: 12.
Si el código que posees es de 8 dígitos debes anteponer 5970.
capturedAmount
xs:decimal
Monto que se desea capturar. Largo máximo: 10.

Respuesta capture

captureResult.getToken();
captureResult.getAuthorizationCode();
captureResult.getAuthorizationDate();
captureResult.getCapturedAmount();
$captureResult->token;
$captureResult->authorizationCode;
$captureResult->authorizationDate;
$captureResult->capturedAmount;
captureResult.token;
captureResult.authorizationCode;
captureResult.authorizationDate;
captureResult.capturedAmount;
Nombre
tipo
Descripción
token
xs:string
Token de la transacción.
authorizationCode
xs:string
Código de autorización de la captura diferida.
authorizationDate
xs:string
Fecha y hora de la autorización.
capturedAmount
xs:decimal
Monto capturado.

En caso de error pueden aparecer los siguientes códigos exclusivos del método 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

Anulación Webpay Plus

Este método permite a todo comercio habilitado anular una transacción que fue generada en Webpay Plus (Normal y Mall) o Oneclick Normal. El método contempla anular total o parcialmente una transacción. Para ello se deberá indicar los datos asociados a la transacción de venta en línea que se desea anular y los montos requeridos para anular. Se considera totalmente anulada una transacción cuando el monto anulado o el monto total de anulaciones cursadas alcancen el monto autorizado en la venta en línea.

El servicio web de anulación de transacciones Webpay soporta una sola anulación parcial para la transacción de venta en línea. En caso de enviar una segunda anulación parcial se retornará una Exception.

Las ejecuciones con errores entregarán un SoapFault de acuerdo a la codificación de errores definida mas abajo.

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 nullify().

nullify()

Permite solicitar a Webpay la anulación de una transacción realizada previamente y que se encuentra vigente.

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 Normal, no es necesario especificar el código de comercio pues se usa el indicado en la configuración.

WebpayNullify transaction =
    new Webpay(configuration).getNullifyTransaction();

// Para comercios Webpay Plus Normal
NullificationOutput result = transaction.nullify(
    authorizationCode, authorizedAmount, buyOrder, nullifyAmount);

// Para comercios Webpay Plus Mall
NullificationOutput result = transaction.nullify(
    authorizationCode, authorizedAmount, buyOrder, nullifyAmount,
    storeCommerceCode);
$transaction = (new Webpay(configuration))->getNullifyTransaction();

// Para comercios Webpay Plus Normal
$result = transaction.nullify(
    $authorizationCode, $authorizedAmount, $buyOrder, $nullifyAmount);

// Para comercios Webpay Plus Mall
$result = transaction.nullify(
    $authorizationCode, $authorizedAmount, $buyOrder, $nullifyAmount,
    $storeCommerceCode);
var transaction = new Webpay(configuration).NullifyTransaction;

// Para comercios Webpay Plus Normal
var result = transaction.nullify(
    authorizationCode, authorizedAmount, buyOrder, nullifyAmount);

// Para comercios Webpay Plus Mall
var result = transaction.nullify(
    authorizationCode, authorizedAmount, buyOrder, nullifyAmount,
    storeCommerceCode);

Parámetros nullify

Nombre
tipo
Descripción
authorizationCode
xs:string
Código de autorización de la transacción que se requiere anular. Si la transacción es de captura diferida, se debe usar el código obtenido al llamar a capture(). Largo máximo: 6.
authorizedAmount
xs:decimal
Monto autorizado de la transacción que se requiere anular. Si la transacción es de captura diferida, se debe usar el monto capturado cuando se invocó a capture(). Largo máximo: 10.
buyOrder
xs:string
Orden de compra de la transacción que se requiere anular. Largo máximo: 26.
nullifyAmount
xs:decimal
Monto que se desea anular de la transacción. Largo máximo: 10.
commerceId
xs:long
Código de comercio o tienda mall que realizó la transacción. Largo: 12.
Si el código que posees es de 8 dígitos debes anteponer 5970.

Respuesta nullify

result.getToken();
result.getAuthorizationCode();
result.getAuthorizationDate();
result.getBalance();
result.getNullifiedAmount();
$result->token;
$result->authorizationCode;
$result->authorizationDate;
$result->balance;
$result->nullifiedAmount;
result.token;
result.authorizationCode;
result.authorizationDate;
result.balance;
result.nullifiedAmount;
Nombre
tipo
Descripción
token
xs:string
Token de la transacción.
authorizationCode
xs:string
Código de autorización de la anulación.
authorizationDate
xs:string
Fecha y hora de la autorización.
balance
xs:decimal
Saldo actualizado de la transacción (considera la venta menos el monto anulado).
nullifiedAmount
xs:decimal
Monto anulado.

En caso de error pueden aparecer los siguientes códigos de error comunes para el método nullify():

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

Oneclick Normal

WebpayOneClick transaction =
    new Webpay(configuration).getOneClickTransaction();
$transaction = (new Webpay(configuration))->getOneClickTransaction();
var transaction = new Webpay(configuration).OneClickTransaction;

WSDL: /webpayserver/wswebpay/OneClickPaymentService?wsdl

La modalidad de pago Oneclick permite al tarjetahabiente realizar pagos en el comercio sin la necesidad de ingresar cada vez información de la tarjeta de crédito al momento de realizar la compra. El modelo de pago contempla un proceso previo de inscripción o enrolamiento del tarjetahabiente, a través del comercio, que desee utilizar el servicio. Este tipo de pago facilita la venta, disminuye el tiempo de la transacción y reduce los riesgos de ingreso erróneo de los datos del medio de pago.

El proceso de integración con Oneclick consiste en desarrollar por parte del comercio las llamadas a los servicios web dispuestos por Transbank para la inscripción de los tarjetahabientes, así como para la realización de los pagos.

Flujo de inscripción y pago

La inscripción es el proceso en el cual el tarjetahabiente registra los datos de su tarjeta en Oneclick para usarlo en compras futuras. Estos datos son almacenados de forma segura en Transbank, y nunca son conocidos por el comercio. Este proceso debe ser iniciado por la tienda del comercio y es requisito que el cliente esté autenticado en la página del comercio antes de iniciar la inscripción.

Proceso:

Diagrama de secuencia inscripción Oneclick

  • El cliente se conecta y autentica en la página del comercio, mediante su nombre de usuario y clave.
  • El cliente selecciona la opción de inscripción, la cual debe estar explicada en la página del comercio.
  • El comercio consume un servicio web publicado por Transbank, donde entrega los datos del cliente y la URL de término; obtiene un token y URL de Webpay.
  • El comercio envía el browser del cliente a la URL obtenida y pasa por parámetro el token (método POST).
  • Webpay presenta el formulario de inscripción, este es similar al formulario de pago actual de Webpay Plus, para que el cliente ingrese los datos de su tarjeta.
  • El cliente será autenticado por su banco emisor, de forma similar al flujo normal de pago. En este punto se realiza una transacción de $1 peso, la cual no se captura (no se verá reflejada en su estado de cuenta).
  • Finalizada la inscripción, Webpay envía el browser del cliente a la URL entregada por el comercio, pasando por parámetro el token.
  • El comercio debe consumir otro servicio web de Transbank, con el token, para obtener el resultado de la inscripción y el identificador de usuario, que debe utilizar en el futuro para realizar los pagos.
  • El comercio presenta al cliente el resultado de la inscripción.

Después de realizado el proceso de inscripción, el comercio puede iniciar el proceso de pago cuando corresponda.

El pago es el proceso donde el comercio solicita el cargo de una compra a la tarjeta de crédito de un usuario inscrito anteriormente, usando el identificador entregado por Transbank al momento de la inscripción.

Los pagos en esta modalidad no requieren necesariamente la intervención del usuario.

El monto del pago debe estar dentro de los límites establecidos para este tipo de transacciones, el proceso interno es similar a un cargo normal de Webpay. Proceso:

Diagrama de secuencia inscripción Oneclick

  • El cliente se conecta y autentica en la página o aplicación del comercio mediante su nombre de usuario y clave.
  • El cliente selecciona la opción de pagar con Oneclick.
  • El comercio usa el servicio web de pago, publicado por Transbank, entregando el identificador de usuario (que se obtuvo en la inscripción), el monto del pago y la orden de compra. Obtiene la respuesta con el código de autorización.
  • El comercio presenta el resultado del pago al cliente.

Crear una inscripción Oneclick

Para realizar el primero de los procesos descritos (la inscripción), debe llamarse al método initInscription()

initInscription()

Permite realizar la inscripción del tarjetahabiente e información de su tarjeta de crédito. Retorna como respuesta un token que representa la transacción de inscripción y una URL (urlWebpay), que corresponde a la URL de inscripción de Oneclick.

Una vez que se llama a este servicio Web, el usuario debe ser redireccionado vía POST a urlWebpay con parámetro TBK_TOKEN igual al token obtenido.

OneClickInscriptionOutput initResult =
    transaction.initInscription(username, email, urlReturn);
$initResult =
    transaction->initInscription(username, email, urlReturn);
var initResult =
    transaction.initInscription(username, email, urlReturn);

Parámetros initInscription

Nombre
tipo
Descripción
username
xs:string
Identificador del usuario registrado en el comercio. Largo máximo: 256.
email
xs:string
Email del usuario registrado en el comercio. Largo máximo: 256.
responseURL
xs:string
URL del comercio a la cual Webpay redireccionará posterior al proceso de inscripción. Largo máximo: 256.

Respuesta initInscription

initResult.getToken();
initResult.getUrlWebpay();
$initResult->token;
$initResult->urlWebpay;
initResult.token;
initResult.urlWebpay;
Nombre
tipo
Descripción
token
xs:string
Token de la inscripción.
urlWebpay
xs:string
URL de formulario Webpay.

Confirmar una inscripción Oneclick

Una vez terminado el flujo de inscripción en Transbank el usuario es enviado a la URL de fin de inscripción que definió el comercio. En ese instante el comercio debe llamar a finishInscription().

finishInscription()

Permite finalizar el proceso de inscripción del tarjetahabiente en Oneclick. Retorna el identificador del usuario en Oneclick, el cual será utilizado para realizar las transacciones de pago.

OneClickFinishInscriptionOutput result =
    transaction.finishInscription(
        request.getParameter("TBK_TOKEN"));
$result = $transaction->finishInscription(
    $request->input("TBK_TOKEN"));
var result = transaction.finishInscription(tbkToken);
Nombre
tipo
Descripción
token
xs:string
Token de la inscripción.

Respuesta finishInscription

result.getResponseCode();
result.getAuthCode();
result.getCreditCardType().getValue();
result.getLast4CardDigits();
result.getTbkUser();
$result->responseCode;
$result->authCode;
$result->creditCardType;
$result->last4CardDigits;
$result->tbkUser;
result.responseCode;
result.authCode;
result.creditCardType;
result.last4CardDigits;
result.tbkUser;
Nombre
tipo
Descripción
responseCode
xs:int
Código de retorno del proceso de inscripción, donde 0 (cero) es aprobado.
authCode
xs:string
Código que identifica la autorización de la inscripción.
creditCardType
creditCardType
Indica el tipo de tarjeta inscrita por el cliente (Visa, AmericanExpress, MasterCard, Diners, Magna).
last4CardDigits
xs:string
Los últimos 4 dígitos de la tarjeta ingresada por el cliente en la inscripción.
tbkUser
xs:string
Identificador único de la inscripción del cliente en Oneclick, que debe ser usado para realizar pagos o borrar la inscripción.

Autorizar un pago con Oneclick

Una vez realizada la inscripción, el comercio puede usar el tbkUser recibido para realizar transacciones. Para eso debe usar el método authorize().

authorize()

Permite realizar transacciones de pago. Retorna el resultado de la autorización. Este método debe ser ejecutado cada vez que el usuario selecciona pagar con Oneclick en el comercio.

OneClickPayOutput output = transaction.authorize(
    buyOrder, tbkUser, username, amount);
$output = $transaction.authorize(
    buyOrder, tbkUser, username, amount);
var output = transaction.authorize(
    buyOrder, tbkUser, username, amount);

Parámetros authorize

Nombre
tipo
Descripción
amount
xs:decimal
Monto del pago en pesos.
buyOrder
xs:long
Identificador único de la compra generado por el comercio.
tbkUser
xs:string
Identificador único de la inscripción del cliente (devuelto por finishInscription()).
username
xs:string
Identificador del usuario en los sistemas del comercio (el mismo indicado en initInscription()).

Respuesta authorize

output.getAuthorizationCode();
output.getCreditCardType().value();
output.getLast4CardDigits();
output.getTransactionId();
output.getResponseCode();
$output->authorizationCode;
$output->creditCardType;
$output->last4CardDigits;
$output->transactionId;
$output->responseCode;
output.authorizationCode;
output.creditCardType;
output.last4CardDigits;
output.transactionId;
output.responseCode;
Nombre
tipo
Descripción
authorizationCode
xs:string
Código de autorización de la transacción de pago.
creditCardType
creditCardType
Indica el tipo de tarjeta que fue inscrita por el cliente (Visa, AmericanExpress, MasterCard, Diners, Magna).
last4CardDigits
xs:string
Los últimos 4 dígitos de la tarjeta usada en la transacción.
transactionId
xs:long
Identificador único de la transacción de pago.
responseCode
xs:int
Código de retorno del proceso de pago, donde:
0 (cero) es aprobado.
-1, -2, -3, -4, -5, -6, -7, -8: Rechazo
-96: No existe inscripción asociada.
-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.

Reversar un pago Oneclick

Este proceso permite reversar una venta cuando esta no pudo concretarse, dentro del mismo día contable, con la finalidad de anular un cargo realizado al cliente. Para esto se debe consumir el método codeReverseOneClick() con la orden de compra de la transacción a reversar.

codeReverseOneClick()

Permite reversar una transacción de venta autorizada con anterioridad. Este método retorna como respuesta un identificador único de la transacción de reversa.

boolean success = transaction.reverseTransaction(buyOrder);
$result = $transaction->reverseTransaction($buyOrder);
var result = transaction.reverseTransaction(buyOrderLong);

Parámetros codeReverseOneClick

Nombre
tipo
Descripción
buyOrder
xs:long
Orden de compra de la transacción a reversar.

Respuesta codeReverseOneClick

// El SDK Java solo entrega el booleano de estado, no el código de reversa :(
success;
// El SDK PHP solo entrega el booleano de estado, no el código de reversa :(
$result->success;
result.reversed;
result.reverseCode;
Nombre
tipo
Descripción
reversed
xs:boolean
Indica si tuvo éxito la reversa.
reverseCode
xs:long
Identificador único de la transacción de reversa.

Anular un pago Oneclick

En caso que ya no sea el mismo día contable y se requiera dejar sin efecto una venta, es posible anular un pago realizado con Oneclick Normal usando el mismo método de anulación Webpay Plus.

Eliminar una inscripción Oneclick

En el caso que el comercio requiera eliminar la inscripción de un usuario en Oneclick ya sea por la eliminación de un cliente en su sistema o por la solicitud de este para no operar con esta forma de pago, el comercio deberá invocar a removeUser() con el identificador de usuario entregado en la inscripción.

removerUser()

Permite eliminar una inscripción de usuario en Transbank

boolean success = transaction.removeUser(tbkUser, username);
$success = $transaction->removeUser($tbkUser, $username);
var success = transaction.RemoveUser(tbkUser, username);

Parámetros removerUser

Nombre
tipo
Descripción
tbkUser
xs:string
Identificador único de la inscripción del cliente
username
xs:string
Identificador del usuario en los sistemas del comercio (el mismo indicado en initInscription()).

Respuesta removerUser

El boolean de respuesta será true en caso de éxito y false en caso contrario.

Oneclick Mall

Los SDKs no soportan aún los servicios Oneclick Mall.

WSDL: /WSWebpayTransaction/cxf/WSOneClickMulticodeService?wsdl

Flujo de inscripción y pago Mall

El flujo de Oneclick Mall es en general el mismo que el de Webpay Oneclick Normal tanto de cara al tarjeta habiente como de cara al integrador.

Las diferencias son:

  • El usuario debe estar registrado en la página del comercio "mall" agrupador, pero las transacciones son a nombre de loas "tiendas" del mall.
  • Se pueden indicar múltiples transacciones a autorizar en una misma operación.
  • 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 inscripción Oneclick Mall

Para iniciar la inscripción debe usarse el método initInscription()

initInscription() Mall

Permite gatillar el inicio del proceso de inscripción.

Los SDKs no soportan aún los servicios Oneclick Mall.

Parámetros initInscription Mall

Nombre
tipo
Descripción
username
xs:string
Identificador del usuario registrado en el comercio.
email
xs:string
Email del usuario registrado en el comercio.
returnUrl
xs:string
URL a la que será enviado el cliente finalizado el proceso de inscripción.

Respuesta initInscription Mall

Nombre
tipo
Descripción
token
xs:string
Identificador, único, del proceso de inscripción. Debe ser enviado por parámetro (TBK_TOKEN) a la URL urlInscriptionForm.
urlInscriptionForm
xs:string
URL de Webpay para iniciar la inscripción.

Confirmar una inscripción Oneclick Mall

Una vez terminado el flujo de inscripción en Transbank el usuario es enviado a la URL de fin de inscripción que definió el comercio (returnUrl). En ese instante el comercio debe llamar a finishInscription().

finishInscription() Mall

Permite finalizar el proceso de inscripción obteniendo el usuario tbk.

Los SDKs no soportan aún los servicios Oneclick Mall.

Parámetros finishInscription Mall

Nombre
tipo
Descripción
token
xs:string
Identificador del proceso de inscripción. Es entregado por Webpay en la respuesta del método initInscription().

Respuesta finishInscription Mall

Nombre
tipo
Descripción
responseCode
xs:int
Código de respuesta del proceso de inscripción, donde 0 (cero) es aprobado.
authorizationCode
xs:string
Código que identifica la autorización de la inscripción.
creditCardType
creditCardType
Indica la marca de la tarjeta de crédito que fue inscrita por el cliente (Visa, AmericanExpress, MasterCard, Diners, Magna)
cardNumber
xs:string
Indica los últimos 4 dígitos y/o BIN de la tarjeta de crédito utilizada.
cardExpirationDate
xs:string
Indica la fecha de expiración de la tarjeta de crédito utilizada.
cardOrigin
cardOrigin
Indica si la tarjeta de crédito utilizada es nacional (NATIONAL_CARD) o extranjera (FOREIGN_CARD).
tbkUser
xs:string
Identificador único de la inscripción del cliente, este debe ser usado para realizar pagos o eliminar la inscripción.

Autorizar un pago con Oneclick Mall

Una vez realizada la inscripción, el comercio puede usar el tbkUser recibido para realizar transacciones. Para eso debes usar el método authorize().

autorize() Mall

Permite autorizar un pago.

Los SDKs no soportan aún los servicios Oneclick Mall.

Parámetros authorize Mall

Nombre
tipo
Descripción
buyOrder
xs:long
Identificador único de la operación para el comercio mall.
tbkUser
xs:string
Identificador único de la inscripción del cliente (devuelto por finishInscription()).
username
xs:string
Identificador del usuario en los sistemas del comercio (el mismo indicado en initInscription()).
storesInput
wsOneClickMulticodeStorePaymentInput
Lista de objetos con la información de cada transacción de las tiendas del mall.
storesInput[].commerceId
xs:long
Código de comercio hijo de la tienda.
storesInput[].buyOrder
xs:string
Identificador único de la compra generado por el comercio hijo (tienda).
storesInput[].amount
xs:decimal
Monto de la sub-transacción de pago. En pesos o dólares según configuración comercio mall padre.
storesInput[].sharesNumber
xs:int
Cantidad de cuotas de la sub-transacción de pago.

Respuesta authorize Mall

Nombre
tipo
Descripción
commerceId
xs:long
Código de comercio del comercio padre.
buyOrder
xs:string
Orden de compra generada por el comercio padre.
settlementDate
xs:string
Fecha contable de la autorización del pago.
authorizationDate
xs:dateTime
Fecha completa (timestamp) de la autorización del pago.
storesOutput
wsOneClickMulticodeStorePaymentOutput
Lista con el resultado de cada transacción de las tiendas hijas.
storesOutput[].commerceId
xs:long
Código de comercio del comercio hijo (tienda).
storesOutput[].buyOrder
xs:string
Orden de compra generada por el comercio hijo para la sub-transacción de pago.
storesOutput[].amount
xs:decimal
Monto de la sub-transacción de pago.
storesOutput[].authorizationCode
xs:string
Código de autorización de la sub-transacción de pago.
storesOutput[].paymentType
xs:string
Tipo (VC, NC, SI, etc.) de la sub-transacción de pago.
storesOutput[].responseCode
xs:int
Código de retorno del proceso de pago, donde:
0 (cero) es aprobado.
-1, -2, -3, -4, -5, -6, -7, -8: Rechazo
-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.
storesOutput[].sharesNumber
xs:int
Cantidad de cuotas de la sub-transacción de pago.
storesOutput[].shareAmount
xs:decimal
Monto por cuota de la sub-transacción de pago.

Reversar o Anular un pago Oneclick Mall

Para Oneclick Mall hay dos operaciones diferentes para dejar sin efecto transacciones autorizadas: La reversa y la anulación.

La reversa se aplica para problemas operacionales (lado comercio) o de comunicación entre comercio y Transbank que impidan recibir a tiempo la respuesta de una autorización. En tal caso el comercio debe intentar reversar la transacción de autorización para evitar un posible descuadre entre comercio y Transbank. La reversa funciona sobre la operación completa del mall, lo que significa que todas las transacciones realizadas en la operación mall serán reversadas. Y sólo puede ser usada hasta 30 segundos después de la llamada a authorize()

La anulación, en cambio, actúa individualmente sobre las transacciones de las tiendas de un mall. Por ende, la anulación es la operación correcta a utilizar para fines financieros, de manera de anular un cargo ya realizado. También es posible reversar una anulación debido a problemas operacionales (por ejemplo un error de comunicación al momento de anular, que le impida al comercio saber si Transbank recibió la anulación).

Para llevar a cabo la reversa, el comercio debe usar el método reverse(). Para la anulación, se debe usar el método nullify(). Y para reversar una anulación existe el método reverseNullification()

reverse() Mall

Permite reversar una operación de autorización.

Los SDKs no soportan aún los servicios Oneclick Mall.

Parámetros reverse Mall

Nombre
tipo
Descripción
buyOrder
xs:string
Orden de compra generada por el comercio padre (mall) para la operación a reversar.

Respuesta reverse Mall

La respuesta es una lista con tantos elementos como transacciones haya tenido la operación identificada por buyOrder:

Nombre
tipo
Descripción
[].commerceId
xs:long
Código de comercio del comercio hijo (tienda).
[].buyOrder
xs:string
Orden de compra del comercio hijo para la sub-transacción de pago.
[].reversed
xs:boolean
Indica si la reversa se realizó correctamente o no.
[].reverseCode
xs:string
Identificador único de la transacción de reversa.

nullify() Mall

Permite anular un pago.

Los SDKs no soportan aún los servicios Oneclick Mall.

Parámetros nullify Mall

Nombre Descripción
commerceId Identificador del comercio hijo (tienda) para la sub-transacción de pago a anular.
buyOrder Orden de compra generada por el comercio hijo, para la sub-transacción de pago a anular.
authorizedAmount Monto de la sub-transacción de pago a anular.
authorizationCode Código de autorización de la sub-transacción de pago a anular.
nullifyAmount Monto a anular de la sub-transacción de pago. Puede ser un monto parcial o monto total.

Respuesta nullify Mall

Nombre
tipo
Descripción
token
xs:string
Identificador único de la transacción de anulación.
buyOrder
xs:string
Orden de compra de la sub-transacción de pago anulada.
commerceId
xs:long
Código de comercio del comercio hijo (tienda).
authorizationCode
xs:string
Código de autorización de la transacción de anulación.
authorizationDate
xs:dateTime
Fecha de la autorización de la transacción de anulación.
nullifiedAmount
xs:decimal
Monto anulado.
balance
xs:decimal
Monto restante de la sub-transacción de pago original: monto inicial – monto anulado.

reverseNullification()

Permite reversar una anulación.

Los SDKs no soportan aún los servicios Oneclick Mall.

Parámetros reverseNullification

Nombre
tipo
Descripción
buyOrder
xs:string
Orden de compra generada por el comercio hijo, para la sub-transacción de pago anulada.
commerceId
xs:long
Código de comercio del comercio hijo (tienda).
nullifyAmount
xs:decimal
Monto anulado en la transacción de anulación que se intenta reversar.

Respuesta reverseNullification

Nombre
tipo
Descripción
reversed
xs:boolean
Indica si la reversa se realizó correctamente o no.
reverseCode
xs:long
Identificador único de la transacción de reversa.

Eliminar una inscripción Oneclick Mall

En el caso que el comercio requiera eliminar la inscripción de un usuario en Oneclick Mall ya sea por la eliminación de un cliente en su sistema o por la solicitud de este para no operar con esta forma de pago, el comercio deberá invocar a removeInscription() con el identificador de usuario entregado en la inscripción.

removeInscription() Mall

Permite eliminar una inscripción de usuario en Oneclick Mall

Los SDKs no soportan aún los servicios Oneclick Mall.

Parámetros removeInscription Mall

Nombre
tipo
Descripción
tbkUser
xs:string
Identificador único de la inscripción del cliente.
username
xs:string
Nombre de usuario, del cliente, en el sistema del comercio.

Respuesta removeInscription Mall

Nombre
tipo
Descripción
result
xs:boolean
Indica si la eliminación se realizó correctamente o no.

Captura Diferida Oneclick Mall

Los SDKs no soportan aún los servicios Oneclick Mall.

Una transacción Oneclick Mall permite que el tarjetahabiente registre su tarjeta de la misma forma en que ocurre con una transacción Oneclick, asociando dicha inscripción a un comercio padre. Ahora, una vez realizada la inscripción, el comercio padre tiene permitido autorizar transacciones sin captura para los comercios “hijo” registrados que tengan habilitado captura diferida. Además posterior a la autorización tiene permitido capturar dicho monto reservado. La autorización se encarga de validar si es posible realizar el cargo a la cuenta asociada a la tarjeta de crédito realizando en el mismo acto la reserva de monto de la transacción. La captura hace efectiva la reserva hecha previamente o cargo en la cuenta de crédito asociada a la tarjeta del titular. Estas modalidades, por separado, solo son válidas para tarjetas de crédito.

Para realizar esa captura explícita debe usarse el método capture()

capture() Mall

Este método permite a los comercios Oneclick Mall habilitados, poder realizar capturas diferidas de una transacción previamente autorizada. El método contempla una única captura por cada autorización. Para ello se deberá indicar los datos asociados a la transacción de venta y el monto requerido para capturar, el cual debe ser menor o igual al monto originalmente autorizado. Para capturar una transacción, ésta debe haber sido creada por un código de comercio configurado para captura diferida. De esta forma la transacción estará autorizada pero requerirá una captura explícita posterior para confirmar la transacción.

Parámetros capture Mall

Nombre
tipo
Descripción
authorizationCode
xs:string
Código de autorización de la transacción que se requiere capturar. Largo máximo: 6.
buyOrder
xs:string
Orden de compra de la transacción que se requiere capturar. Largo máximo: 26.
commerceId
xs:long
Código de tienda mall que realizó la transacción. Largo: 12.
Si el código que posees es de 8 dígitos debes anteponer 5970.
capturedAmount
xs:decimal
Monto que se desea capturar. Largo máximo: 10.

Respuesta capture Mall

Nombre
tipo
Descripción
token
xs:string
Token de la transacción.
authorizationCode
xs:string
Código de autorización de la captura diferida.
authorizationDate
xs:string
Fecha y hora de la autorización.
capturedAmount
xs:decimal
Monto capturado.