{"id":37976781,"url":"https://github.com/andresweitzel/spring_batch_processing_payments","last_synced_at":"2026-02-20T05:03:56.124Z","repository":{"id":294575091,"uuid":"987410838","full_name":"andresWeitzel/Spring_Batch_Processing_Payments","owner":"andresWeitzel","description":"✅ This project implements a payment processor using Spring Batch that validates and processes payments from an input file, generating output files for processed and rejected payments, and an overall report.","archived":false,"fork":false,"pushed_at":"2025-07-08T03:21:23.000Z","size":13716,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-17T04:49:43.532Z","etag":null,"topics":["java","payments","report","spring-batch","spring-batch-jobs","spring-boot"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andresWeitzel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null}},"created_at":"2025-05-21T03:24:03.000Z","updated_at":"2025-08-28T23:03:47.000Z","dependencies_parsed_at":"2025-06-13T23:36:19.860Z","dependency_job_id":null,"html_url":"https://github.com/andresWeitzel/Spring_Batch_Processing_Payments","commit_stats":null,"previous_names":["andresweitzel/spring_batch_payments","andresweitzel/spring_batch_processing_payments"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/andresWeitzel/Spring_Batch_Processing_Payments","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andresWeitzel%2FSpring_Batch_Processing_Payments","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andresWeitzel%2FSpring_Batch_Processing_Payments/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andresWeitzel%2FSpring_Batch_Processing_Payments/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andresWeitzel%2FSpring_Batch_Processing_Payments/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andresWeitzel","download_url":"https://codeload.github.com/andresWeitzel/Spring_Batch_Processing_Payments/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andresWeitzel%2FSpring_Batch_Processing_Payments/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29641935,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-20T03:21:14.183Z","status":"ssl_error","status_checked_at":"2026-02-20T03:18:24.455Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["java","payments","report","spring-batch","spring-batch-jobs","spring-boot"],"created_at":"2026-01-16T18:31:17.744Z","updated_at":"2026-02-20T05:03:56.119Z","avatar_url":"https://github.com/andresWeitzel.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align = \"center\"\u003e\n  \u003cimg src=\"./src/main/resources/static/img/spring_batch_payments.png\" \u003e\n\u003c/div\u003e\n\n\n  \u003cdiv align=\"right\"\u003e\n    \u003cimg width=\"24\" height=\"24\" src=\"./src/main/resources/static/icons/backend/java/png/java.png\" /\u003e\n    \u003cimg width=\"20\" height=\"20\" src=\"./src/main/resources/static/icons/devops/png/maven.png\" /\u003e\n    \u003cimg width=\"22\" height=\"22\" src=\"./src/main/resources/static/icons/devops/png/postman.png\" /\u003e\n    \u003cimg width=\"22\" height=\"22\" src=\"./src/main/resources/static/icons/devops/png/git.png\" /\u003e\n    \u003cimg width=\"20\" height=\"20\" src=\"./src/main/resources/static/icons/backend/java/png/junit.png\" /\u003e\n    \u003cimg width=\"20\" height=\"20\" src=\"./src/main/resources/static/icons/devops/png/swagger.png\" /\u003e \n    \u003cimg width=\"20\" height=\"20\" src=\"./src/main/resources/static/icons/backend/java/png/spring-boot.png\" /\u003e \n    \u003cimg width=\"20\" height=\"20\" src=\"./src/main/resources/static/icons/backend/java/png/spring-batch.png\" /\u003e    \n  \u003c/div\u003e\n\n\n\u003cbr\u003e\n\n\u003cbr\u003e\n\n\n\u003cdiv align=\"right\"\u003e \n  \u003ca href=\"https://github.com/andresWeitzel/Spring_Batch_Processing_Payments/blob/master/src/main/resources/static/translation/README.es.md\"\u003e\n    \u003cimg src=\"./src/main/resources/static/icons/translation/arg-flag.jpg\" width=\"65\" height=\"40\" /\u003e\n  \u003c/a\u003e \n  \u003ca href=\"https://github.com/andresWeitzel/Spring_Batch_Processing_Payments/blob/master/README.md\"\u003e\n    \u003cimg src=\"./src/main/resources/static/icons/translation/eeuu-flag.jpg\" width=\"65\" height=\"40\" /\u003e\n  \u003c/a\u003e \n\u003c/div\u003e\n\n\u003cbr\u003e\n\n\u003cbr\u003e\n\n\u003cdiv align=\"center\"\u003e  \n\n# Spring Batch Payments Processor ![(status-completed)](./src/main/resources/static/icons/badges/status-completed.svg)\n\n\u003c/div\u003e\n\nThis project implements a payment processor using Spring Batch that validates and processes payments from an input file, generating output files for processed payments, rejected payments, and a general report.\n\n*   [Functional tests video](https://www.youtube.com/watch?v=zPqArsLfH7o) \u003ca href=\"https://www.youtube.com/watch?v=zPqArsLfH7o\" target=\"_blank\"\u003e \u003cimg src=\"./src/main/resources/static/icons/social-networks/yt.png\" width=\"25\" /\u003e\u003c/a\u003e\n\n\u003cbr\u003e\n\n## Index 📜\n\n\u003cdetails\u003e\n  \u003csummary\u003e View details \u003c/summary\u003e\n\n\u003cdiv align=\"right\"\u003e\n\n`Latest update: 20/02/26` \n\n\u003c/div\u003e\n\n### Section 1) Description, Configuration and Technologies\n\n*   [1.0) Project Description.](#10-project-description-)\n*   [1.1) Project Execution.](#11-project-execution-)\n*   [1.2) Project Structure.](#12-project-structure-)\n*   [1.3) Technologies.](#13-technologies-)\n\n### Section 2) Processing Flow, File Formats and Validations\n\n*   [2.0) Processing Flow.](#20-processing-flow-)\n*   [2.1) File Formats.](#21-file-formats-)\n*   [2.2) Implemented Validations.](#22-implemented-validations-)\n\n### Section 3) Payment Examples\n\n*   [3.0) Valid Payments.](#30-valid-payments-)\n*   [3.1) Rejected Payments.](#31-rejected-payments-)\n\n### Section 4) Reports, Functionality Testing and References\n\n*   [4.0) Reports.](#40-reports-)\n*   [4.1) Functionality Test.](#41-functionality-test-)\n*   [4.2) Contributing.](#42-contributing-)\n*   [4.3) License.](#43-license-)\n\n\u003cbr\u003e\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n## Section 1) Description, Configuration and Technologies\n\n### 1.0) Project Description [🔝](#index-)\n\n\u003cdetails\u003e\n   \u003csummary\u003eView details\u003c/summary\u003e\n\n  \u003cbr\u003e\n\nThis project implements a payment processor using Spring Batch that validates and processes payments from an input file, generating output files for processed payments, rejected payments, and a general report.\n\n**Features:**\n\n- Batch payment processing\n- Amount, currency, and customer data validation\n- Commission calculation\n- Report generation\n- Error handling and rejected payments\n- Support for multiple currencies (USD, EUR, GBP, JPY)\n\n\u003cbr\u003e\n\n\u003c/details\u003e\n\n### 1.1) Project Execution [🔝](#index-)\n\n\u003cdetails\u003e\n   \u003csummary\u003eView details\u003c/summary\u003e\n\n  \u003cbr\u003e\n\n*   We create a work environment through some IDE, we may or may not create a root folder for the project, we position ourselves on it\n\n```git\ncd 'projectRootName'\n```\n\n*   Once a work environment has been created, we clone the project\n\n```git\ngit clone https://github.com/andresWeitzel/Spring_Batch_Processing_Payments\n```\n\n*   We position ourselves on the project\n\n```git\ncd 'Spring_Batch_Processing_Payments'\n```\n\n*   We need [Java 17](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html) or higher installed\n*   We need [Maven 3.6](https://maven.apache.org/download.cgi) or higher installed\n*   We install all the necessary dependencies\n\n```git\nmvn clean install\n```\n\n*   The project uses different profiles for development and production. To run in development mode:\n\n```git\nmvn spring-boot:run -Dspring-boot.run.profiles=dev\n```\n\n*   To run in production mode:\n\n```git\nmvn spring-boot:run -Dspring-boot.run.profiles=prod\n```\n\n*   `Important`: It is possible that there are other previous steps that have not been included due to synchronization between docs in relation to development. Please open a conversation thread within the 'Issues' section of the project.\n\n\u003cbr\u003e\n\n\u003c/details\u003e\n\n### 1.2) Project Structure [🔝](#index-)\n\n\u003cdetails\u003e\n   \u003csummary\u003eView details\u003c/summary\u003e\n\n  \u003cbr\u003e\n\n```\nsrc/main/java/com/example/batch/\n├── config/         # Spring Batch configuration\n├── model/          # Data models\n├── processor/      # Payment processors\n└── enums/          # Enumerations\n```\n\n\u003cbr\u003e\n\n\u003c/details\u003e\n\n### 1.3) Technologies [🔝](#index-)\n\n\u003cdetails\u003e\n   \u003csummary\u003eView details\u003c/summary\u003e\n\n  \u003cbr\u003e\n\n| **Technologies** | **Version** | **Purpose** |\n| ------------- | ------------- | ------------- |\n| [Java](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html) | 17+ | Programming Language |\n| [Spring Boot](https://spring.io/projects/spring-boot) | 2.7.0 | Application Framework |\n| [Spring Batch](https://spring.io/projects/spring-batch) | 4.3.6 | Batch Processing Framework |\n| [Maven](https://maven.apache.org/) | 3.6+ | Dependency Management and Build |\n| [JUnit](https://junit.org/junit5/) | 5 | Unit Testing Framework |\n| [Postman](https://www.postman.com/downloads/) | 10+ | Http Client for Testing |\n| [Swagger](https://swagger.io/) | 2.0 | API Documentation |\n| [Git](https://git-scm.com/downloads) | 2.29+ | Version Control |\n| Others | - | Others |\n\n\u003cbr\u003e\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n## Section 2) Processing Flow, File Formats and Validations\n\n### 2.0) Processing Flow [🔝](#index-)\n\n\u003cdetails\u003e\n   \u003csummary\u003eView details\u003c/summary\u003e\n\n  \u003cbr\u003e\n\n1. **Payment Reading**: Reads payments from `input/payments.txt`\n2. **Validation and Processing**: \n   - Validates amounts (minimum: 10.00, maximum: 10000.00)\n   - Validates supported currencies\n   - Validates email format\n   - Calculates commissions\n3. **Result Writing**:\n   - Valid payments → `output/processed_payments.txt`\n   - Rejected payments → `output/rejected_payments.txt`\n   - General report → `output/payment_report.txt`\n\n\u003cbr\u003e\n\n\u003c/details\u003e\n\n### 2.1) File Formats [🔝](#index-)\n\n\u003cdetails\u003e\n   \u003csummary\u003eView details\u003c/summary\u003e\n\n  \u003cbr\u003e\n\n### 2.1.0) Input File (payments.txt)\n\n```\nid,amount,currency,status,paymentDate,paymentType,customerName,customerEmail\n1,100.00,USD,PENDING,2024-03-20T10:00:00,CREDIT_CARD,John Doe,john@example.com\n2,500.00,EUR,PENDING,2024-03-20T10:05:00,DEBIT_CARD,Jane Smith,jane@example.com\n3,1000.00,GBP,PENDING,2024-03-20T10:10:00,CREDIT_CARD,Bob Johnson,bob@example.com\n4,5000.00,JPY,PENDING,2024-03-20T10:15:00,DEBIT_CARD,Alice Brown,alice@example.com\n```\n\n\u003cbr\u003e\n\n### 2.1.1) Processed Payments File (processed_payments.txt)\n\n```\nid,amount,currency,status,paymentDate,paymentType,customerName,customerEmail,amountInUSD,commission,validationStatus\n1,100.00,USD,PROCESSED,2024-03-20T10:00:00,CREDIT_CARD,John Doe,john@example.com,100.00,2.00,VALID\n2,500.00,EUR,PROCESSED,2024-03-20T10:05:00,DEBIT_CARD,Jane Smith,jane@example.com,545.00,10.90,VALID\n3,1000.00,GBP,PROCESSED,2024-03-20T10:10:00,CREDIT_CARD,Bob Johnson,bob@example.com,1270.00,25.40,VALID\n4,5000.00,JPY,PROCESSED,2024-03-20T10:15:00,DEBIT_CARD,Alice Brown,alice@example.com,33.50,0.67,VALID\n```\n\n\u003cbr\u003e\n\n### 2.1.2) Rejected Payments File (rejected_payments.txt)\n\n```\nid,amount,currency,status,paymentDate,paymentType,customerName,customerEmail,errorMessage\n5,5.00,USD,INVALID,2024-03-20T10:20:00,CREDIT_CARD,Charlie Wilson,charlie@example.com,Amount is below minimum allowed: 10.0\n6,15000.00,EUR,INVALID,2024-03-20T10:25:00,DEBIT_CARD,Diana Miller,diana@example.com,Amount exceeds maximum allowed: 10000.0\n7,200.00,MXN,INVALID,2024-03-20T10:30:00,CREDIT_CARD,Edward Davis,edward@example.com,Unsupported currency: MXN\n8,300.00,GBP,INVALID,2024-03-20T10:35:00,INVALID_TYPE,Frank Lee,frank@example.com,Invalid payment type: INVALID_TYPE\n9,400.00,USD,INVALID,2024-03-20T10:40:00,CREDIT_CARD,Grace Kim,invalid-email,Invalid email format\n10,500.00,EUR,INVALID,2024-03-20T10:45:00,DEBIT_CARD,Henry Park,,Email cannot be empty\n11,600.00,GBP,INVALID,2024-03-20T10:50:00,CREDIT_CARD,Ivy Chen,ivy@example.com,Invalid or empty payment date\n```\n\n\u003cbr\u003e\n\n### 2.1.3) General Report File (payment_report.txt)\n\n```\n=== Payment Processing Report ===\nProcessing Date: 2024-03-20T11:00:00\nTotal Processed Payments: 4\nTotal Rejected Payments: 7\nTotal Payments: 11\n\n=== Currency Statistics ===\nUSD: 2 payments (1 processed, 1 rejected)\nEUR: 3 payments (1 processed, 2 rejected)\nGBP: 3 payments (1 processed, 2 rejected)\nJPY: 1 payment (1 processed, 0 rejected)\nMXN: 1 payment (0 processed, 1 rejected)\n\n=== Payment Type Statistics ===\nCREDIT_CARD: 6 payments\nDEBIT_CARD: 4 payments\nINVALID_TYPE: 1 payment\n\n=== Rejection Reasons ===\nAmount too low: 1\nAmount too high: 1\nUnsupported currency: 1\nInvalid payment type: 1\nInvalid email: 2\nInvalid date: 1\n\n=== Total Amounts ===\nTotal Processed (USD): 1948.40\nTotal Commissions (USD): 38.97\n```\n\n\u003cbr\u003e\n\n\u003c/details\u003e\n\n### 2.2) Implemented Validations [🔝](#index-)\n\n\u003cdetails\u003e\n   \u003csummary\u003eView details\u003c/summary\u003e\n\n  \u003cbr\u003e\n\n1. **Amount**:\n   - Minimum: 10.00\n   - Maximum: 10000.00\n\n2. **Supported Currencies**:\n   - USD (US Dollar)\n   - EUR (Euro)\n   - GBP (British Pound)\n   - JPY (Japanese Yen)\n\n3. **Email**:\n   - Valid format\n   - Cannot be empty\n\n4. **Payment Date**:\n   - Cannot be empty\n   - ISO 8601 format\n\n\u003cbr\u003e\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n## Section 3) Payment Examples\n\n### 3.0) Valid Payments [🔝](#index-)\n\n\u003cdetails\u003e\n   \u003csummary\u003eView details\u003c/summary\u003e\n\n  \u003cbr\u003e\n\n### 3.0.0) USD payments within allowed range\n\n```\nid,amount,currency,status,paymentDate,paymentType,customerName,customerEmail\n1,100.00,USD,PENDING,2024-03-20T10:00:00,CREDIT_CARD,John Doe,john@example.com\n2,500.00,USD,PENDING,2024-03-20T10:05:00,DEBIT_CARD,Jane Smith,jane@example.com\n3,1000.00,USD,PENDING,2024-03-20T10:10:00,CREDIT_CARD,Bob Johnson,bob@example.com\n```\n\n\u003cbr\u003e\n\n### 3.0.1) EUR payments with valid email\n\n```\nid,amount,currency,status,paymentDate,paymentType,customerName,customerEmail\n4,500.00,EUR,PENDING,2024-03-20T11:00:00,DEBIT_CARD,Jane Smith,jane.smith@example.com\n5,750.00,EUR,PENDING,2024-03-20T11:05:00,CREDIT_CARD,Alice Brown,alice.brown@example.com\n6,2500.00,EUR,PENDING,2024-03-20T11:10:00,DEBIT_CARD,Charlie Wilson,charlie.wilson@example.com\n```\n\n\u003cbr\u003e\n\n### 3.0.2) GBP payments with varied amounts\n\n```\nid,amount,currency,status,paymentDate,paymentType,customerName,customerEmail\n7,50.00,GBP,PENDING,2024-03-20T12:00:00,CREDIT_CARD,David Miller,david.miller@example.com\n8,200.00,GBP,PENDING,2024-03-20T12:05:00,DEBIT_CARD,Eva Garcia,eva.garcia@example.com\n9,5000.00,GBP,PENDING,2024-03-20T12:10:00,CREDIT_CARD,Frank Lee,frank.lee@example.com\n```\n\n\u003cbr\u003e\n\n### 3.0.3) JPY payments with different payment types\n\n```\nid,amount,currency,status,paymentDate,paymentType,customerName,customerEmail\n10,10000.00,JPY,PENDING,2024-03-20T13:00:00,CREDIT_CARD,Grace Kim,grace.kim@example.com\n11,50000.00,JPY,PENDING,2024-03-20T13:05:00,DEBIT_CARD,Henry Park,henry.park@example.com\n12,100000.00,JPY,PENDING,2024-03-20T13:10:00,CREDIT_CARD,Ivy Chen,ivy.chen@example.com\n```\n\n\u003cbr\u003e\n\n\u003c/details\u003e\n\n### 3.1) Rejected Payments [🔝](#index-)\n\n\u003cdetails\u003e\n   \u003csummary\u003eView details\u003c/summary\u003e\n\n  \u003cbr\u003e\n\n### 3.1.0) Very low amounts\n\n```\nid,amount,currency,status,paymentDate,paymentType,customerName,customerEmail\n13,5.00,USD,PENDING,2024-03-20T14:00:00,CREDIT_CARD,Jack Wilson,jack@example.com\n14,1.00,EUR,PENDING,2024-03-20T14:05:00,DEBIT_CARD,Kate Brown,kate@example.com\n15,0.50,GBP,PENDING,2024-03-20T14:10:00,CREDIT_CARD,Liam Davis,liam@example.com\n```\n\n\u003cbr\u003e\n\n### 3.1.1) Unsupported currencies\n\n```\nid,amount,currency,status,paymentDate,paymentType,customerName,customerEmail\n16,1000.00,MXN,PENDING,2024-03-20T15:00:00,DEBIT_CARD,Maria Garcia,maria@example.com\n17,500.00,CAD,PENDING,2024-03-20T15:05:00,CREDIT_CARD,Noah Smith,noah@example.com\n18,2000.00,AUD,PENDING,2024-03-20T15:10:00,DEBIT_CARD,Olivia Lee,olivia@example.com\n```\n\n\u003cbr\u003e\n\n### 3.1.2) Invalid emails\n\n```\nid,amount,currency,status,paymentDate,paymentType,customerName,customerEmail\n19,200.00,USD,PENDING,2024-03-20T16:00:00,CREDIT_CARD,Peter Davis,invalid-email\n20,300.00,EUR,PENDING,2024-03-20T16:05:00,DEBIT_CARD,Quinn Wilson,not-an-email\n21,400.00,GBP,PENDING,2024-03-20T16:10:00,CREDIT_CARD,Rachel Brown,missing@domain\n```\n\n\u003cbr\u003e\n\n### 3.1.3) Very high amounts\n\n```\nid,amount,currency,status,paymentDate,paymentType,customerName,customerEmail\n22,15000.00,USD,PENDING,2024-03-20T17:00:00,DEBIT_CARD,Sam Miller,sam@example.com\n23,20000.00,EUR,PENDING,2024-03-20T17:05:00,CREDIT_CARD,Tina Garcia,tina@example.com\n24,25000.00,GBP,PENDING,2024-03-20T17:10:00,DEBIT_CARD,Victor Lee,victor@example.com\n```\n\n\u003cbr\u003e\n\n### 3.1.4) Invalid or empty dates\n\n```\nid,amount,currency,status,paymentDate,paymentType,customerName,customerEmail\n25,100.00,USD,PENDING,,CREDIT_CARD,Will Smith,will@example.com\n26,200.00,EUR,PENDING,invalid-date,DEBIT_CARD,Xena Brown,xena@example.com\n27,300.00,GBP,PENDING,2024-13-45T25:61:99,CREDIT_CARD,Yara Davis,yara@example.com\n```\n\n\u003cbr\u003e\n\n### 3.1.5) Invalid payment types\n\n```\nid,amount,currency,status,paymentDate,paymentType,customerName,customerEmail\n28,100.00,USD,PENDING,2024-03-20T18:00:00,INVALID_TYPE,Zack Wilson,zack@example.com\n29,200.00,EUR,PENDING,2024-03-20T18:05:00,UNKNOWN,Anna Brown,anna@example.com\n30,300.00,GBP,PENDING,2024-03-20T18:10:00,,Bob Davis,bob@example.com\n```\n\n\u003cbr\u003e\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n## Section 4) Reports, Functionality Testing and References\n\n### 4.0) Reports [🔝](#index-)\n\n\u003cdetails\u003e\n   \u003csummary\u003eView details\u003c/summary\u003e\n\n  \u003cbr\u003e\n\nThe system generates three types of output files:\n\n1. **processed_payments.txt**: Contains all valid processed payments with calculated commissions and USD conversion amounts.\n2. **rejected_payments.txt**: Contains payments that failed validation along with the corresponding error message.\n3. **payment_report.txt**: General report with processing statistics including currency statistics, payment type statistics, rejection reasons, and total amounts.\n\n\u003cbr\u003e\n\n\u003c/details\u003e\n\n### 4.1) Functionality Test [🔝](#index-)\n\n\u003cdetails\u003e\n   \u003csummary\u003eView details\u003c/summary\u003e\n\n  \u003cbr\u003e\n\n#### [Watch video](https://www.youtube.com/watch?v=zPqArsLfH7o)\n\n  \u003ca href=\"https://www.youtube.com/watch?v=zPqArsLfH7o\"\u003e\n    \u003cimg src=\"./src/main/resources/static/img/Spring_Batch_Processing_Payments_yt.png\" /\u003e\n  \u003c/a\u003e \n\n\u003cbr\u003e\n\n\u003c/details\u003e\n\n### 4.2) Contributing [🔝](#index-)\n\n\u003cdetails\u003e\n   \u003csummary\u003eView details\u003c/summary\u003e\n\n  \u003cbr\u003e\n\n1. Fork the project\n2. Create your feature branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n\u003cbr\u003e\n\n\u003c/details\u003e\n\n### 4.3) License [🔝](#index-)\n\n\u003cdetails\u003e\n   \u003csummary\u003eView details\u003c/summary\u003e\n\n  \u003cbr\u003e\n\nThis project is under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n\u003cbr\u003e\n\n\u003c/details\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandresweitzel%2Fspring_batch_processing_payments","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandresweitzel%2Fspring_batch_processing_payments","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandresweitzel%2Fspring_batch_processing_payments/lists"}