API Referencia
undefined

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) y Tbk-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

  1. Una vez que el comercio determine que ha finalizado su integración, se debe realizar un proceso de validación.

  2. 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.

  3. Cuando recibas el correo, será necesario cambiar la configuración del e-commerce para funcionar en producción

  4. 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.

  1. 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';
  1. 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';
  1. 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');