DEPRECADO:
Este SDK ya no tiene sentido, ya que Transbank laz贸 su nueva API REST y este SDk usa la antigua metodolog铆a REST. Transbank ya no acepta integraciones SOAP, y felizmente, ahora estoy a cargo del SDK Oficial de TBK, as铆 que les recomiendo utilizar ese SDK ahora: https://github.com/TransbankDevelopers/transbank-sdk-php
Pueden encontrar toda la documentaci贸n en transbankdevelopers.cl
Transbank WebServices SDK
Librer铆a para la integraci贸n de Webpay Plus, Webpay OneClick y Webpay Patpass. Esta librer铆a es mantenida por Gonzalo De Spirito de freshworkstudio.com y simplepay.cl. Tambi茅n incluye integraci贸n con Laravel.
Leelo en ingl茅s: English
Nuevo:
- En la versi贸n
1.2.0
se incluye integraci贸n con Laravel - Se cre贸 un generador de certificados que usa las instrucciones oficiales, sin que tengas que correr los comandos en tu m谩quina.
Se necesita ayuda:
- Este SDK no tiene soporte para el API REST de Webpay. Por falta de tiempo, no lo he podido hacer, pero si me quieres ayudar, deja un issue, o contactame de alguna forma :). Encantado de recibir apoyo.
脥ndice
- Instalaci贸n
- Inicio r谩pido
- Ejemplos
- Implemetaci贸n de distintos servicios
- Laravel
- Logs
- CertificationBag
- Pasar a producci贸n
- Datos de prueba
- Licencia
Instalaci贸n
composer require freshwork/transbank
Inicio r谩pido
Video tutorial | Implementar Webpay Plus Normal
Tienda de ejemplo Webpay OneClick y Webpay Plus
Tienda de prueba desarrollada en Laravel que ocupa Webpay OneClick y Webpay Plus.
https://github.com/freshworkstudio/demo-store
Ejemplos
En la carpeta example
se encuentran algunos ejemplos de uso. Iremos sumando m谩s con el tiempo
Para correr los ejemplos:
git clone [email protected]:freshworkstudio/transbank-web-services.git
cd transbank-web-services/
php -S localhost:8888 -t examples
Ahora solo debes abrir tu navegador web en http://localhost:8888/
Implemetaci贸n de distintos servicios
Transbank cuenta con distintos productos para implementar pagos en comercios y otras aplicaciones.
En esta documentaci贸n podr谩s encontrar detalles sobre:
- Webservices Webpay Plus con Autorizaci贸n y Captura Simult谩nea (Normal)
- Webservices Webpay Plus con Autorizaci贸n y Captura diferida
- Webpay OneClick
- PatPass
Credenciales
Las credenciales (certificados) para los ambientes de integraci贸n se encuentran incluidos en esta librer铆a para simplificar su implementaci贸n. Se actualiza constantemente con el repositorio oficial que mantiene esta informaci贸n: https://github.com/TransbankDevelopers/transbank-webpay-credenciales
Webpay Plus Normal
Transacci贸n normal con Webpay. (Pago tarjeta de cr茅dito y d茅bito)
Inicio de la transacci贸n
Para comenzar con el flujo de pago, debes informar a Transbank cuanto y qu茅 pagar谩 tu cliente, as铆 como tambi茅n la URL de retorno intermedia que se utilizar谩 para que puedas validar que el pago se hizo correctamente y la URL final, que se utilizar谩 para que puedas mostrar los detalles del pago y orden.
Luego de informarle a Transbank de esta transacci贸n, te entregar谩 un TOKEN y una URL. Con estos datos deber谩s redireccionar al usuario a dicha URL (Webpay) a trav茅s de una petici贸n HTTP POST (Es obligaci贸n que sea a trav茅s de POST) lo cual puedes hacer a trav茅s de un formulario HTML.
<?php
use Freshwork\Transbank\CertificationBagFactory;
use Freshwork\Transbank\TransbankServiceFactory;
use Freshwork\Transbank\RedirectorHelper;
include 'vendor/autoload.php';
// Obtenemos los certificados y llaves para utilizar el ambiente de integraci贸n de Webpay Normal.
$bag = CertificationBagFactory::integrationWebpayNormal();
$plus = TransbankServiceFactory::normal($bag);
// Para transacciones normales, solo puedes a帽adir una linea de detalle de transacci贸n.
$plus->addTransactionDetail(10000, 'Orden824201'); // Monto e identificador de la orden
// Debes adem谩s, registrar las URLs a las cuales volver谩 el cliente durante y despu茅s del flujo de Webpay
$response = $plus->initTransaction('http://test.dev/response', 'http://test.dev/thanks');
// Utilidad para generar formulario y realizar redirecci贸n POST
echo RedirectorHelper::redirectHTML($response->url, $response->token);
Retorno a URL intermedia
Luego de que el usuario haya pagado, Webpay redireccionar谩 al cliente a tu p谩gina brevemente, para que tu puedas validar la transacci贸n.
Para ello, te enviar谩 un TOKEN en el cuerpo de una petici贸n HTTP POST, bajo la llave token_ws ($_POST['token_ws']
), sin embargo no deber谩s preocuparte de esto, ya que el m茅todo getTransactionResult
se encarga internamente de capturar este valor.
Al ejecutar dicho m茅todo (getTransactionResult
) pediremos a Transbank informaci贸n sobre el pago y su estado. Deberemos comprobar este 煤ltimo y adem谩s validar que la orden no haya sido pagada anteriormente.
Si todo ha funcionado correctamente, deber谩s hacerle saber a Transbank que has comprobado la Transacci贸n (o de lo contrario se reversar谩 el pago) haciendo uso de acknowledgeTransaction
y luego redireccionar al cliente nuevamente a Webpay de la misma forma anterior, para que este pueda recibir su voucher.
<?php
use Freshwork\Transbank\CertificationBagFactory;
use Freshwork\Transbank\TransbankServiceFactory;
use Freshwork\Transbank\RedirectorHelper;
include 'vendor/autoload.php';
$bag = CertificationBagFactory::integrationWebpayNormal();
$plus = TransbankServiceFactory::normal($bag);
$response = $plus->getTransactionResult();
// Comprueba que el pago se haya efectuado correctamente
if (
$response->detailOutput->responseCode == 0
/* Comprueba que la orden no haya sido pagada */
) {
$plus->acknowledgeTransaction();
}
// Redirecciona al cliente a Webpay para recibir el Voucher
return RedirectorHelper::redirectBackNormal($response->urlRedirection);
Retorno a URL final
En esta p谩gina deber谩s mostrar la mayor cantidad de informaci贸n que fue obtenida en el paso anterior al invocar getTransactionResult
y adem谩s detalles de la orden.
Webpay Plus Captura diferida
En esta modalidad, se retiene el valor de la compra del saldo de la tarjeta de cre虂dito del cliente, reservando cupo pero sin realizar la transacci贸n definitivamente hasta que el comercio confirma la compra (vi虂a captura diferida) y lo comunique a Transbank.
Inicio de la transacci贸n diferida
Para iniciar una transacci贸n de captura diferida se utiliza el mismo flujo de Webpay Plus Normal, sin embargo, los certificacdos son los que informan a Transbank que se iniciar谩 una transacci贸n con captura diferida, por tanto varia 煤nicamente en estos.
<?php
use Freshwork\Transbank\CertificationBagFactory;
use Freshwork\Transbank\TransbankServiceFactory;
use Freshwork\Transbank\RedirectorHelper;
include 'vendor/autoload.php';
// Obtenemos los certificados y llaves para utilizar el ambiente de integraci贸n de Webpay Diferido
$bag = CertificationBagFactory::integrationWebpayDeferred();
$plus = TransbankServiceFactory::deferred($bag);
// Para transacciones normales, solo puedes a帽adir una linea de detalle de transacci贸n.
$plus->addTransactionDetail(10000, 'Orden824201'); // Monto e identificador de la orden
// Debes adem谩s, registrar las URLs a las cuales volver谩 el cliente durante y despu茅s del flujo de Webpay
$response = $plus->initTransaction('http://test.dev/response', 'http://test.dev/thanks');
// Utilidad para generar formulario y realizar redirecci贸n POST
echo RedirectorHelper::redirectHTML($response->url, $response->token);
Los siguientes pasos son tal cual Webpay Plus Normal, es decir, retornamos a URL intermedia y luego retornamos a URL final.
Capturar monto total o parcial de la transacci贸n
Luego de terminar el flujo inicial, tendremos 7 d铆as calendario m谩ximos para realizar la captura, ya que superado ese tiempo la retenci贸n de la tarjeta de cr茅dito ser谩 reversada y el cupo liberado.
Podemos capturar el monto total o parcial retenido, y para ello deberemos especificar el c贸digo de autorizaci贸n entregado durante el flujo inicial y adem谩s el identificador de la orden.
<?php
use Freshwork\Transbank\CertificationBagFactory;
use Freshwork\Transbank\TransbankServiceFactory;
include 'vendor/autoload.php';
// Obtenemos los certificados y llaves para utilizar el ambiente de integraci贸n de Webpay Diferido
$bag = CertificationBagFactory::integrationWebpayDeferred();
$plus = TransbankServiceFactory::captureNullify($bag);
$authCode = 'this-auth-code-is-an-example';
// Puedes capturar el monto total o parcial
$plus->capture($authCode, 'Orden824201', 5000); // C贸digo de autorizaci贸n, identificador de la orden y monto
Anulaciones
Solo las transacciones Webpay (Normal o Captura diferida) realizadas con tarjeta de cr茅dito pueden ser anuladas mediante servicios web.
Las anulaciones pueden ser totales o parciales y estas 煤ltimas, solo est谩n permitidas en la modalidad de Venta Normal (VN).
Para realizar una anulaci贸n necesitaremos conocer el monto autorizado previamente, el c贸digo de autorizaci贸n y el identificador de la orden.
<?php
use Freshwork\Transbank\CertificationBagFactory;
use Freshwork\Transbank\TransbankServiceFactory;
include 'vendor/autoload.php';
// Obtenemos los certificados y llaves para utilizar el ambiente de integraci贸n de Webpay Normal
$bag = CertificationBagFactory::normal();
$plus = TransbankServiceFactory::captureNullify($bag);
$authorizedAmount = '10000';
$authCode = 'this-auth-code-is-an-example';
// Puedes capturar el monto total o parcial
$plus->nullify($authCode, $authorizedAmount, 'Orden824201', 2000); // Solo se anular谩n $2.000 y quedar谩 un balance de $8.000
OneClick
Permite al tarjetahabiente realizar pagos en el comercio sin la necesidad de ingresar cada vez informaci贸n de la tarjeta de cr茅dito al momento de realizar la compra.
Inscripci贸n del cliente
Para poder hacer uso de OneClick, el usuario debe inscribir su tarjeta de cr茅dito y para ello, se le informar谩 a Transbank el nombre de usuario (o identificador 煤nico) del cliente, su correo electr贸nico y adem谩s una URL de retorno (a la cual volver谩 el usuario luego de finalizar su inscripci贸n) usando el m茅todo initInscription
y este devolver谩 un TOKEN y una URL.
El usuario deber谩 ser redireccionado a dicha URL usando una petici贸n HTTP POST, usando como dato el token que se nos proporcion贸.
<?php
use Freshwork\Transbank\CertificationBagFactory;
use Freshwork\Transbank\TransbankServiceFactory;
use Freshwork\Transbank\RedirectorHelper;
include 'vendor/autoload.php';
// Obtenemos los certificados y llaves para utilizar el ambiente de integraci贸n de Webpay OneClick.
$certificationBag = CertificationBagFactory::integrationOneClick();
$oneClick = TransbankServiceFactory::oneclick($certificationBag);
// Informamos a Transbank que se iniciar谩 un proceso de inscripci贸n para un usuario
$response = $oneClick->initInscription('username', '[email protected]', 'http://misitio.cl/webpayresponse');
// Utilidad para generar formulario y realizar redirecci贸n POST
echo RedirectorHelper::redirectHTML($response->urlWebpay, $response->token);
Finalizar la inscripci贸n
El usuario, tras finalizar el proceso en Webpay, ser谩 redireccionado a la URL de retorno que informamos anteriormente.
En dicha redirecci贸n se te enviar谩 un TOKEN en el cuerpo de una petici贸n HTTP POST (redirecci贸n), bajo la llave TBK_TOKEN ($_POST['TBK_TOKEN']
), sin embargo no deber谩s preocuparte de esto, ya que el m茅todo finishInscription
se encarga internamente de capturar este valor.
Con este m茅todo (finishInscription
) pediremos a Transbank informaci贸n sobre la inscripci贸n y el identificador del usuario para realizar los cobros posteriores, pero tambi茅n deberemos validar si la inscripci贸n se hizo de forma 茅xitosa.
<?php
use Freshwork\Transbank\CertificationBagFactory;
use Freshwork\Transbank\TransbankServiceFactory;
include 'vendor/autoload.php';
// Obtenemos los certificados y llaves para utilizar el ambiente de integraci贸n de Webpay OneClick.
$certificationBag = CertificationBagFactory::integrationOneClick();
$oneClick = TransbankServiceFactory::oneclick($certificationBag);
$response = $oneClick->finishInscription($token);
if($response->responseCode == 0)
// Inscripci贸n exitosa
}
var_dump($response);
Es de suma importancia que asocies el token provisto por Transbank (tbkUser) a tu cliente, porque este servir谩 para realizar los cobros posteriores.
Realizar cargo a la tarjeta de cr茅dito
Para realizar un cargo a la tarjeta de cr茅dito previamente inscrita, deber谩s hacer uso del m茅todo autorize
con el token asociado a tu cliente provisto por Tranbank en el paso anterior, el nombre de usuario o identificador 煤nico de tu cliente, monto y n煤mero de orden (en un formato especial).
<?php
use Freshwork\Transbank\CertificationBagFactory;
use Freshwork\Transbank\TransbankServiceFactory;
include 'vendor/autoload.php';
// Obtenemos los certificados y llaves para utilizar el ambiente de integraci贸n de Webpay OneClick.
$certificationBag = CertificationBagFactory::integrationOneClick();
$oneClick = TransbankServiceFactory::oneclick($certificationBag);
// Identificador 煤nico de la compra generado por el comercio. Debe ser timestamp [yyyymmddhhMMss] + un correlativo de tres d铆gitos.
// Ej: Para la tercera transacci贸n realizada el d铆a 15 de julio de 2011 a las 11:55:50 la orden de compra ser铆a: 20110715115550003.
$buyOrder = date('ymdhis') . str_pad(1, 3, '0', STR_PAD_LEFT);
// Token provisto por Transbank para identificar a tu cliente
$authToken = '9bf43307-6fa0-4b3b-888d-f36b6d040162'; //$user->tbkToken;
try {
$response = $oneClick->authorize(1000, $buyOrder, 'username', $authToken);
} catch (\Exception $e) {
// No se pudo realizar el cargo
}
var_dump($response);
Reversar un cargo
En ciertos casos, vamos a necesitar reversar un cargo y para ello deberemos utilizar el m茅todo codeReverseOneClick
junto con el n煤mero de la orden.
<?php
use Freshwork\Transbank\CertificationBagFactory;
use Freshwork\Transbank\TransbankServiceFactory;
include 'vendor/autoload.php';
// Obtenemos los certificados y llaves para utilizar el ambiente de integraci贸n de Webpay OneClick.
$certificationBag = CertificationBagFactory::integrationOneClick();
$oneClick = TransbankServiceFactory::oneclick($certificationBag);
// Ej: $response = $oneClick->codeReverseOneClick('20110715115550003');
$response = $oneClick->codeReverseOneClick($buyOrder);
Desuscribir tarjeta
Si tu cliente desea desuscribir su tarjeta, deber谩s informar a Transbank haciendo uso del m茅todo removeUser
con el token asociado a 茅l y su nombre de usuario o identificador 煤nico.
<?php
use Freshwork\Transbank\CertificationBagFactory;
use Freshwork\Transbank\TransbankServiceFactory;
include 'vendor/autoload.php';
// Obtenemos los certificados y llaves para utilizar el ambiente de integraci贸n de Webpay OneClick.
$certificationBag = CertificationBagFactory::integrationOneClick();
$oneClick = TransbankServiceFactory::oneclick($certificationBag);
$response = $oneClick->removeUser($userToken, $username);
PatPass
Una transacci贸n de autorizaci贸n de PatPass por Webpay, corresponde a una solicitud de inscripci贸n de pago recurrente con tarjetas de cr茅dito en donde el primer pago se resuelve al instante, y los subsiguientes quedan programados para ser ejecutados mes a mes. PatPass cuenta con fecha de caducidad o termino, la cual debe ser proporcionada junto a otros datos para esta transacci贸n. La transacci贸n puede ser realizada en D贸lares y Pesos, para este 煤ltimo caso es posible enviar el monto en UF y Webpay realizar谩 la conversi贸n a pesos al momento de realizar el cargo al tarjetahabiente.
El proceso de Patpass es el mismo que en una transacci贸n Normal o Mall, pero aca se debe completar la informaci贸n de la inscripci贸n addInscriptionInfo
antes de llamar al m茅todo init
Notar que esta clase se recomienda el uso del metodo init
y no initInscription
.
init
<?php
use Freshwork\Transbank\CertificationBagFactory;
use Freshwork\Transbank\TransbankServiceFactory;
use Freshwork\Transbank\RedirectorHelper;
include 'vendor/autoload.php';
$bag = CertificationBagFactory::integrationPatPass();
$patpass = TransbankServiceFactory::patpass($bag);
$patpass->addTransactionDetail(1000, '50'); //Amount & BuyOrder
//Id del servicio a contratar, Rut cliente, Nombre, Apellido, Segundo apellido, Email cliente, Celular Cliente, Fecha termino contrato, Email comercio
$patpass->addInscriptionInfo('serviceID', '11.111.111-5', 'Gonzalo', 'De Spirito', 'Z煤帽iga', '[email protected]',
'987654321', '2017-12-01', '[email protected]');
$response = $patpass->init('http://test.dev/response', 'http://test.dev/thanks');
echo RedirectorHelper::redirectHTML($response->url, $response->token);
response
$response = $patpass->getTransactionResult();
//If everything goes well (check stock, check amount, etc) you can call acknowledgeTransaction to accept the payment. Otherwise, the transaction is reverted in 30 seconds.
//Si todo est谩 bien, peudes llamar a acknowledgeTransaction. Si no se llama a este m茅todo, la transaccion se reversar谩 en 30 segundos.
$plus->acknowledgeTransaction();
//Redirect back to Webpay Flow and then to the thanks page
return RedirectorHelper::redirectBackNormal($response->urlRedirection);
Laravel
Si est谩s usando laravel para integrar esta librer铆a, te alegar谩 saber que incluimos un ServiceProvider para que tu integraci贸n sea m谩s simple y ordenada.
Instalaci贸n
Laravel > 5.5
Si usas Laravel 5.5 o superior, no debes hacer nada. El Service Provider se incluye autom谩ticamente usando Auto-Discovery de Laravel.
Si usas Laravel < 5.5
Debes agregar este Service Provider en el array de $providers
en config/app.php
$providers = [
...
\Freshwork\Transbank\Laravel\WebpayServiceProvider::class
]
Opcionalmente, puedes crear el archivo de configuraci贸n config/webpay.php
usando este comando:
php artisan vendor:publish --provider="Freshwork\Transbank\Laravel\WebpayServiceProvider"
Usando en Laravel
La gracia de esta integraci贸n, en que puedes usar los servicios (webpay normal, patpass, one click, etc) usando el sistema de dependencias de Laravel.
Por ejemplo, en el m茅todo de un controller, solo es necesario agregar el servicio (ej: WebpayNormal) y el service provider se encarga de crear el CertificationBag (de integraci贸n si el ambiente de laravel es local
o los certificados de producci贸n si el ambiente es production
) .
// routes/web.php
Route::get('/checkout', 'CheckoutController@initTransaction')->name('checkout');
Route::post('/checkout/webpay/response', 'CheckoutController@response')->name('checkout.webpay.response');
Route::post('/checkout/webpay/finish', 'CheckoutController@finish')->name('checkout.webpay.finish');
// app\Http\Controllers\CheckoutController.php
namespace App\Http\Controllers;
use Freshwork\Transbank\WebpayNormal;
class CheckoutController extends Controller
{
public function initTransaction(WebpayNormal $webpayNormal)
{
$webpayNormal->addTransactionDetail(1500, 'order-' . rand(1000, 9999));
$response = $webpayNormal->initTransaction(route('checkout.webpay.response'), route('checkout.webpay.finish'));
// Probablemente tambi茅n quieras crear una orden o transacci贸n en tu base de datos y guardar el token ah铆.
return RedirectorHelper::redirectHTML($response->url, $response->token);
}
public function response(WebpayPatPass $webpayPatPass)
{
$result = $webpayPatPass->getTransactionResult();
session(['response' => $result]);
// Revisar si la transacci贸n fue exitosa ($result->detailOutput->responseCode === 0) o fallida para guardar ese resultado en tu base de datos.
return RedirectorHelper::redirectBackNormal($result->urlRedirection);
}
public function finish()
{
dd($_POST, session('response'));
// Ac谩 buscar la transacci贸n en tu base de datos y ver si fue exitosa o fallida, para mostrar el mensaje de gracias o de error seg煤n corresponda
}
}
// app\Http\Middleware\VerifyCsrfToken.php
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
class VerifyCsrfToken extends Middleware
{
/**
* Indicates whether the XSRF-TOKEN cookie should be set on the response. * * @var bool
*/ protected $addHttpCookie = true;
/**
* The URIs that should be excluded from CSRF verification. * * @var array
*/ protected $except = [
'/checkout/webpay/response', //Agregar esta l铆nea. Cambiar a tu ruta
'/checkout/webpay/finish', //Agregar esta l铆nea. Cambiar a tu ruta
];}
Laravel: Pasando a producci贸n
Para pasar a producci贸n, se debe cambiar el APP_ENV=production
en el .env
o crear un TBK_ENV=production
.
Si TBK_ENV
no existe, se usar谩 APP_ENV
Certificados de producci贸n
Por defecto, el sistema buscar谩 los certificados de producci贸n en la carpeta: storage/app/certs/
Webpay Normal
Llave privada: storage/app/certs/normal/client.key
Certificado: storage/app/certs/normal/client.crt
Webpay OneClick
Llave privada: storage/app/certs/oneclick/client.key
Certificado: storage/app/certs/oneclick/client.crt
Webpay PatPass
Llave privada: storage/app/certs/patpass/client.key
Certificado: storage/app/certs/patpass/client.crt
Webpay Captura Diferida
Llave privada: storage/app/certs/deferred/client.key
Certificado: storage/app/certs/deferred/client.crt
Logs
Para el proceso de certificaci贸n con Transbank, muchas veces se solicitan los registros de las transacciones realizadas y esta biblioteca provee una utilidad para facilitar dicho proceso.
Haciendo uso de TransbankCertificationLogger
debes especificar la ruta donde almacenar dichos registros y establecer su instancia en LoggerFactory
Otra opci贸n es crear tu propia implementaci贸n haciendo uso de la interfaz LoggerInterface
.
<?php
use Freshwork\Transbank\Log\LoggerFactory;
use Freshwork\Transbank\Log\TransbankCertificationLogger;
include 'vendor/autoload.php';
LoggerFactory::setLogger(new TransbankCertificationLogger('/dir/to/save/logs'));
// ...
Internamente se generan varios registros, entre ellos:
-
Los datos de entrada al llamar a un m茅todo de SOAP
-
El XML generado y firmado
-
El XML recibido
-
El objeto recibido
-
Errores como por ejemplo, la falla de validaci贸n del certificado.
Si necesitas logear m谩s informaci贸n, puedes usar:
LogHandler::log($data, $level = LoggerInterface::LEVEL_INFO, $type = null)
<?php
use Freshwork\Transbank\Log\LogHandler;
use Freshwork\Transbank\Log\LoggerInterface;
LogHandler::log('Comenzando proceso de pago', LoggerInterface::LEVEL_INFO);
LogHandler::log('Error!!', LoggerInterface::LEVEL_ERROR, 'mensajes_internos');
LogHandler::log(['datos' => 'm谩s datos', 'otros_datos']);
CertificationBag
Es una clase utilizada envolver certificados y llaves privadas con la finalidad de facilitar el manejo de los mismos a trav茅s de la biblioteca.
Es obligatorio y necesario el uso de CertificationBag
ya que contiene todos los datos necesarios para cifrar la comunicaci贸n con Transbank y validar las respuestas de este.
<?php
use Freshwork\Transbank\CertificationBag;
use Freshwork\Transbank\CertificationBagFactory;
// Integraci贸n / Desarrollo
$bag = new CertificationBag(
'path/to/cert/597020000000.key',
'path/to/cert/597020000000.crt',
null,
CertificationBag::INTEGRATION
);
// Producci贸n
$bag = new CertificationBag(
'path/to/cert/597020000001.key',
'path/to/cert/597020000001.crt',
null,
CertificationBag::PRODUCTION
);
//Tambi茅n se puede crear usando la clase CertificationBagFactory, que permite crear instancias de CertificationBag de manera m谩s simple
CertificationBagFactory::production('path/to/cert/597020000001.key', 'path/to/cert/597020000001.crt');
//O si queremos crear un certification bag que venga con los certificados de integraci贸n para webpaynormal
CertificationBagFactory::integrationWebpayNormal();
Teniendo una CertificationBag
, se puede crear una instancia de los servicios de Webpay, por ejemplo: WebpayOneClickWebService
<?php
use Freshwork\Transbank\CertificationBag;
use Freshwork\Transbank\WebpayOneClickWebService;
$bag = new CertificationBag(
'/path/to/597020000000.key',
'/path/to/597020000000.crt'
);
$bag->setEnvironment(CertificationBag::INTEGRATION);
$oneClickService = new WebpayOneClickWebService($bag);
Pasar a producci贸n
Para pasar a producci贸n, es importante destacar que Transbank solicitar谩 crear un par de llaves (privada y p煤blica) utilizando el c贸digo de comercio como Common Name (CN).
Transbank te enviar谩 las instrucciones para que generes este certificado, una vez que hayas pasado el proceso de certificaci贸n, aunque las puedes encontrar ac谩: https://transbankdevelopers.cl/documentacion/como_empezar#credenciales-en-webpay
Generador de certificados
Para realizar este proceso de manera m谩s simple, cre茅 una app web que te permite crear tus certificados de producci贸n en un simple formulario. Puedes ingresar ac谩: https://certificados.digitalpartner.cl/
Una vez que les env铆es los certificados que generaste, debes esperar a que te confirmen que efectivamente los cargaron en sus servidores.
Finalmente, tras recibir esta confirmaci贸n, ya puedes usar tu implementaci贸n en modo producci贸n (con dinero real). En el c贸digo de tu proyecto, el 煤nico cambio que debes realizar es el cambio de los certificados del CertificationBag.
Ejemplo: Si est谩s implementando Webpay Normal, debes eliminar esta l铆nea ( o la que est茅s usando para crear el CertificationBag)
//Eliminar esta
$bag = CertificationBagFactory::integrationWebpayNormal();
...
Y reemplazarla por esta:
//Reemplazar por esta
$bag = CertificationBagFactory::production('tu/llave/privada.key', 'path/a/tu/ceriticado_publico.crt');
...
Lo importante es solo cambiar el CertificationBag que usas, en vez de usar el de integraci贸n, debes crear uno para el ambiente de producci贸n.
Datos de prueba
Estos son los datos de tarjetas para que puedas probar en el ambiente de integraci贸n.
TARJETA DE CR脡DITO VISA (SER脕 APROBADA)
N煤mero: 4051885600446623
CVV: 123
Fecha de expiraci贸n: cualquiera
TARJETA DE CR脡DITO MASTERCARD (SER脕 RECHAZADA)
N煤mero: 5186059559590568
CVV: 123
Fecha de expiraci贸n: cualquiera
TARJETA DE D脡BITO
N煤mero: cualquiera
CREDENCIALES DEL BANCO
RUT: 11.111.111-1
Contrase帽a: 123
Biblioteca desarrollada por Simplepay
Powered by Freshwork Studio
Licencia y Postalware
Puedes usar este paquete gratuitamente sin ninguna restricci贸n, aunque como est谩 de moda, implementamos una licencia 'Postalware'. Si usas este paquete en producci贸n y te gusta como funciona, Agradecer铆amos bastante si nos env铆as una postal de tu ciudad/comuna, una nota de agradecimiento o un s煤per8.
Direcci贸n
Nombre: Gonzalo De Spirito
General Bustamante 24. Oficina N, Providencia.
Chile,