Skip to content

PayCenter Scoped Events

These events are published to the PayCenter broker to communicate with services outside of Blue.

We currently have these scenarios:

  • WSO2 -> Firefly: Spring AMQP with RMQ as the broker
  • Firefly -> WSO2: .NET AMQP with RMQ as the broker

Events

JHA.Blue.Contracts.ZelleReconPaymentAdded

Publisher

WSO2 EI

Subscriber

ZSR

Client

RabbitMq

Purpose

Informs ZSR that a payment was added.

Contract

Based on paymentrepo/zelle/recon/payments/id/ with differences:

  • Direction added by WSO2
  • TrnRcptId added by WSO2
  • CorePaymentActivities omitted
{
  "PaymentId": 0,
  "ZellePaymentId": "JA4R00000MXn7",
  "ZelleRetryPaymentId": "JA4R00000MXn7",
  "ZelleProductType": "string",
  "InitiatedAt": "2022-02-25T15:36:16.450Z",
  "ExpiresAt": "2022-02-25T15:36:16.450Z",
  "AcceptanceMode": "Auto",
  "PaymentMode": "Expedited",
  "Direction": "Inbound",
  "TrnRcptId": "xyz",
  "Amount": 0,
  "Memo": "string",
  "Status": "string",
  "Activity": [
    {
      "Status": "Pending",
      "Direction": "Outbound",
      "StatusEffectiveAt": "2022-07-13T01:29:50.849Z"
    },
    {
      "Status": "Delivered",
      "Direction": "Inbound",
      "StatusEffectiveAt": "2022-07-13T01:40:50.849Z"
    }],
  "Sender": {
    "ZelleCustomerId": "cust_12345",
    "ZelleOrgId": "string",
    "CoreCustomerId": "string", // proposed per 575866, nullable
    "OrgNetworkType": "string",
    "PayCenterMemberFIId": 556,
    "TokenIdentifier": "example@example.org",
    "TokenType": "Email",
    "ZelleProfileId": "string",
    "FullName": "string",
    "FinancialAccount": {
      "AccountNumber": "021000021",
      "AccountType": "Checking",
      "RoutingNumber": "011103097"
    }
  },
  "Recipient": {
    "ZelleCustomerId": "cust_12345",
    "ZelleOrgId": "string",
    "CoreCustomerId": "string", // proposed per 575866, nullable
    "OrgNetworkType": "string",
    "PayCenterMemberFIId": 556,
    "TokenIdentifier": "example@example.org",
    "TokenType": "Email",
    "ZelleProfileId": "string",
    "FullName": "string",
    "FinancialAccount": {
      "AccountNumber": "021000021",
      "AccountType": "Checking",
      "RoutingNumber": "011103097"
    },
    "IsRecipientMemberFI": true
  },
  "RTFOffline": true,
  "OutOfNetwork": {
    "FinancialAccount": {
      "AccountNumber": "021000021",
      "AccountType": "Checking",
      "RoutingNumber": "011103097"
    }
  }
}

JHA.Blue.Contracts.ZelleReconPaymentStatusChanged

Publisher

WSO2 EI

Subscriber

ZSR

Client

RabbitMq

Purpose

Informs ZSR that a payment status has changed.

Contract

{
    "ZellePaymentId": "JA4R00000MXn7",
    "PaymentId": 123,
    "Status": "Pending",
    "EffectiveAt": "2022-07-13T01:29:50.849Z",
    "Direction": "Inbound",
    "TrnRcptId": "xyz",
    "ReversedTrnRcptId": "256",
    "PaymentMode": "Expedited",
    "AcceptanceMode": "Auto",
    "Recipient": {
        "ZelleCustomerId": "cust_12345",
        "ZelleOrgId": "string",
        "CoreCustomerId": "string", // proposed per 575866, nullable
        "OrgNetworkType": "string",
        "PayCenterMemberFIId": 556,
        "TokenIdentifier": "example@example.org",
        "TokenType": "Email",
        "ZelleProfileId": "string",
        "FullName": "string",
        "FinancialAccount": {
            "AccountNumber": "021000021",
            "AccountType": "Checking",
            "RoutingNumber": "011103097"
        },
        "IsRecipientMemberFI": true
    }
}

JHA.Blue.Contracts.ZelleInactiveCustomerDeactivationIntent

This is a draft

Publisher

WSO2 EI

Subscriber

Firefly

Client

RabbitMq

Purpose

Informs a Firefly job that a customer is flagged for deactivation.

Schema

{
  "EventId": "a guid" // move to header?
  "Deactivations": [
    "ZelleCustomerId": "cust_12345",
    "ZelleOrgId": "string",
    "PayCenterMemberFIId": 556,
    "TokenIdentifier": "example@example.org",
    "TokenType": "Email",
    "TokenId": 123345,
    "ZellePaymentProfileId": "string",
    "PaymentProfileId": 123456
  ]
}

JHA.Blue.Contracts.ZellePaymentFlagsChanged

Publisher

WSO2 EI

Subscriber

ZSR

Client

RabbitMq

Purpose

Informs ZSR that a payment has a flag such as FI return.

Schema

ZellePaymentId: string
EffectiveAt: datetime utc
FlagsAdded: array of string
FlagsRemoved: array of string

JHA.PayCenter.Contracts.ZelleReconPaymentsSettled

Publisher

ZSR

Subscriber

PaymentRepo

Client

Masstransit?

Purpose

Informs CPR that a batch of payments have settled. See recon documentation

Schema

Payments: [{
  ZellePaymentId: "JA4R00000MXn7"
  Direction: string  // "Inbound", "Outbound"
  TrnRcptId: string
  SettledAt: utc datetime // will be nullable under proposed changes
  ReconStatus: string // "Settled", "AwaitingPaymentProcessing" as proposed for 481039
  PaymentMode: string // "Expedited", "Standard" (currently ZSR is actually sending "REALTIME" instead of "Expedited"
}]