Class: QiwiPay::Confirmation

Inherits:
Object
  • Object
show all
Includes:
MessagesForCodes
Defined in:
lib/qiwi-pay/confirmation.rb

Overview

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

Qiwi payment confirmation (callback)

Constant Summary collapse

ALLOWED_PARAMS =

Available confirmation parameters

%i[
  txn_id txn_status txn_type txn_date error_code pan
  amount currency auth_code eci card_name card_bank
  order_id ip email country city region address phone
  cf1 cf2 cf3 cf4 cf5
  product_name
  card_token card_token_expire
  sign
  cheque cheque_link
  request_id
  issuer_name issuer_country
].freeze
INTEGER_PARAMS =

Parameters of integer type

%i[
  txn_id
  txn_status
  txn_type
  error_code
  currency
]
SIGN_PARAMS =

Request params used to calculate signature

%i[
  txn_id
  txn_status
  txn_type
  error_code
  amount
  currency
  ip
  email
].freeze
ALLOWED_IPS =

IPs allowed to receive confirmation from

%w[
  91.232.231.36
  79.142.22.81
  79.142.28.154
  195.189.102.81
].freeze

Constants included from MessagesForCodes

MessagesForCodes::ERROR_MESSAGES, MessagesForCodes::TXN_STATUS_MESSAGES, MessagesForCodes::TXN_TYPE_MESSAGES

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from MessagesForCodes

#error_message, #txn_status_message, #txn_type_message

Constructor Details

#initialize(crds, params) ⇒ Confirmation

Returns a new instance of Confirmation.

Parameters:

  • crds (Credentials)

    Api access credentials object

  • params (Hash)

    Request params



95
96
97
98
99
100
101
102
# 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

Instance Attribute Details

#secretObject (readonly)

Returns the value of attribute secret.



91
92
93
# File 'lib/qiwi-pay/confirmation.rb', line 91

def secret
  @secret
end

Instance Method Details

#error?Boolean

Check if error code present in response

Returns:

  • (Boolean)


123
124
125
# File 'lib/qiwi-pay/confirmation.rb', line 123

def error?
  !error_code.zero?
end

#success?Boolean

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

Returns:

  • (Boolean)


118
119
120
# File 'lib/qiwi-pay/confirmation.rb', line 118

def success?
  valid_sign? && !error?
end

#to_hObject

Converts confirmation data to hash



128
129
130
131
132
133
134
# 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) ⇒ Boolean

Check server IP address validity

Parameters:

  • ip (String)

Returns:

  • (Boolean)


107
108
109
# File 'lib/qiwi-pay/confirmation.rb', line 107

def valid_server_ip?(ip)
  ALLOWED_IPS.include? ip
end

#valid_sign?Boolean

Check confirmation params signature validity

Returns:

  • (Boolean)


113
114
115
# File 'lib/qiwi-pay/confirmation.rb', line 113

def valid_sign?
  calculated_sign.upcase == sign
end