lib/plaid/transactions/transaction/payment_meta.ex

defmodule Plaid.Transactions.Transaction.PaymentMeta do
  @moduledoc """
  [Plaid Transaction Payment-Meta schema.](https://plaid.com/docs/api/products/#transactions-get-response-payment-meta)
  """

  @behaviour Plaid.Castable

  @type t :: %__MODULE__{
          reference_number: String.t() | nil,
          ppd_id: String.t() | nil,
          payee: String.t() | nil,
          by_order_of: String.t() | nil,
          payer: String.t() | nil,
          payment_method: String.t() | nil,
          payment_processor: String.t() | nil,
          reason: String.t() | nil
        }

  defstruct [
    :reference_number,
    :ppd_id,
    :payee,
    :by_order_of,
    :payer,
    :payment_method,
    :payment_processor,
    :reason
  ]

  @impl true
  def cast(generic_map) do
    %__MODULE__{
      reference_number: generic_map["reference_number"],
      ppd_id: generic_map["ppd_id"],
      payee: generic_map["payee"],
      by_order_of: generic_map["by_order_of"],
      payer: generic_map["payer"],
      payment_method: generic_map["payment_method"],
      payment_processor: generic_map["payment_processor"],
      reason: generic_map["reason"]
    }
  end
end