103 lines
3.9 KiB
PHP
103 lines
3.9 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Informatica Eindproject D4p
|
|
* 6in3, Stedelijk Gymnasium Nijmegen
|
|
* Docent: Hans de Wolf
|
|
*
|
|
* ==================
|
|
*
|
|
* Daniel Boutros,
|
|
* Christiaan Goossens,
|
|
* Jelmer Hinssen
|
|
*/
|
|
|
|
namespace Inforbank\Application;
|
|
|
|
use \Slim\App;
|
|
use Inforbank\Application\Auth\Middleware;
|
|
use Inforbank\Application\Helper\Header;
|
|
use Inforbank\Application\Helper\Idob\Transactie;
|
|
use Inforbank\Application\Helper\Idob\Client;
|
|
use Inforbank\Application\Helper\Rekeningen as RekeningHelper;
|
|
use Inforbank\Application\Helper\Berichten as BerichtenHelper;
|
|
use Inforbank\Application\Helper\Overboekingen;
|
|
use Inforbank\Application\Helper\Redirect;
|
|
use Inforbank\Application\Helper\IBAN;
|
|
|
|
class Idob
|
|
{
|
|
public function __construct(App $app)
|
|
{
|
|
/**
|
|
* Create the API route group
|
|
*/
|
|
$app->group('/idob', function () {
|
|
$this->get('/betalen', function ($request, $response, $args) {
|
|
$query = $request->getQueryParams();
|
|
$rekeningen = RekeningHelper::getCurrentUserRekeningen();
|
|
|
|
try {
|
|
$transactie = Transactie::getTransactie($query['trxid']);
|
|
$client = new Client($transactie['clientId']);
|
|
$naam = $client->getClientName();
|
|
} catch (\Exception $e) {
|
|
$transactie = false;
|
|
}
|
|
|
|
return $this->renderer->render($response, 'idob.phtml', [
|
|
'header' => Header::getHeaderData(),
|
|
'transactie' => $transactie,
|
|
'webwinkel' => $naam,
|
|
'rekeningen' => $rekeningen
|
|
]);
|
|
});
|
|
|
|
$this->get('/mislukt', function ($request, $response, $args) {
|
|
return $this->renderer->render($response, 'idobmislukt.phtml', [
|
|
'header' => Header::getHeaderData()
|
|
]);
|
|
});
|
|
|
|
$this->post('/betalen', function ($request, $response, $args) {
|
|
$query = $request->getQueryParams();
|
|
$post = $request->getParsedBody();
|
|
$van = $post['van'];
|
|
|
|
try {
|
|
$transactie = Transactie::getTransactie($query['trxid']);
|
|
$client = new Client($transactie['clientId']);
|
|
$redirectUri = $client->getClientRedirectURI();
|
|
$rekening = $client->getClientRekening();
|
|
$naam = $client->getClientName();
|
|
|
|
try {
|
|
/**
|
|
* All set to pay!
|
|
*/
|
|
|
|
// Do overboeking
|
|
Overboekingen::createOverboeking(IBAN::getIBAN($van), IBAN::getIBAN($rekening), $transactie['amount'], "Betaling aan " . $naam . " voor transactie " . $transactie['reference'], "id");
|
|
|
|
// Do Status update
|
|
Transactie::setTransactionStatus($transactie['transactieId'], 2);
|
|
|
|
// Do bericht
|
|
BerichtenHelper::newBericht($this->auth->getUserID(), $naam, "Betaling met transactiereferentie " . $transactie['reference'] . " gelukt.");
|
|
|
|
$response = $response->withStatus(302);
|
|
$response = $response->withHeader('Location', $redirectUri . "?trxid=".$transactie['transactieId']);
|
|
return $response;
|
|
} catch (\Exception $e) {
|
|
$response = $response->withStatus(302);
|
|
$response = $response->withHeader('Location', $redirectUri . "?error=".$e->getMessage());
|
|
return $response;
|
|
}
|
|
} catch (\Exception $e) {
|
|
return Redirect::create($request, $response, "/idob/mislukt");
|
|
}
|
|
});
|
|
})->add(new Middleware());
|
|
}
|
|
}
|