{"id":18833673,"url":"https://github.com/dianper/payment-api","last_synced_at":"2026-04-26T22:31:08.976Z","repository":{"id":125675643,"uuid":"309323365","full_name":"dianper/payment-api","owner":"dianper","description":"A basic payment API in .NETCore","archived":false,"fork":false,"pushed_at":"2021-02-05T13:01:48.000Z","size":87,"stargazers_count":0,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-12-30T07:25:51.407Z","etag":null,"topics":["csharp","docker","dockerfile","fluent","fluentvalidation","gitactions-workflow","jwt","jwt-authentication","metrics","microservice","microservices-architecture","netcore","netcore31","payment-api","prometheus","quality","sonarqube","swagger","unit-testing"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dianper.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-11-02T09:41:09.000Z","updated_at":"2023-03-10T12:07:35.000Z","dependencies_parsed_at":"2023-04-18T02:33:56.718Z","dependency_job_id":null,"html_url":"https://github.com/dianper/payment-api","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dianper%2Fpayment-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dianper%2Fpayment-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dianper%2Fpayment-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dianper%2Fpayment-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dianper","download_url":"https://codeload.github.com/dianper/payment-api/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239768930,"owners_count":19693764,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csharp","docker","dockerfile","fluent","fluentvalidation","gitactions-workflow","jwt","jwt-authentication","metrics","microservice","microservices-architecture","netcore","netcore31","payment-api","prometheus","quality","sonarqube","swagger","unit-testing"],"created_at":"2024-11-08T02:02:05.819Z","updated_at":"2026-01-26T00:30:15.778Z","avatar_url":"https://github.com/dianper.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![.NET Core](https://github.com/dianper/payment-gateway/workflows/.NET%20Core/badge.svg)](https://github.com/dianper/payment-gateway/actions?query=workflow%3A%22.NET+Core%22)\n\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=dianper_payment-gateway\u0026metric=alert_status)](https://sonarcloud.io/dashboard?id=dianper_payment-gateway)\n\n# Payment API\nPayment API in .NETCore\n\n## Requirements\n- Docker\n\n## Run Fake Acquiring Bank Client\n```\n# cd /src/AcquiringBank\ndocker build -t acquiringbankapi .\ndocker run -d -p 44385:80 --name fakebank acquiringbankapi\n```\n\n## Run Payment API\n```\n# cd /src/PaymentGateway\ndocker build -t paymentgatewayapi .\ndocker run -d -p 44386:80 --name paymentgateway paymentgatewayapi\n```\n\n## Mock Data\n```\n# Valid MerchantIds\n- 63d33faf-7781-48c9-a2f5-a035d1799735\n- e5f18ed2-3a06-40b1-85db-3eec9624cc0f\n\n# Card Numbers \u0026 Transaction Status\n4485008383107041 - Failed\n5468797069745763 - Rejected\n4913317908108661 - Accepted (if amount \u003e 150 or transaction will be rejected)\n\n# Credit Card Number Generator\nhttps://www.freeformatter.com/credit-card-number-generator-validator.html\n```\n\n## Features\n- Model validation using FluentValidation\n- Data Storage using EF Core Database In Memory\n- Authentication using JWT\n- API Docs using Swagger\n- CI using Github Actions\n- Code Quality using Sonarqube\n- Fake Acquiring Bank using HttpClient\n- Dockerfile to Acquiring Bank and Payment Gateway API\n- UnitTests\n- Metrics using Prometheus\n\n## Swagger\n- http://localhost:44386/swagger\n\n## Metrics\n- http://localhost:44386/metrics\n\n## Endpoints\n- POST: Authentication (http://localhost:44386/api/v1/auth)\n\nBody\n```json\n{\n    \"username\": \"paymentgateway\",\n    \"password\": \"2020\"\n}\n```\n\nResponse\n```json\n{\n    \"result\": {\n        \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDQ4NzUwODUsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6NTA5NTYiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjUwOTU2In0.EQn3ztnNg_DaV5T8-hKAL3vj6WvW6gQeyGVtu9zC9-k\",\n        \"expiration\": \"2020-11-08T22:38:05.7333286+00:00\"\n    },\n    \"success\": true,\n    \"errors\": {}\n}\n```\n\n- POST: Payment Process (http://localhost:44386/api/v1/payment)\n\nBody\n```json\n{\n    \"merchantId\": \"63d33faf-7781-48c9-a2f5-a035d1799735\",\n    \"cardNumber\": \"4913317908108661\",\n    \"expiryMonth\": 12,\n    \"expiryYear\": 2020,\n    \"securityCode\": 123,\n    \"amount\": 1500,\n    \"currency\": \"USD\"\n}\n```\nResponse\n```json\n{\n  \"result\": {\n    \"paymentId\": \"c1870526-0a9f-4256-9594-8213646af506\",\n    \"transactionId\": \"214e22ee-a33a-4ca4-8b32-6a12b83bdbf4\",\n    \"transactionStatus\": \"Accepted\"\n  },\n  \"success\": true,\n  \"errors\": {}\n}\n```\n\n- GET: Payment Details (http://localhost:44386/api/v1/payment)\n\nBody\n```json\n{\n    \"paymentId\": \"c1870526-0a9f-4256-9594-8213646af506\"\n}\n```\n\nResponse\n```json\n{\n  \"result\": {\n    \"paymentId\": \"c1870526-0a9f-4256-9594-8213646af506\",\n    \"paymentDate\": \"2020-11-08T20:45:32.8736427+00:00\",\n    \"amount\": 1500,\n    \"cardNumberMasked\": \"************8661\",\n    \"transactionId\": \"214e22ee-a33a-4ca4-8b32-6a12b83bdbf4\",\n    \"transactionStatus\": \"Accepted\"\n  },\n  \"success\": true,\n  \"errors\": {}\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdianper%2Fpayment-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdianper%2Fpayment-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdianper%2Fpayment-api/lists"}