Compare commits
2 Commits
1d0162d250
...
55cd5fefed
Author | SHA1 | Date | |
---|---|---|---|
55cd5fefed | |||
6ba4937538 |
@ -18,5 +18,5 @@ export const routes: Routes = [
|
||||
path: 'deposit',
|
||||
component: DepositComponent,
|
||||
canActivate: [authGuard],
|
||||
}
|
||||
},
|
||||
];
|
||||
|
@ -1,5 +1,8 @@
|
||||
<form [formGroup]="form">
|
||||
<input type="number" formControlName="amount">€
|
||||
<br>
|
||||
@if (errorMsg) {
|
||||
<div>{{ errorMsg }}</div>
|
||||
}
|
||||
<input type="number" formControlName="amount" />€
|
||||
<br />
|
||||
<button type="button" (click)="submit()">Einzahlen</button>
|
||||
</form>
|
||||
|
@ -1,32 +1,51 @@
|
||||
import { Component, inject, OnInit } from '@angular/core';
|
||||
import { ChangeDetectionStrategy, Component, inject, OnInit } from '@angular/core';
|
||||
import { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';
|
||||
import { loadStripe, Stripe } from '@stripe/stripe-js';
|
||||
import { DepositService } from '../service/deposit.service';
|
||||
import { debounceTime } from 'rxjs';
|
||||
|
||||
@Component({
|
||||
selector: 'app-deposit',
|
||||
standalone: true,
|
||||
imports: [
|
||||
ReactiveFormsModule,
|
||||
],
|
||||
imports: [ReactiveFormsModule],
|
||||
templateUrl: './deposit.component.html',
|
||||
styleUrl: './deposit.component.css'
|
||||
styleUrl: './deposit.component.css',
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
})
|
||||
export class DepositComponent implements OnInit {
|
||||
protected form = new FormGroup({amount: new FormControl(50, [Validators.min(50)])});
|
||||
protected form!: FormGroup;
|
||||
protected errorMsg: string = '';
|
||||
private stripe: Stripe | null = null;
|
||||
private service: DepositService = inject(DepositService);
|
||||
|
||||
async ngOnInit() {
|
||||
this.stripe = await loadStripe('pk_test_51QrePYIvCfqz7ANgMizBorPpVjJ8S6gcaL4yvcMQnVaKyReqcQ6jqaQEF7aDZbDu8rNVsTZrw8ABek4ToxQX7KZe00jpGh8naG');
|
||||
this.form = new FormGroup({
|
||||
amount: new FormControl(50, [Validators.min(50)]),
|
||||
});
|
||||
|
||||
this.form.controls['amount'].valueChanges.pipe(debounceTime(1000)).subscribe((value) => {
|
||||
if (value < 50) {
|
||||
this.errorMsg = 'Minimum Einzahlungsbetrag ist 50€';
|
||||
}
|
||||
});
|
||||
|
||||
this.stripe = await loadStripe(
|
||||
'pk_test_51QrePYIvCfqz7ANgMizBorPpVjJ8S6gcaL4yvcMQnVaKyReqcQ6jqaQEF7aDZbDu8rNVsTZrw8ABek4ToxQX7KZe00jpGh8naG'
|
||||
);
|
||||
}
|
||||
|
||||
submit() {
|
||||
if (this.stripe) {
|
||||
console.log(JSON.stringify(this.form.value.amount as number));
|
||||
if (!this.stripe) {
|
||||
this.errorMsg = 'Ein Fehler ist aufgetreten. Bitte versuchen Sie es später erneut.';
|
||||
return;
|
||||
}
|
||||
if (!this.form.valid) {
|
||||
this.errorMsg = 'Bitte geben Sie einen gültigen Betrag ein.';
|
||||
return;
|
||||
}
|
||||
|
||||
this.service.handleDeposit(this.form.value.amount as number).subscribe(({ sessionId }) => {
|
||||
this.stripe?.redirectToCheckout({ sessionId });
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2,9 +2,8 @@ import { inject, Injectable } from '@angular/core';
|
||||
import { HttpClient } from '@angular/common/http';
|
||||
import { Observable } from 'rxjs';
|
||||
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
providedIn: 'root',
|
||||
})
|
||||
export class DepositService {
|
||||
private http: HttpClient = inject(HttpClient);
|
||||
|
Loading…
x
Reference in New Issue
Block a user