Current section

Files

Jump to
iyzico lib model payment.ex
Raw

lib/model/payment.ex

defmodule Iyzico.Payment do
@moduledoc """
Represents a successfully made payment returned from the platform.
"""
@enforce_keys ~w(basket_id bin_id card_ref conversation_id currency
fraud_status installment transactions commission_fee commission_amount paid_price id
last_four_digits merchant_commission_rate merchant_commission_amount price)a
defstruct [
:basket_id,
:bin_id,
:card_ref,
:conversation_id,
:currency,
:fraud_status,
:installment,
:transactions,
:commission_fee,
:commission_amount,
:paid_price,
:id,
:last_four_digits,
:merchant_commission_rate,
:merchant_commission_amount,
:price
]
@type currency :: :try
@type fraud_status :: :restrict | :awaiting | :ok
@type t :: %__MODULE__{
basket_id: binary,
bin_id: binary,
card_ref: Iyzico.CardReference.t,
conversation_id: binary,
currency: currency,
fraud_status: fraud_status,
installment: integer,
transactions: list,
commission_fee: number,
commission_amount: number,
last_four_digits: binary,
merchant_commission_rate: number,
merchant_commission_amount: number,
paid_price: number,
price: number,
id: binary
}
@doc """
Converts a given integer representation of a fraud status of a payment to respective type.
## Discussion
A merchant should only proceed to the transaction if and only if the fraud status is `:ok`.
A payments fraud status would be `:awaiting` if transaction safety is being processed in present.
Transactions with fraud status with `:restrict` value should be avoided.
## Examples
iex> Iyzico.Payment.to_fraud_status -1
:restrict
iex> Iyzico.Payment.to_fraud_status 0
:awaiting
iex> Iyzico.Payment.to_fraud_status 1
:ok
"""
@spec to_fraud_status(integer) :: fraud_status
def to_fraud_status(status) do
case status do
-1 ->
:restrict
0 ->
:awaiting
1 ->
:ok
end
end
end