Cómo empezar
Para empezar a integrar los productos de Transbank, te recomendamos usar nuestros SDK y plugins, disponibles para múltiples lenguajes de programación y plataformas. En general, existe un único Transbank SDK para el backend de tu e-commerce, el cual te permite operar con todos nuestros productos.
Si quieres implementar Webpay Plus, te recomendamos revisar nuestros plugins oficiales.
En esta sección veremos los pasos para comenzar con el SDK que corresponda al lenguaje de programación que utilices en tu backend.
Flujo de Integración
Inicialmente, el comercio tendrá algunas tareas comerciales que realizar mientras ocurre el proceso de integración. Este proceso de afiliación comercial se puede realizar en paralelo al proceso técnico de integración.
A continuación, puedes conocer el flujo completo.
Hazte Cliente
Completa el formulario de afiliación en nuestro portal publico.transbank.cl, fírmalo digitalmente y recibirás tu código de comercio en el correo que registraste.
Integrate
Realiza la integración del medio de pago en tu página web o aplicación. Consulta las herramientas disponibles en Transbank Developers y Slack.
Valida
Para validar tu integración y verificar que funcione correctamente, ingresa a Transbank Developers, y completa el formulario de validación. Puedes realizar consultas en soporte@transbank.cl
Vende
Finalizado el proceso de validación se te asignará una llave privada (Tbk-Api-Key-Secret). Configúrala en tu app o sitio web y ya estarás ¡Listo para vender!
Proceso técnico de integración
Este proceso contempla todas las tareas necesarias que debe realizar el comercio para integrar el producto contratado dentro de sus sistemas.
A) Usando un plugin
Si quieres implementar Webpay Plus con alguno de nuestros plugins oficiales, revisa su documentación específica. En ese caso, el proceso es más simple y no requiere escribir código como en el caso de los SDK, ya que basta con realizar la instalación y configuración del plugin en la plataforma que estés utilizando.
B) Usando un SDK
Para instalar el SDK, debes agregarlo al gestor de dependencias de tu lenguaje:
En Java debes agregar esta entrada en tu archivo pom.xml
de Maven:
<dependency>
<groupId>com.github.transbankdevelopers</groupId>
<artifactId>transbank-sdk-java</artifactId>
<version>{mira-en-github-la-ultima-version-disponible}</version>
</dependency>
Te recomendamos leer las instrucciones de instalación detalladas para el SDK Java para más opciones e información de la última versión disponible.
En PHP puedes usar composer (si no lo tienes, puedes instalarlo desde acá) para descargar la última versión del SDK, ejecutando esto en la línea de comandos cuando estés en la raíz de tu proyecto:
composer require transbank/transbank-sdk:^2.0
Te recomendamos leer las instrucciones de instalación detalladas para el SDK PHP para más opciones de instalación.
En .NET puedes instalar el SDK desde la línea de comandos del Package Manager de Visual Studio:
PM> Install-Package TransbankSDK
Te recomendamos leer las instrucciones de instalación detalladas para el SDK .NET para más opciones de instalación.
En Ruby puedes instalar el SDK como una gema:
gem install transbank-sdk
Te recomendamos leer las instrucciones de instalación detalladas para el SDK Ruby para más opciones de instalación.
En Python puedes instalar el SDK desde PyPI:
pip install transbank-sdk
En NodeJS puedes instalar el SDK desde NPM:
npm install transbank-sdk
Te recomendamos leer las instrucciones de instalación detalladas para el SDK Python para más opciones de instalación.
C) Usando el API REST
También puedes consumir el API REST de los productos directamente. Si usas un lenguaje de programación que no tiene un SDK oficial o simplemente quieres conectarte directamente al API, debes revisar la Referencia del API REST en el tab "http" para conocer los diferentes endpoints de cada producto, sus parámetros de entrada y parámetros de respuesta.
Ejemplos
Ponemos a tu disposición una serie de repositorios en nuestro Github para ayudarte a entender la integración de mejor forma.
- Ejemplo en PHP
- Ejemplo en .Net
- Ejemplo en .Net Core
- Ejemplo en Java
- Ejemplo en Ruby
- Ejemplo en Python
- Ejemplo en NodeJS
Adicionalmente, puedes revisar el proyecto de ejemplo de NodeJS funcionando acá
Ambientes
Transbank provee dos ambientes: Integración y Producción.
Ambiente de integración: En este ambiente el comercio realiza la integración del producto a contratar y testea su solución de medio pago.
HOST: https://webpay3gint.transbank.cl
Ambiente de producción: En este ambiente el comercio operará luego de finalizar el proceso de puesta en producción y realizará transacciones con tarjetas de crédito, débito o prepago reales.
HOST: https://webpay3g.transbank.cl
Ambiente de integración
En el ambiente de integración existen códigos de comercio previamente creados para todos los productos (Webpay Plus, Oneclick Mall, etc), para cada una de sus modalidades (Captura Diferida, Mall, Mall Captura Diferida, etc) y dependiendo de la moneda que acepten (USD o CLP).
Asegúrate de que estés usando el código de comercio de integración que tenga la misma configuración del producto que contrataste.
Tarjetas de Prueba
Para las transacciones Webpay en el ambiente de integración se deben usar estas tarjetas de prueba:
Tipo de tarjeta | Detalle | Resultado |
---|---|---|
VISA | 4051 8856 0044 6623 CVV 123 cualquier fecha de expiración |
Genera transacciones aprobadas. |
AMEX | 3700 0000 0002 032 CVV 1234 cualquier fecha de expiración |
Genera transacciones aprobadas. |
MASTERCARD | 5186 0595 5959 0568 CVV 123 cualquier fecha de expiración |
Genera transacciones rechazadas. |
Redcompra | 4051 8842 3993 7763 | Genera transacciones aprobadas (para operaciones que permiten débito Redcompra) |
Redcompra | 4511 3466 6003 7060 | Genera transacciones aprobadas (para operaciones que permiten débito Redcompra) |
Redcompra | 5186 0085 4123 3829 | Genera transacciones rechazadas (para operaciones que permiten débito Redcompra) |
Prepago VISA | 4051 8860 0005 6590 CVV 123 cualquier fecha de expiración |
Genera transacciones aprobadas. |
Prepago MASTERCARD | 5186 1741 1062 9480 CVV 123 cualquier fecha de expiración |
Genera transacciones rechazadas. |
Cuando aparece un formulario de autenticación con RUT y clave, se debe usar el RUT 11.111.111-1 y la clave 123.
Códigos de comercio
A continuación encontrarás todos los códigos de comercio disponibles en el ambiente de integración. Para todos los código de comercio, la llave secreta (Api Key Secret) es 579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C
Producto | Código de Comercio |
---|---|
Webpay Plus | 597055555532 |
Webpay Plus Captura Diferida | 597055555540 |
Webpay Plus Mall | 597055555535 Mall597055555536 Tienda 1597055555537 Tienda 2 |
Webpay Plus Mall Captura Diferida | 597055555581 Mall597055555582 Tienda 1597055555583 Tienda 2 |
Oneclick Mall | 597055555541 Mall597055555542 Tienda 1597055555543 Tienda 2 |
Oneclick Mall Captura Diferida | 597055555547 Mall597055555548 Tienda 1597055555549 Tienda 2 |
Transacción Completa | 597055555530 |
Transacción Completa sin CVV | 597055555557 |
Transacción Completa Diferida | 597055555531 |
Transacción Completa Diferida sin CVV | 597055555556 |
Transacción Completa Mall | 597055555573 Mall597055555574 Tienda 1597055555575 Tienda 2 |
Transacción Completa Mall sin CVV | 597055555551 Mall597055555552 Tienda 1597055555553 Tienda 2 |
Transacción Completa Mall Captura Diferida | 597055555576 Mall597055555577 Tienda 1597055555578 Tienda 2 |
Transacción Completa Mall Captura Diferida sin CVV | 597055555561 Mall597055555562 Tienda 1597055555563 Tienda 2 |
Patpass Comercio | 28299257 Código de comerciocxxXQgGD9vrVe4M41FIt Lave secreta (Api Key Secret) |
El proceso de validación
Durante la validación de la integración se pretende verificar que el comercio transacciona de manera segura y sin problemas, por lo que se solicitarán una serie de pruebas y su posterior envío de evidencias para validar la integración. Esta validación es requisito necesario para dejar al comercio en producción y no se permitirá que un comercio utilice productivamente el servicio Webpay sin poseer una validación.
Transbank solo validará las integraciones de aquellos comercios que tengan un código de comercio productivo. Para obtenerlo, sigue las instrucciones en cómo hacerse cliente en el portal http://www.transbank.cl o contacte a su ejecutivo comercial.
Para integración con plugins, creamos un nuevo formulario online para que comiences el proceso de validación: Comenzar formulario de integración
Para integraciones Webpay Plus, Webpay Plus Mall y OneClick Mall (con SDK o integración directa al API), creamos un nuevo formulario online para que comiences el proceso de validación: Comenzar formulario de integración
Para otro tipo de integraciones (Onepay, PatPass, Transacción Completa), el comercio debe enviar las evidencias a soporte@transbank.cl empleando el formulario correspondiente al producto integrado indicando claramente las órdenes de compra, fecha y hora de las transacciones.
Descargar el formulario de envidencias:
- Para integraciones Webpay que usen un plugin oficial: usa el formulario indicado más arriba.
-
Para integraciones Webpay Plus, Webpay Plus Mall y OneClick Mall con SDK o intgración directa al API: usa el formulario indicado más arriba.
-
Para integraciones Transacción Completa: Descargar
- Para integraciones Patpass Comercio: Descargar
Para ambos procesos de validación (formulario online o envío de documentación) debes contar con el logo de tu tienda (GIF o PNG 130x59 px).
Soporte validará que los casos de prueba sean consistentes con los registrados en los sistemas de Webpay y, de estar todo correcto, se le notificará al comercio la conformidad para pasar a producción, recibiendo las instrucciones para ello. De no estar consistentes las pruebas, se le hará alcances al comercio respecto de su integración, para que realices las correcciones correspondientes y vuelvas a enviar las evidencias una vez terminadas dichas correcciones.
Durante el paso a producción se te exigirá realizar, al menos, una transacción de prueba real, con la que finalizará oficialmente la puesta en producción.
Puesta en Producción
- Una vez que el comercio determine que ha finalizado su integración, se debe realizar un proceso de validación.
- Transbank informará via correo electrónico el resultado de la validación enviado por el comercio. En caso de que la validación sea aprobada, Transbank indicará la llave secreta (API Key Secret) para poder usar el ambiente de producción. Posterior a ello, será necesario cambiar la configuración del e-commerce para funcionar en producción
- Con la configuración del ambiente de producción ya lista, será necesario realizar una compra de $50 para validar el correcto funcionamiento.
- Ya estás operando en producción.
Webpay, Oneclick y Transacción Completa
En el caso de Webpay, las credenciales consisten en:
- Un código de comercio (Api-Key-Id).
- Una llave secreta (Api-Key-Secret).
Obtener tu llave secreta (proceso de validación)
Para usar el ambiente de producción (donde se utiliza dinero real), necesitas tener tu llave secreta, que es un código especial que está asociado a tu código de comercio. Para obtenerla necesitas pasar un proceso de validación, que está explicado a continuación.
Al finalizar este proceso de validación, obtendrás tu llave secreta.
A) Utilizando Plugins
Si ya tienes tu código de comercio de producción y llave secreta, solo debes entrar a la configuración de tu plugin (ver documentación de plugins) y colocar:
- Ambiente: Producción
- Código de comercio: tu código de comercio de producción
- Api Key: Tu llave secreta
Al guardar, el plugin funcionará inmediatamente en ambiente de producción y podrás operar con tarjetas y transacciones reales.
B) Utilizando los SDK
Si ya tienes tu código de comercio de producción y llave secreta, ahora solo debes configurar tu proyecto para que use el ambiente de producción, proporcionándole tus credenciales. Te explicamos como hacerlo en los diferentes SDK realizando los siguientes pasos:
Definir que se usará el ambiente de producción y pasar el Api Key (Código de comercio) y el Api Key Secret (Llave secreta)
// SDK 3.X
import cl.transbank.common.IntegrationType;
import cl.transbank.patpass.PatpassComercio;
import cl.transbank.patpass.model.PatpassOptions;
import cl.transbank.webpay.common.WebpayOptions;
import cl.transbank.webpay.oneclick.Oneclick;
import cl.transbank.webpay.transaccioncompleta.FullTransaction;
import cl.transbank.webpay.webpayplus.WebpayPlus;
//WebpayPlus Live config
// Opción A: Crear objeto options y pasarlo en el contructor
WebpayPlus.Transaction tx = new WebpayPlus.Transaction(new WebpayOptions("pon-tu-codigo-de-comercio-aca", "pon-tu-llave-secreta-aca", IntegrationType.LIVE));
// Opción B: Configurar globalmente y no pasar un objeto options en el constructor
WebpayPlus.configureForProduction("pon-tu-codigo-de-comercio-aca", "pon-tu-llave-secreta-aca");
//WebpayPlus.MallTransaction Live config
// Opción A: Crear objeto options y pasarlo en el contructor
WebpayPlus.MallTransaction mallTx = new WebpayPlus.MallTransaction(new WebpayOptions("pon-tu-codigo-de-comercio-aca", "pon-tu-llave-secreta-aca", IntegrationType.LIVE));
// Opción B: Configurar globalmente y no pasar un objeto options en el constructor
WebpayPlus.configureForProduction("pon-tu-codigo-de-comercio-aca", "pon-tu-llave-secreta-aca");
// OneclickMall Live Config
// Opción A: Crear objeto options y pasarlo en el contructor
Oneclick.MallInscription oneclickMallInscription = new Oneclick.MallInscription(new WebpayOptions("pon-tu-codigo-de-comercio-aca", "pon-tu-llave-secreta-aca", IntegrationType.LIVE));
Oneclick.MallTransaction oneclickMallTx = new Oneclick.MallTransaction(new WebpayOptions("pon-tu-codigo-de-comercio-aca", "pon-tu-llave-secreta-aca", IntegrationType.LIVE));
// Opción B: Configurar globalmente y no pasar un objeto options en el constructor
Oneclick.configureForProduction("pon-tu-codigo-de-comercio-aca", "pon-tu-llave-secreta-aca");
//PatpassComercio Live Config
// Opción A: Crear objeto options y pasarlo en el contructor
PatpassComercio.Inscription patpassInscription = new PatpassComercio.Inscription(new PatpassOptions("pon-tu-codigo-de-comercio-aca", "pon-tu-llave-secreta-aca", IntegrationType.LIVE));
// Opción B: Configurar globalmente y no pasar un objeto options en el constructor
PatpassComercio.configureForProduction("pon-tu-codigo-de-comercio-aca", "pon-tu-llave-secreta-aca");
//FullTransaction Live Config
// Opción A: Crear objeto options y pasarlo en el contructor
FullTransaction fullTx = new FullTransaction(new WebpayOptions("pon-tu-codigo-de-comercio-aca", "pon-tu-llave-secreta-aca", IntegrationType.LIVE));
// Opción B: Configurar globalmente y no pasar un objeto options en el constructor
FullTransaction.configureForProduction("pon-tu-codigo-de-comercio-aca", "pon-tu-llave-secreta-aca");
// SDK 2.X
import cl.transbank.common.IntegrationType;
import cl.transbank.patpass.PatpassComercio;
import cl.transbank.transaccioncompleta.FullTransaction;
import cl.transbank.webpay.oneclick.OneclickMall;
import cl.transbank.webpay.webpayplus.WebpayPlus;
//WebpayPlus Live config
WebpayPlus.Transaction.setCommerceCode("pon-tu-codigo-de-comercio-aca");
WebpayPlus.Transaction.setApiKey("pon-tu-llave-secreta-aca");
WebpayPlus.Transaction.setIntegrationType(IntegrationType.LIVE);
//WebpayPlus.MallTransaction Live config
WebpayPlus.MallTransaction.setCommerceCode("pon-tu-codigo-de-comercio-aca");
WebpayPlus.MallTransaction.setApiKey("pon-tu-llave-secreta-aca");
WebpayPlus.MallTransaction.setIntegrationType(IntegrationType.LIVE);
// OneclickMall Live Config
Oneclick.setCommerceCode("pon-tu-codigo-de-comercio-aca");
Oneclick.setApiKey("pon-tu-llave-secreta-aca");
Oneclick.setIntegrationType(IntegrationType.LIVE);
//PatpassComercio Live Config
PatpassComercio.setCommerceCode("pon-tu-codigo-de-comercio-aca");
PatpassComercio.setApiKey("pon-tu-llave-secreta-aca");
PatpassComercio.setIntegrationType(IntegrationType.LIVE);
//FullTransaction Live Config
FullTransaction.Transaction.setCommerceCode("pon-tu-codigo-de-comercio-aca");
FullTransaction.Transaction.setApiKey("pon-tu-llave-secreta-aca");
FullTransaction.Transaction.setIntegrationType(IntegrationType.LIVE);
// SDK 2.X
// Para este SDK se pueden configurar los productos de diferentes formas.
// Opción A: Crear objeto options y pasarlo en el contructor
$options = Transbank\Webpay\Options::forProduction($commerceCode, $apiKeySecret);
$transaction = new Transaction($options);
// Opción B: Configurar globalmente y no pasr un objeto options en el constructor
WebpayPlus::configureForProduction($commerceCode, $apiKeySecret);
$transaction = new Transaction();
// Opción C: Configurar en la instancia del producto (en este ejemplo, WebpayPlus\Transaction)
$transaction = (new WebpayPlus\Transaction())->configureForProduction($commerceCode, $apiKeySecret);
// Para todos los productos aplican los mismo métodos, pero como ejemplo, usaremos la opción C.
// Webpay Plus
(new Transbank\Webpay\WebpayPlus\Transaction)->configureForProduction($commerceCode, $apiKeySecret);
// Webpay Plus Mall
(new Transbank\Webpay\WebpayPlus\MallTransaction)->configureForProduction($commerceCode, $apiKeySecret);
// Webpay Oneclick Mall
(new Transbank\Webpay\Oneclick\MallInscription)->configureForProduction($commerceCode, $apiKeySecret);
(new Transbank\Webpay\Oneclick\MallTransaction)->configureForProduction($commerceCode, $apiKeySecret);
// Para evitar configurar las credenciales dos veces, también se puede usar el método de configuración global
\Transbank\Webpay\Oneclick::configureForProduction($commerceCode, $apiKeySecret);
$inscription = new Transbank\Webpay\Oneclick\MallInscription; // Si no se le pasa el objeto Options al constructor, usará e configurado globalmente
$transaction = new Transbank\Webpay\Oneclick\MallTransaction; // Si no se le pasa el objeto Options al constructor, usará e configurado globalmente
// Transacción Completa
(new Transbank\TransaccionCompleta\Transaction)->configureForProduction($commerceCode, $apiKeySecret);
// Transacción Completa Mall
(new Transbank\TransaccionCompleta\MallTransaction)->configureForProduction($commerceCode, $apiKeySecret);
// Webpay Modal
(new Transbank\Webpay\WebpayModal)->configureForProduction($commerceCode, $apiKeySecret);
// PatPass Comercio
(new Transbank\Patpass\PatpassComercio)->configureForProduction($commerceCode, $apiKeySecret);
// PatPassByWebpay
(new Transbank\Patpass\PatpassByWebpay)->configureForProduction($commerceCode, $apiKeySecret);
// SDK 1.x
// Webpay Plus
\Transbank\Webpay\WebpayPlus::setIntegrationType("LIVE");
\Transbank\Webpay\WebpayPlus::setCommerceCode("{commerce-code}");
\Transbank\Webpay\WebpayPlus::setApiKey("{llave-secreta}");
// Oneclick Mall
\Transbank\Webpay\OneClick::setIntegrationType("LIVE");
\Transbank\Webpay\OneClick::setCommerceCode("{commerce-code}");
\Transbank\Webpay\OneClick::setApiKey("{llave-secreta}");
// Transacción Completa
\Transbank\TransaccionCompleta::setIntegrationType("LIVE");
\Transbank\TransaccionCompleta::setCommerceCode("{commerce-code}");
\Transbank\TransaccionCompleta::setApiKey("{llave-secreta}");
using Transbank.Webpay.Common;
// Webpay Plus
using Transbank.Webpay.WebpayPlus;
// Versión 4.x del SDK
// Opción A: Crear objeto options y pasarlo en el contructor
var tx = new Transaction(new Options("5970TuCodigo", "VeryLongKey", WebpayIntegrationType.Live));
// Opción B: Configurar en la instancia
var tx = new Transaction();
tx.ConfigureForProduction("5970TuCodigo", "VeryLongKey");
// Versión 3.x del SDK
Transaction.CommerceCode = "5970TuCodigo";
Transaction.ApiKey = "VeryLongKey";
Transaction.IntegrationType = WebpayIntegrationType.Live;
//Webpay Plus Mall
using Transbank.Webpay.WebpayPlus;
//Versión 4.x del SDK
// Opción A: Crear objeto options y pasarlo en el contructor
var tx = new MallTransaction(new Options("5970TuCodigo", "TuAPIKeySecret", WebpayIntegrationType.Live));
// Opción B: Configurar en la instancia
var tx = new MallTransaction();
tx.ConfigureForProduction("5970TuCodigo", "VeryLongKey");
//Versión 3.x del SDK
MallTransaction.CommerceCode = "5970TuCodigo";
MallTransaction.ApiKey = "TuAPIKeySecret";
MallTransaction.IntegrationType = WebpayIntegrationType.Live;
// Oneclick
using Transbank.Webpay.Oneclick;
// Versión 4.x del SDK
// Opción A: Crear objeto options y pasarlo en el contructor
var ins = new MallInscription(new Options("5970TuCodigo", "VeryLongKey", WebpayIntegrationType.Live));
var tx = new MallTransaction(new Options("5970TuCodigo", "VeryLongKey", WebpayIntegrationType.Live));
// Opción B: Configurar en la instancia
var ins = new MallInscription();
ins.ConfigureForProduction("5970TuCodigo", "VeryLongKey");
var tx = new MallTransaction();
tx.ConfigureForProduction("5970TuCodigo", "VeryLongKey");
// Versión 3.x del SDK
MallTransaction.CommerceCode = "5970TuCodigo";
MallTransaction.ApiKey = "VeryLongKey";
MallTransaction.IntegrationType = WebpayIntegrationType.Live;
// Transacción Completa
using Transbank.Webpay.TransaccionCompleta;
// Versión 4.x del SDK
// Opción A: Crear objeto options y pasarlo en el contructor
var tx = new FullTransaction(new Options("5970TuCodigo", "VeryLongKey", WebpayIntegrationType.Live));
// Opción B: Configurar en la instancia
var tx = new FullTransaction();
tx.ConfigureForProduction("5970TuCodigo", "VeryLongKey");
// Versión 3.x del SDK
FullTransaction.CommerceCode = "5970TuCodigo";
FullTransaction.ApiKey = "VeryLongKey";
FullTransaction.IntegrationType = WebpayIntegrationType.Live;
// Transacción Completa Mall
using Transbank.Webpay.TransaccionCompletaMall;
// Versión 4.x del SDK
// Opción A: Crear objeto options y pasarlo en el contructor
var tx = new MallFullTransaction(new Options("5970TuCodigo", "VeryLongKey", WebpayIntegrationType.Live));
// Opción B: Configurar en la instancia
var tx = new MallFullTransaction();
tx.ConfigureForProduction("5970TuCodigo", "VeryLongKey");
// Versión 3.x del SDK
TransaccionCompletaMall.CommerceCode = "5970TuCodigo";
TransaccionCompletaMall.ApiKey = "VeryLongKey";
TransaccionCompletaMall.IntegrationType = WebpayIntegrationType.Live;
## Versión 2.x del SDK
# Webpay Plus
tx = Transbank::Webpay::WebpayPlus::Transaction.new("commercecode", "apikey", :production)
# Oneclick
ins = Transbank::Webpay::Oneclick::MallInscription.new("commercecode", "apikey", :production)
# Transaccion Completa
tx = Transbank::Webpay::TransaccionCompleta::Transaction.new("commercecode", "apikey", :production)
# Transaccion Completa Mall
tx = Transbank::Webpay::TransaccionCompleta::MallTransaction.new("commercecode", "apikey", :production)
## Versión 1.x del SDK
# Webpay Plus
Transbank::Webpay::WebpayPlus::Base.commerce_code = "commercecode"
Transbank::Webpay::WebpayPlus::Base.api_key = "apikey"
Transbank::Webpay::WebpayPlus::Base.integration_type = :LIVE
# Oneclick
Transbank::Webpay::Oneclick::Base.commerce_code = "commercecode"
Transbank::Webpay::Oneclick::Base.api_key = "apikey"
Transbank::Webpay::Oneclick::Base.integration_type = :LIVE
## Versión 3.x del SDK
# Webpay Plus
from transbank.webpay.webpay_plus.transaction import Transaction
tx = Transaction(WebpayOptions("commercecode", "apikey", IntegrationType.LIVE))
# Oneclick
from transbank.webpay.oneclick.mall_inscription import MallInscription
from transbank.webpay.oneclick.mall_transaction import MallTransaction
ins = MallInscription(WebpayOptions("commercecode", "apikey", IntegrationType.LIVE))
tx = MallTransaction(WebpayOptions("commercecode", "apikey", IntegrationType.LIVE))
# Transaccion Completa
from transbank.webpay.transaccion_completa.transaction import Transaction
tx = Transaction(WebpayOptions("commercecode", "apikey", IntegrationType.LIVE))
# Transaccion Completa Mall
from transbank.webpay.transaccion_completa.mall_transaction import MallTransaction
tx = MallTransaction(WebpayOptions("commercecode", "apikey", IntegrationType.LIVE))
## Versión 2.x del SDK
# Webpay Plus
WebpayPlus.configure_for_production('commerce_code', 'apikey')
# Oneclick
from transbank import oneclick as BaseOneClick
from transbank.common.integration_type import IntegrationType
BaseOneClick.commerce_code = "commercecode"
BaseOneClick.api_key = "apikey"
BaseOneClick.integration_type = IntegrationType.LIVE
# Transaccion Completa
from transbank import transaccion_completa as BaseTransaccionCompleta
from transbank.common.integration_type import IntegrationType
BaseTransaccionCompleta.commerce_code = "commercecode"
BaseTransaccionCompleta.api_key = "apikey"
BaseTransaccionCompleta.integration_type = IntegrationType.LIVE
// Webpay Plus
// Versión 3.x del SDK
WebpayPlus.configureForIntegration(commerceCode, apiKey);
WebpayPlus.configureForProduction(commerceCode, apiKey);
WebpayPlus.configureForTesting();
WebpayPlus.configureForTestingDeferred();
WebpayPlus.configureForTestingMall();
WebpayPlus.configureForTestingMallDeferred();
// Versión 2.x del SDK
WebpayPlus.configureForIntegration(commerceCode, apiKey);
WebpayPlus.configureForProduction(commerceCode, apiKey);
WebpayPlus.configureWebpayPlusForTesting();
WebpayPlus.configureWebpayPlusDeferredForTesting();
WebpayPlus.configureWebpayPlusMallForTesting();
WebpayPlus.configureWebpayPlusMallDeferredForTesting();
// Oneclick
// Versión 3.x del SDK
Oneclick.configureForIntegration(commerceCode, apiKey);
Oneclick.configureForProduction(commerceCode, apiKey);
Oneclick.configureOneclickMallForTesting();
Oneclick.configureWebpayPlusMallDeferredForTesting();
// Versión 2.x del SDK
Oneclick.configureForIntegration(commerceCode, apiKey);
Oneclick.configureForProduction(commerceCode, apiKey);
Oneclick.configureOneclickMallForTesting();
Oneclick.configureOneclickMallDeferredForTesting();
// Transacción Completa
// Versión 3.x del SDK
TransaccionCompleta.configureForIntegration(commerceCode, apiKey);
TransaccionCompleta.configureForProduction(commerceCode, apiKey);
TransaccionCompleta.configureForTesting();
TransaccionCompleta.configureForTestingDeferred();
TransaccionCompleta.configureForTestingNoCVV();
TransaccionCompleta.configureForTestingDeferredNoCVV();
TransaccionCompleta.configureForTestingMall();
TransaccionCompleta.configureForTestingMallDeferred();
TransaccionCompleta.configureForTestingMallNoCVV();
TransaccionCompleta.configureForTestingMallDeferredNoCVV();
// Versión 2.x del SDK
TransaccionCompleta.configureForIntegration(commerceCode, apiKey);
TransaccionCompleta.configureForProduction(commerceCode, apiKey);
TransaccionCompleta.configureTransaccionCompletaForTesting();
TransaccionCompleta.configureTransaccionCompletaNoCvvForTesting();
TransaccionCompleta.configureTransaccionCompletaDeferredForTesting();
TransaccionCompleta.configureTransaccionCompletaDeferredNoCvvForTesting();
TransaccionCompleta.configureTransaccionCompletaMallForTesting();
TransaccionCompleta.configureTransaccionCompletaMallNoCvvForTesting();
TransaccionCompleta.configureTransaccionCompletaMallDeferredForTesting();
TransaccionCompleta.configureTransaccionCompletaMallDeferredNoCvvForTesting();
C) Utilizando la API directamente
Si estás consumiendo la API directamente, solo debes de preocuparte de usar el host correspondiente al ambiente de producción, el código de comercio productivo y llave secreta obtenida en el proceso de validación.
Requerimientos de página de resultado
Webpay Plus
La página de resultado de comercio, es la página que muestra el comercio cuando Webpay le entrega el control, después del proceso de autorización. Aplica para todos los tipos de transacciones.
Una vez finalizada a transacción, el comercio debe presentar una página al tarjetahabiente para que este se informe del resultado de la transacción. La información a presentar dependerá de si la transacción fue autorizada o no.
Se recomienda, como mínimo, que posea:
- Número de orden de pedido
- Nombre del comercio (Tienda de Mall)
- Monto y moneda de la transacción
- Código de autorización de la transacción
- Fecha de la transacción
- Tipo de pago realizado (Débito o Crédito)
- Tipo de cuota
- Cantidad de cuotas
- Monto de cada cuota
- Cuatro últimos dígitos de la tarjeta bancaria
- Descripción de los bienes y/o servicios
Cuando la transacción no sea autorizada, se recomienda informar al tarjetahabiente al respecto. Puede presentar un texto explicativo como:
Orden de Compra XXXXXXX rechazada
Las posibles causas de este rechazo son:
* Error en el ingreso de los datos de su tarjeta de crédito o débito (fecha y/o código de seguridad).
* Su tarjeta de crédito o débito no cuenta con saldo suficiente.
* Tarjeta aún no habilitada en el sistema financiero.
Productos disponibles
Los siguientes productos están disponibles para que puedas realizar la integración. Revisa su documentación acá:
Seguridad
Los servicios Web de Transbank están protegidos para garantizar que solamente miembros autorizados por Transbank hagan uso de las operaciones disponibles.
El mecanismo de seguridad implementado está basado en un canal de comunicación seguro TLS 1.2 sumado a WS-Security (para servicios SOAP) o API Keys + Mensajes firmados (para servicios REST). Esto provee autenticación, confidencialidad e integridad a los Servicios Web.
Los plugins y SDK para Webpay que distribuye Transbank ya están construidos con las librerías necesarias para realizar las validaciones requeridas, pero es deber del comercio asegurarse que la solución o desarrollo de medio de pago que utilice, cumpla con los protocolos de seguridad.
Deberes del comercio
Cambio de Certificado de Integración SOAP
El certificado lo puedes descargar de este link y para actualizarlo puedes usar las siguientes instrucciones según la integración que utilices.
Es recomendable que esto lo realice tu área técnica, en caso de que necesites apoyo puedes contactarnos en soporteweb@transbank.cl o en nuestro Slack.
Estas son las instrucciones para que puedas actualizar tu integración:
Plugin
SDK
Recomendaciones de integración
- Realiza escaneos de vulnerabilidad a la infraestructura, al menos cada tres meses.
- Mantén todos los componentes actualizados, incluidos el sistema operativo y los plugins usados.
- Utiliza comunicaciones cifradas con protocolos seguros.
- Implementa protección contra malware y contra ataques web: elige un Web Application Firewall (WAF) o Intrusion Prevention System (IPS).
- Cuando desarrolles los sitios web e integraciones sigue las mejores prácticas de entidades reconocidas, como OWASP https://owasp.org/www-project-top-ten/
- Prefiere control de accesos restringido únicamente a usuarios autorizados y permite el acceso al Portal de Administración sólo desde ubicaciones seguras y conocidas.
- Crea contraseñas robustas y resguárdalas siempre.
- Respalda la información (código fuente, datos, etc.) en una ubicación distinta a la principal.
- Monitorea constantemente la actividad sospechosa (ej. conexiones de países inusuales en transacciones o consumo excesivo) y respalda los registros de auditoría para tener trazabilidad de cualquier incidencia.
- Una vez al año, realiza auditorías con un profesional externo
Migración de API y SDK
Si necesitas migrar tu integración actual, ya sea mediante integración directa con la API o mediante un SDK, te recomendamos descargar y revisar el documento de migración en el siguiente Link.
Actualizaciones de plugins y SDK
Si el comercio está utilizando una solución basada en Plugins o SDK, debe estar atento a las actualizaciones que periódicamente Transbank realizará. Estas actualizaciones pueden responder a mantener compatibilidad con los CMS o Shopping Cart, modificaciones por seguridad, adición de propiedades o funciones, o correcciones a las comunicaciones. La comunicación oficial siempre se realizará a través del sitio http://www.transbankdevelopers.cl.
Uso de HTTPS
Los servidores del comercio tanto en ambientes de integración como en ambiente de producción deben hacer uso de HTTPS para sus endpoints web (tanto de cara al tarjetahabiente como en los callbacks expuestos a Transbank). El no uso de HTTPS puede provocar problemas en las redirecciones en navegadores modernos (ej: Safari en iOS 11.3 o superior), impidiendo que se complete el flujo de pago.
Validación de montos y órdenes de compra
El comercio debe verificar al completar cualquier transacción que los valores informados por Transbank (monto de la compra, buyOrder, etc.) coinciden con los valores entregados por el comercio al principio del flujo transaccional.