Transacción Completa
Una transacción completa permite al comercio presentar al tarjetahabiente un
formulario propio para almacenar los datos de la tarjeta, fecha de vencimiento
y cvv (no necesario para comercios con la opción sin cvv
habilitada).
Crear una transacción
Antes de realizar cualquier transacción es necesario instanciar el producto.
import cl.transbank.transaccioncompleta.FullTransaction;
Transaction.setCommerceCode = "Codigo de Comercio";
Transaction.setApiKey = "Apikey entregado por Transabank";
Transaction.setIntegrationType = "TEST/LIVE"; //ambiente de integracion;
use Transbank\TransaccionCompleta;
TransaccionCompleta::setCommerceCode = "Codigo de Comercio";
TransaccionCompleta::setApiKey = "Apikey entregado por Transabank";
TransaccionCompleta::setIntegrationType = "TEST/LIVE"; //ambiente de integracion;
//...
using Transbank.Webpay.Common;
using Transbank.Webpay.TransaccionCompleta;
//...
TransaccionCompleta.CommerceCode = "Codigo de Comercio";
TransaccionCompleta.ApiKey = "Apikey entregado por Transabank";
TransaccionCompleta.IntegrationType = "TEST/LIVE"; //ambiente de integracion;
# ...
# ...
// No está implementado en el SDK. De momento puedes usar la referencia del API o usar una librería externa.
Es recomendado encapsular la asignacion para utilizarla sin problemas en los demas metodos.
Ahora se pueden realizar transacciones sin problemas
import cl.transbank.transaccioncompleta.FullTransaction;
String buyOrder = "Orden de compra de la transaccion";
String sessionId = "Identificador del servicio unico de transacción";
double amount = 10000; // mongo en pesos
String cardNumber= "Numero de Tarjeta";
String cardExpirationDate= "Fecha de expiracion en formato AA/MM";
short cvv = 123; // CVV de la tarjeta.
FullTransactionCreateResponse response = FullTransaction.Transaction.create(buyOrder, sessionId, amount, cardNumber, cardExpirationDate, cvv);
use Transbank\TransaccionCompleta\Transaction;
$buyOrder = "Orden de compra de la transaccion";
$sessionId = "Identificador del servicio unico de transacción";
$amount = 10000; // mongo en pesos
$cardNumber= "Numero de Tarjeta";
$cardExpirationDate= "Fecha de expiracion en formato AA/MM";
$cvv = 123; // CVV de la tarjeta.
$response = Transaction::create($buyOrder, $sessionId, $amount, $cardNumber, $cardExpirationDate, $cvv);
using Transbank.Webpay.TransaccionCompleta;
var buy_order = "Orden de compra de la transaccion";
var session_id = "Identificador del servicio unico de transacción";
var amount = 10000; // monto en pesos
var card_number = "Numero de Tarjeta";
var card_expiration_date = "Fecha de expiracion en formato AA/MM";
var cvv = 123; // CVV de la tarjeta.
var response = FullTransaction.Create(
buyOrder: buy_order,
sessionId: session_id,
amount: amount,
cvv: cvv,
cardNumber: card_number,
cardExpirationDate: card_expiration_date);
buy_order = "Orden de compra de la transaccion"
session_id = "Identificador del servicio unico de transacción"
amount = 1000 /* monto en pesos */
card_number = "Numero de Tarjeta"
card_expiration_date = "Fecha de expiracion en formato AA/MM"
cvv = 123 /* CVV de la tarjeta. */
response = Transbank::TransaccionCompleta::Transaction::create(
buy_order: buy_order,
session_id: session_id,
amount: amount,
card_number: card_number,
cvv: cvv,
card_expiration_date: card_expiration_date
)
from transbank.transaccion_completa.transaction import Transaction
# leyendo variables desde un formulario
buy_order = 'Orden de compra de la transaccion '
session_id = 'Identificador del servicio unico de transacción'
amount = 10000; #monto en pesos
card_number = 'Numero de Tarjeta'
cvv = 123 #CVV de la tarjeta.
card_expiration_date = 'Fecha de expiracion en formato AA/MM'
resp = Transaction.create(
buy_order=buy_order, session_id=session_id, amount=amount,
card_number=card_number, cvv=cvv, card_expiration_date=card_expiration_date
)
// No está implementado en el SDK. De momento puedes usar la referencia del API o usar una librería externa.
Consulta de Cuotas
Antes de confirmar una transaccion es necesario confirmar la cantidad de cuotas y entregar el valor de estas.
import cl.transbank.transaccioncompleta.FullTransaction;
String token = "token obtenido como respuesta de la creacion de transaccion";
int installmentsNumber = 10; // numero de cuotas;
FullTransactionInstallmentResponse response = FullTransaction.Transaction.installment(
token,
installmentsNumber
);
use Transbank\TransaccionCompleta\Transaction;
$token = "token obtenido como respuesta de la creacion de transaccion";
$installmentsNumber = 10; // numero de cuotas;
$response = Transaction::installments(
token,
installmentsNumber
);
using Transbank.Webpay.TransaccionCompleta;
var token = "token obtenido como respuesta de la creacion de transaccion";
var installments_number = 10; // numero de cuotas;
var response = FullTransaction.Installments(
token: token,
installmentsNumber: installments_number
);
token = "token obtenido como respuesta de la creacion de transaccion"
installments_number = 10 /* numero de cuotas */
response = Transbank::TransaccionCompleta::Transaction::installments( token: token,
installments_number: installments_number )
from transbank.transaccion_completa.transaction import Transaction
#obtener form desde el request
req = request.form
token = request.form.get('token') #token obtenido al iniciar la transaccion
installments_number = 10 #numero de cuotas
resp = Transaction.installments(token=token, installments_number=installments_number)
// No está implementado en el SDK. De momento puedes usar la referencia del API o usar una librería externa.
Confirmar Transaccion
Una vez obtenido la respuesta de la consulta de cuotas, con los datos de esta se puede realizar commit de la transaccion:
import cl.transbank.transaccioncompleta.FullTransaction;
String token = "token obtenido como respuesta de la creacion de transaccion";
int idQueryInstallments = 12345679; // numero identificador de las cuotas.
byte deferredPeriodIndex= 1;
Boolean gracePeriod = false;
FullTransactionCommitResponse response = FullTransaction.Transaction.commit(
token,
idQueryInstallments,
deferredPeriodIndex,
gracePeriod
);
use Transbank\TransaccionCompleta\Transaction;
$token = "token obtenido como respuesta de la creacion de transaccion";
$idQueryInstallments = 12345679; // numero identificador de las cuotas.
$deferredPeriodIndex= 1;
$gracePeriod = false;
$response = Transaction::commit(
$token,
$idQueryInstallments,
$deferredPeriodIndex,
$gracePeriod,
);
using Transbank.Webpay.TransaccionCompleta;
var token = "token obtenido como respuesta de la creacion de transaccion";
var idQueryInstallments = 12345679; // numero identificador de las cuotas.
var deferredPeriodsIndex = 1;
var gracePeriods = false;
var result = FullTransaction.Commit(
token:token,
idQueryInstallments: idQueryInstallments,
deferredPeriodsIndex: deferredPeriodsIndex,
gracePeriods: gracePeriods
);
token = var token = "token obtenido como respuesta de la creacion de transaccion"
id_query_installments = 12345679 /* numero identificador de las cuotas. */
deferred_period_index = 1
grace_period = false
response = Transbank::TransaccionCompleta::Transaction::commit( token: token,
id_query_installments: id_query_installments,
deferred_period_index:deferred_period_index,
grace_period: grace_period )
from transbank.transaccion_completa.transaction import Transaction
#token obtenido como respuesta de la creacion de transaccion
token = request.form.get('token')
id_query_installments = 12345679 # numero identificador de las cuotas.
deferred_period_index = 1
grace_period = 'false'
response = Transaction.commit(token=token,
id_query_installments=id_query_installments,
deferred_period_index=deferred_period_index,
grace_period=grace_period)
// No está implementado en el SDK. De momento puedes usar la referencia del API o usar una librería externa.
Estado Transaccion
Para obtener el resultado de la transaccion exite el siguiente metodo:
import cl.transbank.transaccioncompleta.FullTransaction;
String token = "token obtenido como respuesta de la creacion de transaccion";
FullTransactionCommitResponse response = FullTransaction.Transaction.status(
token,
);
use Transbank\TransaccionCompleta\Transaction;
$token = "token obtenido como respuesta de la creacion de transaccion";
$response = Transaction::status(
$token
);
using Transbank.Webpay.TransaccionCompleta;
var token = "token obtenido como respuesta de la creacion de transaccion";
var response = FullTransaction.Status(
token:token
);
token = "token obtenido como respuesta de la creacion de transaccion"
response = Transbank::TransaccionCompleta::Transaction::status(token: token)
from transbank.transaccion_completa.transaction import Transaction
response = Transaction.status(token=token) #token obtenido como respuesta de la creacion de transaccion
// No está implementado en el SDK. De momento puedes usar la referencia del API o usar una librería externa.
Reembolso Transaccion
Para procesar un reembolso de la transaccion exite el siguiente metodo:
import cl.transbank.transaccioncompleta.FullTransaction;
String tokenWs = //token obtenido al crear transaccion
double amount = 1000;
final FullTransactionRefundResponse response = FullTransaction.Transaction.refund(tokenWs,amount);
use Transbank\TransaccionCompleta\Transaction;
$token = "token obtenido como respuesta de la creacion de transaccion";
$amount = 1000; // monto a reembolsar
$response = Transaction::refund(
$token,
$amount
);
using Transbank.Webpay.TransaccionCompleta;
var token = "token obtenido como respuesta de la creacion de transaccion";
var amount = 1000; // monto a reembolsar
var response = FullTransaction.Refund(
token: token,
amount: amount
);
token = "token obtenido como respuesta de la creacion de transaccion"
amount = 1000 /* monto a reembolsar */
response = Transbank::TransaccionCompleta::Transaction::refund(token: token, amount: amount)
from transbank.transaccion_completa.transaction import Transaction
#obtener form desde el request
req = request.form
token = req.get('token') #token obtenido al crear la transaccion
amount = '1000' #monto a reembolsar
response = Transaction.refund(token=token, amount=amount)
// No está implementado en el SDK. De momento puedes usar la referencia del API o usar una librería externa.
Credenciales y Ambiente
Ambiente de integración
En el ambiente de integración existen códigos de comercio previamente creados para todos los productos, para cada una de sus variaciones (Captura Diferida, Mall, Mall Captura Diferida, Sin CVV, etc) y dependiendo de la moneda que acepten (USD o CLP).
Esto permite que puedas operar en el ambiente de pruebas con un código de comercio que tenga la misma configuración contratada en tu código de comercio productivo. (Si contrataste Oneclick Mall Captura Diferida, debes usar ese código de comercio en integración para realizar las pruebas)
Puedes revisar los códigos de comercio del ambiente de integración de todos nuestros productos y variaciones en este link.
Configuración SDK
Los SDK vienen configurados para operar con Transacción Completa captura simultanea en ambiente de integración. Si necesitas operar con otra modalidad, como captura diferida, debes configurar explícitamente el código de comercio que usarás. No es necesario definir el Api Key Secret (llave secreta) ya que en este ambiente, todos los productos usan la misma y ya viene configurada.
FullTransaction.Transaction.setCommerceCode("pon-tu-codigo-de-comercio-aca");
\Transbank\TransaccionCompleta::setCommerceCode("{commerce-code}");
using Transbank.Webpay.TransaccionCompleta;
TransaccionCompleta.Webpay.CommerceCode = "5970TuCodigo";
Transbank::Webpay::TransaccionCompleta::Base.commerce_code = "commercecode"
from transbank import transaccion_completa as BaseTransaccionCompleta
BaseTransaccionCompleta.commerce_code = "commercecode"
Apuntar a producción
Antes de operar en el ambiente de producción, debes pasar por un proceso de validación, luego del cual te entregaremos tu Api Key Secret (llave secreta).
Si ya tienes tu llave secreta, puedes revisar como configurar el SDK para usar este ambiente de producción en esta sección
Ejemplos de integración
Ponemos a tu disposición una serie de repositorios en nuestro Github para ayudarte a entender la integración de mejor forma. Puedes encontrar una lista de proyectos de ejemplo acá.