This version of the module is deprecated: Renamed to cstoooo/moonpay_flow
MoonBit ISO 20022 pain.001 validator.
scripts/check.sh
# Or run the commands directly:
moon check
moon test
moon run cmd/main -- fixtures/valid_pain001.xml
moon run cmd/main -- --format json fixtures/valid_pain001.xml
moon run cmd/main -- --format markdown fixtures/invalid_pain001.xml
moon run cmd/main -- fixtures/valid_pain002.xml
moon run cmd/main -- fixtures/valid_camt053.xml
moon run cmd/main -- reconcile fixtures/valid_pain001.xml fixtures/valid_pain002.xml
moon run cmd/main -- --list-rules
moon run cmd/main -- lifecycle fixtures/lifecycle_pain001.xml fixtures/lifecycle_pain002.xml fixtures/lifecycle_camt053.xmlpub(all) suberror XmlParseError {
XmlParseError(String)
}pub struct Decimal {
minor_units : Int
scale : Int
}pub struct Diagnostic {
code : String
path : String
message : String
}pub struct LifecycleCase {
end_to_end_id : String
amount : Decimal
currency : String
status : String?
statement_amount : Decimal?
statement_currency : String?
state : LifecycleState
action : String
}pub struct LifecycleReport {
cases : Array[LifecycleCase]
orphan_statuses : Array[String]
orphan_statements : Array[String]
}pub(all) enum LifecycleState {
Settled
SettledNotPosted
Rejected
Pending
MissingStatus
StatementMismatch
StatementBeforeFinalStatus
}pub struct MessageInfo {
kind : MessageKind
message_id : String?
creation_datetime : String?
original_message_id : String?
entry_count : Int
}pub(all) enum MessageKind {
Pain001
Pain002
Pacs008
Pacs002
Camt053
Unknown
}pub struct Pain001Summary {
message_id : String?
creation_datetime : String?
payment_instruction_count : Int
transaction_count : Int
}pub struct StatementRecord {
end_to_end_id : String
amount : Decimal
currency : String
credit_debit : String
}fn lifecycle_report(pain_xml : String, status_xml : String, statement_xml : String) -> LifecycleReport raise XmlParseErrorfn reconcile_pain001_status(pain_xml : String, status_xml : String) -> ReconciliationReport raise XmlParseError