Class: Walletone::Payment

Inherits:
Fields
  • Object
show all
Defined in:
lib/walletone/payment.rb

Direct Known Subclasses

Recurrent::Payment

Constant Summary collapse

DESCRIPTION_TRUNCATE_LENGTH =
250
FIELDS =
i(
    WMI_MERCHANT_ID
    WMI_PAYMENT_NO
    WMI_PAYMENT_AMOUNT
    WMI_CURRENCY_ID
    WMI_DESCRIPTION
    WMI_SUCCESS_URL WMI_FAIL_URL
    WMI_EXPIRED_DATE
    WMI_PTENABLED WMI_PTDISABLED
    
    WMI_CUSTOMER_FIRSTNAME WMI_CUSTOMER_LASTNAME WMI_CUSTOMER_EMAIL
    WMI_CULTURE_ID
    WMI_SIGNATURE
    WMI_DELIVERY_REQUEST
    WMI_DELIVERY_COUNTRY WMI_DELIVERY_REGION WMI_DELIVERY_CITY WMI_DELIVERY_ADDRESS
    WMI_DELIVERY_CONTACTINFO WMI_DELIVERY_COMMENTS WMI_DELIVERY_ORDERID
    WMI_DELIVERY_DATEFROM WMI_DELIVERY_DATETILL
    WMI_PSP_MERCHANT_ID
)
MULTIPLE_VALUES =
i(WMI_PTENABLED WMI_PTDISABLED)
RUB_ISO_NUMBER =
643
DEFAULT_CURRENTY =
RUB_ISO_NUMBER

Class Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Fields

#[], #[]=, #as_list, define_fields, #fetch, #initialize, #to_s

Constructor Details

This class inherits a constructor from Walletone::Fields

Class Attribute Details

.encode_descriptionObject

Returns the value of attribute encode_description.



14
15
16
# File 'lib/walletone/payment.rb', line 14

def encode_description
  @encode_description
end

Instance Method Details

#formObject

Form generation shortcut



62
63
64
# File 'lib/walletone/payment.rb', line 62

def form
  Walletone::Form.new self
end

#sign!(secret_key, hash_type = Signer::DEFAULT_HASH_TYPE) ⇒ Object



45
46
47
48
49
50
# File 'lib/walletone/payment.rb', line 45

def sign!(secret_key, hash_type=Signer::DEFAULT_HASH_TYPE)
  raise 'Already signed!' if signed?
  self.WMI_SIGNATURE = signer.signature secret_key, hash_type

  freeze
end

#signed?Boolean



52
53
54
# File 'lib/walletone/payment.rb', line 52

def signed?
  self.WMI_SIGNATURE.is_a?(String) && ! self.WMI_SIGNATURE.empty?
end

#valid?Boolean



56
57
58
59
# File 'lib/walletone/payment.rb', line 56

def valid?
  # Где узнать какие поля обязательные?
  self.WMI_PAYMENT_AMOUNT && self.WMI_MERCHANT_ID
end

#WMI_CURRENCY_IDObject



66
67
68
# File 'lib/walletone/payment.rb', line 66

def WMI_CURRENCY_ID
  fetch(:WMI_CURRENCY_ID) || DEFAULT_CURRENTY
end

#WMI_DESCRIPTIONObject



75
76
77
78
79
80
81
82
83
84
# File 'lib/walletone/payment.rb', line 75

def WMI_DESCRIPTION
  value = fetch :WMI_DESCRIPTION
  return value unless value
  if self.class.encode_description
    # TODO энкодить автоматически, если встречаются национальные символы
    "BASE64:#{Base64.encode64(value[0...250])[0..-2]}"
  else
    value.slice 0, DESCRIPTION_TRUNCATE_LENGTH
  end
end

#WMI_EXPIRED_DATEObject



86
87
88
89
# File 'lib/walletone/payment.rb', line 86

def WMI_EXPIRED_DATE
  value = fetch :WMI_EXPIRED_DATE
  value ? value.iso8601 : value
end

#WMI_PAYMENT_AMOUNTObject



70
71
72
73
# File 'lib/walletone/payment.rb', line 70

def WMI_PAYMENT_AMOUNT
  value = fetch :WMI_PAYMENT_AMOUNT
  "%.2f" % value if value
end