Created
May 13, 2022 09:41
-
-
Save dtorras/1b7bb59c7aafba50c60b5d41ac83aa6b to your computer and use it in GitHub Desktop.
Bizum payment with creagia/redsys-php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
use Creagia\Redsys\Enums\ConsumerLanguage; | |
use Creagia\Redsys\Enums\PayMethod; | |
use Creagia\Redsys\Exceptions\DeniedRedsysPaymentNotification; | |
use Creagia\Redsys\RedsysNotification; | |
use Creagia\Redsys\Support\RequestParameters; | |
use Illuminate\Http\Request; | |
use Illuminate\Support\Facades\Log; | |
use Illuminate\Support\Facades\Route; | |
use Creagia\Redsys\Enums\Currency; | |
use Creagia\Redsys\Enums\TransactionType; | |
use Creagia\Redsys\RedsysClient; | |
use Creagia\Redsys\RedsysRequest; | |
Route::get('/', function () { | |
return view('welcome'); | |
}); | |
Route::get('ok', function (Request $request) { | |
return dd($request->all()); | |
}); | |
Route::get('ko', function (Request $request) { | |
return 'ko'; | |
}); | |
Route::get('redirect', function () { | |
Log::debug('Redirect'); | |
$redsysClient = new RedsysClient( | |
merchantCode: env('REDSYS_MERCHANT_CODE'), | |
secretKey: env('REDSYS_KEY'), | |
terminal: env('REDSYS_TERMINAL'), | |
environment: \Creagia\Redsys\Enums\Environment::Test, | |
); | |
$redsysRequest = new RedsysRequest($redsysClient); | |
$redsysRequest->createPaymentRequest( | |
amount: 5.45, | |
orderNumber: time(), | |
currency: Currency::EUR, | |
transactionType: TransactionType::Autorizacion, | |
requestParameters: new RequestParameters( | |
merchantUrl: url('notification'), | |
merchantName : 'Merchant name', | |
urlOk: url('ok'), | |
urlKo: url('ko'), | |
consumerLanguage: ConsumerLanguage::Auto->value, | |
payMethods: PayMethod::Bizum->value, | |
productDescription: 'Product description', | |
), | |
); | |
return $redsysRequest->getFormHtml(); | |
}); | |
Route::post('notification', function (Request $request) { | |
Log::debug('Payment notification'); | |
Log::debug(json_encode($request->all())); | |
$redsysClient = new RedsysClient( | |
merchantCode: env('REDSYS_MERCHANT_CODE'), | |
secretKey: env('REDSYS_KEY'), | |
terminal: env('REDSYS_TERMINAL'), | |
environment: \Creagia\Redsys\Enums\Environment::Test, | |
); | |
$redsysNotification = new RedsysNotification($redsysClient); | |
$redsysNotification->setParametersFromResponse($_POST); | |
try { | |
$notificationData = $redsysNotification->checkResponse(); | |
Log::debug('Authorised payment'); | |
Log::debug(json_encode($notificationData->toArray())); | |
} catch (DeniedRedsysPaymentNotification $e) { | |
$errorMessage = $e->getMessage(); | |
Log::debug("Denied payment with {$errorMessage}"); | |
} | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment