• Stars
    star
    106
  • Rank 325,871 (Top 7 %)
  • Language
    PHP
  • License
    MIT License
  • Created over 8 years ago
  • Updated about 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

DEPREACDO: Transbank Web Services SDK. Webpay OneClick, PatPass y Transacci贸n Normal unsando SOAP

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

Freshwork Studio's Transbank SDK
Software License

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

composer require freshwork/transbank  

Inicio r谩pido

Video tutorial | Implementar Webpay Plus Normal

image
Ver screencast

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);  
  

pago seguro webpay

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);  

var_dump

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);  

sp dev authorize

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.

image

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

captura de pantalla 2016-07-15 a las 6 28 41 p m

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,