1. Go to this page and download the library: Download devswert/dolly 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 Devswert\Dolly\WebPayServicies\WebPayNormal;
...
$total = 12990; // Total a pagar
$session_id = null; // Utilicen el valor que necesiten
$url_return = route('your-webpay-result-route');
$url_final = route('your-webpay-end-route');
$webpay = new WebPayNormal();
$result = $webpay->start($total, $purchase_code, $session_id, $url_return, $url_final);
if (empty($result->token) || !isset($result->token) && true){
// La autenticacion en WebPay fallo, se recomienda retornar al checkout con un mensaje de error correspondiente
}
// En caso correcto, guardar todos los datos necesarios en session para generar la boleta u orden de compra
session()->put('oc_details', [
'purchase_code' => $purchase_code,
'total' => $total,
// ...
]);
return view('webpay.redirect',[
'token' => $result->token,
'url' => $result->url
]);
use Devswert\Dolly\WebPayServicies\WebPayNormal;
...
public function yourResultFunctionName(Request $request){
$token = $request->get('token_ws');
$webpay = new WebPayNormal();
$result = $webpay->result($token);
if ($result->passes()){
// Almacenar la OC, pueden usar los datos de session
session()->put('webpay_status', true); // Recomendable para la funcion de end, ya que el token en ese instante ya no existe para WebPay, entonces con esta variable sabemos que el proceso paso correcto
// Como último pase se redirecciona (si, de nuevo) a WebPay para que genere el boucher de pago
return view('webpay.redirect',[
'token' => $token,
'url' => $result->urlRedirection
]);
}
else{
// Algo paso y el resultado no paso, pudo ser rechazo de la transacción o tarjetas sin saldo. Pueden obtener el error con $result->error_message();
return redirect()->route('your-cart-route');
}
}
public function youEndFunctionName(Request $request){
if( session()->has('webpay_status') ){
session()->forget('webpay_status');
return view('your.cart.success.payment');
}
// Si no pasa, es muy probable que el usuario presiono el boton anular, enviar el mensaje correspondiente y redireccionar al Checkout (o donde sea en su caso)
return redirect()->route('your.checkout.route');
}