Module: EasyCard

Defined in:
lib/easycard.rb,
lib/easycard/version.rb,
lib/easycard/response.rb,
lib/easycard/color_string.rb

Defined Under Namespace

Modules: ColorString Classes: Error, NotFound, Response

Constant Summary collapse

KEY =
'EasyCardToKingay23456789'
IV =
'01234567'
SALT =
'L0CalKing'
CONST =
8544
VERSION =
'1.0.3'

Class Method Summary collapse

Class Method Details

.card_id(card_number) ⇒ Object



31
32
33
34
35
36
37
38
39
# File 'lib/easycard.rb', line 31

def card_id card_number
  remainder = card_number.size % 16
  data = card_number + "\x06"*(16 - remainder) if remainder != 0
  cipher = OpenSSL::Cipher.new('DES3')
  cipher.encrypt
  cipher.key = KEY
  cipher.iv = IV
  Base64.encode64(cipher.update(data)).chop!
end

.query(cart_number, from: Date.today-30, to: Date.today) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/easycard.rb', line 18

def query cart_number, from: Date.today-30, to: Date.today
  query_hash = {
    cardID: card_id(cart_number),
    begin: from.strftime('%Y-%m-%d'),
    end: to.strftime('%Y-%m-%d'),
    verify: verify,
    ev: 1
  }
  uri = URI('https://wallet.easycard.com.tw/EasyWallet/QueryManager/V3/GetTXNThinDataInfo')
  uri.query = URI.encode_www_form(query_hash)
  Response.new(Net::HTTP.get(uri))
end

.verify(time = Time.now) ⇒ Object



41
42
43
44
# File 'lib/easycard.rb', line 41

def verify time = Time.now
  seed = time.month + time.day + time.hour
  Digest::MD5.hexdigest("#{seed * CONST}#{SALT}").upcase!
end