Skip to content

SAIF.Business.EPay.USBank architecture

SAIF.Business.EPay.USBank combines a small BOF persistence layer with a larger SOAP-integration layer. It keeps SAIF-owned state in Oracle tables, delegates payment execution to generated US Bank and session-transfer proxies, and isolates XML parsing and configuration retrieval in dedicated helper types.

Responsibilities

  • Persist SAIF-side US Bank integration records for users and nonpayment notices.
  • Orchestrate SOAP calls for user-profile, bank-account, recurring-payment, payment-information, and health-check operations.
  • Build browser-facing session-transfer posts for customer and admin flows.
  • Resolve configuration, biller constants, proxy credentials, and external XML-based admin/session-transfer values.
  • Parse callback and remittance XML into typed adapters.

Component boundaries

  • clsUSBankUser, clsUSBankUserCollection, clsUSBankNonpayNotice, and clsUSBankNonpayNoticeCollection own the library's Oracle persistence footprint.
  • USBankAPIs owns request mapping, client-certificate attachment, outbound value normalization, and error/result handling for the primary US Bank SOAP endpoint.
  • RemotePostFiller owns session-transfer string retrieval and RemotePost payload composition for redirect-based payment flows.
  • USBankCodes and USBankConstants own non-code configuration retrieval from environment settings, legacy properties, and the external UNC-hosted constants file.
  • RealTimePaymentConfirmation, RealTimeNonPaymentNotification, RemittanceDocument, and RemittedPayment remain read-only XML adapters with no write-side effects.
  • Interfaces.vb defines caller-supplied abstractions that this library consumes but does not implement.

Interaction model

  • User registration and update flows combine local user-record lookup or creation with outbound SOAP profile calls.
  • Bank-account and recurring-authorization flows normalize outbound payload content under BR-011 and BR-012.
  • Customer and admin redirect flows obtain a session-transfer token, normalize the return URL under BR-014, and post the resulting form to US Bank.
  • Callback and remittance readers deserialize incoming XML separately from the persistence and transport paths.

Architecture diagram

The following diagram shows the main handwritten components and the external systems they coordinate.

flowchart TD
    Caller[Calling SAIF code] --> APIs[USBankAPIs]
    Caller --> Posts[RemotePostFiller]
    Caller --> Parsers[XML parser types]
    APIs --> UserBO[clsUSBankUser / clsUSBankUserCollection]
    APIs --> NoticeBO[clsUSBankNonpayNotice / clsUSBankNonpayNoticeCollection]
    APIs --> Gateway[US Bank SOAP gateway]
    Posts --> SessionSvc[SAIF session-transfer SOAP wrapper]
    Posts --> BrowserPost[RemotePost payload]
    APIs --> Config[USBankCodes / USBankConstants]
    Posts --> Config
    Config --> Env[Environment settings / Properties.xml]
    Config --> Constants[UNC-hosted constants XML]
    UserBO --> Oracle[(Oracle tables)]
    NoticeBO --> Oracle

Sequence diagram

The following diagram shows the primary register-or-update-user path.

sequenceDiagram
    participant Caller
    participant APIs as USBankAPIs
    participant UserBO as clsUSBankUser
    participant Gateway as US Bank SOAP
    participant Oracle as Oracle
    Caller->>APIs: Register user request
    APIs->>UserBO: Retrieve by policy and business-online user
    UserBO->>Oracle: SQL-008 lookup
    Oracle-->>UserBO: Existing row or no match
    APIs->>Gateway: AddUserProfile or UpdateUserProfile
    Gateway-->>APIs: Response code / payload
    APIs->>UserBO: Save local names or create row
    UserBO->>Oracle: SQL-004 insert or SQL-011 update
    Oracle-->>UserBO: Rows affected
    APIs-->>Caller: Integration result

Design constraints

  • The project has no in-repository ProjectReference dependencies; its extensibility point is package references, generated proxies, and caller-supplied interfaces.
  • Persistence is intentionally narrow: only US_BANK_USER and US_BANK_NONPAY_NOTICE are updated by handwritten code in this library.
  • Outbound address, name, and nickname data must satisfy BR-010 and BR-011 before the SOAP call is sent.
  • Redirect flows must satisfy BR-014 and admin SSO flows must satisfy BR-015.
  • New or updated US Bank user profiles always apply BR-016.
  • The library implements no application-level authorization checks; security relies on transport certificates, decryption helpers, proxy impersonation, and admin SSO payload construction.

Sources

  • Business\SAIF.Business.EPay.USBank\USBankAPIs.vb
  • Business\SAIF.Business.EPay.USBank\RemotePostFiller.vb
  • Business\SAIF.Business.EPay.USBank\clsUSBankUser.vb
  • Business\SAIF.Business.EPay.USBank\clsUSBankUserCollection.vb
  • Business\SAIF.Business.EPay.USBank\clsUSBankNonpayNotice.vb
  • Business\SAIF.Business.EPay.USBank\Interfaces.vb
  • Business\SAIF.Business.EPay.USBank\USBankCodes.vb
  • Business\SAIF.Business.EPay.USBank\USBankConstants.vb
  • Business\SAIF.Business.EPay.USBank\RealTimePaymentConfirmation.vb
  • Business\SAIF.Business.EPay.USBank\RealTimeNonPaymentNotification.vb
  • Business\SAIF.Business.EPay.USBank\RemittanceDocument.vb
  • Business\SAIF.Business.EPay.USBank\RemittedPayment.vb
  • Business\SAIF.Business.EPay.USBank\epayWebServiceService.vb