lib/common/base_transaction.ex

defmodule Transbank.Common.BaseTransaction do
  defstruct [
    :commerce_code,
    :api_key,
    :environment
  ]

  def new(commerce_code, api_key, environment) do
    case Enum.any?(["production", "integration"], fn s -> s == environment end) do
      true ->
        raise ArgumentError, "Environment must be either 'integration' or 'production'"

      _ ->
        %{
          commerce_code: commerce_code,
          api_key: api_key,
          environment: environment
        }
    end
  end
end