need help with this test
Budget: €18 – €36 EUR
Develop a PHP application that exposes a REST endpoint to process payments by forwarding them to a Bank Gateway (hereafter BG). The BG will effectively perform the actual payment processing.
The solution must address BG limitations by implementing an idempotency mechanism to protect submitted payments.
The objective is to provide REST API clients with an at-most-once semantic that enables safe retry mechanisms in concurrent contexts.
The BG must be simulated, and adherence to real protocols is not required.
Payments must include at least the following properties:
- Transaction identifier
- Credit card information (number, cardholder, security code, etc.)
- Amount
The use of an embedded DB (SQLite or similar) is allowed.
Use PHP 8, Composer for dependencies, and select either Symfony or Laravel framework.
Complete with descriptions of:
- Trade-offs and assumptions made
- General operational description
- Architectural and organizational choices of the code
- Design patterns utilized (if applicable)
- Idempotency implementation
- Security aspects (addressed and/or to be addressed)
The solution must be delivered as a repository on BitBucket or GitHub and must start using the command:
```
docker compose up --build
```
The solution must address BG limitations by implementing an idempotency mechanism to protect submitted payments.
The objective is to provide REST API clients with an at-most-once semantic that enables safe retry mechanisms in concurrent contexts.
The BG must be simulated, and adherence to real protocols is not required.
Payments must include at least the following properties:
- Transaction identifier
- Credit card information (number, cardholder, security code, etc.)
- Amount
The use of an embedded DB (SQLite or similar) is allowed.
Use PHP 8, Composer for dependencies, and select either Symfony or Laravel framework.
Complete with descriptions of:
- Trade-offs and assumptions made
- General operational description
- Architectural and organizational choices of the code
- Design patterns utilized (if applicable)
- Idempotency implementation
- Security aspects (addressed and/or to be addressed)
The solution must be delivered as a repository on BitBucket or GitHub and must start using the command:
```
docker compose up --build
```