1. Go to this page and download the library: Download freshwork/transbank library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
use Freshwork\Transbank\CertificationBagFactory;
use Freshwork\Transbank\TransbankServiceFactory;
use Freshwork\Transbank\RedirectorHelper;
// 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);
use Freshwork\Transbank\CertificationBagFactory;
use Freshwork\Transbank\TransbankServiceFactory;
use Freshwork\Transbank\RedirectorHelper;
nOneClick();
$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);
use Freshwork\Transbank\CertificationBagFactory;
use Freshwork\Transbank\TransbankServiceFactory;
ionBag = 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);
use Freshwork\Transbank\CertificationBagFactory;
use Freshwork\Transbank\TransbankServiceFactory;
use Freshwork\Transbank\RedirectorHelper;
//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 = $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);
// 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
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
];}
use Freshwork\Transbank\Log\LoggerFactory;
use Freshwork\Transbank\Log\TransbankCertificationLogger;
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']);
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();
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);
//Eliminar esta
$bag = CertificationBagFactory::integrationWebpayNormal();
...
//Reemplazar por esta
$bag = CertificationBagFactory::production('tu/llave/privada.key', 'path/a/tu/ceriticado_publico.crt');
...
php
use Freshwork\Transbank\CertificationBagFactory;
use Freshwork\Transbank\TransbankServiceFactory;
use Freshwork\Transbank\RedirectorHelper;
$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);
php
use Freshwork\Transbank\CertificationBagFactory;
use Freshwork\Transbank\TransbankServiceFactory;
use Freshwork\Transbank\RedirectorHelper;
$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);
php
use Freshwork\Transbank\CertificationBagFactory;
use Freshwork\Transbank\TransbankServiceFactory;
tionBagFactory::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
php
use Freshwork\Transbank\CertificationBagFactory;
use Freshwork\Transbank\TransbankServiceFactory;
onBagFactory::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
php
use Freshwork\Transbank\CertificationBagFactory;
use Freshwork\Transbank\TransbankServiceFactory;
ag = CertificationBagFactory::integrationOneClick();
$oneClick = TransbankServiceFactory::oneclick($certificationBag);
// Ej: $response = $oneClick->codeReverseOneClick('20110715115550003');
$response = $oneClick->codeReverseOneClick($buyOrder);
php
use Freshwork\Transbank\CertificationBagFactory;
use Freshwork\Transbank\TransbankServiceFactory;
ag = CertificationBagFactory::integrationOneClick();
$oneClick = TransbankServiceFactory::oneclick($certificationBag);
$response = $oneClick->removeUser($userToken, $username);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.