mirror of
https://github.com/nothingworksinc/ticketbeast.git
synced 2026-02-09 02:50:55 +00:00
2.4 - Faking the Payment Gateway
This commit is contained in:
28
app/Billing/FakePaymentGateway.php
Normal file
28
app/Billing/FakePaymentGateway.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace App\Billing;
|
||||
|
||||
class FakePaymentGateway implements PaymentGateway
|
||||
{
|
||||
private $charges;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->charges = collect();
|
||||
}
|
||||
|
||||
public function getValidTestToken()
|
||||
{
|
||||
return "valid-token";
|
||||
}
|
||||
|
||||
public function charge($amount, $token)
|
||||
{
|
||||
$this->charges[] = $amount;
|
||||
}
|
||||
|
||||
public function totalCharges()
|
||||
{
|
||||
return $this->charges->sum();
|
||||
}
|
||||
}
|
||||
8
app/Billing/PaymentGateway.php
Normal file
8
app/Billing/PaymentGateway.php
Normal file
@@ -0,0 +1,8 @@
|
||||
<?php
|
||||
|
||||
namespace App\Billing;
|
||||
|
||||
interface PaymentGateway
|
||||
{
|
||||
public function charge($amount, $token);
|
||||
}
|
||||
@@ -44,6 +44,7 @@ class Handler extends ExceptionHandler
|
||||
*/
|
||||
public function render($request, Exception $exception)
|
||||
{
|
||||
throw $exception;
|
||||
return parent::render($request, $exception);
|
||||
}
|
||||
|
||||
|
||||
27
app/Http/Controllers/ConcertOrdersController.php
Normal file
27
app/Http/Controllers/ConcertOrdersController.php
Normal file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Concert;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Billing\PaymentGateway;
|
||||
|
||||
class ConcertOrdersController extends Controller
|
||||
{
|
||||
private $paymentGateway;
|
||||
|
||||
public function __construct(PaymentGateway $paymentGateway)
|
||||
{
|
||||
$this->paymentGateway = $paymentGateway;
|
||||
}
|
||||
|
||||
public function store($concertId)
|
||||
{
|
||||
$concert = Concert::find($concertId);
|
||||
$ticketQuantity = request('ticket_quantity');
|
||||
$amount = $ticketQuantity * $concert->ticket_price;
|
||||
$token = request('payment_token');
|
||||
$this->paymentGateway->charge($amount, $token);
|
||||
return response()->json([], 201);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user