use crate::tlv::{encode, tag, with_crc_tag};
#[derive(Debug, Clone)]
pub struct TrueMoneySlipVerifyConfig {
pub event_type: String,
pub transaction_id: String,
pub date: String,
}
pub fn true_money_slip_verify(config: TrueMoneySlipVerifyConfig) -> String {
let tag00_data = vec![
tag("00", "01"),
tag("01", "01"),
tag("02", &config.event_type),
tag("03", &config.transaction_id),
tag("04", &config.date),
];
let payload = vec![tag("00", &encode(&tag00_data))];
with_crc_tag(&encode(&payload), "91", false) }
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_true_money_slip_verify() {
let config = TrueMoneySlipVerifyConfig {
event_type: "P2P".to_string(),
transaction_id: "TXN123456789".to_string(),
date: "01012024".to_string(),
};
let result = true_money_slip_verify(config);
assert!(result.contains("00")); assert!(result.contains("91")); assert!(!result.is_empty());
}
#[test]
fn test_true_money_slip_verify_structure() {
let config = TrueMoneySlipVerifyConfig {
event_type: "P2P".to_string(),
transaction_id: "TXN123456789".to_string(),
date: "31122023".to_string(),
};
let result = true_money_slip_verify(config);
assert!(result.starts_with("00"));
assert!(result.contains("9104"));
}
}