-type payment_state() :: added | done | cancelled | pending | untracked | failed | unknown | confirmed | discarded. -record(state_change, { time :: erlang:now(), state :: any(), info :: any()}). -record(payment, { id :: any(), external_id :: any(), % id of the purchase in external payment system if any user_id :: any(), state :: payment_state(), membership :: #membership{}, next :: any(), prev :: any(), start_time :: erlang:now(), end_time :: erlang:now(), state_log = [] :: [#state_change{}], info :: any() }). -record(user_payment, { user :: any(), top :: any() }). -define(MP_STATE_ADDED, added). -define(MP_STATE_DONE, done). -define(MP_STATE_CANCELLED, cancelled). -define(MP_STATE_UNTRACKED, untracked). -define(MP_STATE_PENDING, pending). -define(MP_STATE_FAILED, failed). -define(MP_STATE_UNKNOWN, unknown). -define(MP_STATE_CONFIRMED, confirmed). -define(MP_STATE_UNEXPECTED, unexpected). -define(MP_STATE_DISCARDED, discarded). -define(MP_MONTHLY_LIMIT_MULTIPLIER, 3). -record(pi_credit_card, { cardholder_name, cardholder_surname, cardnumber_masked, retref_num, prov_date, auth_code }).