class QiwiPay::Confirmation

Qiwi payment confirmation (callback)

@note Confirmation parameters list

Параметр          Тип данных  Описание
txn_id            integer     Идентификатор транзакции
txn_status        integer     Статус транзакции
txn_type          integer     Тип транзакции
txn_date          timestamp   Дата транзакции в формате ISO8601 с временной зоной
error_code        integer     Код ошибки работы системы
pan               string(19)  Номер карты Покупателя в формате 411111XXXXXX1111
amount            decimal     Сумма списания
currency          integer     Валюта суммы списания в цифровом формате согласно ISO 4217
auth_code         string(6)   Код авторизации
eci               string(2)   Индикатор E-Commerce операции
card_name         string(64)  Имя Покупателя, как указано на карте (латинские буквы)
card_bank         string(64)  Банк-эмитент карты
order_id          string(256) Уникальный номер заказа в системе ТСП
ip                string(15)  IP-адрес Покупателя
email             string(64)  E-mail Покупателя
country           string(3)   Страна Покупателя в формате 3-х буквенных кодов согласно ISO 3166-1
city              string(64)  Город местонахождения Покупателя
region            string(6)   Регион страны формате геокодов согласно ISO 3166-2
address           string(64)  Адрес местонахождения Покупателя
phone             string(15)  Контактный телефон Покупателя
cf1               string(256) Поля для ввода произвольной информации, дополняющей данные по операции. Например - описание услуг ТСП.
cf2               string(256) Поля для ввода произвольной информации, дополняющей данные по операции. Например - описание услуг ТСП.
cf3               string(256) Поля для ввода произвольной информации, дополняющей данные по операции. Например - описание услуг ТСП.
cf4               string(256) Поля для ввода произвольной информации, дополняющей данные по операции. Например - описание услуг ТСП.
cf5               string(256) Поля для ввода произвольной информации, дополняющей данные по операции. Например - описание услуг ТСП.
product_name      string(256) Описание услуги которую получает Плательщик.
card_token        string(40)  Токен карты (если функционал токенизации включен для данного сайта)
card_token_expire timestamp   Срок истечения токена карты (если функционал токенизации включен для данного сайта)
sign              string(64)  Контрольная сумма переданных параметров. Контрольная сумма передается в верхнем регистре.
cheque            string      URL чека
cheque_link       string      URL чека
request_id
issuer_name
issuer_country

@note {timestamp} data type is represented by string in format {YYYY-MM-DDThh:mm:ss±hh:mm}

Constants

ALLOWED_IPS

IPs allowed to receive confirmation from

ALLOWED_PARAMS

Available confirmation parameters

INTEGER_PARAMS

Parameters of integer type

SIGN_PARAMS

Request params used to calculate signature

Attributes

secret[R]

Public Class Methods

new(crds, params) click to toggle source

@param crds [Credentials] Api access credentials object @param params [Hash] Request params

# File lib/qiwi-pay/confirmation.rb, line 95
def initialize(crds, params)
  ALLOWED_PARAMS.each do |pname|
    pval = params.fetch(pname, nil) || params.fetch(pname.to_s, nil)
    pval = pval.to_i if INTEGER_PARAMS.include?(pname)
    instance_variable_set "@#{pname}", pval
  end
  @secret = crds.secret
end

Public Instance Methods

error?() click to toggle source

Check if error code present in response

# File lib/qiwi-pay/confirmation.rb, line 123
def error?
  !error_code.zero?
end
success?() click to toggle source

Check if payment operation was successful (has valid sign and no errors)

# File lib/qiwi-pay/confirmation.rb, line 118
def success?
  valid_sign? && !error?
end
to_h() click to toggle source

Converts confirmation data to hash

# File lib/qiwi-pay/confirmation.rb, line 128
def to_h
  {}.tap do |h|
    ALLOWED_PARAMS.each { |p| h[p] = send(p) }
    h[:txn_status_message] = txn_status_message
    h[:txn_type_message] = txn_type_message
  end
end
valid_server_ip?(ip) click to toggle source

Check server IP address validity @param ip [String] @return [Boolean]

# File lib/qiwi-pay/confirmation.rb, line 107
def valid_server_ip?(ip)
  ALLOWED_IPS.include? ip
end
valid_sign?() click to toggle source

Check confirmation params signature validity @return [Boolean]

# File lib/qiwi-pay/confirmation.rb, line 113
def valid_sign?
  calculated_sign.upcase == sign
end

Private Instance Methods

calculated_sign() click to toggle source

Calculates signature for parameters

# File lib/qiwi-pay/confirmation.rb, line 139
def calculated_sign
  params = SIGN_PARAMS.each_with_object({}) do |p, h|
    h[p] = send(p).tap { |v| v ? v.to_s : nil }
  end
  Signature.new(params, @secret).sign.upcase
end