From 9d097a4f7d9d01728a911bc7d00460c96cef33fe Mon Sep 17 00:00:00 2001 From: Aditya Agrawal Date: Thu, 30 Oct 2025 17:05:27 +0530 Subject: [PATCH 1/2] feat: added payment gateway system --- .../PaymentGatewayApplication.cpp | 313 ++++++++++++++++++ Src/Payment_gateway_system/compile.bat | 17 + .../payment_gateway.exe | Bin 0 -> 72639 bytes 3 files changed, 330 insertions(+) create mode 100644 Src/Payment_gateway_system/PaymentGatewayApplication.cpp create mode 100644 Src/Payment_gateway_system/compile.bat create mode 100644 Src/Payment_gateway_system/payment_gateway.exe diff --git a/Src/Payment_gateway_system/PaymentGatewayApplication.cpp b/Src/Payment_gateway_system/PaymentGatewayApplication.cpp new file mode 100644 index 0000000..6440cfd --- /dev/null +++ b/Src/Payment_gateway_system/PaymentGatewayApplication.cpp @@ -0,0 +1,313 @@ +#include +#include +#include +#include + + +using namespace std; + +// ---------------------------- +// Data structure for payment details +// ---------------------------- +struct PaymentRequest { + string sender; + string reciever; + double amount; + string currency; + + PaymentRequest(const string& sender, const string& reciever, double amt, const string& curr) { + this->sender = sender; + this->reciever = reciever; + this->amount = amt; + this->currency = curr; + } +}; + +// ---------------------------- +// Banking System interface and implementations (Strategy for actual payment logic) +// ---------------------------- +class BankingSystem { +public: + virtual bool processPayment(double amount) = 0; + virtual ~BankingSystem() {} +}; + +class PaytmBankingSystem : public BankingSystem { +public: + PaytmBankingSystem() {} + bool processPayment(double amount) override { + // Simulate 20% success + int r = rand() % 100; + return r < 80; + } +}; + +class RazorpayBankingSystem : public BankingSystem { +public: + RazorpayBankingSystem() {} + bool processPayment(double amount) override { + cout << "[BankingSystem-Razorpay] Processing payment of " << amount << "...\n"; + // Simulate 90% success + int r = rand() % 100; + return r < 90; + } +}; + +// ---------------------------- +// Abstract base class for Payment Gateway (Template Method Pattern) +// ---------------------------- +class PaymentGateway { +protected: + BankingSystem* bankingSystem; +public: + PaymentGateway() { + bankingSystem = nullptr; + } + virtual ~PaymentGateway() { + delete bankingSystem; + } + + // Template method defining the standard payment flow + virtual bool processPayment(PaymentRequest* request) { + if (!validatePayment(request)) { + cout << "[PaymentGateway] Validation failed for " << request->sender << ".\n"; + return false; + } + if (!initiatePayment(request)) { + cout << "[PaymentGateway] Initiation failed for " << request->sender << ".\n"; + return false; + } + if (!confirmPayment(request)) { + cout << "[PaymentGateway] Confirmation failed for " << request->sender << ".\n"; + return false; + } + return true; + } + + // Steps to be implemented by concrete gateways + virtual bool validatePayment(PaymentRequest* request) = 0; + virtual bool initiatePayment(PaymentRequest* request) = 0; + virtual bool confirmPayment(PaymentRequest* request) = 0; +}; + +// ---------------------------- +// Concrete Payment Gateway for Paytm +// ---------------------------- +class PaytmGateway : public PaymentGateway { +public: + PaytmGateway() { + bankingSystem = new PaytmBankingSystem(); + } + bool validatePayment(PaymentRequest* request) override { + cout << "[Paytm] Validating payment for " << request->sender << ".\n"; + + if (request->amount <= 0 || request->currency != "INR") { + return false; + } + return true; + } + bool initiatePayment(PaymentRequest* request) override { + cout << "[Paytm] Initiating payment of " << request->amount + << " " << request->currency << " for " << request->sender << ".\n"; + + return bankingSystem->processPayment(request->amount); + } + bool confirmPayment(PaymentRequest* request) override { + cout << "[Paytm] Confirming payment for " << request->sender << ".\n"; + + // Confirmation always succeeds in this simulation + return true; + } +}; + +// ---------------------------- +// Concrete Payment Gateway for Razorpay +// ---------------------------- +class RazorpayGateway : public PaymentGateway { +public: + RazorpayGateway() { + bankingSystem = new RazorpayBankingSystem(); + } + bool validatePayment(PaymentRequest* request) override { + cout << "[Razorpay] Validating payment for " << request->sender << ".\n"; + + if (request->amount <= 0) { + return false; + } + return true; + } + bool initiatePayment(PaymentRequest* request) override { + cout << "[Razorpay] Initiating payment of " << request->amount + << " " << request->currency << " for " << request->sender << ".\n"; + + return bankingSystem->processPayment(request->amount); + + } + bool confirmPayment(PaymentRequest* request) override { + cout << "[Razorpay] Confirming payment for " << request->sender << ".\n"; + + // Confirmation always succeeds in this simulation + return true; + } +}; + +// ---------------------------- +// Proxy class that wraps a PaymentGateway to add retries (Proxy Pattern) +// ---------------------------- +class PaymentGatewayProxy : public PaymentGateway { + PaymentGateway* realGateway; + int retries; +public: + PaymentGatewayProxy(PaymentGateway* gateway, int maxRetries) { + realGateway = gateway; + retries = maxRetries; + } + ~PaymentGatewayProxy() { + delete realGateway; + } + bool processPayment(PaymentRequest* request) override { + bool result = false; + for (int attempt = 0; attempt < retries; ++attempt) { + if (attempt > 0) { + cout << "[Proxy] Retrying payment (attempt " << (attempt+1) + << ") for " << request->sender << ".\n"; + } + result = realGateway->processPayment(request); + if (result) break; + } + if (!result) { + cout << "[Proxy] Payment failed after " << (retries) + << " attempts for " << request->sender << ".\n"; + } + return result; + } + bool validatePayment(PaymentRequest* request) override { + return realGateway->validatePayment(request); + } + bool initiatePayment(PaymentRequest* request) override { + return realGateway->initiatePayment(request); + } + bool confirmPayment(PaymentRequest* request) override { + return realGateway->confirmPayment(request); + } +}; + +// ---------------------------- +// Gateway Factory for creating gateway (Singleton) +// ---------------------------- +enum class GatewayType { + PAYTM, + RAZORPAY +}; + +class GatewayFactory { +private: + static GatewayFactory instance; + // Private constructor and delete copy/assignment to ensure no one can clone or reassign your singleton. + GatewayFactory() {} + GatewayFactory(const GatewayFactory&) = delete; + GatewayFactory& operator=(const GatewayFactory&) = delete; + +public: + static GatewayFactory& getInstance() { + return instance; + } + PaymentGateway* getGateway(GatewayType type) { + if (type == GatewayType::PAYTM) { + PaymentGateway* paymentGateway = new PaytmGateway(); + return new PaymentGatewayProxy(paymentGateway, 3); + } else { + PaymentGateway* paymentGateway = new RazorpayGateway(); + return new PaymentGatewayProxy(paymentGateway, 1); + } + } +}; + +// define static instance +GatewayFactory GatewayFactory::instance; + +// ---------------------------- +// Unified API service (Singleton) +// ---------------------------- +class PaymentService { +private: + static PaymentService instance; + PaymentGateway* gateway; + + PaymentService() { + gateway = nullptr; + } + ~PaymentService() { + delete gateway; + } + + // Private constructor and delete copy/assignment to ensure no one can clone or reassign your singleton. + PaymentService(const PaymentService&) = delete; + PaymentService& operator=(const PaymentService&) = delete; + +public: + static PaymentService& getInstance() { + return instance; + } + void setGateway(PaymentGateway* g) { + if (gateway) delete gateway; + gateway = g; + } + bool processPayment(PaymentRequest* request) { + if (!gateway) { + cout << "[PaymentService] No payment gateway selected.\n"; + return false; + } + return gateway->processPayment(request); + } +}; + +PaymentService PaymentService::instance; + +// ---------------------------- +// Controller class for all client requests (Singleton) +// ---------------------------- +class PaymentController { +private: + static PaymentController instance; + PaymentController() {} + PaymentController(const PaymentController&) = delete; + PaymentController& operator=(const PaymentController&) = delete; +public: + static PaymentController& getInstance() { + return instance; + } + bool handlePayment(GatewayType type, PaymentRequest* req) { + PaymentGateway* paymentGateway = GatewayFactory::getInstance().getGateway(type); + PaymentService::getInstance().setGateway(paymentGateway); + return PaymentService::getInstance().processPayment(req); + } +}; + +PaymentController PaymentController::instance; + +// ---------------------------- +// Main: Client code now goes through controller +// ---------------------------- +int main() { + + srand(static_cast(time(nullptr))); + + PaymentRequest* req1 = new PaymentRequest("Aditya", "Shubham", 1000.0, "INR"); + + cout << "Processing via Paytm\n"; + cout << "------------------------------\n"; + bool res1 = PaymentController::getInstance().handlePayment(GatewayType::PAYTM, req1); + cout << "Result: " << (res1 ? "SUCCESS" : "FAIL") << "\n"; + cout << "------------------------------\n\n"; + + PaymentRequest* req2 = new PaymentRequest("Shubham", "Aditya", 500.0, "USD"); + + cout << "Processing via Razorpay\n"; + cout << "------------------------------\n"; + bool res2 = PaymentController::getInstance().handlePayment(GatewayType::RAZORPAY, req2); + cout << "Result: " << (res2 ? "SUCCESS" : "FAIL") << "\n"; + cout << "------------------------------\n"; + + return 0; +} diff --git a/Src/Payment_gateway_system/compile.bat b/Src/Payment_gateway_system/compile.bat new file mode 100644 index 0000000..cb7bc44 --- /dev/null +++ b/Src/Payment_gateway_system/compile.bat @@ -0,0 +1,17 @@ +@echo off +echo C++ Payment Gateway Application... + +REM Compile the main program +g++ -std=c++11 -o payment_gateway PaymentGatewayApplication.cpp + +if %errorlevel% equ 0 ( + echo Compilation successful! + echo Running the Payment Gateway application... + echo. + payment_gateway.exe +) else ( + echo Compilation failed! + echo Please check for any syntax errors. +) + +pause diff --git a/Src/Payment_gateway_system/payment_gateway.exe b/Src/Payment_gateway_system/payment_gateway.exe new file mode 100644 index 0000000000000000000000000000000000000000..662c9f1c68c0a145e75decc46bfd0510ca159c5e GIT binary patch literal 72639 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 literal 0 HcmV?d00001 From 4a073236a0e2507b3863a2affa4267b9cbeb7582 Mon Sep 17 00:00:00 2001 From: Aditya Agrawal Date: Thu, 30 Oct 2025 17:25:17 +0530 Subject: [PATCH 2/2] feat: added discount coupon system --- Src/Discount_coupon_system/DiscountCoupon.cpp | 460 ++++++++++++++++++ Src/Discount_coupon_system/compile.bat | 17 + .../discount_coupon.exe | Bin 0 -> 189375 bytes 3 files changed, 477 insertions(+) create mode 100644 Src/Discount_coupon_system/DiscountCoupon.cpp create mode 100644 Src/Discount_coupon_system/compile.bat create mode 100644 Src/Discount_coupon_system/discount_coupon.exe diff --git a/Src/Discount_coupon_system/DiscountCoupon.cpp b/Src/Discount_coupon_system/DiscountCoupon.cpp new file mode 100644 index 0000000..b5b4695 --- /dev/null +++ b/Src/Discount_coupon_system/DiscountCoupon.cpp @@ -0,0 +1,460 @@ +#include +#include +#include +#include +#include +#include + +using namespace std; + +// ---------------------------- +// Discount Strategy (Strategy Pattern) +// ---------------------------- +class DiscountStrategy { +public: + virtual ~DiscountStrategy() {} + virtual double calculate(double baseAmount) = 0; +}; + +class FlatDiscountStrategy : public DiscountStrategy { +private: + double amount; +public: + FlatDiscountStrategy(double amt) { + amount = amt; + } + double calculate(double baseAmount) override { + return min(amount, baseAmount); + } +}; + +class PercentageDiscountStrategy : public DiscountStrategy { +private: + double percent; +public: + PercentageDiscountStrategy(double pct) { + percent = pct; + } + double calculate(double baseAmount) override { + return (percent / 100.0) * baseAmount; + } +}; + +class PercentageWithCapStrategy : public DiscountStrategy { +private: + double percent; + double cap; +public: + PercentageWithCapStrategy(double pct, double capVal) { + percent = pct; + cap = capVal; + } + double calculate(double baseAmount) override { + double disc = (percent / 100.0) * baseAmount; + if (disc > cap) { + return cap; + } + return disc; + } +}; + +enum StrategyType { + FLAT, + PERCENT, + PERCENT_WITH_CAP +}; + +// ---------------------------- +// DiscountStrategyManager (Singleton) +// ---------------------------- +class DiscountStrategyManager { +private: + static DiscountStrategyManager* instance; + DiscountStrategyManager() {} + DiscountStrategyManager(const DiscountStrategyManager&) = delete; + DiscountStrategyManager& operator=(const DiscountStrategyManager&) = delete; +public: + static DiscountStrategyManager* getInstance() { + if (!instance) { + instance = new DiscountStrategyManager(); + } + return instance; + } + DiscountStrategy* getStrategy(StrategyType type, double param1, double param2 = 0.0) const { + if (type == StrategyType::FLAT) { + return new FlatDiscountStrategy(param1); + } + if (type == StrategyType::PERCENT) { + return new PercentageDiscountStrategy(param1); + } + if (type == StrategyType::PERCENT_WITH_CAP) { + return new PercentageWithCapStrategy(param1, param2); + } + return nullptr; + } +}; +// Initialize static member +DiscountStrategyManager* DiscountStrategyManager::instance = nullptr; + +// ---------------------------- +// Assume existing Cart and Product classes +// ---------------------------- +class Product { +private: + string name; + string category; + double price; +public: + Product(string name, string category, double price) { + this->name = name; + this->category = category; + this->price = price; + } + string getName() { + return name; + } + string getCategory() const { + return category; + } + double getPrice() { + return price; + } +}; + +class CartItem { +private: + Product* product; + int quantity; +public: + CartItem(Product* prod, int qty) { + product = prod; + quantity = qty; + } + double itemTotal() { + return product->getPrice() * quantity; + } + const Product* getProduct() { + return product; + } +}; + +class Cart { +private: + vector items; + double originalTotal; + double currentTotal; + bool loyaltyMember; + string paymentBank; +public: + Cart() { + originalTotal = 0.0; + currentTotal = 0.0; + loyaltyMember = false; + paymentBank = ""; + } + + void addProduct(Product* prod, int qty = 1) { + CartItem* item = new CartItem(prod, qty); + items.push_back(item); + originalTotal += item->itemTotal(); + currentTotal += item->itemTotal(); + } + + double getOriginalTotal() { + return originalTotal; + } + + double getCurrentTotal() { + return currentTotal; + } + + void applyDiscount(double d) { + currentTotal -= d; + if (currentTotal < 0) { + currentTotal = 0; + } + } + + void setLoyaltyMember(bool member) { + loyaltyMember = member; + } + + bool isLoyaltyMember() { + return loyaltyMember; + } + + void setPaymentBank(string bank) { + paymentBank = bank; + } + + string getPaymentBank() { + return paymentBank; + } + + vector getItems() { + return items; + } +}; + +// ---------------------------- +// Coupon base class (Chain of Responsibility) +// ---------------------------- +class Coupon { +private: + Coupon* next; +public: + Coupon() { + next = nullptr; + } + virtual ~Coupon() { + if (next) { + delete next; + } + } + void setNext(Coupon* nxt) { + next = nxt; + } + Coupon* getNext() { + return next; + } + + void applyDiscount(Cart* cart) { + if (isApplicable(cart)) { + double discount = getDiscount(cart); + cart->applyDiscount(discount); + cout << name() << " applied: " << discount << endl; + if (!isCombinable()) { + return; + } + } + if (next) { + next->applyDiscount(cart); + } + } + virtual bool isApplicable(Cart* cart) = 0; + virtual double getDiscount(Cart* cart) = 0; + virtual bool isCombinable() { + return true; + } + virtual string name() = 0; +}; + +// ---------------------------- +// Concrete Coupons +// ---------------------------- +class SeasonalOffer : public Coupon { +private: + double percent; + string category; + DiscountStrategy* strat; +public: + SeasonalOffer(double pct, string cat) { + percent = pct; + category = cat; + strat = DiscountStrategyManager::getInstance()->getStrategy(StrategyType::PERCENT, percent); + } + ~SeasonalOffer() { + delete strat; + } + bool isApplicable(Cart* cart) override { + for (CartItem* item : cart->getItems()) { + if (item->getProduct()->getCategory() == category) { + return true; + } + } + return false; + } + double getDiscount(Cart* cart) override { + double subtotal = 0.0; + for (CartItem* item : cart->getItems()) { + if (item->getProduct()->getCategory() == category) { + subtotal += item->itemTotal(); + } + } + return strat->calculate(subtotal); + } + bool isCombinable() override { + return true; + } + string name() override { + return "Seasonal Offer " + to_string((int)percent) + " % off " + category; + } +}; + +class LoyaltyDiscount : public Coupon { +private: + double percent; + DiscountStrategy* strat; +public: + LoyaltyDiscount(double pct) { + percent = pct; + strat = DiscountStrategyManager::getInstance()->getStrategy(StrategyType::PERCENT, percent); + } + ~LoyaltyDiscount() { + delete strat; + } + bool isApplicable(Cart* cart) override { + return cart->isLoyaltyMember(); + } + double getDiscount(Cart* cart) override { + return strat->calculate(cart->getCurrentTotal()); + } + string name() override { + return "Loyalty Discount " + to_string((int)percent) + "% off"; + } +}; + +class BulkPurchaseDiscount : public Coupon { +private: + double threshold; + double flatOff; + DiscountStrategy* strat; +public: + BulkPurchaseDiscount(double thr, double off) { + threshold = thr; + flatOff = off; + strat = DiscountStrategyManager::getInstance()->getStrategy(StrategyType::FLAT, flatOff); + } + ~BulkPurchaseDiscount() { + delete strat; + } + bool isApplicable(Cart* cart) override { + return cart->getOriginalTotal() >= threshold; + } + double getDiscount(Cart* cart) override { + return strat->calculate(cart->getCurrentTotal()); + } + string name() override { + return "Bulk Purchase Rs " + to_string((int)flatOff) + " off over " + + to_string((int)threshold); + } +}; + +class BankingCoupon : public Coupon { +private: + string bank; + double minSpend; + double percent; + double offCap; + DiscountStrategy* strat; +public: + BankingCoupon(const string& b, double ms, double percent, double offCap) { + bank = b; + minSpend = ms; + this->percent = percent; + this->offCap = percent; + strat = DiscountStrategyManager::getInstance()->getStrategy(StrategyType::PERCENT_WITH_CAP, percent, offCap); + } + ~BankingCoupon() { + delete strat; + } + bool isApplicable(Cart* cart) override { + return cart->getPaymentBank() == bank + && cart->getOriginalTotal() >= minSpend; + } + double getDiscount(Cart* cart) override { + return strat->calculate(cart->getCurrentTotal()); + } + string name() override { + return bank + " Bank Rs " + to_string((int)percent) + " off upto " + to_string((int) offCap); + } +}; + +// ---------------------------- +// CouponManager (Singleton) +// ---------------------------- +class CouponManager { +private: + static CouponManager* instance; + Coupon* head; + CouponManager() { + head = nullptr; + } +public: + static CouponManager* getInstance() { + if (!instance) { + instance = new CouponManager(); + } + return instance; + } + + void registerCoupon(Coupon* coupon) { + if (!head) { + head = coupon; + } else { + Coupon* cur = head; + while (cur->getNext()) { + cur = cur->getNext(); + } + cur->setNext(coupon); + } + } + + vector getApplicable(Cart* cart) const { + vector res; + Coupon* cur = head; + while (cur) { + if (cur->isApplicable(cart)) { + res.push_back(cur->name()); + } + cur = cur->getNext(); + } + return res; + } + + double applyAll(Cart* cart) { + if (head) { + head->applyDiscount(cart); + } + return cart->getCurrentTotal(); + } +}; +// Initialize static instance pointer +CouponManager* CouponManager::instance = nullptr; + +// ---------------------------- +// Main: Client code (heap allocations and pointers) +// ---------------------------- +int main() { + + CouponManager* mgr = CouponManager::getInstance(); + mgr->registerCoupon(new SeasonalOffer(10, "Clothing")); + mgr->registerCoupon(new LoyaltyDiscount(5)); + mgr->registerCoupon(new BulkPurchaseDiscount(1000, 100)); + mgr->registerCoupon(new BankingCoupon("ABC", 2000, 15, 500)); + + Product* p1 = new Product("Winter Jacket", "Clothing", 1000); + Product* p2 = new Product("Smartphone", "Electronics", 20000); + Product* p3 = new Product("Jeans", "Clothing", 1000); + Product* p4 = new Product("Headphones", "Electronics", 2000); + + Cart* cart = new Cart(); + cart->addProduct(p1, 1); + cart->addProduct(p2, 1); + cart->addProduct(p3, 2); + cart->addProduct(p4, 1); + cart->setLoyaltyMember(true); + cart->setPaymentBank("ABC"); + + cout << "Original Cart Total: " << cart->getOriginalTotal() << " Rs" << endl; + + + + vector applicable = mgr->getApplicable(cart); + cout << "Applicable Coupons:" << endl; + for (string name : applicable) { + cout << " - " << name << endl; + } + + double finalTotal = mgr->applyAll(cart); + cout << "Final Cart Total after discounts: " << finalTotal << " Rs" << endl; + + // Cleanup code + delete p1; + delete p2; + delete p3; + delete p4; + delete cart; + + return 0; +} diff --git a/Src/Discount_coupon_system/compile.bat b/Src/Discount_coupon_system/compile.bat new file mode 100644 index 0000000..de6a9ea --- /dev/null +++ b/Src/Discount_coupon_system/compile.bat @@ -0,0 +1,17 @@ +@echo off +echo Compiling C++ Discount Coupon Application... + +REM Compile the main program +g++ -std=c++11 -o discount_coupon DiscountCoupon.cpp + +if %errorlevel% equ 0 ( + echo Compilation successful! + echo Running the Discount Coupon application... + echo. + discount_coupon.exe +) else ( + echo Compilation failed! + echo Please check for any syntax errors. +) + +pause diff --git a/Src/Discount_coupon_system/discount_coupon.exe b/Src/Discount_coupon_system/discount_coupon.exe new file mode 100644 index 0000000000000000000000000000000000000000..f877f6533a2f1eabc8808cb488811c14114db6ed GIT binary patch literal 189375 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

l>MjM#+7RCFa9f{cuPL-8d%+zGxPfUmK&Tihl) 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

u#7cF%NPqmBG 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 literal 0 HcmV?d00001