Changeset View
Changeset View
Standalone View
Standalone View
src/app/Http/Controllers/API/V4/PaymentsController.php
<?php | <?php | ||||
namespace App\Http\Controllers\API\V4; | namespace App\Http\Controllers\API\V4; | ||||
use App\Http\Controllers\Controller; | use App\Http\Controllers\Controller; | ||||
use App\Providers\PaymentProvider; | use App\Providers\PaymentProvider; | ||||
use App\Wallet; | use App\Wallet; | ||||
use App\Payment; | use App\Payment; | ||||
use Illuminate\Http\Request; | use Illuminate\Http\Request; | ||||
use Illuminate\Support\Facades\Auth; | |||||
use Illuminate\Support\Facades\Validator; | use Illuminate\Support\Facades\Validator; | ||||
class PaymentsController extends Controller | class PaymentsController extends Controller | ||||
{ | { | ||||
/** | /** | ||||
* Get the auto-payment mandate info. | * Get the auto-payment mandate info. | ||||
* | * | ||||
* @return \Illuminate\Http\JsonResponse The response | * @return \Illuminate\Http\JsonResponse The response | ||||
*/ | */ | ||||
public function mandate() | public function mandate() | ||||
{ | { | ||||
$user = Auth::guard()->user(); | $user = $this->guard()->user(); | ||||
// TODO: Wallet selection | // TODO: Wallet selection | ||||
$wallet = $user->wallets()->first(); | $wallet = $user->wallets()->first(); | ||||
$mandate = self::walletMandate($wallet); | $mandate = self::walletMandate($wallet); | ||||
return response()->json($mandate); | return response()->json($mandate); | ||||
} | } | ||||
/** | /** | ||||
* Create a new auto-payment mandate. | * Create a new auto-payment mandate. | ||||
* | * | ||||
* @param \Illuminate\Http\Request $request The API request. | * @param \Illuminate\Http\Request $request The API request. | ||||
* | * | ||||
* @return \Illuminate\Http\JsonResponse The response | * @return \Illuminate\Http\JsonResponse The response | ||||
*/ | */ | ||||
public function mandateCreate(Request $request) | public function mandateCreate(Request $request) | ||||
{ | { | ||||
$current_user = Auth::guard()->user(); | $user = $this->guard()->user(); | ||||
// TODO: Wallet selection | // TODO: Wallet selection | ||||
$wallet = $current_user->wallets()->first(); | $wallet = $user->wallets()->first(); | ||||
// Input validation | // Input validation | ||||
if ($errors = self::mandateValidate($request, $wallet)) { | if ($errors = self::mandateValidate($request, $wallet)) { | ||||
return response()->json(['status' => 'error', 'errors' => $errors], 422); | return response()->json(['status' => 'error', 'errors' => $errors], 422); | ||||
} | } | ||||
$wallet->setSettings([ | $wallet->setSettings([ | ||||
'mandate_amount' => $request->amount, | 'mandate_amount' => $request->amount, | ||||
Show All 23 Lines | class PaymentsController extends Controller | ||||
/** | /** | ||||
* Revoke the auto-payment mandate. | * Revoke the auto-payment mandate. | ||||
* | * | ||||
* @return \Illuminate\Http\JsonResponse The response | * @return \Illuminate\Http\JsonResponse The response | ||||
*/ | */ | ||||
public function mandateDelete() | public function mandateDelete() | ||||
{ | { | ||||
$user = Auth::guard()->user(); | $user = $this->guard()->user(); | ||||
// TODO: Wallet selection | // TODO: Wallet selection | ||||
$wallet = $user->wallets()->first(); | $wallet = $user->wallets()->first(); | ||||
$provider = PaymentProvider::factory($wallet); | $provider = PaymentProvider::factory($wallet); | ||||
$provider->deleteMandate($wallet); | $provider->deleteMandate($wallet); | ||||
Show All 9 Lines | class PaymentsController extends Controller | ||||
* Update a new auto-payment mandate. | * Update a new auto-payment mandate. | ||||
* | * | ||||
* @param \Illuminate\Http\Request $request The API request. | * @param \Illuminate\Http\Request $request The API request. | ||||
* | * | ||||
* @return \Illuminate\Http\JsonResponse The response | * @return \Illuminate\Http\JsonResponse The response | ||||
*/ | */ | ||||
public function mandateUpdate(Request $request) | public function mandateUpdate(Request $request) | ||||
{ | { | ||||
$current_user = Auth::guard()->user(); | $user = $this->guard()->user(); | ||||
// TODO: Wallet selection | // TODO: Wallet selection | ||||
$wallet = $current_user->wallets()->first(); | $wallet = $user->wallets()->first(); | ||||
// Input validation | // Input validation | ||||
if ($errors = self::mandateValidate($request, $wallet)) { | if ($errors = self::mandateValidate($request, $wallet)) { | ||||
return response()->json(['status' => 'error', 'errors' => $errors], 422); | return response()->json(['status' => 'error', 'errors' => $errors], 422); | ||||
} | } | ||||
$wallet->setSettings([ | $wallet->setSettings([ | ||||
'mandate_amount' => $request->amount, | 'mandate_amount' => $request->amount, | ||||
▲ Show 20 Lines • Show All 63 Lines • ▼ Show 20 Lines | class PaymentsController extends Controller | ||||
* Create a new payment. | * Create a new payment. | ||||
* | * | ||||
* @param \Illuminate\Http\Request $request The API request. | * @param \Illuminate\Http\Request $request The API request. | ||||
* | * | ||||
* @return \Illuminate\Http\JsonResponse The response | * @return \Illuminate\Http\JsonResponse The response | ||||
*/ | */ | ||||
public function store(Request $request) | public function store(Request $request) | ||||
{ | { | ||||
$current_user = Auth::guard()->user(); | $user = $this->guard()->user(); | ||||
// TODO: Wallet selection | // TODO: Wallet selection | ||||
$wallet = $current_user->wallets()->first(); | $wallet = $user->wallets()->first(); | ||||
$rules = [ | $rules = [ | ||||
'amount' => 'required|numeric', | 'amount' => 'required|numeric', | ||||
]; | ]; | ||||
// Check required fields | // Check required fields | ||||
$v = Validator::make($request->all(), $rules); | $v = Validator::make($request->all(), $rules); | ||||
Show All 34 Lines | class PaymentsController extends Controller | ||||
* | * | ||||
* @param \Illuminate\Http\Request $request The API request. | * @param \Illuminate\Http\Request $request The API request. | ||||
* | * | ||||
* @return \Illuminate\Http\JsonResponse The response | * @return \Illuminate\Http\JsonResponse The response | ||||
*/ | */ | ||||
// TODO currently unused | // TODO currently unused | ||||
// public function cancel(Request $request) | // public function cancel(Request $request) | ||||
// { | // { | ||||
// $current_user = Auth::guard()->user(); | // $user = $this->guard()->user(); | ||||
// // TODO: Wallet selection | // // TODO: Wallet selection | ||||
// $wallet = $current_user->wallets()->first(); | // $wallet = $user->wallets()->first(); | ||||
// $paymentId = $request->payment; | // $paymentId = $request->payment; | ||||
// $user_owns_payment = Payment::where('id', $paymentId) | // $user_owns_payment = Payment::where('id', $paymentId) | ||||
// ->where('wallet_id', $wallet->id) | // ->where('wallet_id', $wallet->id) | ||||
// ->exists(); | // ->exists(); | ||||
// if (!$user_owns_payment) { | // if (!$user_owns_payment) { | ||||
▲ Show 20 Lines • Show All 108 Lines • ▼ Show 20 Lines | class PaymentsController extends Controller | ||||
/** | /** | ||||
* List supported payment methods. | * List supported payment methods. | ||||
* | * | ||||
* @param \Illuminate\Http\Request $request The API request. | * @param \Illuminate\Http\Request $request The API request. | ||||
* | * | ||||
* @return \Illuminate\Http\JsonResponse The response | * @return \Illuminate\Http\JsonResponse The response | ||||
*/ | */ | ||||
public static function paymentMethods(Request $request) | public function paymentMethods(Request $request) | ||||
{ | { | ||||
$user = Auth::guard()->user(); | $user = $this->guard()->user(); | ||||
// TODO: Wallet selection | // TODO: Wallet selection | ||||
$wallet = $user->wallets()->first(); | $wallet = $user->wallets()->first(); | ||||
$methods = PaymentProvider::paymentMethods($wallet, $request->type); | $methods = PaymentProvider::paymentMethods($wallet, $request->type); | ||||
\Log::debug("Provider methods" . var_export(json_encode($methods), true)); | \Log::debug("Provider methods" . var_export(json_encode($methods), true)); | ||||
return response()->json($methods); | return response()->json($methods); | ||||
} | } | ||||
/** | /** | ||||
* Check for pending payments. | * Check for pending payments. | ||||
* | * | ||||
* @param \Illuminate\Http\Request $request The API request. | * @param \Illuminate\Http\Request $request The API request. | ||||
* | * | ||||
* @return \Illuminate\Http\JsonResponse The response | * @return \Illuminate\Http\JsonResponse The response | ||||
*/ | */ | ||||
public static function hasPayments(Request $request) | public function hasPayments(Request $request) | ||||
{ | { | ||||
$user = Auth::guard()->user(); | $user = $this->guard()->user(); | ||||
// TODO: Wallet selection | // TODO: Wallet selection | ||||
$wallet = $user->wallets()->first(); | $wallet = $user->wallets()->first(); | ||||
$exists = Payment::where('wallet_id', $wallet->id) | $exists = Payment::where('wallet_id', $wallet->id) | ||||
->where('type', PaymentProvider::TYPE_ONEOFF) | ->where('type', PaymentProvider::TYPE_ONEOFF) | ||||
->whereIn('status', [ | ->whereIn('status', [ | ||||
PaymentProvider::STATUS_OPEN, | PaymentProvider::STATUS_OPEN, | ||||
Show All 9 Lines | class PaymentsController extends Controller | ||||
/** | /** | ||||
* List pending payments. | * List pending payments. | ||||
* | * | ||||
* @param \Illuminate\Http\Request $request The API request. | * @param \Illuminate\Http\Request $request The API request. | ||||
* | * | ||||
* @return \Illuminate\Http\JsonResponse The response | * @return \Illuminate\Http\JsonResponse The response | ||||
*/ | */ | ||||
public static function payments(Request $request) | public function payments(Request $request) | ||||
{ | { | ||||
$user = Auth::guard()->user(); | $user = $this->guard()->user(); | ||||
// TODO: Wallet selection | // TODO: Wallet selection | ||||
$wallet = $user->wallets()->first(); | $wallet = $user->wallets()->first(); | ||||
$pageSize = 10; | $pageSize = 10; | ||||
$page = intval(request()->input('page')) ?: 1; | $page = intval(request()->input('page')) ?: 1; | ||||
$hasMore = false; | $hasMore = false; | ||||
$result = Payment::where('wallet_id', $wallet->id) | $result = Payment::where('wallet_id', $wallet->id) | ||||
▲ Show 20 Lines • Show All 41 Lines • Show Last 20 Lines |