Module: Payments

Defined in:
lib/payments_pl.rb,
lib/payments_pl/pos.rb,
lib/payments_pl/hash_ext.rb,
lib/payments_pl/transaction.rb,
lib/payments_pl/view_helpers.rb

Defined Under Namespace

Modules: HashExt, ViewHelpers Classes: Pos, PosInvalid, PosNotFound, RequestFailed, SignatureInvalid, Transaction

Constant Summary collapse

ERRORS =
{
  100 => 'Brak parametru pos_id',
  101 => 'Brak parametru session_id',
  102 => 'Brak parametru ts',
  103 => 'Brak parametru sig',
  104 => 'Brak parametru desc',
  105 => 'Brak parametru client_ip',
  106 => 'Brak parametru first_name',
  107 => 'Brak parametru last_name',
  108 => 'Brak parametru street',
  109 => 'Brak parametru city',
  110 => 'Brak parametru post_code',
  111 => 'Brak parametru amount',
  112 => 'Błędny numer konta bankowego',
  113 => 'Brak parameteru email',
  114 => 'Brak numeru telefonu',
  200 => 'Inny chwilowy błąd',
  201 => 'Inny chwilowy błąd bazy danych',
  202 => 'POS o podanym identyfikatorze jest zablokowany',
  203 => 'Niedozwolona wartość pay_type dla danego pos_id',
  204 => 'Podana metoda płatności (wartość pay_type) jest chwilowo zablokowana dla danego pos_id, np. przerwa konserwacyjna bramki płatniczej',
  205 => 'Kwota transakcji mniejsza od wartości minimalnej',
  206 => 'Kwota transakcji większa od wartości maksymalnej',
  207 => 'Przekroczona wartość wszystkich transakcji dla jednego klienta w ostatnim przedziale czasowym',
  208 => 'POS dziala w wariancie ExpressPayment lecz nie nastąpiła aktywacja tego wariantu współpracy (czekamy na zgodę działu obsługi klienta)',
  209 => 'Błędny numer pos id lub pos auth key',
  500 => 'Transakcja nie istnieje',
  501 => 'Brak autoryzacji dla danej transakcji',
  502 => 'Transakcja rozpoczęta wcześniej',
  503 => 'Autoryzacja do transakcji była juz przeprowadzana',
  504 => 'Transakcja anulowana wczesniej',
  505 => 'Transakcja przekazana do odbioru wcześniej',
  506 => 'Transakcja już odebrana',
  507 => 'Błąd podczas zwrotu środków do klienta',
  599 => 'Błędny stan transakcji, np. nie można uznać transakcji kilka razy lub inny, prosimy o kontakt',
  999 => 'Inny błąd krytyczny - prosimy o kontakt'
}
POS_TYPES =
['default', 'sms_premium']
ENCODINGS =
['ISO', 'WIN', 'UTF']
@@pos_table =
{}

Class Method Summary collapse

Class Method Details

.[](name_or_id) ⇒ Object

Combined accessor, returns Pos object with given pos_id or name

Parameters:

  • name_or_id (String, Integer)

    name or pos_id of Pos

Returns:

  • (Object)

    the Pos object



76
77
78
# File 'lib/payments_pl.rb', line 76

def [](name_or_id)
  get_pos_by_name(name_or_id) || get_pos_by_id(name_or_id) || raise(PosNotFound)
end

.error_text(error_code) ⇒ String

Returns error explanation for given error code

Parameters:

  • error_code (Integer)

Returns:

  • (String)

    string with error message



104
105
106
# File 'lib/payments_pl.rb', line 104

def error_text(error_code)
  ERRORS[error_code.to_i]
end

.get_pos_by_id(id) ⇒ Object

Returns Pos object with given pos_id, the same as in payments.yml file

Parameters:

  • id (Integer)

    pos_id of Pos

Returns:

  • (Object)

    the Pos object



92
93
94
95
96
97
98
# File 'lib/payments_pl.rb', line 92

def get_pos_by_id(id)
  id = id.to_i
  @@pos_table.each do |k, v|
    return v if v.pos_id == id
  end
  nil
end

.get_pos_by_name(name) ⇒ Object

Returns Pos object with given name, the same as in payments.yml file

Parameters:

  • name (String)

    name of Pos

Returns:

  • (Object)

    the Pos object



84
85
86
# File 'lib/payments_pl.rb', line 84

def get_pos_by_name(name)
  @@pos_table[name]
end

.init(filename) ⇒ Object

Loads payments.yml file and creates specified Pos objects



62
63
64
65
66
67
68
69
70
# File 'lib/payments_pl.rb', line 62

def init(filename)
  if File.exist?(filename)
    config = YAML.load_file(filename)
    config.each do |k, v|
      pos = Pos.new(v)
      @@pos_table[k] = pos
    end
  end
end