API Referencia
undefined

PatPass

Patpass ComercioREST

Crear una suscripción

Para crear una transacción PatPass Comercio que registre una suscripción, lo primero que necesitas es una instancia de WebpayPatpassComercio con la Configuration que incluye el código de comercio y el Api Key a usar.

Una forma fácil de comenzar es utilizar la configuración para pruebas que viene incluida en el SDK.

import cl.transbank.patpass.PatpassComercio;
import cl.transbank.patpass.model.PatpassComercioInscriptionStartResponse;
import cl.transbank.patpass.model.PatpassComercioTransactionStatusResponse;

PatpassCommercio = new PatpassOptions();
use Transbank\Patpass\Options;
use Transbank\Patpass\PatpassComercio;

$commerceCode = "codigo de comercio en String";
$apiKey = "Api Key en String";
$integrationType = "TEST / LIVE dependiendo de tu ambiente de integracion";

PatpassComercio::setCommerceCode($commerceCode);
PatpassComercio::setApiKey($apiKey);
PatpassComercio::setIntegrationType($integrationType);
using Transbank.Common;
using Transbank.Patpass.PatpassComercio;

PatpassComercio.CommerceCode = "codigo de comercio en String";
PatpassComercio.ApiKey = "Api Key en String";
PatpassComercio.IntegrationType = "TEST / LIVE dependiendo de tu ambiente de integracion";
# ...
# ...

Te recomendamos encapsular estas asignaciones en una función para que puedas reutilizarlas en los demás métodos.

Una vez este preparado el ambiente y la integración, puedes iniciar la transacción sin problemas.

import cl.transbank.patpass.PatpassComercio;
import cl.transbank.patpass.model.PatpassComercioInscriptionStartResponse;
import cl.transbank.patpass.model.PatpassComercioTransactionStatusResponse;

String url = request.getRequestURL().toString().replace("start","end-subscription");
String name = "nombre";
String firstLastName = "apellido";
String secondLastName = "sapellido";
String rut = "14140066-5";
String serviceId = String.valueOf(new Random().nextInt(Integer.MAX_VALUE));;
String finalUrl = request.getRequestURL().toString().replace("start","voucher-generated");
double maxAmount = 1500;
String phoneNumber = "123456734";
String mobileNumber = "123456723";
String patpassName = "nombre del patpass";
String personEmail = "[email protected]";
String commerceEmail = "[email protected]";
String address = "huerfanos 101";
String city = "Santiago";

final PatpassComercioInscriptionStartResponse response = PatpassComercio.Inscription.start(url,
                    name,
                    firstLastName,
                    secondLastName,
                    rut,
                    serviceId,
                    finalUrl,
                    maxAmount,
                    phoneNumber,
                    mobileNumber,
                    patpassName,
                    personEmail,
                    commerceEmail,
                    address,
                    city);
use Transbank\Patpass\Options;
use Transbank\Patpass\PatpassComercio;

$returnUrl = "https://callback_url/resultado/de/la/transaccion";
$name = "Nombre";
$lastname1 = "Primer Apellido";
$lastname2 = "Segundo Apellido";
$rut = "11111111-1";
$serviceId = "Identificador del servicio unico de suscripción";
$finalUrl = "https://callback/final/comprobante/transacción";
$maxAmount = 10000; # monto máximo de la suscripción
$telephone = "numero telefono fijo de suscrito";
$mobilePhone = "numero de telefono móvil de suscrito";
$patpassName = "Nombre asignado a la suscripción";
$clientEmail = "Correo de suscrito";
$commerceEmail = "Correo de comercio";
$address = "Dirección de Suscrito";
$city = "Ciudad de suscrito";

$response = PatpassComercio\Inscription::Start(
  $returnUrl,
  $name,
  $lastname1,
  $lastname2,
  $rut,
  $serviceId,
  $finalUrl,
  $maxAmount,
  $telephone,
  $mobilePhone,
  $patpassName,
  $clientEmail,
  $commerceEmail,
  $address,
  $city
);
using Transbank.Patpass.PatpassComercio;
// ...

var returnUrl = "https://callback_url/resultado/de/la/transaccion";
var name = "Nombre";
var lastname1 = "Primer Apellido";
var lastname2 = "Segundo Apellido";
var rut = "11111111-1";
var serviceId = "Identificador del servicio unico de suscripción";
var finalUrl = "https://callback/final/comprobante/transacción";
var maxAmount = 10000; # monto máximo de la suscripción
var telephone = "numero telefono fijo de suscrito";
var mobilePhone = "numero de telefono móvil de suscrito";
var patpassName = "Nombre asignado a la suscripción";
var clientEmail = "Correo de suscrito";
var commerceEmail = "Correo de comercio";
var address = "Dirección de Suscrito";
var city = "Ciudad de suscrito";

var response = Inscription.Start(
    returnUrl,
    name,
    lastname1,
    lastname2,
    rut,
    serviceId,
    finalUrl,
    maxAmount,
    telephone,
    mobilePhone,
    patpassName,
    clientEmail,
    commerceEmail,
    address,
    city
);
@url = "https://callback_url/resultado/de/la/transaccion"
@name = "Nombre"
@first_last_name = "Primer Apellido"
@second_last_name = "Segundo Apellido"
@rut = "11111111-1"
@service_id = "Identificador del servicio unico de suscripción"
@final_url = "https://callback/final/comprobante/transacción"
@max_amount = 10000; # monto máximo de la suscripció
@phone_number = "numero telefono fijo de suscrito"
@mobile_number = "numero de telefono móvil de suscrito"
@patpass_name = "Nombre asignado a la suscripción"
@person_email = "Correo de suscrito"
@commerce_email = "Correo de comercio"
@address = "Dirección de Suscrito"
@city = "Ciudad de suscrito"

@resp  = Transbank::Patpass::PatpassComercio::Inscription::start(
                                                    url: @url,
                                                    name: @name,
                                                    first_last_name: @first_last_name,
                                                    second_last_name: @second_last_name,
                                                    rut: @rut,
                                                    service_id: @service_id,
                                                    final_url: @final_url,
                                                    max_amount: @max_amount,
                                                    phone_number: @phone_number,
                                                    mobile_number: @mobile_number,
                                                    patpass_name: @patpass_name,
                                                    person_email: @person_email,
                                                    commerce_email: @commerce_email,
                                                    address: @address,
                                                    city: @city
                                                    )
from transbank.error.transbank_error import TransbankError
from transbank.patpass_comercio.inscription import Inscription

return_url = "https://callback_url/resultado/de/la/transaccion"
name = "Nombre"
first_last_name = "Primer Apellido"
second_last_name = "Segundo Apellido"
rut = "11111111-1"
service_id = "Identificador del servicio unico de suscripción"
final_url = "https://callback/final/comprobante/transacción"
max_amount = 10000; # monto máximo de la suscripció
phone_number = "numero telefono fijo de suscrito"
mobile_number = "numero de telefono móvil de suscrito"
patpass_name = "Nombre asignado a la suscripción"
person_email = "Correo de suscrito"
commerce_mail = "Correo de comercio"
address = "Dirección de Suscrito"
city = "Ciudad de suscrito"

response = Inscription.start(return_url, name, first_last_name, second_last_name, rut, service_id, final_url,
                                       max_amount, phone_number, mobile_number, patpass_name,
                                       person_email, commerce_mail, address, city)

Confirmar suscripción

Para confirmar la suscripción se debe enviar el token generado en la respuesta a la url tambien generada en la respuesta con el metodo post en un formulario.

<form action="${model.url_webpay}" method="post" name="tokenForm">
    <input type="hidden" name="tokenComercio" value="${model.tbk_token}">
    <input type="submit" class="btn btn-success" value="Start Patpass comercio">
</form>
<form method="POST" action="$res['url']">
  <input type="hidden" name="tokenComercio" value="$res['token']" />
  <input type="submit" value="Finalizar La Inscripcion" />
</form>
<form method="POST" action="@ViewBag.Url">
  <input type="hidden" name="tokenComercio" value="@ViewBag.Token" />
  <input type="submit" value="Finalizar La Inscripcion" />
</form>
<form action="<%= @resp.url %>" method="post">
  <input type="hidden" name="tokenComercio" value="<%= @resp.token %>">
  <button type="submit">Finalizar La Inscripcion</button>
</form>
<form action="" method="POST">
  <input type="hidden" name="tokenComercio" value="">
  <input type="submit" value="Finalizar La Inscripcion">
</form>

Estado de la suscripción

Una vez que el tarjetahabiente ha pagado (o declinado, o ha ocurrido un error), Webpay retornará el control vía POST a la URL que indicaste en el returnUrl. Recibirás también el parámetro token_ws que te permitirá conocer el resultado de la transacción:

import cl.transbank.patpass.model.PatpassComercioTransactionStatusResponse;

final WebpayApiRequest request = new PatpassComercioTransactionStatusRequest(token);
use Transbank\Patpass\PatpassComercio;

$response = PatpassComercio\Inscription::Status($token);
using Transbank.Patpass.PatpassComercio;

var token = Request.Form["token_ws"];
var result = Inscription.Status(token);
@req = params.as_json
@token = @req['j_token']
@resp = Transbank::Patpass::PatpassComercio::Inscription::status(token: @token)
from transbank.error.transbank_error import TransbankError
from transbank.patpass_comercio.inscription import Inscription

token = request.form.get("tokenComercio")
try:
    response = Inscription.status(token)
except TransbankError as e:
    print(e.message)

Credenciales y Ambiente

Las credenciales de PatPass Comercio se configuran de la siguiente forma:

import cl.transbank.common.IntegrationType;
import cl.transbank.patpass.PatpassComercio;
//...

PatpassComercio.setIntegrationType(IntegrationType.TEST);
PatpassComercio.setApiKey("******");
PatpassComercio.setCommerceCode("******");
use Transbank\Patpass\PatpassComercio;
//...

PatpassComercio::configureForTesting();
using Transbank.Patpass.PatpassComercio;
//..

Inscription.IntegrationType = PatpassComercioIntegrationType.Test;
Inscription.CommerceCode = "*******";
Inscription.ApiKey = "*******";

Apuntar a producción

Para cambiar el ambiente al que apunta el SDK (que por defecto es integración), debes hacer lo siguiente:

import cl.transbank.common.IntegrationType;
import cl.transbank.patpass.PatpassComercio;
//...

PatpassComercio.setIntegrationType(IntegrationType.LIVE);
use Transbank\Patpass\PatpassComercio;
//...

PatpassComercio::setCommerceCode('*********');
PatpassComercio::setApiKey('*********');
PatpassComercio::setIntegrationType('LIVE');
using Transbank.Patpass.PatpassComercio;
//..

Inscription.IntegrationType = PatpassComercioIntegrationType.Live;

Ejemplos de integración

Ponemos a tu disposición una serie de repositorios en nuestro Github para ayudarte a entender la integración de mejor forma. Puedes encontrar una lista de proyectos de ejemplo acá.