diff --git a/fluxapay/src/dispute_test.rs b/fluxapay/src/dispute_test.rs index 222b300..8c65ace 100644 --- a/fluxapay/src/dispute_test.rs +++ b/fluxapay/src/dispute_test.rs @@ -41,7 +41,7 @@ fn test_create_dispute() { let deposit_address = Address::generate(&env); let expires_at = env.ledger().timestamp() + 3600; - payment_client.grant_role(&admin, &Symbol::new(&env, "MERCHANT"), &merchant); payment_client.create_payment( + payment_client.payment_grant_role(&admin, &Symbol::new(&env, "MERCHANT"), &merchant); payment_client.create_payment( &payment_id, &merchant, &amount, @@ -53,7 +53,7 @@ fn test_create_dispute() { // Verify payment let transaction_hash = BytesN::<32>::random(&env); let oracle = Address::generate(&env); - payment_client.grant_role(&admin, &Symbol::new(&env, "ORACLE"), &oracle); + payment_client.payment_grant_role(&admin, &Symbol::new(&env, "ORACLE"), &oracle); payment_client.verify_payment(&oracle, &payment_id, &transaction_hash, &customer, &amount); // Create dispute @@ -92,7 +92,7 @@ fn test_review_dispute() { let deposit_address = Address::generate(&env); let expires_at = env.ledger().timestamp() + 3600; - payment_client.grant_role(&admin, &Symbol::new(&env, "MERCHANT"), &merchant); payment_client.create_payment( + payment_client.payment_grant_role(&admin, &Symbol::new(&env, "MERCHANT"), &merchant); payment_client.create_payment( &payment_id, &merchant, &amount, @@ -103,7 +103,7 @@ fn test_review_dispute() { let transaction_hash = BytesN::<32>::random(&env); let oracle = Address::generate(&env); - payment_client.grant_role(&admin, &Symbol::new(&env, "ORACLE"), &oracle); + payment_client.payment_grant_role(&admin, &Symbol::new(&env, "ORACLE"), &oracle); payment_client.verify_payment(&oracle, &payment_id, &transaction_hash, &customer, &amount); // Create dispute @@ -142,7 +142,7 @@ fn test_resolve_dispute_with_refund() { let deposit_address = Address::generate(&env); let expires_at = env.ledger().timestamp() + 3600; - payment_client.grant_role(&admin, &Symbol::new(&env, "MERCHANT"), &merchant); payment_client.create_payment( + payment_client.payment_grant_role(&admin, &Symbol::new(&env, "MERCHANT"), &merchant); payment_client.create_payment( &payment_id, &merchant, &amount, @@ -153,7 +153,7 @@ fn test_resolve_dispute_with_refund() { let transaction_hash = BytesN::<32>::random(&env); let oracle = Address::generate(&env); - payment_client.grant_role(&admin, &Symbol::new(&env, "ORACLE"), &oracle); + payment_client.payment_grant_role(&admin, &Symbol::new(&env, "ORACLE"), &oracle); payment_client.verify_payment(&oracle, &payment_id, &transaction_hash, &customer, &amount); // Register payment with refund manager for amount validation @@ -205,7 +205,7 @@ fn test_reject_dispute() { let deposit_address = Address::generate(&env); let expires_at = env.ledger().timestamp() + 3600; - payment_client.grant_role(&admin, &Symbol::new(&env, "MERCHANT"), &merchant); payment_client.create_payment( + payment_client.payment_grant_role(&admin, &Symbol::new(&env, "MERCHANT"), &merchant); payment_client.create_payment( &payment_id, &merchant, &amount, @@ -216,7 +216,7 @@ fn test_reject_dispute() { let transaction_hash = BytesN::<32>::random(&env); let oracle = Address::generate(&env); - payment_client.grant_role(&admin, &Symbol::new(&env, "ORACLE"), &oracle); + payment_client.payment_grant_role(&admin, &Symbol::new(&env, "ORACLE"), &oracle); payment_client.verify_payment(&oracle, &payment_id, &transaction_hash, &customer, &amount); // Create dispute @@ -253,7 +253,7 @@ fn test_get_payment_disputes() { let deposit_address = Address::generate(&env); let expires_at = env.ledger().timestamp() + 3600; - payment_client.grant_role(&admin, &Symbol::new(&env, "MERCHANT"), &merchant); payment_client.create_payment( + payment_client.payment_grant_role(&admin, &Symbol::new(&env, "MERCHANT"), &merchant); payment_client.create_payment( &payment_id, &merchant, &amount, @@ -264,7 +264,7 @@ fn test_get_payment_disputes() { let transaction_hash = BytesN::<32>::random(&env); let oracle = Address::generate(&env); - payment_client.grant_role(&admin, &Symbol::new(&env, "ORACLE"), &oracle); + payment_client.payment_grant_role(&admin, &Symbol::new(&env, "ORACLE"), &oracle); payment_client.verify_payment(&oracle, &payment_id, &transaction_hash, &customer, &amount); // Create multiple disputes @@ -306,7 +306,7 @@ fn test_dispute_invalid_amount() { let deposit_address = Address::generate(&env); let expires_at = env.ledger().timestamp() + 3600; - payment_client.grant_role(&admin, &Symbol::new(&env, "MERCHANT"), &merchant); payment_client.create_payment( + payment_client.payment_grant_role(&admin, &Symbol::new(&env, "MERCHANT"), &merchant); payment_client.create_payment( &payment_id, &merchant, &amount, @@ -343,7 +343,7 @@ fn test_resolve_dispute_with_only_operator_auth() { let payment_id = String::from_str(&env, "pay_auth_test"); let amount = 500i128; - payment_client.grant_role(&admin, &Symbol::new(&env, "MERCHANT"), &merchant); payment_client.create_payment( + payment_client.payment_grant_role(&admin, &Symbol::new(&env, "MERCHANT"), &merchant); payment_client.create_payment( &payment_id, &merchant, &amount, @@ -353,7 +353,7 @@ fn test_resolve_dispute_with_only_operator_auth() { ); let oracle = Address::generate(&env); - payment_client.grant_role(&admin, &Symbol::new(&env, "ORACLE"), &oracle); + payment_client.payment_grant_role(&admin, &Symbol::new(&env, "ORACLE"), &oracle); let tx_hash = BytesN::<32>::random(&env); payment_client.verify_payment(&oracle, &payment_id, &tx_hash, &customer, &amount); diff --git a/fluxapay/src/integration_test.rs b/fluxapay/src/integration_test.rs index d79dbe1..fe71176 100644 --- a/fluxapay/src/integration_test.rs +++ b/fluxapay/src/integration_test.rs @@ -65,7 +65,7 @@ fn test_happy_path_flow() { let amount = 1000i128; let expires_at = env.ledger().timestamp() + 3600; - payment_client.grant_role(&admin, &Symbol::new(&env, "MERCHANT"), &merchant); payment_client.create_payment( + payment_client.payment_grant_role(&admin, &Symbol::new(&env, "MERCHANT"), &merchant); payment_client.create_payment( &payment_id, &merchant, &amount, @@ -76,7 +76,7 @@ fn test_happy_path_flow() { let tx_hash = BytesN::<32>::random(&env); let oracle = Address::generate(&env); - payment_client.grant_role(&admin, &Symbol::new(&env, "ORACLE"), &oracle); + payment_client.payment_grant_role(&admin, &Symbol::new(&env, "ORACLE"), &oracle); payment_client.verify_payment(&oracle, &payment_id, &tx_hash, &customer, &amount); let payment_info = payment_client.get_payment(&payment_id); @@ -122,11 +122,11 @@ fn test_settlement_path() { let treasury = Address::generate(&env); let operator = Address::generate(&env); - payment_client.grant_role(&admin, &Symbol::new(&env, "SETTLEMENT_OPERATOR"), &operator); + payment_client.payment_grant_role(&admin, &Symbol::new(&env, "SETTLEMENT_OPERATOR"), &operator); let payment_id = String::from_str(&env, "PAY_SETTLE"); let amount = 2000i128; - payment_client.grant_role(&admin, &Symbol::new(&env, "MERCHANT"), &merchant); payment_client.create_payment( + payment_client.payment_grant_role(&admin, &Symbol::new(&env, "MERCHANT"), &merchant); payment_client.create_payment( &payment_id, &merchant, &amount, @@ -136,7 +136,7 @@ fn test_settlement_path() { ); let oracle = Address::generate(&env); - payment_client.grant_role(&admin, &Symbol::new(&env, "ORACLE"), &oracle); + payment_client.payment_grant_role(&admin, &Symbol::new(&env, "ORACLE"), &oracle); payment_client.verify_payment( &oracle, &payment_id, @@ -165,7 +165,7 @@ fn test_failure_and_expiration_path() { let amount = 500i128; let expires_at = env.ledger().timestamp() + 100; - payment_client.grant_role(&admin, &Symbol::new(&env, "MERCHANT"), &merchant); payment_client.create_payment( + payment_client.payment_grant_role(&admin, &Symbol::new(&env, "MERCHANT"), &merchant); payment_client.create_payment( &payment_id, &merchant, &amount, diff --git a/fluxapay/src/invoice.rs b/fluxapay/src/invoice.rs new file mode 100644 index 0000000..629c817 --- /dev/null +++ b/fluxapay/src/invoice.rs @@ -0,0 +1,386 @@ +use soroban_sdk::{contract, contracterror, contractimpl, contracttype, Address, Env, Symbol}; + +#[contract] +pub struct InvoiceContract; + +#[contracttype] +#[derive(Clone, Debug, Eq, PartialEq)] +pub enum InvoiceStatus { + Draft, + Issued, + Paid, + Cancelled, +} + +#[contracttype] +#[derive(Clone, Debug, Eq, PartialEq)] +pub struct Invoice { + pub invoice_id: Symbol, + pub merchant_id: Address, + pub amount: i128, + pub currency: Symbol, + pub due_date: u64, + pub status: InvoiceStatus, + pub payment_id: Option, +} + +#[contracttype] +pub enum DataKey { + Invoice(Symbol), + Admin, + PaymentProcessor, +} + +#[contracterror] +#[derive(Copy, Clone, Debug, Eq, PartialEq, PartialOrd, Ord)] +#[repr(u32)] +pub enum InvoiceError { + NotFound = 1, + AlreadyExists = 2, + Unauthorized = 3, + InvalidStatus = 4, + AlreadyPaid = 5, +} + +#[contractimpl] +impl InvoiceContract { + pub fn invoice_initialize(env: Env, admin: Address, payment_processor: Address) { + env.storage() + .persistent() + .set(&DataKey::Admin, &admin); + env.storage() + .persistent() + .set(&DataKey::PaymentProcessor, &payment_processor); + } + + pub fn invoice_get_admin(env: Env) -> Option
{ + env.storage().persistent().get(&DataKey::Admin) + } + + pub fn invoice_get_payment_processor(env: Env) -> Option
{ + env.storage().persistent().get(&DataKey::PaymentProcessor) + } + + pub fn create_invoice( + env: Env, + merchant_id: Address, + invoice_id: Symbol, + amount: i128, + currency: Symbol, + due_date: u64, + ) -> Result { + merchant_id.require_auth(); + + let key = DataKey::Invoice(invoice_id.clone()); + if env.storage().persistent().has(&key) { + return Err(InvoiceError::AlreadyExists); + } + + let invoice = Invoice { + invoice_id: invoice_id.clone(), + merchant_id: merchant_id.clone(), + amount, + currency, + due_date, + status: InvoiceStatus::Draft, + payment_id: None, + }; + + env.storage().persistent().set(&key, &invoice); + + Ok(invoice) + } + + pub fn issue_invoice(env: Env, invoice_id: Symbol) -> Result<(), InvoiceError> { + let key = DataKey::Invoice(invoice_id.clone()); + let mut invoice: Invoice = env + .storage() + .persistent() + .get(&key) + .ok_or(InvoiceError::NotFound)?; + + invoice.merchant_id.require_auth(); + + if invoice.status != InvoiceStatus::Draft { + return Err(InvoiceError::InvalidStatus); + } + + invoice.status = InvoiceStatus::Issued; + env.storage().persistent().set(&key, &invoice); + + env.events().publish( + ( + Symbol::new(&env, "INVOICE"), + Symbol::new(&env, "ISSUED"), + ), + invoice_id.clone(), + ); + + Ok(()) + } + + pub fn mark_paid( + env: Env, + invoice_id: Symbol, + payment_id: Symbol, + ) -> Result<(), InvoiceError> { + let processor: Address = env + .storage() + .persistent() + .get(&DataKey::PaymentProcessor) + .ok_or(InvoiceError::Unauthorized)?; + processor.require_auth(); + + let key = DataKey::Invoice(invoice_id.clone()); + let mut invoice: Invoice = env + .storage() + .persistent() + .get(&key) + .ok_or(InvoiceError::NotFound)?; + + if invoice.payment_id.is_some() { + return Err(InvoiceError::AlreadyPaid); + } + + if invoice.status != InvoiceStatus::Issued { + return Err(InvoiceError::InvalidStatus); + } + + invoice.status = InvoiceStatus::Paid; + invoice.payment_id = Some(payment_id.clone()); + env.storage().persistent().set(&key, &invoice); + + env.events().publish( + ( + Symbol::new(&env, "INVOICE"), + Symbol::new(&env, "PAID"), + ), + (invoice_id.clone(), payment_id), + ); + + Ok(()) + } + + pub fn cancel_invoice(env: Env, invoice_id: Symbol) -> Result<(), InvoiceError> { + let key = DataKey::Invoice(invoice_id.clone()); + let mut invoice: Invoice = env + .storage() + .persistent() + .get(&key) + .ok_or(InvoiceError::NotFound)?; + + invoice.merchant_id.require_auth(); + + if invoice.status == InvoiceStatus::Paid { + return Err(InvoiceError::InvalidStatus); + } + + if invoice.status != InvoiceStatus::Draft && invoice.status != InvoiceStatus::Issued { + return Err(InvoiceError::InvalidStatus); + } + + invoice.status = InvoiceStatus::Cancelled; + env.storage().persistent().set(&key, &invoice); + + env.events().publish( + ( + Symbol::new(&env, "INVOICE"), + Symbol::new(&env, "CANCELLED"), + ), + invoice_id.clone(), + ); + + Ok(()) + } + + pub fn get_invoice(env: Env, invoice_id: Symbol) -> Result { + let key = DataKey::Invoice(invoice_id); + env.storage() + .persistent() + .get(&key) + .ok_or(InvoiceError::NotFound) + } +} + +#[cfg(test)] +mod test { + use super::*; + use soroban_sdk::testutils::Address as _; + + fn setup(env: &Env) -> (Address, Address, InvoiceContractClient<'_>) { + let contract_id = env.register(InvoiceContract, ()); + let client = InvoiceContractClient::new(env, &contract_id); + let admin = Address::generate(env); + let payment_processor = Address::generate(env); + client.invoice_initialize(&admin, &payment_processor); + (admin, payment_processor, client) + } + + #[test] + fn invoice_initialize_sets_admin_and_payment_processor() { + let env = Env::default(); + env.mock_all_auths(); + let (admin, payment_processor, client) = setup(&env); + assert_eq!(client.invoice_get_admin(), Some(admin)); + assert_eq!(client.invoice_get_payment_processor(), Some(payment_processor)); + } + + #[test] + fn create_invoice_success_and_duplicate_returns_already_exists() { + let env = Env::default(); + env.mock_all_auths(); + let (_, _, client) = setup(&env); + let merchant = Address::generate(&env); + let inv_id = Symbol::new(&env, "INV001"); + let currency = Symbol::new(&env, "USDC"); + let due = env.ledger().timestamp() + 86400; + + let inv = client.create_invoice(&merchant, &inv_id, &100i128, ¤cy, &due); + assert_eq!(inv.status, InvoiceStatus::Draft); + assert_eq!(inv.payment_id, None); + + let err = client.try_create_invoice(&merchant, &inv_id, &100i128, ¤cy, &due); + assert!(matches!( + err, + Err(Ok(InvoiceError::AlreadyExists)) + )); + } + + #[test] + fn issue_invoice_draft_to_issued() { + let env = Env::default(); + env.mock_all_auths(); + let (_, _, client) = setup(&env); + let merchant = Address::generate(&env); + let inv_id = Symbol::new(&env, "INV002"); + let currency = Symbol::new(&env, "USDC"); + let due = env.ledger().timestamp() + 86400; + + client.create_invoice(&merchant, &inv_id, &50i128, ¤cy, &due); + client.issue_invoice(&inv_id); + + let got = client.get_invoice(&inv_id); + assert_eq!(got.status, InvoiceStatus::Issued); + } + + #[test] + fn issue_invoice_wrong_status_returns_invalid_status() { + let env = Env::default(); + env.mock_all_auths(); + let (_, _, client) = setup(&env); + let merchant = Address::generate(&env); + let inv_id = Symbol::new(&env, "INV003"); + let currency = Symbol::new(&env, "USDC"); + let due = env.ledger().timestamp() + 86400; + + client.create_invoice(&merchant, &inv_id, &10i128, ¤cy, &due); + client.issue_invoice(&inv_id); + let err = client.try_issue_invoice(&inv_id); + assert!(matches!(err, Err(Ok(InvoiceError::InvalidStatus)))); + } + + #[test] + fn mark_paid_success_sets_paid_and_payment_id() { + let env = Env::default(); + env.mock_all_auths(); + let (_, _payment_processor, client) = setup(&env); + let merchant = Address::generate(&env); + let inv_id = Symbol::new(&env, "INV004"); + let pay_id = Symbol::new(&env, "PAY99"); + let currency = Symbol::new(&env, "USDC"); + let due = env.ledger().timestamp() + 86400; + + client.create_invoice(&merchant, &inv_id, &200i128, ¤cy, &due); + client.issue_invoice(&inv_id); + client.mark_paid(&inv_id, &pay_id); + + let got = client.get_invoice(&inv_id); + assert_eq!(got.status, InvoiceStatus::Paid); + assert_eq!(got.payment_id, Some(pay_id)); + } + + #[test] + fn mark_paid_twice_returns_already_paid() { + let env = Env::default(); + env.mock_all_auths(); + let (_, _payment_processor, client) = setup(&env); + let merchant = Address::generate(&env); + let inv_id = Symbol::new(&env, "INV005"); + let currency = Symbol::new(&env, "USDC"); + let due = env.ledger().timestamp() + 86400; + + client.create_invoice(&merchant, &inv_id, &1i128, ¤cy, &due); + client.issue_invoice(&inv_id); + client.mark_paid(&inv_id, &Symbol::new(&env, "P1")); + let err = client.try_mark_paid(&inv_id, &Symbol::new(&env, "P2")); + assert!(matches!(err, Err(Ok(InvoiceError::AlreadyPaid)))); + } + + #[test] + fn mark_paid_draft_returns_invalid_status() { + let env = Env::default(); + env.mock_all_auths(); + let (_, _payment_processor, client) = setup(&env); + let merchant = Address::generate(&env); + let inv_id = Symbol::new(&env, "INV007"); + let currency = Symbol::new(&env, "USDC"); + let due = env.ledger().timestamp() + 86400; + + client.create_invoice(&merchant, &inv_id, &1i128, ¤cy, &due); + let err = client.try_mark_paid(&inv_id, &Symbol::new(&env, "PX")); + assert!(matches!(err, Err(Ok(InvoiceError::InvalidStatus)))); + } + + #[test] + fn cancel_invoice_draft_and_issued() { + let env = Env::default(); + env.mock_all_auths(); + let (_, _payment_processor, client) = setup(&env); + let merchant = Address::generate(&env); + let currency = Symbol::new(&env, "USDC"); + let due = env.ledger().timestamp() + 86400; + + let id_draft = Symbol::new(&env, "INVD"); + client.create_invoice(&merchant, &id_draft, &1i128, ¤cy, &due); + client.cancel_invoice(&id_draft); + assert_eq!( + client.get_invoice(&id_draft).status, + InvoiceStatus::Cancelled + ); + + let id_issued = Symbol::new(&env, "INVI"); + client.create_invoice(&merchant, &id_issued, &1i128, ¤cy, &due); + client.issue_invoice(&id_issued); + client.cancel_invoice(&id_issued); + assert_eq!( + client.get_invoice(&id_issued).status, + InvoiceStatus::Cancelled + ); + } + + #[test] + fn cancel_paid_returns_invalid_status() { + let env = Env::default(); + env.mock_all_auths(); + let (_, _payment_processor, client) = setup(&env); + let merchant = Address::generate(&env); + let inv_id = Symbol::new(&env, "INVP"); + let currency = Symbol::new(&env, "USDC"); + let due = env.ledger().timestamp() + 86400; + + client.create_invoice(&merchant, &inv_id, &1i128, ¤cy, &due); + client.issue_invoice(&inv_id); + client.mark_paid(&inv_id, &Symbol::new(&env, "PY")); + let err = client.try_cancel_invoice(&inv_id); + assert!(matches!(err, Err(Ok(InvoiceError::InvalidStatus)))); + } + + #[test] + fn get_invoice_not_found() { + let env = Env::default(); + env.mock_all_auths(); + let (_, _, client) = setup(&env); + let err = client.try_get_invoice(&Symbol::new(&env, "NOPE")); + assert!(matches!(err, Err(Ok(InvoiceError::NotFound)))); + } +} diff --git a/fluxapay/src/lib.rs b/fluxapay/src/lib.rs index 77984d5..7bac640 100644 --- a/fluxapay/src/lib.rs +++ b/fluxapay/src/lib.rs @@ -706,7 +706,7 @@ impl PaymentProcessor { AccessControl::initialize(&env, admin); } - pub fn grant_role( + pub fn payment_grant_role( env: Env, admin: Address, role: Symbol, @@ -1015,6 +1015,7 @@ mod dispute_test; mod fx_oracle_test; #[cfg(test)] mod integration_test; +pub mod invoice; pub mod merchant_registry; #[cfg(test)] mod merchant_registry_test; diff --git a/fluxapay/src/merchant_registry.rs b/fluxapay/src/merchant_registry.rs index cf06c8d..5f0bc66 100644 --- a/fluxapay/src/merchant_registry.rs +++ b/fluxapay/src/merchant_registry.rs @@ -2,8 +2,6 @@ use soroban_sdk::{ contract, contracterror, contractimpl, contracttype, Address, Env, String, Symbol, vec, Vec, }; -use crate::{Error, DataKey}; - #[contract] pub struct MerchantRegistry; diff --git a/fluxapay/src/merchant_registry_test.rs b/fluxapay/src/merchant_registry_test.rs index a04d94e..28f0942 100644 --- a/fluxapay/src/merchant_registry_test.rs +++ b/fluxapay/src/merchant_registry_test.rs @@ -377,7 +377,7 @@ fn test_verified_merchant_can_create_payment() { ); // Manually grant MERCHANT role (simulating what would happen with set_refund_manager_address) - payment_client.grant_role(&admin, &Symbol::new(&env, "MERCHANT"), &merchant); + payment_client.payment_grant_role(&admin, &Symbol::new(&env, "MERCHANT"), &merchant); // Now create payment should succeed let payment_id = String::from_str(&env, "PAY_01"); diff --git a/fluxapay/src/test.rs b/fluxapay/src/test.rs index 9c770c2..8c020d3 100644 --- a/fluxapay/src/test.rs +++ b/fluxapay/src/test.rs @@ -1,7 +1,7 @@ #![cfg(test)] use super::*; -use access_control::{role_admin, role_oracle, role_settlement_operator}; +use access_control::{role_admin, role_merchant, role_oracle, role_settlement_operator}; use soroban_sdk::{ testutils::{Address as _, BytesN as _, Ledger as _}, token, Address, BytesN, Env, String, Symbol, @@ -42,7 +42,7 @@ fn test_create_payment() { let currency = Symbol::new(&env, "USDC"); let deposit_address = Address::generate(&env); let expires_at = env.ledger().timestamp() + 3600; - client.grant_role(&admin, &role_merchant(&env), &merchant_id); + client.payment_grant_role(&admin, &role_merchant(&env), &merchant_id); let payment = client.create_payment( &payment_id, @@ -71,7 +71,7 @@ fn test_verify_payment_success() { let merchant_id = Address::generate(&env); let amount = 1000000000i128; let expires_at = env.ledger().timestamp() + 3600; - client.grant_role(&admin, &role_merchant(&env), &merchant_id); + client.payment_grant_role(&admin, &role_merchant(&env), &merchant_id); client.create_payment( &payment_id, @@ -85,7 +85,7 @@ fn test_verify_payment_success() { let payer_address = Address::generate(&env); let transaction_hash = BytesN::<32>::random(&env); let oracle = Address::generate(&env); - client.grant_role(&admin, &role_oracle(&env), &oracle); + client.payment_grant_role(&admin, &role_oracle(&env), &oracle); let status = client.verify_payment( &oracle, @@ -115,7 +115,7 @@ fn test_get_merchant_payments_index_and_pagination() { let payment_id_2 = String::from_str(&env, "merchant_pay_2"); let payment_id_3 = String::from_str(&env, "merchant_pay_3"); - client.grant_role(&admin, &role_merchant(&env), &merchant_id); + client.payment_grant_role(&admin, &role_merchant(&env), &merchant_id); client.create_payment( &payment_id_1, &merchant_id, @@ -162,7 +162,7 @@ fn test_cancel_payment_before_expiry_by_merchant() { let payment_id = String::from_str(&env, "cancel_before_expiry"); let merchant_id = Address::generate(&env); let expires_at = env.ledger().timestamp() + 3600; - client.grant_role(&admin, &role_merchant(&env), &merchant_id); + client.payment_grant_role(&admin, &role_merchant(&env), &merchant_id); client.create_payment( &payment_id, @@ -188,7 +188,7 @@ fn test_expire_payment_after_deadline() { let payment_id = String::from_str(&env, "expire_after_deadline"); let merchant_id = Address::generate(&env); let expires_at = env.ledger().timestamp() + 10; - client.grant_role(&admin, &role_merchant(&env), &merchant_id); + client.payment_grant_role(&admin, &role_merchant(&env), &merchant_id); client.create_payment( &payment_id, diff --git a/fluxapay/test_snapshots/dispute_test/test_create_dispute.1.json b/fluxapay/test_snapshots/dispute_test/test_create_dispute.1.json index 2872073..0a25dd8 100644 --- a/fluxapay/test_snapshots/dispute_test/test_create_dispute.1.json +++ b/fluxapay/test_snapshots/dispute_test/test_create_dispute.1.json @@ -57,7 +57,7 @@ "function": { "contract_fn": { "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "function_name": "grant_role", + "function_name": "payment_grant_role", "args": [ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -116,7 +116,7 @@ "function": { "contract_fn": { "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "function_name": "grant_role", + "function_name": "payment_grant_role", "args": [ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -150,7 +150,7 @@ "string": "payment_001" }, { - "bytes": "49851b6893f011f76f896187a5d87f59554d83bd80fd0a3a5a17fa4414318a1e" + "bytes": "136ab93ccecf2304876b70632148917c224a83cf4a0082af91e903e35ea6584c" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" @@ -483,7 +483,7 @@ "symbol": "transaction_hash" }, "val": { - "bytes": "49851b6893f011f76f896187a5d87f59554d83bd80fd0a3a5a17fa4414318a1e" + "bytes": "136ab93ccecf2304876b70632148917c224a83cf4a0082af91e903e35ea6584c" } } ] diff --git a/fluxapay/test_snapshots/dispute_test/test_dispute_invalid_amount.1.json b/fluxapay/test_snapshots/dispute_test/test_dispute_invalid_amount.1.json index b673e3e..86c4cbd 100644 --- a/fluxapay/test_snapshots/dispute_test/test_dispute_invalid_amount.1.json +++ b/fluxapay/test_snapshots/dispute_test/test_dispute_invalid_amount.1.json @@ -57,7 +57,7 @@ "function": { "contract_fn": { "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "function_name": "grant_role", + "function_name": "payment_grant_role", "args": [ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" diff --git a/fluxapay/test_snapshots/dispute_test/test_get_payment_disputes.1.json b/fluxapay/test_snapshots/dispute_test/test_get_payment_disputes.1.json index 4ebaa46..f6e537d 100644 --- a/fluxapay/test_snapshots/dispute_test/test_get_payment_disputes.1.json +++ b/fluxapay/test_snapshots/dispute_test/test_get_payment_disputes.1.json @@ -57,7 +57,7 @@ "function": { "contract_fn": { "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "function_name": "grant_role", + "function_name": "payment_grant_role", "args": [ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -116,7 +116,7 @@ "function": { "contract_fn": { "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "function_name": "grant_role", + "function_name": "payment_grant_role", "args": [ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -150,7 +150,7 @@ "string": "payment_005" }, { - "bytes": "f55d5c965e20cdae1bddbdc34758838a46f73e5ac8653f20e30b9380eb3d62b9" + "bytes": "8f58bea3bd4d558134d1b93abe9c2e2df7da091559b11f7189222a75ff77039e" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" @@ -514,7 +514,7 @@ "symbol": "transaction_hash" }, "val": { - "bytes": "f55d5c965e20cdae1bddbdc34758838a46f73e5ac8653f20e30b9380eb3d62b9" + "bytes": "8f58bea3bd4d558134d1b93abe9c2e2df7da091559b11f7189222a75ff77039e" } } ] diff --git a/fluxapay/test_snapshots/dispute_test/test_reject_dispute.1.json b/fluxapay/test_snapshots/dispute_test/test_reject_dispute.1.json index 9a02b5c..9befd7c 100644 --- a/fluxapay/test_snapshots/dispute_test/test_reject_dispute.1.json +++ b/fluxapay/test_snapshots/dispute_test/test_reject_dispute.1.json @@ -82,7 +82,7 @@ "function": { "contract_fn": { "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "function_name": "grant_role", + "function_name": "payment_grant_role", "args": [ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -141,7 +141,7 @@ "function": { "contract_fn": { "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "function_name": "grant_role", + "function_name": "payment_grant_role", "args": [ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -175,7 +175,7 @@ "string": "payment_004" }, { - "bytes": "2b6ae359637b7c3b8ea97149b26f95f1db387d7094fbd02df8297979d2945c81" + "bytes": "15bb64e05fbf1c682690e1b2cc7dd5b2eb3afa49b0e3b25573e43b9b20166ceb" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" @@ -533,7 +533,7 @@ "symbol": "transaction_hash" }, "val": { - "bytes": "2b6ae359637b7c3b8ea97149b26f95f1db387d7094fbd02df8297979d2945c81" + "bytes": "15bb64e05fbf1c682690e1b2cc7dd5b2eb3afa49b0e3b25573e43b9b20166ceb" } } ] diff --git a/fluxapay/test_snapshots/dispute_test/test_resolve_dispute_with_only_operator_auth.1.json b/fluxapay/test_snapshots/dispute_test/test_resolve_dispute_with_only_operator_auth.1.json index 5228c4a..7a9c70c 100644 --- a/fluxapay/test_snapshots/dispute_test/test_resolve_dispute_with_only_operator_auth.1.json +++ b/fluxapay/test_snapshots/dispute_test/test_resolve_dispute_with_only_operator_auth.1.json @@ -82,7 +82,7 @@ "function": { "contract_fn": { "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "function_name": "grant_role", + "function_name": "payment_grant_role", "args": [ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -141,7 +141,7 @@ "function": { "contract_fn": { "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "function_name": "grant_role", + "function_name": "payment_grant_role", "args": [ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -175,7 +175,7 @@ "string": "pay_auth_test" }, { - "bytes": "8450b56a68acad950b14b356d35baea6b375f08f86c352600bfaa16c99181b6a" + "bytes": "6799582250f8a053538ed85e117eedfac0a9b270b057b7a7e6cb983615f6f6eb" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" @@ -535,7 +535,7 @@ "symbol": "transaction_hash" }, "val": { - "bytes": "8450b56a68acad950b14b356d35baea6b375f08f86c352600bfaa16c99181b6a" + "bytes": "6799582250f8a053538ed85e117eedfac0a9b270b057b7a7e6cb983615f6f6eb" } } ] diff --git a/fluxapay/test_snapshots/dispute_test/test_resolve_dispute_with_refund.1.json b/fluxapay/test_snapshots/dispute_test/test_resolve_dispute_with_refund.1.json index 2a7adfe..3263b9d 100644 --- a/fluxapay/test_snapshots/dispute_test/test_resolve_dispute_with_refund.1.json +++ b/fluxapay/test_snapshots/dispute_test/test_resolve_dispute_with_refund.1.json @@ -82,7 +82,7 @@ "function": { "contract_fn": { "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "function_name": "grant_role", + "function_name": "payment_grant_role", "args": [ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -141,7 +141,7 @@ "function": { "contract_fn": { "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "function_name": "grant_role", + "function_name": "payment_grant_role", "args": [ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -175,7 +175,7 @@ "string": "payment_003" }, { - "bytes": "3831235dc8a5aeef7be2ec30467b371121148a92990ce2880bed5d9eef8a34ed" + "bytes": "5d8a9a6aa7f03c5a5131b47ac40a994c015dca3e7cc435b7b99f7ba7470d734d" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" @@ -535,7 +535,7 @@ "symbol": "transaction_hash" }, "val": { - "bytes": "3831235dc8a5aeef7be2ec30467b371121148a92990ce2880bed5d9eef8a34ed" + "bytes": "5d8a9a6aa7f03c5a5131b47ac40a994c015dca3e7cc435b7b99f7ba7470d734d" } } ] diff --git a/fluxapay/test_snapshots/dispute_test/test_review_dispute.1.json b/fluxapay/test_snapshots/dispute_test/test_review_dispute.1.json index c3dbbd6..bf84b0a 100644 --- a/fluxapay/test_snapshots/dispute_test/test_review_dispute.1.json +++ b/fluxapay/test_snapshots/dispute_test/test_review_dispute.1.json @@ -82,7 +82,7 @@ "function": { "contract_fn": { "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "function_name": "grant_role", + "function_name": "payment_grant_role", "args": [ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -141,7 +141,7 @@ "function": { "contract_fn": { "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "function_name": "grant_role", + "function_name": "payment_grant_role", "args": [ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -175,7 +175,7 @@ "string": "payment_002" }, { - "bytes": "a18e97880d88d300a52fd0926210657a444a2316e7519e68329fc09acb3da751" + "bytes": "f69009b41ececa480ebf9ef079f39a2caac78c09b9ef15ea8ecb54f1aab378db" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" @@ -530,7 +530,7 @@ "symbol": "transaction_hash" }, "val": { - "bytes": "a18e97880d88d300a52fd0926210657a444a2316e7519e68329fc09acb3da751" + "bytes": "f69009b41ececa480ebf9ef079f39a2caac78c09b9ef15ea8ecb54f1aab378db" } } ] diff --git a/fluxapay/test_snapshots/integration_test/test_failure_and_expiration_path.1.json b/fluxapay/test_snapshots/integration_test/test_failure_and_expiration_path.1.json index 56c272d..1923863 100644 --- a/fluxapay/test_snapshots/integration_test/test_failure_and_expiration_path.1.json +++ b/fluxapay/test_snapshots/integration_test/test_failure_and_expiration_path.1.json @@ -59,7 +59,7 @@ "function": { "contract_fn": { "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "function_name": "grant_role", + "function_name": "payment_grant_role", "args": [ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" diff --git a/fluxapay/test_snapshots/integration_test/test_happy_path_flow.1.json b/fluxapay/test_snapshots/integration_test/test_happy_path_flow.1.json index 8a68eb2..004b7b8 100644 --- a/fluxapay/test_snapshots/integration_test/test_happy_path_flow.1.json +++ b/fluxapay/test_snapshots/integration_test/test_happy_path_flow.1.json @@ -109,7 +109,7 @@ "function": { "contract_fn": { "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "function_name": "grant_role", + "function_name": "payment_grant_role", "args": [ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" @@ -168,7 +168,7 @@ "function": { "contract_fn": { "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "function_name": "grant_role", + "function_name": "payment_grant_role", "args": [ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" @@ -202,7 +202,7 @@ "string": "PAY_01" }, { - "bytes": "7f8b1b060f21cb9c41ae52683da955d5272928870d6f5ee6892ee48ad206cd81" + "bytes": "69c0c9d1e206dcba299f7921b52614352806a4485215acd799bf6aea7eecf75c" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" @@ -588,7 +588,7 @@ "symbol": "transaction_hash" }, "val": { - "bytes": "7f8b1b060f21cb9c41ae52683da955d5272928870d6f5ee6892ee48ad206cd81" + "bytes": "69c0c9d1e206dcba299f7921b52614352806a4485215acd799bf6aea7eecf75c" } } ] diff --git a/fluxapay/test_snapshots/integration_test/test_settlement_path.1.json b/fluxapay/test_snapshots/integration_test/test_settlement_path.1.json index 2356404..424024d 100644 --- a/fluxapay/test_snapshots/integration_test/test_settlement_path.1.json +++ b/fluxapay/test_snapshots/integration_test/test_settlement_path.1.json @@ -59,7 +59,7 @@ "function": { "contract_fn": { "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "function_name": "grant_role", + "function_name": "payment_grant_role", "args": [ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" @@ -84,7 +84,7 @@ "function": { "contract_fn": { "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "function_name": "grant_role", + "function_name": "payment_grant_role", "args": [ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" @@ -143,7 +143,7 @@ "function": { "contract_fn": { "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "function_name": "grant_role", + "function_name": "payment_grant_role", "args": [ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" @@ -177,7 +177,7 @@ "string": "PAY_SETTLE" }, { - "bytes": "c94dd16845338a5bd3466808a6426865da9d311e28bd72eeef0b8ca2df6c6964" + "bytes": "8b631c953ef58c2eec6daba3a4aab608d50e1e052796c89d01814e1953963f7a" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" @@ -504,7 +504,7 @@ "symbol": "transaction_hash" }, "val": { - "bytes": "c94dd16845338a5bd3466808a6426865da9d311e28bd72eeef0b8ca2df6c6964" + "bytes": "8b631c953ef58c2eec6daba3a4aab608d50e1e052796c89d01814e1953963f7a" } } ] diff --git a/fluxapay/test_snapshots/invoice/test/cancel_invoice_draft_and_issued.1.json b/fluxapay/test_snapshots/invoice/test/cancel_invoice_draft_and_issued.1.json new file mode 100644 index 0000000..e055e8a --- /dev/null +++ b/fluxapay/test_snapshots/invoice/test/cancel_invoice_draft_and_issued.1.json @@ -0,0 +1,649 @@ +{ + "generators": { + "address": 4, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_invoice", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "symbol": "INVD" + }, + { + "i128": "1" + }, + { + "symbol": "USDC" + }, + { + "u64": "86400" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "cancel_invoice", + "args": [ + { + "symbol": "INVD" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_invoice", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "symbol": "INVI" + }, + { + "i128": "1" + }, + { + "symbol": "USDC" + }, + { + "u64": "86400" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "issue_invoice", + "args": [ + { + "symbol": "INVI" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "cancel_invoice", + "args": [ + { + "symbol": "INVI" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [] + ], + "ledger": { + "protocol_version": 23, + "sequence_number": 0, + "timestamp": 0, + "network_id": "0000000000000000000000000000000000000000000000000000000000000000", + "base_reserve": 0, + "min_persistent_entry_ttl": 4096, + "min_temp_entry_ttl": 16, + "max_entry_ttl": 6312000, + "ledger_entries": [ + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "durability": "persistent", + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Invoice" + }, + { + "symbol": "INVD" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Invoice" + }, + { + "symbol": "INVD" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "1" + } + }, + { + "key": { + "symbol": "currency" + }, + "val": { + "symbol": "USDC" + } + }, + { + "key": { + "symbol": "due_date" + }, + "val": { + "u64": "86400" + } + }, + { + "key": { + "symbol": "invoice_id" + }, + "val": { + "symbol": "INVD" + } + }, + { + "key": { + "symbol": "merchant_id" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "symbol": "payment_id" + }, + "val": "void" + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Cancelled" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Invoice" + }, + { + "symbol": "INVI" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Invoice" + }, + { + "symbol": "INVI" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "1" + } + }, + { + "key": { + "symbol": "currency" + }, + "val": { + "symbol": "USDC" + } + }, + { + "key": { + "symbol": "due_date" + }, + "val": { + "u64": "86400" + } + }, + { + "key": { + "symbol": "invoice_id" + }, + "val": { + "symbol": "INVI" + } + }, + { + "key": { + "symbol": "merchant_id" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "symbol": "payment_id" + }, + "val": "void" + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Cancelled" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "PaymentProcessor" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "PaymentProcessor" + } + ] + }, + "durability": "persistent", + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "801925984706572462" + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "801925984706572462" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "1033654523790656264" + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "1033654523790656264" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "2032731177588607455" + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "2032731177588607455" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "4837995959683129791" + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "4837995959683129791" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "5541220902715666415" + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "5541220902715666415" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_code": { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + 4095 + ] + ] + ] + }, + "events": [] +} \ No newline at end of file diff --git a/fluxapay/test_snapshots/invoice/test/cancel_paid_returns_invalid_status.1.json b/fluxapay/test_snapshots/invoice/test/cancel_paid_returns_invalid_status.1.json new file mode 100644 index 0000000..29e6c22 --- /dev/null +++ b/fluxapay/test_snapshots/invoice/test/cancel_paid_returns_invalid_status.1.json @@ -0,0 +1,433 @@ +{ + "generators": { + "address": 4, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_invoice", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "symbol": "INVP" + }, + { + "i128": "1" + }, + { + "symbol": "USDC" + }, + { + "u64": "86400" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "issue_invoice", + "args": [ + { + "symbol": "INVP" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "mark_paid", + "args": [ + { + "symbol": "INVP" + }, + { + "symbol": "PY" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [] + ], + "ledger": { + "protocol_version": 23, + "sequence_number": 0, + "timestamp": 0, + "network_id": "0000000000000000000000000000000000000000000000000000000000000000", + "base_reserve": 0, + "min_persistent_entry_ttl": 4096, + "min_temp_entry_ttl": 16, + "max_entry_ttl": 6312000, + "ledger_entries": [ + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "durability": "persistent", + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Invoice" + }, + { + "symbol": "INVP" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Invoice" + }, + { + "symbol": "INVP" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "1" + } + }, + { + "key": { + "symbol": "currency" + }, + "val": { + "symbol": "USDC" + } + }, + { + "key": { + "symbol": "due_date" + }, + "val": { + "u64": "86400" + } + }, + { + "key": { + "symbol": "invoice_id" + }, + "val": { + "symbol": "INVP" + } + }, + { + "key": { + "symbol": "merchant_id" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "symbol": "payment_id" + }, + "val": { + "symbol": "PY" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Paid" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "PaymentProcessor" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "PaymentProcessor" + } + ] + }, + "durability": "persistent", + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": "1033654523790656264" + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": "1033654523790656264" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "801925984706572462" + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "801925984706572462" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "5541220902715666415" + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "5541220902715666415" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_code": { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + 4095 + ] + ] + ] + }, + "events": [] +} \ No newline at end of file diff --git a/fluxapay/test_snapshots/invoice/test/create_invoice_success_and_duplicate_returns_already_exists.1.json b/fluxapay/test_snapshots/invoice/test/create_invoice_success_and_duplicate_returns_already_exists.1.json new file mode 100644 index 0000000..763e841 --- /dev/null +++ b/fluxapay/test_snapshots/invoice/test/create_invoice_success_and_duplicate_returns_already_exists.1.json @@ -0,0 +1,324 @@ +{ + "generators": { + "address": 4, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_invoice", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "symbol": "INV001" + }, + { + "i128": "100" + }, + { + "symbol": "USDC" + }, + { + "u64": "86400" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [] + ], + "ledger": { + "protocol_version": 23, + "sequence_number": 0, + "timestamp": 0, + "network_id": "0000000000000000000000000000000000000000000000000000000000000000", + "base_reserve": 0, + "min_persistent_entry_ttl": 4096, + "min_temp_entry_ttl": 16, + "max_entry_ttl": 6312000, + "ledger_entries": [ + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "durability": "persistent", + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Invoice" + }, + { + "symbol": "INV001" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Invoice" + }, + { + "symbol": "INV001" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "currency" + }, + "val": { + "symbol": "USDC" + } + }, + { + "key": { + "symbol": "due_date" + }, + "val": { + "u64": "86400" + } + }, + { + "key": { + "symbol": "invoice_id" + }, + "val": { + "symbol": "INV001" + } + }, + { + "key": { + "symbol": "merchant_id" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "symbol": "payment_id" + }, + "val": "void" + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Draft" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "PaymentProcessor" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "PaymentProcessor" + } + ] + }, + "durability": "persistent", + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "801925984706572462" + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "801925984706572462" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_code": { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + 4095 + ] + ] + ] + }, + "events": [] +} \ No newline at end of file diff --git a/fluxapay/test_snapshots/invoice/test/get_invoice_not_found.1.json b/fluxapay/test_snapshots/invoice/test/get_invoice_not_found.1.json new file mode 100644 index 0000000..2f7d169 --- /dev/null +++ b/fluxapay/test_snapshots/invoice/test/get_invoice_not_found.1.json @@ -0,0 +1,156 @@ +{ + "generators": { + "address": 3, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [], + [], + [] + ], + "ledger": { + "protocol_version": 23, + "sequence_number": 0, + "timestamp": 0, + "network_id": "0000000000000000000000000000000000000000000000000000000000000000", + "base_reserve": 0, + "min_persistent_entry_ttl": 4096, + "min_temp_entry_ttl": 16, + "max_entry_ttl": 6312000, + "ledger_entries": [ + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "durability": "persistent", + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "PaymentProcessor" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "PaymentProcessor" + } + ] + }, + "durability": "persistent", + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_code": { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + 4095 + ] + ] + ] + }, + "events": [] +} \ No newline at end of file diff --git a/fluxapay/test_snapshots/invoice/test/invoice_initialize_sets_admin_and_payment_processor.1.json b/fluxapay/test_snapshots/invoice/test/invoice_initialize_sets_admin_and_payment_processor.1.json new file mode 100644 index 0000000..602ac7c --- /dev/null +++ b/fluxapay/test_snapshots/invoice/test/invoice_initialize_sets_admin_and_payment_processor.1.json @@ -0,0 +1,157 @@ +{ + "generators": { + "address": 3, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [], + [], + [], + [] + ], + "ledger": { + "protocol_version": 23, + "sequence_number": 0, + "timestamp": 0, + "network_id": "0000000000000000000000000000000000000000000000000000000000000000", + "base_reserve": 0, + "min_persistent_entry_ttl": 4096, + "min_temp_entry_ttl": 16, + "max_entry_ttl": 6312000, + "ledger_entries": [ + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "durability": "persistent", + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "PaymentProcessor" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "PaymentProcessor" + } + ] + }, + "durability": "persistent", + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_code": { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + 4095 + ] + ] + ] + }, + "events": [] +} \ No newline at end of file diff --git a/fluxapay/test_snapshots/invoice/test/issue_invoice_draft_to_issued.1.json b/fluxapay/test_snapshots/invoice/test/issue_invoice_draft_to_issued.1.json new file mode 100644 index 0000000..c451eec --- /dev/null +++ b/fluxapay/test_snapshots/invoice/test/issue_invoice_draft_to_issued.1.json @@ -0,0 +1,376 @@ +{ + "generators": { + "address": 4, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_invoice", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "symbol": "INV002" + }, + { + "i128": "50" + }, + { + "symbol": "USDC" + }, + { + "u64": "86400" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "issue_invoice", + "args": [ + { + "symbol": "INV002" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [] + ], + "ledger": { + "protocol_version": 23, + "sequence_number": 0, + "timestamp": 0, + "network_id": "0000000000000000000000000000000000000000000000000000000000000000", + "base_reserve": 0, + "min_persistent_entry_ttl": 4096, + "min_temp_entry_ttl": 16, + "max_entry_ttl": 6312000, + "ledger_entries": [ + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "durability": "persistent", + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Invoice" + }, + { + "symbol": "INV002" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Invoice" + }, + { + "symbol": "INV002" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "50" + } + }, + { + "key": { + "symbol": "currency" + }, + "val": { + "symbol": "USDC" + } + }, + { + "key": { + "symbol": "due_date" + }, + "val": { + "u64": "86400" + } + }, + { + "key": { + "symbol": "invoice_id" + }, + "val": { + "symbol": "INV002" + } + }, + { + "key": { + "symbol": "merchant_id" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "symbol": "payment_id" + }, + "val": "void" + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Issued" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "PaymentProcessor" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "PaymentProcessor" + } + ] + }, + "durability": "persistent", + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "801925984706572462" + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "801925984706572462" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "5541220902715666415" + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "5541220902715666415" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_code": { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + 4095 + ] + ] + ] + }, + "events": [] +} \ No newline at end of file diff --git a/fluxapay/test_snapshots/invoice/test/issue_invoice_wrong_status_returns_invalid_status.1.json b/fluxapay/test_snapshots/invoice/test/issue_invoice_wrong_status_returns_invalid_status.1.json new file mode 100644 index 0000000..3412f23 --- /dev/null +++ b/fluxapay/test_snapshots/invoice/test/issue_invoice_wrong_status_returns_invalid_status.1.json @@ -0,0 +1,376 @@ +{ + "generators": { + "address": 4, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_invoice", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "symbol": "INV003" + }, + { + "i128": "10" + }, + { + "symbol": "USDC" + }, + { + "u64": "86400" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "issue_invoice", + "args": [ + { + "symbol": "INV003" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [] + ], + "ledger": { + "protocol_version": 23, + "sequence_number": 0, + "timestamp": 0, + "network_id": "0000000000000000000000000000000000000000000000000000000000000000", + "base_reserve": 0, + "min_persistent_entry_ttl": 4096, + "min_temp_entry_ttl": 16, + "max_entry_ttl": 6312000, + "ledger_entries": [ + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "durability": "persistent", + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Invoice" + }, + { + "symbol": "INV003" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Invoice" + }, + { + "symbol": "INV003" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "10" + } + }, + { + "key": { + "symbol": "currency" + }, + "val": { + "symbol": "USDC" + } + }, + { + "key": { + "symbol": "due_date" + }, + "val": { + "u64": "86400" + } + }, + { + "key": { + "symbol": "invoice_id" + }, + "val": { + "symbol": "INV003" + } + }, + { + "key": { + "symbol": "merchant_id" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "symbol": "payment_id" + }, + "val": "void" + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Issued" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "PaymentProcessor" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "PaymentProcessor" + } + ] + }, + "durability": "persistent", + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "801925984706572462" + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "801925984706572462" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "5541220902715666415" + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "5541220902715666415" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_code": { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + 4095 + ] + ] + ] + }, + "events": [] +} \ No newline at end of file diff --git a/fluxapay/test_snapshots/invoice/test/mark_paid_draft_returns_invalid_status.1.json b/fluxapay/test_snapshots/invoice/test/mark_paid_draft_returns_invalid_status.1.json new file mode 100644 index 0000000..1525625 --- /dev/null +++ b/fluxapay/test_snapshots/invoice/test/mark_paid_draft_returns_invalid_status.1.json @@ -0,0 +1,324 @@ +{ + "generators": { + "address": 4, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_invoice", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "symbol": "INV007" + }, + { + "i128": "1" + }, + { + "symbol": "USDC" + }, + { + "u64": "86400" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [] + ], + "ledger": { + "protocol_version": 23, + "sequence_number": 0, + "timestamp": 0, + "network_id": "0000000000000000000000000000000000000000000000000000000000000000", + "base_reserve": 0, + "min_persistent_entry_ttl": 4096, + "min_temp_entry_ttl": 16, + "max_entry_ttl": 6312000, + "ledger_entries": [ + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "durability": "persistent", + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Invoice" + }, + { + "symbol": "INV007" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Invoice" + }, + { + "symbol": "INV007" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "1" + } + }, + { + "key": { + "symbol": "currency" + }, + "val": { + "symbol": "USDC" + } + }, + { + "key": { + "symbol": "due_date" + }, + "val": { + "u64": "86400" + } + }, + { + "key": { + "symbol": "invoice_id" + }, + "val": { + "symbol": "INV007" + } + }, + { + "key": { + "symbol": "merchant_id" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "symbol": "payment_id" + }, + "val": "void" + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Draft" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "PaymentProcessor" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "PaymentProcessor" + } + ] + }, + "durability": "persistent", + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "801925984706572462" + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "801925984706572462" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_code": { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + 4095 + ] + ] + ] + }, + "events": [] +} \ No newline at end of file diff --git a/fluxapay/test_snapshots/invoice/test/mark_paid_success_sets_paid_and_payment_id.1.json b/fluxapay/test_snapshots/invoice/test/mark_paid_success_sets_paid_and_payment_id.1.json new file mode 100644 index 0000000..06ad1f8 --- /dev/null +++ b/fluxapay/test_snapshots/invoice/test/mark_paid_success_sets_paid_and_payment_id.1.json @@ -0,0 +1,433 @@ +{ + "generators": { + "address": 4, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_invoice", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "symbol": "INV004" + }, + { + "i128": "200" + }, + { + "symbol": "USDC" + }, + { + "u64": "86400" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "issue_invoice", + "args": [ + { + "symbol": "INV004" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "mark_paid", + "args": [ + { + "symbol": "INV004" + }, + { + "symbol": "PAY99" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [] + ], + "ledger": { + "protocol_version": 23, + "sequence_number": 0, + "timestamp": 0, + "network_id": "0000000000000000000000000000000000000000000000000000000000000000", + "base_reserve": 0, + "min_persistent_entry_ttl": 4096, + "min_temp_entry_ttl": 16, + "max_entry_ttl": 6312000, + "ledger_entries": [ + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "durability": "persistent", + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Invoice" + }, + { + "symbol": "INV004" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Invoice" + }, + { + "symbol": "INV004" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "200" + } + }, + { + "key": { + "symbol": "currency" + }, + "val": { + "symbol": "USDC" + } + }, + { + "key": { + "symbol": "due_date" + }, + "val": { + "u64": "86400" + } + }, + { + "key": { + "symbol": "invoice_id" + }, + "val": { + "symbol": "INV004" + } + }, + { + "key": { + "symbol": "merchant_id" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "symbol": "payment_id" + }, + "val": { + "symbol": "PAY99" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Paid" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "PaymentProcessor" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "PaymentProcessor" + } + ] + }, + "durability": "persistent", + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": "1033654523790656264" + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": "1033654523790656264" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "801925984706572462" + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "801925984706572462" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "5541220902715666415" + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "5541220902715666415" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_code": { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + 4095 + ] + ] + ] + }, + "events": [] +} \ No newline at end of file diff --git a/fluxapay/test_snapshots/invoice/test/mark_paid_twice_returns_already_paid.1.json b/fluxapay/test_snapshots/invoice/test/mark_paid_twice_returns_already_paid.1.json new file mode 100644 index 0000000..6c5f03e --- /dev/null +++ b/fluxapay/test_snapshots/invoice/test/mark_paid_twice_returns_already_paid.1.json @@ -0,0 +1,433 @@ +{ + "generators": { + "address": 4, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_invoice", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "symbol": "INV005" + }, + { + "i128": "1" + }, + { + "symbol": "USDC" + }, + { + "u64": "86400" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "issue_invoice", + "args": [ + { + "symbol": "INV005" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "mark_paid", + "args": [ + { + "symbol": "INV005" + }, + { + "symbol": "P1" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [] + ], + "ledger": { + "protocol_version": 23, + "sequence_number": 0, + "timestamp": 0, + "network_id": "0000000000000000000000000000000000000000000000000000000000000000", + "base_reserve": 0, + "min_persistent_entry_ttl": 4096, + "min_temp_entry_ttl": 16, + "max_entry_ttl": 6312000, + "ledger_entries": [ + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "durability": "persistent", + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Invoice" + }, + { + "symbol": "INV005" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Invoice" + }, + { + "symbol": "INV005" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "1" + } + }, + { + "key": { + "symbol": "currency" + }, + "val": { + "symbol": "USDC" + } + }, + { + "key": { + "symbol": "due_date" + }, + "val": { + "u64": "86400" + } + }, + { + "key": { + "symbol": "invoice_id" + }, + "val": { + "symbol": "INV005" + } + }, + { + "key": { + "symbol": "merchant_id" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "symbol": "payment_id" + }, + "val": { + "symbol": "P1" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Paid" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "PaymentProcessor" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "PaymentProcessor" + } + ] + }, + "durability": "persistent", + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": "1033654523790656264" + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": "1033654523790656264" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "801925984706572462" + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "801925984706572462" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "5541220902715666415" + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "5541220902715666415" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_code": { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + 4095 + ] + ] + ] + }, + "events": [] +} \ No newline at end of file diff --git a/fluxapay/test_snapshots/merchant_registry_test/test_verified_merchant_can_create_payment.1.json b/fluxapay/test_snapshots/merchant_registry_test/test_verified_merchant_can_create_payment.1.json index 28d602f..1fd1b5e 100644 --- a/fluxapay/test_snapshots/merchant_registry_test/test_verified_merchant_can_create_payment.1.json +++ b/fluxapay/test_snapshots/merchant_registry_test/test_verified_merchant_can_create_payment.1.json @@ -64,7 +64,7 @@ "function": { "contract_fn": { "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "function_name": "grant_role", + "function_name": "payment_grant_role", "args": [ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" diff --git a/fluxapay/test_snapshots/test/test_cancel_payment_before_expiry_by_merchant.1.json b/fluxapay/test_snapshots/test/test_cancel_payment_before_expiry_by_merchant.1.json index 12c82d9..09b88e5 100644 --- a/fluxapay/test_snapshots/test/test_cancel_payment_before_expiry_by_merchant.1.json +++ b/fluxapay/test_snapshots/test/test_cancel_payment_before_expiry_by_merchant.1.json @@ -14,7 +14,7 @@ "function": { "contract_fn": { "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "function_name": "grant_role", + "function_name": "payment_grant_role", "args": [ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" diff --git a/fluxapay/test_snapshots/test/test_create_payment.1.json b/fluxapay/test_snapshots/test/test_create_payment.1.json index dd65d3f..b67cd6c 100644 --- a/fluxapay/test_snapshots/test/test_create_payment.1.json +++ b/fluxapay/test_snapshots/test/test_create_payment.1.json @@ -14,7 +14,7 @@ "function": { "contract_fn": { "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "function_name": "grant_role", + "function_name": "payment_grant_role", "args": [ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" diff --git a/fluxapay/test_snapshots/test/test_expire_payment_after_deadline.1.json b/fluxapay/test_snapshots/test/test_expire_payment_after_deadline.1.json index 366576e..dd3fc79 100644 --- a/fluxapay/test_snapshots/test/test_expire_payment_after_deadline.1.json +++ b/fluxapay/test_snapshots/test/test_expire_payment_after_deadline.1.json @@ -14,7 +14,7 @@ "function": { "contract_fn": { "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "function_name": "grant_role", + "function_name": "payment_grant_role", "args": [ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" diff --git a/fluxapay/test_snapshots/test/test_get_merchant_payments_index_and_pagination.1.json b/fluxapay/test_snapshots/test/test_get_merchant_payments_index_and_pagination.1.json index 778ce06..a9d39e0 100644 --- a/fluxapay/test_snapshots/test/test_get_merchant_payments_index_and_pagination.1.json +++ b/fluxapay/test_snapshots/test/test_get_merchant_payments_index_and_pagination.1.json @@ -14,7 +14,7 @@ "function": { "contract_fn": { "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "function_name": "grant_role", + "function_name": "payment_grant_role", "args": [ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" diff --git a/fluxapay/test_snapshots/test/test_verify_payment_success.1.json b/fluxapay/test_snapshots/test/test_verify_payment_success.1.json index 3ca690a..4d7b159 100644 --- a/fluxapay/test_snapshots/test/test_verify_payment_success.1.json +++ b/fluxapay/test_snapshots/test/test_verify_payment_success.1.json @@ -14,7 +14,7 @@ "function": { "contract_fn": { "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "function_name": "grant_role", + "function_name": "payment_grant_role", "args": [ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" @@ -73,7 +73,7 @@ "function": { "contract_fn": { "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "function_name": "grant_role", + "function_name": "payment_grant_role", "args": [ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" @@ -107,7 +107,7 @@ "string": "payment_123" }, { - "bytes": "5c22be85f577b53dc14b2bcebb297c3fc23b6dc30d78afed01748968952692e8" + "bytes": "1e4463ceead7972809a017ea7dd92fa3680d48c5b9d35541368e72794fa61dc4" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" @@ -348,7 +348,7 @@ "symbol": "transaction_hash" }, "val": { - "bytes": "5c22be85f577b53dc14b2bcebb297c3fc23b6dc30d78afed01748968952692e8" + "bytes": "1e4463ceead7972809a017ea7dd92fa3680d48c5b9d35541368e72794fa61dc4" } } ]