Beispiel #1
0
Datei: term.py Projekt: stdk/u2py
def init(card,aid,pix,deposit):
 from transport_card import validate,set_deposit,register_contract,clear

 validate(card)
 set_deposit(card,deposit)

 clear(card,[(STATIC,KEY,'dynamic'),(DYNAMIC,KEY,'dynamic')])

 static_sector = card.sector(num = STATIC, key = 0, enc = ENC,
                             method = 'full', read = False)
 term_init(p(static_sector.data),p(TERM_INIT(aid,pix)))
 static_sector.data.crc16_calc(low_endian = 1)

 event = EVENT_CONTRACT(card, AID = aid, PIX = pix, TransactionType = 0)
 try:
  static_sector.write()
  static_sector.set_trailer(KEY, mode = 'dynamic')

  dynamic_sector = card.sector(num = DYNAMIC, key = 0, enc = 0xFF,
                               method = 'full', read = False)
  dynamic_sector.data.cast(DYNAMIC_A).__init__(TERM_DYNAMIC)
  dynamic_sector.write()
  dynamic_sector.set_trailer(KEY, mode = 'dynamic')

  register_contract(card,STATIC,aid,pix)
 except Exception as e: event.set_error_code(e); raise
 finally: event.save(card)
Beispiel #2
0
def remove(card):
 from transport_card import validate,set_deposit,clear,register_contract

 validate(card)

 event = EVENT_CONTRACT(card, AID = AID, PIX = PIX, TransactionType = 1)

 try:
  clear(card,sectors = [(SECTOR,KEY,'static')])
  register_contract(card,SECTOR,0,0)
 except Exception as e: event.set_error_code(e); raise
 finally: event.save(card)

 set_deposit(card,0)
Beispiel #3
0
Datei: term.py Projekt: stdk/u2py
def remove(card):
 from transport_card import validate,set_deposit,register_contract,clear

 validate(card)

 aidpix = card.contract_list[0] if len(card.contract_list) else 0

 event = EVENT_CONTRACT(card, AID = aidpix >> 12, PIX = aidpix & 0xFFF, TransactionType = 1)
 try:
  clear(card,[(STATIC,KEY,'dynamic'),(DYNAMIC,KEY,'dynamic')])
  register_contract(card,STATIC,0,0)
 except Exception as e: event.set_error_code(e); raise
 finally: event.save(card)

 set_deposit(card,0)
Beispiel #4
0
Datei: term.py Projekt: stdk/u2py
def test_available():
 from interface import Reader
 import transport_card

 card = Reader().scan()
 transport_card.validate(card)
 sector,static = read_static(card)

 now = datetime.now()
 days_for_test = [datetime(year = now.year,month = now.month,day = d)
                  for d in xrange(1,monthrange(now.year,now.month)[1]+1)]

 for date in days_for_test:
  ret = available_refill(static.aid,static.pix,date=date)
  if ret:
   print date.strftime("%d/%m/%y"),':',ret[0],[i.strftime("%d/%m/%y") for i in ret[1]]
Beispiel #5
0
def init(card,deposit):
 from transport_card import validate,set_deposit,register_contract

 validate(card)
 set_deposit(card,deposit)

 jsector = CONTRACT_A(CONTRACT1_STATIC,CONTRACT1_DYNAMIC)
 sector = card.sector(num=SECTOR,key=0,enc=ENCRYPTION,read=False)
 sector.data = ByteArray(jsector)

 event = EVENT_CONTRACT(card, AID = AID, PIX = PIX, TransactionType = 0)

 try:
  sector.write()
  sector.set_trailer(KEY)
  register_contract(card,SECTOR,AID,PIX)
 except Exception as e: event.set_error_code(e); raise
 finally: event.save(card)
Beispiel #6
0
    ('EventVer',            c_uint8),
    ('CashCardSN',          c_uint32),
    ('CashASPPSN',          ASPP10),
    ('Amount',              c_uint32),
    ('Value',               c_uint32) # TagAmount
 ]

 def __init__(self,**kw):
  self.EventVer = 2
  self.CashCardSN = config.cash_card_sn
  self.CashASPPSN = ASPP10(config.cash_card_aspp)
  Event.__init__(self,**kw)

if __name__ == '__main__':
 import config
 config.cash_card_sn = 100

 import events
 from interface import Reader
 import transport_card

 card = Reader().scan()
 transport_card.validate(card)

 x = events.EVENT_ENCASHMENT(Amount = 1000)
 print x
 x.save()

 print events.ServiceEvent.load_last()