def POST(walletid, wallet_amount, phone): wallet = db(db.rev_wallet.id == walletid).select().first() wallet.update_record(amount=wallet_amount) if wallet: DA=phone SA='EdoSRS' M='Your pin is; ' + wallet.revnumber + ' with balance of NGN' + wallet.amount if myutils.sendSMS(DA, SA, M) == 200: wallet.update_record(issued='yes') else: raise HTTP(301, json.dumps({'message': 'error sending sms'})) else: raise HTTP(402, json.dumps({'message': 'CBS fail to vend'})) return dict(message='NGN'+ wallet.amount + ' valued-pin was successfully sent to ' + phone )
def POST(code, mdatype, amount): #if not tablename == 'mda_sweep_account': if not db.confirmation(code=code): raise HTTP(404, json.dumps({'msg': 'Confirmation code doesnt exist'})) if not db.typeMDA(mdatype): raise HTTP(404, json.dumps({'msg': 'MDA-Type doesnt exist'})) confirm = db(db.confirmation.code == code).select().first() if confirm.amount < float(amount):raise HTTP(404, json.dumps({'msg': 'insufficient fund!'})) rs = myutils.credit(mdatype, confirm.id, myutils.debit(confirm.id, float(amount))) if rs == -1 : raise HTTP(401, json.dumps({'msg':'failed to credit account'})) DA = confirm.phone_no SA = 'EdoSRS' M = 'your code account ' + str(confirm.code) + ' is successfully charged; NGN' + amount + ', by ' + db.typeMDA(mdatype).name + '; your bal. is NGN' + str(confirm.amount - float(amount)) res = myutils.sendSMS(DA, SA, M) return dict(msg=M, res='res')
def getsms(): response.view = 'generic.json' phone = request.vars['phone'] msg = request.vars['text'] smscenter = request.vars['smscenter'] #split msg args = msg.split() if not args: raise HTTP(401, json.dumps({'msg': 'Bad Request'})) else: SA = 'EdoSRS' DA = str(phone)[1:] M = '' #Check Balance if args[0].upper() == 'BAL': # call getbalance api reventry = db.rev_wallet(revnumber=args[1]) if not reventry: M = 'Balance Check unsuccessful; Wrong Revenue Card Number' rs = myutils.sendSMS(DA, SA, M) raise HTTP(401, json.dumps({'msg' : 'wrong revcard'})) else: M = 'Your Account Bal is NGN' + str(reventry['amount']) return dict(msg = reventry['amount'], result=myutils.sendSMS(DA, SA, M)) # load RFID card elif args[0].upper() == 'LOAD': if not db.scratch_card(scratch_number=args[2]): M = 'Error loading account; Wrong Rechard Card Number' myutils.sendSMS(DA, SA, M) raise HTTP(401, json.dumps({'msg' : 'wrong recharge card'})) if not db.rev_wallet(revnumber = args[1]): M = 'Error loading account; wrong Revenue Card Number' myutils.sendSMS(DA, SA, M) raise HTTP(401, json.dumps({'msg' : 'wrong revcard'})) qryscratch = db.scratch_card.scratch_number == args[2] qryrev = db.rev_wallet.revnumber == args[1] scratch = db(qryscratch).select().first() rev = db(qryrev).select().first() rec = rev.update_record(amount = rev.amount + scratch.amount) M = 'Your Account Bal. is NGN' + str(db.rev_wallet(id = rec).amount) rs = myutils.sendSMS(DA, SA, M) return dict(record=rec, rs=rs) # Make Payment elif args[0].upper() == 'PAY': #check if Pay with TIN i.e 'pay tinNum scratchcardnumber #if len(args) == 3: qryrev = db.rev_wallet.revnumber == args[1] #Check Validity of pin if not db.rev_wallet(revnumber = args[1]): M = 'Invalid pin number' #rs = myutils.sendSMS(DA, SA, M) raise HTTP(404, json.dumps({'msg' : M})) else: #Post-charge revwallet = db(db.rev_wallet.revnumber == args[1]).select().first() ret=db.rev_charged.validate_and_insert(device=2, wallet=revwallet.id, amount=revwallet.amount, time_charged='now', reconcilled='no', receipt_issued=1 ) #raise HTTP(410, json.dumps({'ID':ret.id})) if ret.errors: myutils.sendSMS(DA, SA, 'Error Paying; pls try again') raise HTTP(401, json.dumps({'msg' : 'insert errors'})) else: Tin = None if len(args) == 3: Tin = args[2] # if it is pay with the TIN result = myutils.reconcile(args[1]) gencode = random.randint(100000,999999) confirm = db.confirmation.validate_and_insert(code=gencode, tin=Tin, pin=revwallet.id, amount=db.rev_charged(id=ret.id).amount, phone_no=DA, ) M = 'Your Smart Wallet code is ' + str(gencode) + '; with a balance of NGN' + str(db.rev_charged(id=ret.id).amount) + ' pls proceed to your service points to make your payment' rs = myutils.sendSMS(DA, SA, M) return dict(msg=M, rs=rs, code=str(gencode), amount=str(db.rev_charged(id=ret.id).amount)) else: return dict(msg = 'Error in message sent') return locals() #dict(phone=phone, smscenter=smscenter, msg=msg)