Exemple #1
0
 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 )
Exemple #2
0
    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')
Exemple #3
0
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)