use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum PaymentMethod {
#[serde(rename = "card")]
Card,
#[serde(rename = "card_redirect")]
CardRedirect,
#[serde(rename = "pay_later")]
PayLater,
#[serde(rename = "wallet")]
Wallet,
#[serde(rename = "bank_redirect")]
BankRedirect,
#[serde(rename = "bank_transfer")]
BankTransfer,
#[serde(rename = "crypto")]
Crypto,
#[serde(rename = "bank_debit")]
BankDebit,
#[serde(rename = "reward")]
Reward,
#[serde(rename = "real_time_payment")]
RealTimePayment,
#[serde(rename = "upi")]
Upi,
#[serde(rename = "voucher")]
Voucher,
#[serde(rename = "gift_card")]
GiftCard,
#[serde(rename = "open_banking")]
OpenBanking,
#[serde(rename = "mobile_payment")]
MobilePayment,
}
impl std::fmt::Display for PaymentMethod {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
match self {
Self::Card => write!(f, "card"),
Self::CardRedirect => write!(f, "card_redirect"),
Self::PayLater => write!(f, "pay_later"),
Self::Wallet => write!(f, "wallet"),
Self::BankRedirect => write!(f, "bank_redirect"),
Self::BankTransfer => write!(f, "bank_transfer"),
Self::Crypto => write!(f, "crypto"),
Self::BankDebit => write!(f, "bank_debit"),
Self::Reward => write!(f, "reward"),
Self::RealTimePayment => write!(f, "real_time_payment"),
Self::Upi => write!(f, "upi"),
Self::Voucher => write!(f, "voucher"),
Self::GiftCard => write!(f, "gift_card"),
Self::OpenBanking => write!(f, "open_banking"),
Self::MobilePayment => write!(f, "mobile_payment"),
}
}
}
impl Default for PaymentMethod {
fn default() -> PaymentMethod {
Self::Card
}
}