Oneclick
Ambientes y Credenciales
La API REST de Webpay está protegida para garantizar que solamente comercios autorizados por Transbank hagan uso de las operaciones disponibles. La seguridad esta implementada mediante los siguientes mecanismos:
- Canal seguro a través de TLSv1.2 para la comunicación del cliente con Webpay.
- Autenticación y autorización mediante el intercambio de headers
Tbk-Api-Key-Id
(código de comercio) yTbk-Api-Key-Secret
(llave secreta).
Ambiente de Producción
Las URLs de endpoints de producción están alojados dentro de https://webpay3g.transbank.cl/.
// Host: https://webpay3g.transbank.cl
// Host: https://webpay3g.transbank.cl
// Host: https://webpay3g.transbank.cl
# Host: https://webpay3g.transbank.cl
# Host: https://webpay3g.transbank.cl
Host: https://webpay3g.transbank.cl
Ambiente de Integración
Las URLs de endpoints de integración están alojados dentro de https://webpay3gint.transbank.cl/.
// Host: https://webpay3gint.transbank.cl
// Host: https://webpay3gint.transbank.cl
// Host: https://webpay3gint.transbank.cl
# Host: https://webpay3gint.transbank.cl
# Host: https://webpay3g.transbank.cl
Host: https://webpay3gint.transbank.cl
Tarjetas y usuarios de prueba
Consulta la documentación para conocer las tarjetas de prueba que funcionan en el ambiente de integración.
Credenciales del comercio
// Tbk-Api-Key-Id: Código de comercio
// Tbk-Api-Key-Secret: Llave secreta
// Content-Type: application/json
// Tbk-Api-Key-Id: Código de comercio
// Tbk-Api-Key-Secret: Llave secreta
// Content-Type: application/json
# Tbk-Api-Key-Id: Código de comercio
# Tbk-Api-Key-Secret: Llave secreta
# Content-Type: application/json
# Tbk-Api-Key-Id: Código de comercio
# Tbk-Api-Key-Secret: Llave secreta
# Content-Type: application/json
Tbk-Api-Key-Id: Código de comercio
Tbk-Api-Key-Secret: Llave secreta
Content-Type: application/json
Todas las peticiones que hagas deben incluir el código de comercio y la llave secreta entregada por Transbank, actuando ambas como las credenciales que autorizan distintas operaciones.
Códigos de comercio
En la documentación puedes revisar todos los códigos de comercio del ambiente de integración
Los SDKs ya incluyen esos códigos de comercio y llaves secretas que funcionan en el ambiente de integración, por lo que puedes obtener rápidamente una configuración lista para hacer tus primeras pruebas en dicho ambiente:
Oneclick Mall
Revisa la documentación de Oneclick Mall para tener más información sobre como funciona el producto y tener más detalles sobre como realizar tu integración.
Crear una inscripción
Puedes revisar más detalles de esta operación en su documentación
Permite comenzar con el proceso de inscripción.
// Versión 3.x del SDK
Oneclick.MallInscription inscription = new Oneclick.MallInscription(new WebpayOptions(IntegrationCommerceCodes.ONECLICK_MALL, IntegrationApiKeys.WEBPAY, IntegrationType.TEST));
final OneclickMallInscriptionStartResponse response = inscription.start(username, email, response_url);
// Versión 2.x del SDK
OneclickMallInscriptionStartResponse response = Oneclick.MallInscription.start(userName, email, responseUrl);
// Versión 2.x del SDK
// -----------------------
use Transbank\Webpay\Oneclick\MallInscription;
// Identificador del usuario en el comercio
$username = "nombre_de_usuario";
// Correo electrónico del usuario
$email = "nombre_de_usuario@gmail.com";
// URL donde llegará el usuario con su token luego de finalizar la inscripción
$response_url = "https://callback/resultado/de/inscripcion";
$response = (new MallInscription)->start($username, $email, $response_url);
$url_webpay = $response->getUrlWebpay();
$token = $response->getToken();
// Versión 1.x del SDK
// -----------------------
use Transbank\Webpay\Oneclick\MallInscription;
// Identificador del usuario en el comercio
$username = "nombre_de_usuario";
// Correo electrónico del usuario
$email = "nombre_de_usuario@gmail.com";
// URL donde llegará el usuario con su token luego de finalizar la inscripción
$response_url = "https://callback/resultado/de/inscripcion";
$response = MallInscription::start($username, $email, $response_url);
$url_webpay = $response->getUrlWebpay();
$tbk_token = $response->getToken();
using Transbank.Webpay.Oneclick;
// Versión 4.x del SDK
var ins = new MallInscription(new Options(IntegrationCommerceCodes.ONECLICK_MALL, IntegrationApiKeys.WEBPAY, WebpayIntegrationType.Test));
var response = ins.Start(userName, email, returnUrl);
// Versión 3.x del SDK
var response = MallInscription.Start(userName, email, returnUrl);
## Versión 2.x del SDK
@ins = Transbank::Webpay::Oneclick::MallInscription.new(::Transbank::Common::IntegrationCommerceCodes::ONECLICK_MALL)
@resp = @ins.start(username: @username, email: @email, response_url: @response_url)
## Versión 1.x del SDK
response = Transbank::Webpay::Oneclick::MallInscription::start(
user_name: user_name,
email: email,
response_url: response_url
)
## Versión 3.x del SDK
ins = MallInscription(WebpayOptions(IntegrationCommerceCodes.ONECLICK_MALL, IntegrationApiKeys.WEBPAY, IntegrationType.TEST))
resp = ins.start(username=user_name, email=email, response_url=response_url)
## Versión 2.x del SDK
resp = MallInscription.start(
user_name=user_name,
email=email,
response_url=response_url)
const Oneclick = require("transbank-sdk").Oneclick; // CommonJS
const { Options, IntegrationApiKeys, Environment, IntegrationCommerceCodes } = require("transbank-sdk"); // CommonJS
import { Oneclick } from 'transbank-sdk'; // ES6 Modules
import { Options, IntegrationApiKeys, Environment, IntegrationCommerceCodes } from 'transbank-sdk'; // ES6 Modules
// Versión 3.x del SDK
const ins = new Oneclick.MallInscription(new Options(IntegrationCommerceCodes.ONECLICK_MALL, IntegrationApiKeys.WEBPAY, Environment.Integration));
const response = await ins.start(username, email, responseUrl);
// Versión 2.x del SDK
const response = await Oneclick.MallInscription.start(
userName, email, responseUrl
);
POST /rswebpaytransaction/api/oneclick/v1.2/inscriptions
Tbk-Api-Key-Id: 597055555541
Tbk-Api-Key-Secret: 579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C
Content-Type: application/json
{
"username": "juanperez",
"email": "juan.perez@gmail.com",
"response_url": "http://www.comercio.cl/return_inscription"
}
Parámetros Crear una inscripción
Nombre tipo |
Descripción |
---|---|
username String |
Identificador del usuario registrado en el comercio. Largo máximo: 40. |
email String |
Email del usuario registrado en el comercio. Largo máximo: 100. |
response_url String |
URL del comercio a la cual Webpay redireccionará posterior al proceso de inscripción. Largo máximo: 255. |
Respuesta Crear una inscripción
response.getToken();
response.getUrlWebpay();
$response->getToken();
$response->getUrlWebpay();
response.Token;
response.UrlWebpay
response.token
response.url_webpay
## Versión 3.x del SDK
response['token']
response['url_webpay']
## Versión 2.x del SDK
response.token
response.url_webpay
response.token
response.url_webpay
200 OK
Content-Type: application/json
{
"token": "e128a9c24c0a3cbc09223973327b97c8c474f6b74be509196cce4caf162a016a",
"url_webpay": "https://webpay3g.transbank.cl/webpayserver/bp_inscription.cgi"
}
Nombre tipo |
Descripción |
---|---|
token String |
Identificador, único, del proceso de inscripción. Largo: 64. |
url_webpay String |
URL de Webpay para iniciar la inscripción. Largo: 255. |
Confirmar una inscripción
Permite finalizar el proceso de inscripción obteniendo el usuario tbk. Más información en la documentación.
// Versión 3.x del SDK
Oneclick.MallInscription inscription = new Oneclick.MallInscription(new WebpayOptions(IntegrationCommerceCodes.ONECLICK_MALL, IntegrationApiKeys.WEBPAY, IntegrationType.TEST));
final OneclickMallInscriptionFinishResponse response = inscription.finish(tbk_token);
// Versión 2.x del SDK
final OneclickMallInscriptionFinishResponse response = Oneclick.MallInscription.finish(token);
// Versión 2.x del SDK
// -----------------------
use Transbank\Webpay\Oneclick\MallInscription;
// Identificador del usuario en el comercio
$tbk_token = $_GET['TBK_TOKEN']; // token que llega por GET en el parámetro "TBK_TOKEN"
$response = (new MallInscription)->finish($tbk_token);
$tbkUser = $response->getTbkUser();
// Versión 1.x del SDK
// -----------------------
$tbk_token = "tbkToken"; // token que llega por POST en el parámetro "TBK_TOKEN"
$response = MallInscription::finish($tbk_token);
$tbkUser = $response->getTbkUser();
using Transbank.Webpay.Oneclick;
// Versión 4.x del SDK
var ins = new MallInscription(new Options(IntegrationCommerceCodes.ONECLICK_MALL, IntegrationApiKeys.WEBPAY, WebpayIntegrationType.Test));
var response = ins.Finish(token);
// Versión 3.x del SDK
var response = MallInscription.Finish(token);
## Versión 2.x del SDK
@ins = Transbank::Webpay::Oneclick::MallInscription.new(::Transbank::Common::IntegrationCommerceCodes::ONECLICK_MALL)
@resp = @ins.finish(token: @tbk_token)
## Versión 1.x del SDK
@resp = Transbank::Webpay::Oneclick::MallInscription::finish(token: @tbk_token)
## Versión 3.x del SDK
ins = MallInscription(WebpayOptions(IntegrationCommerceCodes.ONECLICK_MALL, IntegrationApiKeys.WEBPAY, IntegrationType.TEST))
resp = ins.finish(token=tbk_token)
## Versión 2.x del SDK
resp = MallInscription.finish(token=token)
const Oneclick = require("transbank-sdk").Oneclick; // CommonJS
const { Options, IntegrationApiKeys, Environment, IntegrationCommerceCodes } = require("transbank-sdk"); // CommonJS
import { Oneclick } from 'transbank-sdk'; // ES6 Modules
import { Options, IntegrationApiKeys, Environment, IntegrationCommerceCodes } from 'transbank-sdk'; // ES6 Modules
// Versión 3.x del SDK
const ins = new Oneclick.MallInscription(new Options(IntegrationCommerceCodes.ONECLICK_MALL, IntegrationApiKeys.WEBPAY, Environment.Integration));
const response = await ins.finish(token);
// Versión 2.x del SDK
const response = await Oneclick.MallInscription.finish(token);
PUT /rswebpaytransaction/api/oneclick/v1.2/inscriptions/{token}
Tbk-Api-Key-Id: 597055555541
Tbk-Api-Key-Secret: 579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C
Content-Type: application/json
{
}
Parámetros Confirmar una inscripción
Nombre tipo |
Descripción |
---|---|
token String |
Identificador del proceso de inscripción. Es entregado por Webpay en la respuesta del método Inscription.start() . (See envía en la URL, no en el body) |
Respuesta Confirmar una inscripción
response.getAuthorizationCode();
response.getCardType();
response.getCardNumber();
response.getResponseCode();
response.getTbkUser();
$response->getAuthorizationCode();
$response->getCardType();
$response->getCardNumber();
$response->getResponseCode();
$response->getTbkUser();
response.ResponseCode;
response.TransbankUser;
response.AuthorizationCode;
response.CardType;
response.CardNumber;
response.response_code
response.transbank_user
response.authorization_code
response.card_type
response.card_number
## Versión 3.x del SDK
response['response_code']
response['transbank_user']
response['authorization_code']
response['card_type']
response['card_number']
## Versión 2.x del SDK
response.response_code
response.transbank_user
response.authorization_code
response.card_type
response.card_number
response.response_code
response.transbank_user
response.authorization_code
response.card_type
response.card_number
200 OK
Content-Type: application/json
{
"response_code": 0,
"tbk_user": "b6bd6ba3-e718-4107-9386-d2b099a8dd42",
"authorization_code": "123456",
"card_type": "Visa",
"card_number": "XXXXXXXXXXXX6623"
}
Nombre tipo |
Descripción |
---|---|
response_code Number |
Código de respuesta de la autorización. Largo: 2. Valores posibles: 0 = Transacción aprobada Puedes revisar los códigos de respuesta de rechazo en el siguiente link |
tbk_user String |
Identificador único de la inscripción del cliente en Oneclick, que debe ser usado para realizar pagos o borrar la inscripción. Largo: 40. |
authorization_code String |
Código que identifica la autorización de la inscripción. Largo: 6. |
card_type cardType |
Indica el tipo de tarjeta inscrita por el cliente (Visa, AmericanExpress, MasterCard, Diners, Magna, Redcompra, Prepago). Largo: 15. |
card_number String |
Últimos 4 dígitos de la tarjeta inscrito. |
Eliminar una inscripción
Puedes revisar más detalles de esta operación en su documentación
Una vez finalizado el proceso de inscripción es posible eliminarla de ser necesario. Para esto debes usar el método llamado Inscription.remove()
.
Inscription.remove()
Permite eliminar un usuario enrolado a Oneclick Mall.
// Versión 3.x del SDK
Oneclick.MallInscription inscription = new Oneclick.MallInscription(new WebpayOptions(IntegrationCommerceCodes.ONECLICK_MALL, IntegrationApiKeys.WEBPAY, IntegrationType.TEST));
inscription.delete(tbkUser, username);
// Versión 2.x del SDK
Oneclick.MallInscription.delete(tbkUser, userName)
// Versión 2.x del SDK
// -----------------------
use Transbank\Webpay\Oneclick\MallInscription;
$username = 'nombre_de_usuario';
$tbkUser = 'tbkUserRetornadoPorInscriptionFinish';
$response = (new MallInscription)->delete($tbkUser, $username);
// Versión 1.x del SDK
// -----------------------
use Transbank\Webpay\Oneclick\MallInscription;
//...
// Identificador del usuario en el comercio
$username = 'nombre_de_usuario';
$tbkUser = 'tbkUserRetornadoPorInscriptionFinish';
//Parámetro opcional
$options = new Options($apiKey, $parentCommerceCode);
$response = MallInscription::delete($tbkUser, $username, $options);
using Transbank.Webpay.Oneclick;
// Versión 4.x del SDK
var ins = new MallInscription(new Options(IntegrationCommerceCodes.ONECLICK_MALL, IntegrationApiKeys.WEBPAY, WebpayIntegrationType.Test));
var response = ins.Delete(tbkUser, username);
// Versión 3.x del SDK
MallInscription.Delete(userName, tbkUser);
## Versión 2.x del SDK
@ins = Transbank::Webpay::Oneclick::MallInscription.new(::Transbank::Common::IntegrationCommerceCodes::ONECLICK_MALL)
@resp = @ins.delete(tbk_user: @tbkUser, username: @username)
## Versión 1.x del SDK
MallInscription::delete(user_name: @username, tbk_user: @tbkUser)
## Versión 3.x del SDK
ins = MallInscription(WebpayOptions(IntegrationCommerceCodes.ONECLICK_MALL, IntegrationApiKeys.WEBPAY, IntegrationType.TEST))
ins.delete(tbk_user=tbkUser, username=username)
## Versión 2.x del SDK
MallInscription.delete(tbk_user, user_name)
const Oneclick = require("transbank-sdk").Oneclick; // CommonJS
const { Options, IntegrationApiKeys, Environment, IntegrationCommerceCodes } = require("transbank-sdk"); // CommonJS
import { Oneclick } from 'transbank-sdk'; // ES6 Modules
import { Options, IntegrationApiKeys, Environment, IntegrationCommerceCodes } from 'transbank-sdk'; // ES6 Modules
// Versión 3.x del SDK
const ins = new Oneclick.MallInscription(new Options(IntegrationCommerceCodes.ONECLICK_MALL, IntegrationApiKeys.WEBPAY, Environment.Integration));
const response = await ins.delete(tbkUser, username);
// Versión 2.x del SDK
const response = await Oneclick.MallInscription.delete(tbkUser, userName);
DELETE /rswebpaytransaction/api/oneclick/v1.2/inscriptions
Tbk-Api-Key-Id: 597055555541
Tbk-Api-Key-Secret: 579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C
Content-Type: application/json
{
"tbk_user": "b6bd6ba3-e718-4107-9386-d2b099a8dd42",
"username": "juanperez",
}
Parámetros Eliminar una inscripción
Nombre tipo |
Descripción |
---|---|
tbk_user String |
Identificador único de la inscripción del cliente (devuelto por Inscription.finish() ). Largo: 40. |
username String |
Identificador del usuario en los sistemas del comercio (el mismo indicado en Inscription.start() ). Largo máximo: 40. |
Respuesta Eliminar una inscripción
Esta petición no posee cuerpo de respuesta, solo entrega un 204 cuando se realiza correctamente
// 204 OK
// 204 OK
// 204 OK
# 204 OK
# 204 OK
// 204 OK
204 OK
Content-Type: application/json
Autorizar una transacción
Puedes revisar más detalles de esta operación en su documentación
Una vez realizada la inscripción, el comercio puede usar el tbkUser
recibido
para realizar transacciones. Para eso debes usar el método Transaction.authorize()
.
Transaction.authorize()
Permite autorizar un pago.
MallTransactionCreateDetails details = MallTransactionCreateDetails.build()
.add(amountMallOne, commerceCodeMallOne, buyOrderMallOne, installmentsNumberMallOne)
.add(amountMallTwo, commerceCodeMallTwo, buyOrderMallTwo, installmentsNumberMallTwo);
// Versión 3.x del SDK
Oneclick.MallTransaction tx = new Oneclick.MallTransaction(new WebpayOptions(IntegrationCommerceCodes.ONECLICK_MALL, IntegrationApiKeys.WEBPAY, IntegrationType.TEST));
final OneclickMallTransactionAuthorizeResponse response = tx.authorize(username, tbkUser, buyOrder, details);
// Versión 2.x del SDK
final OneclickMallTransactionAuthorizeResponse response = Oneclick.MallTransaction.authorize(username, tbkUser, buyOrder, details);
// Versión 2.x del SDK
// -----------------------
use Transbank\Webpay\Oneclick\MallTransaction;
use Transbank\Webpay\Oneclick;
// Identificador del usuario en el comercio
$parentBuyOrder = rand(100000, 999999999);
$details = [
[
"commerce_code" => Oneclick::DEFAULT_CHILD_COMMERCE_CODE_1,
"buy_order" => rand(100000, 999999999), // Tu propio buyOrder
"amount" => 50000,
"installments_number" => 1
],
[
"commerce_code" => Oneclick::DEFAULT_CHILD_COMMERCE_CODE_2,
"buy_order" => rand(100000, 999999999), // Tu propio buyOrder
"amount" => 20000,
"installments_number" => 1
]
];
$response = (new MallTransaction)->authorize($username, $tbkUser, $parentBuyOrder, $details);
// Versión 1.x del SDK
// -----------------------
use Transbank\Webpay\Oneclick\MallInscription;
// Identificador del usuario en el comercio
$username = "nombre_de_usuario";
$tbkUser = $tbkUserRetornadoPorInscriptionFinish;
$parentBuyOrder = rand(100000, 999999999);
$childCommerceCode1 = "597055555543";
$childBuyOrder1 = strval(rand(100000, 999999999));
$amount1 = 50000;
$installmentsNumber1 = 1;
$childCommerceCode2 = "597055555543";
$childBuyOrder2 = strval(rand(100000, 999999999));
$amount2 = 50000;
$installmentsNumber2 = 1;
$details = [
[
"commerce_code" => $childCommerceCode1,
"buy_order" => $childBuyOrder1,
"amount" => $amount1,
"installments_number" => $installmentsNumber1
],
[
"commerce_code" => $childCommerceCode2,
"buy_order" => $childBuyOrder2,
"amount" => $amount2,
"installments_number" => $installmentsNumber2
]
];
$response = MallTransaction::authorize($username, $tbkUser, $parentBuyOrder, $details);
using Transbank.Webpay.Oneclick;
List<PaymentRequest> details = new List<PaymentRequest>();
details.Add(new PaymentRequest(
childCommerceCodeOne, buyOrderMallOne, amountMallOne, installmentsNumber
));
details.Add(new PaymentRequest(
childCommerceCodeTwo, buyOrderMallTwo, amountMallTwo, installmentsNumber
));
// Versión 4.x del SDK
var tx = new MallTransaction(new Options(IntegrationCommerceCodes.ONECLICK_MALL, IntegrationApiKeys.WEBPAY, WebpayIntegrationType.Test));
var result = tx.Authorize(userName, tbkUser, buyOrder, details);
// Versión 3.x del SDK
var result = MallTransaction.Authorize(userName, tbkUser, buyOrder, details);
@details = [
{
commerce_code: amountMallOne,
buy_order: buyOrderMallOne,
amount: amountMallOne,
installments_number: installmentsNumberMallOne
},
{
commerce_code: amountMallTwo,
buy_order: buyOrderMallTwo,
amount: amountMallTwo,
installments_number: installmentsNumberMallTwo
}
]
## Versión 2.x del SDK
@tx = Transbank::Webpay::Oneclick::MallTransaction.new(::Transbank::Common::IntegrationCommerceCodes::ONECLICK_MALL)
@resp = @tx.authorize(username: @username, tbk_user: @tbkUser, parent_buy_order: @buy_order, details: @details)
## Versión 1.x del SDK
Transbank::Webpay::Oneclick::MallTransaction::authorize(username: @username,
tbk_user: @tbkUser,
parent_buy_order: @buy_order,
details: @details)
details = MallTransactionAuthorizeDetails(
commerce_code, buy_order_child, installments_number, amount
).add(
commerce_code2, buy_order_child2, installments_number2, amount2
)
## Versión 3.x del SDK
tx = MallTransaction(WebpayOptions(IntegrationCommerceCodes.ONECLICK_MALL, IntegrationApiKeys.WEBPAY, IntegrationType.TEST))
resp = tx.authorize(username= username, tbk_user= tbkUser, parent_buy_order= buy_order, details= details)
## Versión 2.x del SDK
resp = MallTransaction.authorize(
user_name=user_name,
tbk_user=tbk_user,
buy_order=buy_order,
details=details
)
const Oneclick = require('transbank-sdk').Oneclick; // CommonJS
const TransactionDetail = require('transbank-sdk').TransactionDetail; // CommonJS
import { Oneclick, TransactionDetail } from 'transbank-sdk'; // ES6 Modules
const details = [
new TransactionDetail(amount, commerceCode, childBuyOrder),
new TransactionDetail(amount2, commerceCode2, childBuyOrder2)
];
// Versión 3.x del SDK
const tx = new Oneclick.MallTransaction(new Options(IntegrationCommerceCodes.ONECLICK_MALL, IntegrationApiKeys.WEBPAY, Environment.Integration));
const response = await tx.authorize(userName, tbkUser, buyOrder, details);
// Versión 2.x del SDK
const response = await Oneclick.MallTransaction.authorize(
userName, tbkUser, buyOrder, details
);
POST /rswebpaytransaction/api/oneclick/v1.2/transactions
Tbk-Api-Key-Id: 597055555541
Tbk-Api-Key-Secret: 579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C
Content-Type: application/json
{
"username": "juanperez",
"tbk_user": "b6bd6ba3-e718-4107-9386-d2b099a8dd42",
"buy_order": "ordenCompra123456789",
"details": [
{
"commerce_code": "597055555542",
"buy_order": "ordenCompra123445",
"amount": 1000,
"installments_number": 5
}]
}
Parámetros Autorizar un pago
Nombre tipo |
Descripción |
---|---|
username String |
Identificador del usuario en los sistemas del comercio (el mismo indicado en Inscription.start() ). Largo máximo: 40. |
tbk_user String |
Identificador único de la inscripción del cliente (devuelto por Inscription.finish() ). Largo: 40. |
buy_order Number |
Es el código único de la orden de compra generada por el comercio 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 |_=&%.,~:/?[+!@()>- . Los caracteres con signos no están soportados, como los acentos o signos no especificados. |
details Array |
Lista de objetos, uno por cada tienda diferente del mall que participa en la transacción. |
details [].commerce_code String |
Código comercio asignado por Transbank para la tienda perteneciente al mall a la cual corresponde esta transacción. Largo: 12. |
details [].buy_order String |
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 |_=&%.,~:/?[+!@()>- . Los caracteres con signos no están soportados, como los acentos o signos no especificados. |
details [].amount Decimal |
Monto de la transacción de pago. Largo máximo: 17. |
details [].installments_number Number |
Cantidad de cuotas de la transacción de pago. Largo 2. No obligatorio. |
Respuesta Autorizar un pago
response.getAccountingDate();
response.getBuyOrder();
response.getTransactionDate();
final CardDetail cardDetail = response.getCardDetail();
cardDetail.getCardNumber();
final List<Detail> detailsResp = response.getDetails();
for (Detail detail : detailsResp) {
detail.getAmount();
detail.getAuthorizationCode();
detail.getBuyOrder();
detail.getCommerceCode();
detail.getInstallmentsNumber();
detail.getPaymentTypeCode();
detail.getStatus();
}
print_r($response);
$response->getAccountingDate();
$response->getBuyOrder();
$response->getTransactionDate();
$details = $response->getDetails();
foreach($details as $detail){
$detail->getAmount();
$detail->getAuthorizationCode();
$detail->getBuyOrder();
$detail->getCommerceCode();
$detail->getInstallmentsNumber();
$detail->getPaymentTypeCode();
$detail->getResponseCode();
$detail->getStatus();
}
// Transbank\Webpay\Oneclick\Responses\MallTransactionAuthorizeResponse Object
// (
// [buyOrder] => 433025339
// [sessionId] =>
// [cardNumber] => 6623
// [expirationDate] =>
// [accountingDate] => 0413
// [transactionDate] => 2021-04-13T22:59:53.767Z
// [details] => Array
// (
// [0] => Transbank\Webpay\Oneclick\Responses\TransactionDetail Object
// (
// [amount] => 50000
// [status] => AUTHORIZED
// [authorizationCode] => 1213
// [paymentTypeCode] => VN
// [responseCode] => 0
// [installmentsNumber] => 0
// [installmentsAmount] =>
// [commerceCode] => 597055555542
// [buyOrder] => 523485045
// )
// [1] => Transbank\Webpay\Oneclick\Responses\TransactionDetail Object
// (
// [amount] => 20000
// [status] => AUTHORIZED
// [authorizationCode] => 1213
// [paymentTypeCode] => VN
// [responseCode] => 0
// [installmentsNumber] => 0
// [installmentsAmount] =>
// [commerceCode] => 597055555543
// [buyOrder] => 224502696
// )
// )
// )
response.AccountingDate;
response.BuyOrder;
var cardDetail = response.CardDetail;
cardDetail.CardNumber;
response.TransactionDate;
var details = response.Details;
foreach (var detail in details) {
detail.Amount;
detail.AuthorizationCode;
detail.BuyOrder;
detail.CommerceCode;
detail.InstallmentsNumber;
detail.PaymentTypeCode;
detail.ResponseCode;
detail.Status;
}
response.accounting_date
response.buy_order
card_detail = response.card_detail
card_detail.card_number
response.transaction_date
details = response.details
details.each do |detail|
detail.amount
detail.authorization_code
detail.buy_order
detail.commerce_code
detail.installments_number
detail.payment_type_code
detail.response_code
detail.status
end
## Versión 3.x del SDK
response['accounting_date']
response['buy_order']
response['card_detail']
response['transaction_date']
response['details']
## Versión 2.x del SDK
response.accounting_date
response.buy_order
card_detail = response.card_detail
card_detail.card_number
response.transaction_date
details = response.details
for detail in details:
detail.amount
detail.authorization_code
detail.buy_order
detail.commerce_code
detail.installments_number
detail.payment_type_code
detail.response_code
detail.status
response.accounting_date
response.buy_order
cardDetail = response.card_detail
cardDetail.card_number
response.transaction_date
details = response.details
for(let detail of details) {
detail.amount
detail.authorization_code
detail.buy_order
detail.commerce_code
detail.installments_number
detail.payment_type_code
detail.response_code
detail.status
}
200 OK
Content-Type: application/json
{
"buy_order": "415034240",
"card_detail": {
"card_number": "6623"
},
"accounting_date": "0321",
"transaction_date": "2019-03-21T15:43:48.523Z",
"details": [
{
"amount": 500,
"status": "AUTHORIZED",
"authorization_code": "1213",
"payment_type_code": "VN",
"response_code": 0,
"installments_number": 0,
"commerce_code": "597055555542",
"buy_order": "505479072"
}]
}
Nombre tipo |
Descripción |
---|---|
buy_order String |
Orden de compra 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 |_=&%.,~:/?[+!@()>- . Los caracteres con signos no están soportados, como los acentos o signos no especificados. |
card_detail cardDetail |
Objeto que contiene información de la tarjeta utilizado por el tarjetahabiente. |
card_detail.card_number String |
Los últimos 4 dígitos de la tarjeta usada en la transacción. |
accounting_date String |
Fecha contable de la autorización del pago. |
transaction_date DateTime |
Fecha completa (timestamp) de la autorización del pago. ISO 8601 |
details Array |
Lista con el resultado de cada transacción de las tiendas hijas. |
details [].amount Decimal |
Monto de la transacción de pago. |
details [].status String |
Estado de la transacción (INITIALIZED, AUTHORIZED, REVERSED, FAILED, NULLIFIED, PARTIALLY_NULLIFIED, CAPTURED). |
details [].authorization_code String |
Código de autorización de la transacción de pago. |
details [].payment_type_code String |
Tipo de pago de la transaccion. VD = Venta Débito. VP = Venta prepago VN = Venta Normal. VC = Venta en cuotas. SI = 3 cuotas sin interés. S2 = 2 cuotas sin interés. NC = N Cuotas sin interés |
details [].response_code Number |
Código del resultado del pago, donde: 0 (cero) es aprobado. Valores posibles: 0 = Transacción aprobada Puedes revisar los códigos de respuesta de rechazo en el siguiente link Algunos códigos específicos para Oneclick son: -96: tbk_user no existente -97: Límites Oneclick, máximo monto diario de pago excedido. -98: Límites Oneclick, máximo monto de pago excedido -99: Límites Oneclick, máxima cantidad de pagos diarios excedido. |
details [].installments_number Number |
Cantidad de cuotas de la transacción de pago. |
details [].commerce_code Number |
Código de comercio del comercio hijo (tienda). |
details [].buy_order String |
Orden de compra generada por el comercio hijo para la transacción de pago. |
Obtener estado de una transacción
Permite consultar el estado de pago realizado a través de Oneclick. Retorna el resultado de la autorización.
Puedes revisar más detalles de esta operación en su documentación
// Versión 3.x del SDK
Oneclick.MallTransaction tx = new Oneclick.MallTransaction(new WebpayOptions(IntegrationCommerceCodes.ONECLICK_MALL, IntegrationApiKeys.WEBPAY, IntegrationType.TEST));
final OneclickMallTransactionStatusResponse response = tx.status(buyOrder);
// Versión 2.x del SDK
final OneclickMallTransactionStatusResponse response = Oneclick.MallTransaction.status(buyOrder);
// Versión 2.x del SDK
// -----------------------
use Transbank\Webpay\Oneclick\MallTransaction;
$response = (new MallTransaction)->status($buyOrder);
// Versión 1.x del SDK
// -----------------------
use Transbank\Webpay\Oneclick\MallTransaction;
$response = MallTransaction::getStatus($buyOrder);
using Transbank.Webpay.Oneclick;
// Versión 4.x del SDK
var tx = new MallTransaction(new Options(IntegrationCommerceCodes.ONECLICK_MALL, IntegrationApiKeys.WEBPAY, WebpayIntegrationType.Test));
var result = tx.Status(buyOrder);
// Versión 3.x del SDK
var result = MallTransaction.Status(buyOrder);
## Versión 2.x del SDK
@tx = Transbank::Webpay::Oneclick::MallTransaction.new(::Transbank::Common::IntegrationCommerceCodes::ONECLICK_MALL)
@resp = @tx.status(buy_order: buy_order)
## Versión 1.x del SDK
@resp = Transbank::Webpay::Oneclick::MallTransaction::status(buy_order: buy_order)
## Versión 3.x del SDK
tx = MallTransaction(WebpayOptions(IntegrationCommerceCodes.ONECLICK_MALL, IntegrationApiKeys.WEBPAY, IntegrationType.TEST))
resp = tx.status(buy_order)
## Versión 2.x del SDK
resp = MallTransaction.status(buy_order)
const Oneclick = require("transbank-sdk").Oneclick; // CommonJS
const { Options, IntegrationApiKeys, Environment, IntegrationCommerceCodes } = require("transbank-sdk"); // CommonJS
import { Oneclick } from 'transbank-sdk'; // ES6 Modules
import { Options, IntegrationApiKeys, Environment, IntegrationCommerceCodes } from 'transbank-sdk'; // ES6 Modules
// Versión 3.x del SDK
const tx = new Oneclick.MallTransaction(new Options(IntegrationCommerceCodes.ONECLICK_MALL, IntegrationApiKeys.WEBPAY, Environment.Integration));
const response = await tx.status(token);
// Versión 2.x del SDK
const response = await Oneclick.MallTransaction.status(token);
GET /rswebpaytransaction/api/oneclick/v1.2/transactions/{buyOrder}
Tbk-Api-Key-Id: 597055555541
Tbk-Api-Key-Secret: 579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C
Content-Type: application/json
Parámetros Consultar un pago realizado
Nombre tipo |
Descripción |
---|---|
buy_order String |
Orden de compra de la transacción a consultar (se envía en la URL, no en el body). |
Respuesta Consultar un pago realizado
response.getAccountingDate();
response.getBuyOrder();
response.getTransactionDate();
final CardDetail cardDetail = response.getCardDetail();
cardDetail.getCardNumber();
final List<Detail> detailsResp = response.getDetails();
for (Detail detail : detailsResp) {
detail.getAmount();
detail.getAuthorizationCode();
detail.getBuyOrder();
detail.getCommerceCode();
detail.getInstallmentsNumber();
detail.getPaymentTypeCode();
detail.getStatus();
}
print_r($response);
$response->getAccountingDate();
$response->getBuyOrder();
$response->getTransactionDate();
$details = $response->getDetails();
foreach($details as $detail){
$detail->getAmount();
$detail->getAuthorizationCode();
$detail->getBuyOrder();
$detail->getCommerceCode();
$detail->getInstallmentsNumber();
$detail->getPaymentTypeCode();
$detail->getResponseCode();
$detail->getStatus();
}
// Transbank\Webpay\Oneclick\Responses\MallTransactionAuthorizeResponse Object
// (
// [buyOrder] => 433025339
// [sessionId] =>
// [cardNumber] => 6623
// [expirationDate] =>
// [accountingDate] => 0413
// [transactionDate] => 2021-04-13T22:59:53.767Z
// [details] => Array
// (
// [0] => Transbank\Webpay\Oneclick\Responses\TransactionDetail Object
// (
// [amount] => 50000
// [status] => AUTHORIZED
// [authorizationCode] => 1213
// [paymentTypeCode] => VN
// [responseCode] => 0
// [installmentsNumber] => 0
// [installmentsAmount] =>
// [commerceCode] => 597055555542
// [buyOrder] => 523485045
// )
// [1] => Transbank\Webpay\Oneclick\Responses\TransactionDetail Object
// (
// [amount] => 20000
// [status] => AUTHORIZED
// [authorizationCode] => 1213
// [paymentTypeCode] => VN
// [responseCode] => 0
// [installmentsNumber] => 0
// [installmentsAmount] =>
// [commerceCode] => 597055555543
// [buyOrder] => 224502696
// )
// )
// )
response.AccountingDate;
response.BuyOrder;
var cardDetail = response.CardDetail;
cardDetail.CardNumber;
response.SessionId;
response.TransactionDate;
response.Vci;
var details = response.Details;
foreach (var detail in details) {
detail.Amount;
detail.AuthorizationCode;
detail.BuyOrder;
detail.CommerceCode;
detail.InstallmentsNumber;
detail.PaymentTypeCode;
detail.ResponseCode;
detail.Status;
}
response.accounting_date
response.buy_order
card_detail = response.card_detail
card_detail.card_number
response.session_id
response.transaction_date
response.vci
details = response.details
details.each do |detail|
detail.amount
detail.authorization_code
detail.buy_order
detail.commerce_code
detail.installments_number
detail.payment_type_code
detail.response_code
detail.status
end
## Versión 3.x del SDK
response['accounting_date']
response['buy_order']
response['card_detail']
response['session_id']
response['transaction_date']
response['vci']
response['details']
## Versión 2.x del SDK
response.accounting_date
response.buy_order
card_detail = response.card_detail
card_detail.card_number
response.session_id
response.transaction_date
response.vci
details = response.details
for detail in details:
detail.amount
detail.authorization_code
detail.buy_order
detail.commerce_code
detail.installments_number
detail.payment_type_code
detail.response_code
detail.status
response.accounting_date
response.buy_order
cardDetail = response.card_detail
cardDetail.card_number
response.session_id
response.transaction_date
response.vci
details = response.details
for(detail on details) {
detail.amount
detail.authorization_code
detail.buy_order
detail.commerce_code
detail.installments_number
detail.payment_type_code
detail.response_code
detail.status
}
200 OK
Content-Type: application/json
{
"buy_order": "415034240",
"card_detail": {
"card_number": "6623"
},
"accounting_date": "0321",
"transaction_date": "2019-03-21T15:43:48.523Z",
"details": [
{
"amount": 500,
"status": "AUTHORIZED",
"authorization_code": "1213",
"payment_type_code": "VN",
"response_code": 0,
"installments_number": 0,
"commerce_code": "597055555542",
"buy_order": "505479072"
}]
}
Nombre tipo |
Descripción |
---|---|
buy_order String |
Orden de compra generada por el comercio padre. |
card_detail cardDetail |
Objeto que contiene información de la tarjeta utilizado por el tarjetahabiente. |
card_detail.card_number String |
Los últimos 4 dígitos de la tarjeta usada en la transacción. |
accounting_date String |
Fecha contable de la autorización del pago. |
transaction_date DateTime |
Fecha completa (timestamp) de la autorización del pago. Largo: 24, formato: ISO 8601 (Ej: yyyy-mm-ddTHH:mm:ss.xxxZ) |
details Array |
Lista con el resultado de cada transacción de las tiendas hijas. |
details [].amount Decimal |
Monto de la sub-transacción de pago. |
details [].status String |
Estado de la transacción (INITIALIZED, AUTHORIZED, REVERSED, FAILED, NULLIFIED, PARTIALLY_NULLIFIED, CAPTURED). |
details [].authorization_code String |
Código de autorización de la sub-transacción de pago. |
details [].payment_type_code String |
Tipo de pago de la transaccion. VD = Venta Débito. VP = Venta prepago VN = Venta Normal. VC = Venta en cuotas. SI = 3 cuotas sin interés. S2 = 2 cuotas sin interés. NC = N Cuotas sin interés |
details [].response_code Number |
Código de retorno del proceso de pago, donde: 0 (cero) es aprobado. Valores posibles: 0 = Transacción aprobada Puedes revisar los códigos de respuesta de rechazo en el siguiente link Algunos códigos específicos para Oneclick son: -96: tbk_user no existente -97: Límites Oneclick, máximo monto diario de pago excedido. -98: Límites Oneclick, máximo monto de pago excedido -99: Límites Oneclick, máxima cantidad de pagos diarios excedido. |
details [].installments_number Number |
Cantidad de cuotas de la sub-transacción de pago. |
details [].commerce_code Number |
Código de comercio del comercio hijo (tienda). |
details [].buy_order String |
Orden de compra generada por el comercio hijo para la sub-transacción de pago. |
details [].balance Decimal |
Monto restante de la sub-transacción de pago original: monto inicial – monto anulado. Largo máximo: 17 |
status Text |
Estado de la transacción (INITIALIZED, AUTHORIZED, REVERSED, FAILED, NULLIFIED, PARTIALLY_NULLIFIED, CAPTURED). Largo máximo: 64 |
Reversar o anular una transacción
Puedes revisar más detalles de esta operación en su documentación
// Versión 3.x del SDK
Oneclick.MallTransaction tx = new Oneclick.MallTransaction(new WebpayOptions(IntegrationCommerceCodes.ONECLICK_MALL, IntegrationApiKeys.WEBPAY, IntegrationType.TEST));
final OneclickMallTransactionRefundResponse response = tx.refund(buyOrder, childCommerceCode, childBuyOrder, amount);
// Versión 2.x del SDK
OneclickMallTransactionRefundResponse response = Oneclick.MallTransaction.refund(buyOrder, childCommerceCode, childBuyOrder, amount);
// Versión 2.x del SDK
// -----------------------
use Transbank\Webpay\Oneclick\MallTransaction;
$response = (new MallTransaction)->refund($buyOrder, $childCommerceCode, $childBuyOrder, $amount);
// Transbank\Webpay\Oneclick\Responses\MallTransactionRefundResponse Object
// (
// [type] => NULLIFIED
// [authorizationCode] => 183633
// [authorizationDate] => 2021-04-13T23:07:37.683Z
// [nullifiedAmount] => 10000
// [balance] => 40000
// [responseCode] => 0
// )
// Versión 1.x del SDK
// -----------------------
//Parámetro opcional
$options = new Options($apiKey, $parentCommerceCode);
$response = MallTransaction::refund($buyOrder, $childCommerceCode, $childBuyOrder, $amount);
using Transbank.Webpay.Oneclick;
// Versión 4.x del SDK
var tx = new MallTransaction(new Options(IntegrationCommerceCodes.ONECLICK_MALL, IntegrationApiKeys.WEBPAY, WebpayIntegrationType.Test));
var result = tx.Refund(buyOrder, childCommerceCode, childBuyOrder, amount);
// Versión 3.x del SDK
var response = MallTransaction.Refund(buyOrder, childCommerceCode,childBuyOrder,amount);
## Versión 2.x del SDK
@tx = Transbank::Webpay::Oneclick::MallTransaction.new(::Transbank::Common::IntegrationCommerceCodes::ONECLICK_MALL)
@resp = @tx.refund(buy_order: @buy_order, child_commerce_code: @child_commerce_code, child_buy_order: @child_buy_order, amount: @amount)
## Versión 1.x del SDK
@resp = Transbank::Webpay::Oneclick::MallTransaction::refund(
buy_order: @buy_order,
child_commerce_code: @child_commerce_code,
child_buy_order: @child_buy_order,
amount: @amount
)
## Versión 3.x del SDK
tx = MallTransaction(WebpayOptions(IntegrationCommerceCodes.ONECLICK_MALL, IntegrationApiKeys.WEBPAY, IntegrationType.TEST))
resp = tx.refund(buy_order, child_commerce_code, child_buy_order, amount)
## Versión 2.x del SDK
resp = MallTransaction.refund(buy_order, child_commerce_code, child_buy_order, amount)
const Oneclick = require("transbank-sdk").Oneclick; // CommonJS
const { Options, IntegrationApiKeys, Environment, IntegrationCommerceCodes } = require("transbank-sdk"); // CommonJS
import { Oneclick } from 'transbank-sdk'; // ES6 Modules
import { Options, IntegrationApiKeys, Environment, IntegrationCommerceCodes } from 'transbank-sdk'; // ES6 Modules
// Versión 3.x del SDK
const tx = new Oneclick.MallTransaction(new Options(IntegrationCommerceCodes.ONECLICK_MALL, IntegrationApiKeys.WEBPAY, Environment.Integration));
const response = await tx.refund(buyOrder, childCommerceCode, childBuyOrder, amount);
// Versión 2.x del SDK
const response = await Oneclick.MallTransaction.refund(buyOrder, childCommerceCode, childBuyOrder, amount);
POST /rswebpaytransaction/api/oneclick/v1.2/transactions/{buyOrder}/refunds
Tbk-Api-Key-Id: 597055555541
Tbk-Api-Key-Secret: 579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C
Content-Type: application/json
{
"commerce_code": "597055555542",
"detail_buy_order": "ordenCompra12345",
"amount": 1000
}
Parámetros Reversar o Anular
Nombre tipo |
Descripción |
---|---|
buy_order String |
Orden de compra de la transacción a reversar o anular. Se envía en la URL, no en el body. Largo máximo: 26. |
commerce_code String |
Código de comercio hijo. Largo máximo: 12. |
detail_buy_order String |
Orden de compra hija de la transacción a reversar o anular. Largo máximo: 26. |
amount Formato número entero para transacciones en peso. Sólo en caso de dólar acepta dos decimales. |
Monto que se desea anular o reversar de la transacción. Largo máximo: 17 |
Respuesta Reversar o Anular
En el caso de que la transacción corresponda a una Reversa solo se retorna el parámetro type (REVERSED).
response.getAuthorizationCode();
response.getAuthorizationDate();
response.getBalance();
response.getNullifiedAmount();
response.getResponseCode();
response.getType();
$response->getAuthorizationCode();
$response->getAuthorizationDate();
$response->getBalance();
$response->getNullifiedAmount();
$response->getResponseCode();
$response->getType();
response.AuthorizationCode;
response.AuthorizationDate;
response.Balance;
response.NullifiedAmount;
response.ResponseCode;
response.Type;
response.authorization_code
response.authorization_date
response.balance
response.nullified_amount
response.response_code
response.type
## Versión 3.x del SDK
response['authorization_code']
response['authorization_date']
response['captured_amount']
response['response_code']
## Versión 2.x del SDK
response.authorization_code
response.authorization_date
response.captured_amount
response.response_code
response.authorization_code
response.authorization_date
response.balance
response.nullified_amount
response.response_code
response.type
200 OK
Content-Type: application/json
{
"type": "NULLIFIED",
"authorization_code": "123456",
"authorization_date": "2019-03-20T20:18:20Z",
"nullified_amount": 1000.00,
"balance": 0.00,
"response_code": 0
}
En caso de una reversa no devuelve más información
{
"type": "REVERSED",
}
Nombre tipo |
Descripción |
---|---|
type String |
Tipo de reembolso, REVERSED o NULLIFIED, si es REVERSED no se devolverán datos de la transacción (authorization code, etc). Largo máximo: 10 |
authorization_code Boolean |
(Solo si es NULLIFIED) Código de autorización. Largo máximo: 6 |
authorization_date ISO8601 |
(Solo si es NULLIFIED) Fecha de la autorización de la transacción. |
nullified_amount Decimal |
(Solo si es NULLIFIED) Monto anulado. Largo máximo: 17 |
balance Decimal |
(Solo si es NULLIFIED) Monto restante de la transacción de pago original: monto inicial – monto anulado. Largo máximo: 17 |
response_code Number |
(Solo si es NULLIFIED) Código del resultado del pago, donde: 0 (cero) es aprobado. Largo máximo: 2 |
buy_order String |
(Solo si es NULLIFIED) Orden de compra generada por el comercio hijo para la transacción de pago. Largo máximo: 26. |
Captura diferida de una transacción
Revisa más detalles sobre esta modalidad en la documentación
// Versión 3.x del SDK
Oneclick.MallTransaction tx = new Oneclick.MallTransaction(new WebpayOptions(IntegrationCommerceCodes.ONECLICK_MALL, IntegrationApiKeys.WEBPAY, IntegrationType.TEST));
final OneclickMallTransactionCaptureResponse response = tx.capture(childCommerceCode, childBuyOrder, authorizationCode, amount);
// Versión 2.x del SDK
final OneclickMallTransactionCaptureResponse response = Oneclick.MallDeferredTransaction.capture(
childCommerceCode, childBuyOrder, amount, authorizationCode
);
// Versión 2.x del SDK
// -----------------------
use Transbank\Webpay\Oneclick\MallTransaction;
$response = (new MallTransaction)->capture($commerce_code, $buy_order, $authorization_code, $amount);
// Versión 1.x del SDK
// -----------------------
use Transbank\Webpay\Oneclick\MallTransaction;
$response = MallTransaction::capture($commerce_code, $buy_order, $authorization_code, $amount);
// Versión 4.x del SDK
var tx = new MallTransaction(new Options(IntegrationCommerceCodes.ONECLICK_MALL, IntegrationApiKeys.WEBPAY, WebpayIntegrationType.Test));
var result = tx.Capture(ChildcommerceCode, ChildbuyOrder, authorizationCode, amount);
## Versión 2.x del SDK
@tx = Transbank::Webpay::Oneclick::MallTransaction.new(::Transbank::Common::IntegrationCommerceCodes::ONECLICK_MALL_DEFERRED)
@resp = @tx.capture(child_commerce_code: @commerce_code, child_buy_order: @buy_order, authorization_code: @authorization_code, amount: @capture_amount)
## Versión 1.x del SDK
@resp = Transbank::Webpay::Oneclick::MallDeferredTransaction::capture(
child_commerce_code: @commerce_code, child_buy_order: @buy_order,
amount: @capture_amount, authorization_code: @authorization_code
)
## Versión 3.x del SDK
tx = MallTransaction(WebpayOptions(IntegrationCommerceCodes.ONECLICK_MALL, IntegrationApiKeys.WEBPAY, IntegrationType.TEST))
resp = tx.capture(child_commerce_code, child_buy_order, authorization_code, capture_amount)
## Versión 2.x del SDK
# Esta funcion aun no se encuentra disponible en el SDK
const Oneclick = require("transbank-sdk").Oneclick; // CommonJS
const { Options, IntegrationApiKeys, Environment, IntegrationCommerceCodes } = require("transbank-sdk"); // CommonJS
import { Oneclick } from 'transbank-sdk'; // ES6 Modules
import { Options, IntegrationApiKeys, Environment, IntegrationCommerceCodes } from 'transbank-sdk'; // ES6 Modules
// Versión 3.x del SDK
const tx = new Oneclick.MallTransaction(new Options(IntegrationCommerceCodes.ONECLICK_MALL_DEFERRED, IntegrationApiKeys.WEBPAY, Environment.Integration));
const response = await tx.capture(commerceCode, buyOrder, authorizationCode, amount);
// Versión 2.x del SDK
const response = Oneclick.MallTransaction.capture(
childCommerceCode, childBuyOrder, amount, authorizationCode
);
PUT /rswebpaytransaction/api/oneclick/v1.2/transactions/capture
Tbk-Api-Key-Id: 597055555547
Tbk-Api-Key-Secret: 579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C
Content-Type: application/json
{
"commerce_code": 597055555548,
"buy_order": "OCDT12345678",
"capture_amount": 50,
"authorization_code": "1213"
}
Parámetros Captura Diferida
Nombre tipo |
Descripción |
---|---|
commerce_code Number |
Tienda hija que realizó la transacción. Largo: 6. |
buy_order String |
Orden de compra de la transacción que se requiere capturar. Largo máximo: 26. La orden de compra puede tener: Números, letras, mayúsculas y minúsculas, y los signos |_=&%.,~:/?[+!@()>- . Los caracteres con signos no están soportados, como los acentos o signos no especificados. |
capture_amount Decimal |
Monto que se desea capturar. Largo máximo: 17. |
authorization_code String |
Código de autorización de la transacción que se requiere capturar Largo máximo: 6. |
Respuesta Captura Diferida
response.getAuthorizationCode();
response.getAuthorizationDate();
response.getCapturedAmount();
response.getResponseCode();
$response->getAuthorizationCode();
$response->getAuthorizationDate();
$response->getCapturedAmount();
$response->getResponseCode();
response.AuthorizationCode;
response.AuthorizationDate;
response.CapturedAmount;
response.ResponseCode;
response.authorization_code
response.authorization_date
response.captured_amount
response.response_code
## Versión 3.x del SDK
response['authorization_code']
response['authorization_date']
response['captured_amount']
response['response_code']
## Versión 2.x del SDK
# Esta función aun no se encuentra disponible en el SDK
response.authorization_code
response.authorization_date
response.captured_amount
response.response_code
200 OK
Content-Type: application/json
{
"authorization_code": "152759",
"authorization_date": "2020-04-03T01:49:50.181Z",
"captured_amount": 50,
"response_code": 0
}
Nombre tipo |
Descripción |
---|---|
authorization_code String |
Código de autorización de la captura diferida. Largo máximo: 6 |
authorization_date String |
Fecha y hora de la autorización. |
captured_amount Decimal |
Monto capturado. Largo máximo: 6 |
response_code Number |
Código de resultado de la captura. Si es exitoso es 0,de lo contrario la captura no fue realizada. Largo máximo: 2 |
Códigos y mensajes de error
Al realizar cualquier solicitud al API REST, además de los datos de respuesta, se incluirá uno de los siguientes códigos de estado de respuesta HTTP dependiendo del resultado obtenido:
Solicitud exitosa
Cuando la operación solcitada es ejecutada correctamente, se pueden recibir estos status HTTP:
Código de estado HTTP | Descripción |
---|---|
200 | La operación se ha ejecutado exitosamente |
204 | La operación DELETE se ha ejecutado exitosamente |
Códigos de error
Todos los errores reportados por la API REST de Webpay despliegan un mensaje JSON con una descripción del error.
{
"error_message": "token is required"
}
Código de estado HTTP | Descripción |
---|---|
400 | El mensaje JSON es inválido. Puedes ser que no corresponda a un mensaje bien estructurado o que contenga un campo no esperado. |
401 | No autorizado. API Key y/o API Secret inválidos |
404 | La transacción no ha sido encontrada. |
405 | Método no permitido. |
406 | No fue posible procesar la respuesta en el formato que el cliente indica. |
415 | Tipo de mensaje no permitido. |
422 | El requerimiento no ha podido ser procesado ya sea por validaciones de datos o por lógica de negocios. |
500 | Ha ocurrido un error inesperado. |
Puesta en Producción
Una vez que el comercio determine que ha finalizado su integración, se debe realizar un proceso de validación.
Una vez que Transbank confirme que la información enviada por formulario es correcta (no aplica para plugins), se enviará al comercio la confirmación y se generará su API Key Secret, que en conjunto con el código de comercio, permiten operar en producción.
Cuando recibas el correo, 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.
Configuración para producción utilizando los SDK
Si estas utilizando algún SDK oficial de Transbank, entonces debes seguir los siguientes pasos.
- Asignar el código de comercio productivo, entregado por Transbank al momento de contratar el producto.
// Para Oneclick
Oneclick.setCommerceCode('TU_CODIGO_DE_COMERCIO');
// Sin configurar nada, el SDK viene preconfigurado con las credenciales de prueba de Oneclick mall captura simultanea para el ambiente de integración
// Para configurar en producción:
use \Transbank\Webpay\Oneclick;
Oneclick:configureForProduction('597012345678', 'ApiKey');
// Para configurar en integración:
Oneclick::configureForIntgration('597012345678', 'ApiKey');
Oneclick::configureForTesting();
Oneclick::configureForTestingDeferred();
// También puedes crear un objeto Options y pasarlo directo a la instancia
use \Transbank\Webpay\Options;
use \Transbank\Webpay\Oneclick\MallTransaction;
use \Transbank\Webpay\Oneclick\MallInscription;
$options = Options::forProduction('codigo-comercio', 'apikey'); // o Options::forIntegration('comercio', 'key')
$transaction = new MallTransaction($options);
$transaction->authorize(...);
$inscription = new MallInscription($options);
$inscription->start(...);
// También es posible así:
$transaction = (new MallTransaction())->configureForProduction('codigo-comercio', 'api-key');
$transaction->authorize();
// Esta función aun no se encuentra disponible en el SDK
# Esta función aun no se encuentra disponible en el SDK
# Esta función aun no se encuentra disponible en el SDK
response.authorization_code
response.authorization_date
response.captured_amount
response.response_code
200 OK
Content-Type: application/json
{
"authorization_code": "152759",
"authorization_date": "2020-04-03T01:49:50.181Z",
"captured_amount": 50,
"response_code": 0
}
// Esta función aun no se encuentra disponible en el SDK
# Esta función aun no se encuentra disponible en el SDK
# Esta función aun no se encuentra disponible en el SDK
const Oneclick = require('transbank-sdk').Oneclick; // CommonJS
import { Oneclick } from 'transbank-sdk'; // ES6 Modules
Oneclick.commerceCode = 'TU_CODIGO_DE_COMERCIO';
- Configuración del secreto compartido.
// Para Oneclick
Oneclick.setApiKey('TU_API_KEY');
// Esta función aun no se encuentra disponible en el SDK
# Esta función aun no se encuentra disponible en el SDK
# Esta función aun no se encuentra disponible en el SDK
const Oneclick = require('transbank-sdk').Oneclick; // CommonJS
import { Oneclick } from 'transbank-sdk'; // ES6 Modules
Oneclick.apiKey = 'TU_API_KEY';
- Selección del ambiente productivo.
// Para Oneclick
Oneclick.setIntegrationType(IntegrationType.LIVE);
// Esta función aun no se encuentra disponible en el SDK
# Esta función aun no se encuentra disponible en el SDK
# Esta función aun no se encuentra disponible en el SDK
const Oneclick = require('transbank-sdk').Oneclick; // CommonJS
const Environment = require('transbank-sdk').Environment // CommonJS
import { Oneclick, Environment } from 'transbank-sdk'; // ES6 Modules
Oneclick.environment = Environment.Production;
Alternativamente algunos SDK ofrecen un método para configurar directamente a producción
// Esta función aun no se encuentra disponible en el SDK
// Esta función aun no se encuentra disponible en el SDK
# Esta función aun no se encuentra disponible en el SDK
# Esta función aun no se encuentra disponible en el SDK
const Oneclick = require('transbank-sdk').Oneclick; // CommonJS
import { Oneclick } from 'transbank-sdk'; // ES6 Modules
Oneclick.configureForProduction('TU_CODIGO_DE_COMERCIO', 'TU_API_KEY');