diff --git a/app/PaymentDrivers/Stripe/ACH.php b/app/PaymentDrivers/Stripe/ACH.php
index 1e4a3653050d..86d6d4ec6bc0 100644
--- a/app/PaymentDrivers/Stripe/ACH.php
+++ b/app/PaymentDrivers/Stripe/ACH.php
@@ -95,8 +95,12 @@ class ACH
return render('gateways.stripe.ach.verify', $data);
}
- public function processVerification($request, ClientGatewayToken $token)
+ public function processVerification(Request $request, ClientGatewayToken $token)
{
+ $request->validate([
+ 'transactions.*' => ['integer', 'min:1'],
+ ]);
+
if (isset($token->meta->state) && $token->meta->state === 'authorized') {
return redirect()
->route('client.payment_methods.show', $token->hashed_id)
diff --git a/resources/views/portal/ninja2020/gateways/stripe/ach/verify.blade.php b/resources/views/portal/ninja2020/gateways/stripe/ach/verify.blade.php
index 46afb0bd3d9a..fa4465b2e701 100644
--- a/resources/views/portal/ninja2020/gateways/stripe/ach/verify.blade.php
+++ b/resources/views/portal/ninja2020/gateways/stripe/ach/verify.blade.php
@@ -11,11 +11,23 @@
@component('portal.ninja2020.components.general.card-element', ['title' => '#1 ' . ctrans('texts.amount_cents')])
-
+
+
+ @error('transactions.0')
+
+ {{ $message }}
+
+ @enderror
@endcomponent
@component('portal.ninja2020.components.general.card-element', ['title' => '#2 ' . ctrans('texts.amount_cents')])
-
+
+
+ @error('transactions.1')
+
+ {{ $message }}
+
+ @enderror
@endcomponent
@component('portal.ninja2020.gateways.includes.pay_now', ['type' => 'submit'])
diff --git a/tests/Browser/ClientPortal/Gateways/Stripe/ACHTest.php b/tests/Browser/ClientPortal/Gateways/Stripe/ACHTest.php
index 53947540b35b..60f3b49324d4 100644
--- a/tests/Browser/ClientPortal/Gateways/Stripe/ACHTest.php
+++ b/tests/Browser/ClientPortal/Gateways/Stripe/ACHTest.php
@@ -103,4 +103,31 @@ class ACHTest extends DuskTestCase
->assertSee('Payment method has been successfully removed.');
});
}
+
+ public function testIntegerAndMinimumValueOnVerification()
+ {
+ $this->browse(function (Browser $browser) {
+ $browser
+ ->visitRoute('client.payment_methods.index')
+ ->press('Add Payment Method')
+ ->clickLink('Bank Account')
+ ->type('#account-holder-name', 'John Doe')
+ ->select('#country', 'US')
+ ->select('#currency', 'USD')
+ ->type('#routing-number', '110000000')
+ ->type('#account-number', '000123456789')
+ ->check('#accept-terms')
+ ->press('Add Payment Method')
+ ->waitForText('ACH (Verification)', 60)
+ ->type('@verification-1st', '0.1')
+ ->type('@verification-2nd', '0')
+ ->press('Complete Verification')
+ ->assertSee('The transactions.0 must be an integer')
+ ->assertSee('The transactions.1 must be at least 1')
+ ->type('@verification-1st', '32')
+ ->type('@verification-2nd', '45')
+ ->press('Complete Verification')
+ ->assertSee('Bank Transfer');
+ });
+ }
}