Bug and workaround for error on payment page (2.9.3)

Hi there, bug report for 2.9.3:

The URLs generated by these two tokens in the email template throw errors for me.

$creditCardButton
$creditCardLink

However the URL generated by this token works fine:

$paymentButton

Removing the “/1” at the end of the “/payment/” URL seems to fix this too when either of the two credit card tokens throw this error.

I have two gateways configured.

Hope this helps and do let me know if you think there is anything more convoluted going on here.

Error and Stack Trace

exception ‘ErrorException’ with message ‘Trying to get property of non-object’ in /home//app/Models/GatewayType.php:32
Stack trace:
#0 /home/
/app/Models/GatewayType.php(32): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError(8, ‘Trying to get p…’, '/home/…’, 32, Array)
#1 /home/
/app/Http/Controllers/OnlinePaymentController.php(84): App\Models\GatewayType::getIdFromAlias(‘1’)
#2 [internal function]: App\Http\Controllers\OnlinePaymentController->showPayment(‘pbpQoGz3S5G8CIc…’, ‘1’)
#3 /home//bootstrap/cache/compiled.php(9482): call_user_func_array(Array, Array)
#4 /home/
/bootstrap/cache/compiled.php(9544): Illuminate\Routing\Controller->callAction(‘showPayment’, Array)
#5 /home//bootstrap/cache/compiled.php(9524): Illuminate\Routing\ControllerDispatcher->call(Object(App\Http\Controllers\OnlinePaymentController), Object(Illuminate\Routing\Route), ‘showPayment’)
#6 [internal function]: Illuminate\Routing\ControllerDispatcher->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#7 /home/
/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(52): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
#8 [internal function]: Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#9 /home//bootstrap/cache/compiled.php(10006): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
#10 /home/
/bootstrap/cache/compiled.php(9525): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#11 /home//bootstrap/cache/compiled.php(9512): Illuminate\Routing\ControllerDispatcher->callWithinStack(Object(App\Http\Controllers\OnlinePaymentController), Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request), ‘showPayment’)
#12 /home/
/bootstrap/cache/compiled.php(8582): Illuminate\Routing\ControllerDispatcher->dispatch(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request), ‘App\Http\Contro…’, ‘showPayment’)
#13 /home//bootstrap/cache/compiled.php(8569): Illuminate\Routing\Route->runController(Object(Illuminate\Http\Request))
#14 /home/
/bootstrap/cache/compiled.php(8283): Illuminate\Routing\Route->run(Object(Illuminate\Http\Request))
#15 [internal function]: Illuminate\Routing\Router->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#16 /home//vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(52): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
#17 /home/
/app/Http/Middleware/Authenticate.php(90): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#18 [internal function]: App\Http\Middleware\Authenticate->handle(Object(Illuminate\Http\Request), Object(Closure), ‘client’)
#19 /home//bootstrap/cache/compiled.php(10021): call_user_func_array(Array, Array)
#20 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request))
#21 /home/
/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
#22 [internal function]: Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#23 /home//bootstrap/cache/compiled.php(10006): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
#24 /home/
/bootstrap/cache/compiled.php(8284): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#25 /home//bootstrap/cache/compiled.php(8275): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request))
#26 /home/
/bootstrap/cache/compiled.php(8265): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))
#27 /home//bootstrap/cache/compiled.php(2419): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request))
#28 [internal function]: Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http{closure}(Object(Illuminate\Http\Request))
#29 /home/
/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(52): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
#30 /home//vendor/barryvdh/laravel-debugbar/src/Middleware/Debugbar.php(49): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#31 [internal function]: Barryvdh\Debugbar\Middleware\Debugbar->handle(Object(Illuminate\Http\Request), Object(Closure))
#32 /home/
/bootstrap/cache/compiled.php(10021): call_user_func_array(Array, Array)
#33 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request))
#34 /home//vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
#35 /home/
/app/Http/Middleware/StartupCheck.php(196): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#36 [internal function]: App\Http\Middleware\StartupCheck->handle(Object(Illuminate\Http\Request), Object(Closure))
#37 /home//bootstrap/cache/compiled.php(10021): call_user_func_array(Array, Array)
#38 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request))
#39 /home/
/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
#40 /home//app/Http/Middleware/QueryLogging.php(29): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#41 [internal function]: App\Http\Middleware\QueryLogging->handle(Object(Illuminate\Http\Request), Object(Closure))
#42 /home/
/bootstrap/cache/compiled.php(10021): call_user_func_array(Array, Array)
#43 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request))
#44 /home//vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
#45 /home/
/app/Http/Middleware/DuplicateSubmissionCheck.php(36): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#46 [internal function]: App\Http\Middleware\DuplicateSubmissionCheck->handle(Object(Illuminate\Http\Request), Object(Closure))
#47 /home//bootstrap/cache/compiled.php(10021): call_user_func_array(Array, Array)
#48 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request))
#49 /home/
/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
#50 /home//bootstrap/cache/compiled.php(3225): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#51 /home/
/app/Http/Middleware/VerifyCsrfToken.php(42): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle(Object(Illuminate\Http\Request), Object(Closure))
#52 [internal function]: App\Http\Middleware\VerifyCsrfToken->handle(Object(Illuminate\Http\Request), Object(Closure))
#53 /home//bootstrap/cache/compiled.php(10021): call_user_func_array(Array, Array)
#54 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request))
#55 /home/
/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
#56 /home//bootstrap/cache/compiled.php(13531): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#57 [internal function]: Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#58 /home/
/bootstrap/cache/compiled.php(10021): call_user_func_array(Array, Array)
#59 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request))
#60 /home//vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
#61 /home/
/bootstrap/cache/compiled.php(12021): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#62 [internal function]: Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#63 /home//bootstrap/cache/compiled.php(10021): call_user_func_array(Array, Array)
#64 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request))
#65 /home/
/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
#66 /home//bootstrap/cache/compiled.php(13270): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#67 [internal function]: Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure))
#68 /home/
/bootstrap/cache/compiled.php(10021): call_user_func_array(Array, Array)
#69 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request))
#70 /home//vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
#71 /home/
/bootstrap/cache/compiled.php(13207): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#72 [internal function]: Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure))
#73 /home//bootstrap/cache/compiled.php(10021): call_user_func_array(Array, Array)
#74 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request))
#75 /home/
/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
#76 /home//bootstrap/cache/compiled.php(3286): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#77 [internal function]: Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure))
#78 /home/
/bootstrap/cache/compiled.php(10021): call_user_func_array(Array, Array)
#79 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request))
#80 /home//vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
#81 [internal function]: Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#82 /home/
/bootstrap/cache/compiled.php(10006): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
#83 /home//bootstrap/cache/compiled.php(2366): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#84 /home/
/bootstrap/cache/compiled.php(2350): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))
#85 /home/*****/public/index.php(52): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
#86 {main}

Thanks for letting us know, I’ll make sure it’s fixed.

Thanks again! The fix will be included with our next release.

https://github.com/invoiceninja/invoiceninja/commit/4df82a12c8044a775593addee361668326eec60a