xendit 0.0.2

Xendit Rust SDK
Documentation
use std::collections::HashMap;

use serde::Serialize;
use serde_with::skip_serializing_none;

use crate::common::Currency;

use super::RefundReason;

#[skip_serializing_none]
#[derive(Serialize, Clone)]
pub struct CreateRefund {
    payment_request_id: Option<String>,
    invoice_id: Option<String>,
    reference_id: Option<String>,
    amount: Option<f64>,
    currency: Option<Currency>,
    reason: RefundReason,
    metadata: Option<HashMap<String, String>>,
}
impl CreateRefund {
    pub fn new(reason: RefundReason) -> Self {
        Self {
            payment_request_id: None,
            invoice_id: None,
            reference_id: None,
            amount: None,
            currency: None,
            reason,
            metadata: None,
        }
    }
    pub fn get_payment_request_id(&self) -> Option<&String> {
        self.payment_request_id.as_ref()
    }
    pub fn set_payment_request_id(&mut self, payment_request_id: &str) -> &mut Self {
        self.payment_request_id = Some(payment_request_id.to_string());
        self
    }
    pub fn get_invoice_id(&self) -> Option<&String> {
        self.invoice_id.as_ref()
    }
    pub fn set_invoice_id(&mut self, invoice_id: &str) -> &mut Self {
        self.invoice_id = Some(invoice_id.to_string());
        self
    }
    pub fn get_reference_id(&self) -> Option<&String> {
        self.reference_id.as_ref()
    }
    pub fn set_reference_id(&mut self, reference_id: &str) -> &mut Self {
        self.reference_id = Some(reference_id.to_string());
        self
    }
    pub fn get_amount(&self) -> Option<&f64> {
        self.amount.as_ref()
    }
    pub fn set_amount(&mut self, amount: f64) -> &mut Self {
        self.amount = Some(amount);
        self
    }
    pub fn get_currency(&self) -> Option<&Currency> {
        self.currency.as_ref()
    }
    pub fn set_currency(&mut self, currency: Currency) -> &mut Self {
        self.currency = Some(currency);
        self
    }
    pub fn get_reason(&self) -> &RefundReason {
        &self.reason
    }
    pub fn set_reason(&mut self, reason: RefundReason) -> &mut Self {
        self.reason = reason;
        self
    }
    pub fn get_metadata(&self) -> Option<&HashMap<String, String>> {
        self.metadata.as_ref()
    }
    pub fn set_metadata(&mut self, metadata: HashMap<String, String>) -> &mut Self {
        self.metadata = Some(metadata);
        self
    }
    pub fn build(&mut self) -> CreateRefund {
        self.clone()
    }
}