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.WebpayCert =
    "-----BEGIN CERTIFICATE-----\n" +
    "MIIEDzCCAvegAwIBAgIJAMaH4DFTKdnJMA0GCSqGSIb3DQEBCwUAMIGdMQswCQYD\n" +
    "VQQGEwJDTDERMA8GA1UECAwIU2FudGlhZ28xETAPBgNVBAcMCFNhbnRpYWdvMRcw\n" +
    ...
    "MX5lzVXafBH/sPd545fBH2J3xAY3jtP764G4M8JayOFzGB0=\n" +
    "-----END CERTIFICATE-----\n");

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.PrivateKey =
    "-----BEGIN RSA PRIVATE KEY-----\n" +
    ... +
    "-----END RSA PRIVATE KEY-----\n"
);
configuration.PublicCert =
    "-----BEGIN CERTIFICATE-----\n" +
    ... +
    "-----END CERTIFICATE-----\n"
);

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.

Los SDKs consumen acknowledgeTransaction() de manera automática, tan pronto reciben una respuesta de getTransactionResult().

  1. 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 redirecionamiento 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.
  2. Webpay recibe un requerimiento con la variable token_ws
  3. Webpay identifica la transacción y despliega el comprobante de pago al tarjetahabiente.
  4. 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.
  5. 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.
  1. El comercio con la variable TBK_TOKEN debe invocar el método getTransactionResult(), para obtener elresultado de la autorización. En este caso debe obtener una excepción, pues el pago fue abortado.
  2. El comercio debe informar al tarjetahabiente que su pago no se completó.

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, $sessionId, $buyOrder, $returnUrl, $finalUrl);
var initResult = transaction.initTransaction(
        amount, buyOrder, sessionId, returnUrl, finalUrl);

Parámetros

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 |_=&%.,~:/?[[email protected]()>-.
transactionDetails[0].commerceCode
xs:string
Código comercio de la tienda entregado por Transbank. Largo: 12. 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

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 puede 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

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

Respuesta


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
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). Puede ser vacío si la transacción no se autenticó. Largo máximo: 3
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.
detailsOutput[0].responseCode
xs:string
Código de respuesta de la autorización. Valores posibles:
0 = Transacción aprobada.
-1 = Rechazo de transacción.
-2 = Transacción debe reintentarse.
-3 = Error en transacción.
-4 = Rechazo de transacción.
-5 = Rechazo por error de tasa.
-6 = Excede cupo máximo mensual.
-7 = Excede límite diario por transacción.
-8 = Rubro no autorizado.
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

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

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

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[] {amount, buyOrder, sessionId});
transactions.Add(anotherStoreCode,
    new string[] {anotherAmount, anotherBuyOrder, anotherSessionId});

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

Parámetros

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 |_=&%.,~:/?[[email protected]()>-.
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.

Respuesta

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

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

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

Respuesta



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). Puede ser vacío si la transacción no se autenticó. Largo máximo: 3
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.
detailsOutput[].responseCode
xs:string
Código de respuesta de la autorización. Valores posibles:
0 = Transacción aprobada.
-1 = Rechazo de transacción.
-2 = Transacción debe reintentarse.
-3 = Error en transacción.
-4 = Rechazo de transacción.
-5 = Rechazo por error de tasa.
-6 = Excede cupo máximo mensual.
-7 = Excede límite diario por transacción.
-8 = Rubro no autorizado.
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()

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

Parámetros

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

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 Webpay 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 permitqen 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 esepcificar 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, captureAmount, buyOrder);

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

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

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

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

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

Parámetros

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.
captureAmount
xs:decimal
Monto que se desea capturar. Largo máximo: 10.

Respuesta

captureResult.getToken();
captureResult.getAuthorizationCode();
captureResult.getAuthorizationDate();
captureResult.getCaptureAmount();
$captureResult->token;
$captureResult->authorizationCode;
$captureResult->authorizationDate;
$captureResult->captureAmount;
captureResult.token;
captureResult.authorizationCode;
captureResult.authorizationDate;
captureResult.captureAmount;
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.
captureAmount
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 Webpay 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 30 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 esepcificar 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

Nombre
tipo
Descripción
authorizationCode
xs:string
Código de autorización de la transacción que se requiere anular. Para el caso que se esté anulando una transacción de captura en línea, este código corresponde al código de autorización de la captura. Largo máximo: 6.
authorizedAmount
xs:decimal
Monto autorizado de la transacción que se requiere anular. Para el caso que se esté anulando una transacción de captura en línea, este monto corresponde al monto de la captura. 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.

Respuesta

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

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

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

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 Webpay 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.getTransactionResult(
        request.getParameter("TBK_TOKEN"));
$result = $transaction->getTransactionResult(
    $request->input("TBK_TOKEN"));
var result = transaction.getTransactionResult(tbkToken);
Nombre
tipo
Descripción
token
xs:string
Token de la inscripción.

Respuesta

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.Value;
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 Webpay OneClick, que debe ser usado para realizar pagos o borrar la inscripción.

Autorizar un pago con Webpay 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

Nombre
tipo
Descripción
amount
xs:decimal
Monto del pago en pesos.
buyOrder
xs:long
Identificador único de la compra generado por el comercio. Debe ser timestamp [yyyymmddhhMMss] + un correlativo de tres dígitos. Ej: Para la tercera transacción realizada el día 15 de julio de 2011 a las 11:55:50 la orden de compra sería: 20110715115550003.
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

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.value;
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
-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 Webpay 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

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

Respuesta

// 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;
// El SDK .NET solo entrega el booleano de estado, no el código de reversa :(
result.success;
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 Webpay 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 Webpay OneClick Normal usando el mismo método de anulación Webpay Plus.

Eliminar una inscripción Webpay OneClick

En el caso que el comercio requiera eliminar la inscripción de un usuario en Webpay 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

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

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

Webpay OneClick Mall

Los SDKs no soportan aún los servicios Webpay OneClick Mall.

WSDL: /WSWebpayTransaction/cxf/WSOneClickMulticodeService?wsdl

Flujo de inscripción y pago

El flujo de Webpay 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 Webpay OneClick Mall

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

initInscription()

Permite gatillar el inicio del proceso de inscripción.

Los SDKs no soportan aún los servicios Webpay OneClick Mall.

Parámetros

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

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 Webpay 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()

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

Los SDKs no soportan aún los servicios Webpay OneClick Mall.

Parámetros

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

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

authorize()

Permite autorizar un pago.

Los SDKs no soportan aún los servicios Webpay OneClick Mall.

Parámetros

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). Debe ser timestamp [yyyymmddhhMMss] + un correlativo de tres dígitos. Ej: Para la tercera transacción realizada el día 15 de julio de 2011 a las 11:55:50 la orden de compra sería: 20110715115550003.
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

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

Para Webpay 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 llavar 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()

Permite reversar una operación de autorización.

Los SDKs no soportan aún los servicios Webpay OneClick Mall.

Parámetros

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

Respuesta

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

Permite anular un pago.

Los SDKs no soportan aún los servicios Webpay OneClick Mall.

Parámetros

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

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 Webpay OneClick Mall.

Parámetros

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

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

En el caso que el comercio requiera eliminar la inscripción de un usuario en Webpay 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()

Permite eliminar una inscripción de usuario en Webpay OneClick Mall

Los SDKs no soportan aún los servicios Webpay OneClick Mall.

Parámetros

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

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