This is a project made in 48 hours that earned us 2nd place out of ~200 competitors in SoftUni Software Fest 2023
The Payment Service Application is a platform designed to facilitate online transactions between businesses and their clients. It enables businesses to register and configure their products or services for seamless payment processing, while allowing clients to discover merchants and make purchases using the Stripe platform and Metamask for crypto purchases. The application offers distinct interfaces for both business and client users within a unified environment, ensuring a smooth and efficient payment experience.
Link to the presentation (made in canva)
- ASP.NET Core 7.0: Framework for building web applications and services with .NET.
- AutoMapper: A convention-based object-object mapper.
- MailKit: A cross-platform mail client library for .NET.
- Entity Framework Core: A modern object-database mapper for .NET.
- Polly: A resilience and transient-fault-handling library.
- Serilog: A diagnostic logging library.
- Stripe.net: .NET client library for the Stripe API.
!Set The Environment in - Properties/launchsettings.json under the https
from "ASPNETCORE_ENVIRONMENT": "Development"
to "ASPNETCORE_ENVIRONMENT": "Production"
!
You will need to download the MetaMask extention for your browser. You will need a MetaMask wallet. For testing you can fund your wallet from sepoliafauscet. Uppon Business registration you have to fill your wallet id that can be found in the extention!
-
For the Stripe connection you can just click the skip button for testing.
In order to run the project, you will need to add an `appsettings.json` file in the project's folder. It should look something like this:
If something doesent work as expected try commenting out the `await DatabaseMiddleware.MigrateDatabase(scope, app.Configuration, app.Logger);` row in the `Program.cs` file and run the `update-database` command in the pm console.
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
},
"Urls": {
"SeqServerUrl": "http://localhost:5341"
}
},
"AllowedHosts": "*",
"ConnectionStrings": {
"DefaultConnection": "<insert your connection string>."
},
"Stripe": {
"PublicKey": "pk_test_51O5kkhC2AQuDpkcCKNeCZpFgnecsVYSi5wKMkE6r4278nggXUkCcSknQ1PetNGftCUMuK4i8V3ioMGAdBcS8nABy00YXkmzWp6",
"SecretKey": "sk_test_51O5kkhC2AQuDpkcC1Uf5g5GO5B9iQtnliBzu4pnnJpNJHShPckiFg82U31Vg5zItVjq1ld6JM2UPUgthjXjJrWJA00vek8CL7e",
"ClientId": "ca_OtZObyUT5NlcNdDQNhF5chQlJcxGzQTX"
},
"EmailSending": {
"SmtpServer": "smtp.gmail.com",
"SmtpPort": 587,
"SmtpUsername": "notiflexnoreply@gmail.com",
"SmtpPassword": "eueuusntmpvxfahb",
"FromName": "Insightify",
"FromAddress": "notiflexnoreply@gmail.com"
},
"EtherScan": {
"ApiKey": "NG1XRHGEXWADZBY2TJJGP2KFU7P3CEAZY1"
}
}