PaymentType.java

package com.ctrlbuy.webshop.service;

public enum PaymentType {
    CREDIT_CARD("Credit Card Payment", true),
    DEBIT_CARD("Debit Card Payment", true),
    PAYPAL("PayPal Payment", false),
    STRIPE("Stripe Payment", true),
    BANK_TRANSFER("Bank Transfer", false),
    CASH("Cash Payment", false),
    CRYPTOCURRENCY("Cryptocurrency Payment", false),
    MOBILE_PAYMENT("Mobile Payment", true),
    GIFT_CARD("Gift Card Payment", false);

    private final String displayName;
    private final boolean requiresCardDetails;

    PaymentType(String displayName, boolean requiresCardDetails) {
        this.displayName = displayName;
        this.requiresCardDetails = requiresCardDetails;
    }

    public String getDisplayName() {
        return displayName;
    }

    public boolean requiresCardDetails() {
        return requiresCardDetails;
    }

    // Helper methods
    public boolean isCardPayment() {
        return this == CREDIT_CARD || this == DEBIT_CARD;
    }

    public boolean isDigitalWallet() {
        return this == PAYPAL || this == MOBILE_PAYMENT;
    }

    public boolean isInstantPayment() {
        return requiresCardDetails || isDigitalWallet();
    }

    public boolean requiresManualVerification() {
        return this == BANK_TRANSFER || this == CRYPTOCURRENCY;
    }
}