diff --git a/main.py b/main.py index 6847618..1048de7 100755 --- a/main.py +++ b/main.py @@ -90,6 +90,7 @@ def handleSms(sms): global PRODUCTS global LAST_PRODUCT global LAST_REQUEST_ID + global LAST_SN logger.info(u'Incoming SMS from: {0}; Time: {1}; Message: {2}'.format(sms.number, sms.time, sms.text)) @@ -105,6 +106,7 @@ def handleSms(sms): if sms.text.find('Terimakasih, transaksi CASH IN ke akun') >= 0: logger.info('handleSms: CASH IN, aktivasi pull jika non aktif') + LAST_SN = xltunai.getSNFromCashInMessage(sms.text) enablePull() return @@ -140,6 +142,10 @@ def handleSms(sms): pushTopupStatus(LAST_REQUEST_ID, '68', sms.text) return + elif sms.text.find('Anda terima uang XLTunai') >= 0: + LAST_SN = xltunai.getSNFromReceiveTransferMessage(sms.text) + return + destination = xltunai.getDestinationFromMessage(sms.text) if destination == '': logger.warning('handleSms: gagal parsing nomor tujuan') @@ -301,7 +307,7 @@ def adviceLastSN(requestId, modem): sleep(15) adviceLastSN(requestid, modem) - elif lastSNFromHistory == 'P2P TRANSFER': + elif lastSNFromHistory == 'NON RELOAD': topupMessage = "Topup gagal berdasarkan advice. Trx terakhir adalah P2P Transfer." pushTopupStatus(requestId, '40', topupMessage) DISABLE_SEM = 0 diff --git a/test_xltunai.py b/test_xltunai.py index e26beab..facd2ef 100644 --- a/test_xltunai.py +++ b/test_xltunai.py @@ -131,3 +131,9 @@ def test_getPulsaFromUssdResponseMessage(): def test_getLastSNFromMessage(): assert xltunai.getLastSNFromHistoryMessage('Transaksi Terakhir : 20063778248257/5500/12-02-2016 14:37:08/M201312021528418273770285/P201511211752675316198716/RELOAD XL 5000') == '20063778248257' assert xltunai.getLastSNFromHistoryMessage('Transaksi Terakhir :\n20063778248257/5500/12-02-2016 14:37:08/M201312021528418273770285/P201511211752675316198716/RELOAD XL 5000') == '20063778248257' + +def test_getSNFromReceiveTransferMessage(): + assert xltunai.getSNFromReceiveTransferMessage('Anda terima uang XLTunai Rp2500000 dr 6287886957792 DIDIT ARIYANTO pada 19/02/2016 16:14:32.Cek saldo di *123*120#.RefID 49498359729433. Info hub 817') == '49498359729433' + +def test_getSNFromCashInMessage(): + assert xltunai.getSNFromCashInMessage('Terimakasih, transaksi CASH IN ke akun 6287886957792 berhasil. Jumlah transaksi Rp 5000000, biaya 0. Saldo anda saat ini 5000000 . Ref ID: 96346333194106') == '96346333194106' diff --git a/xltunai.py b/xltunai.py index 4c493ea..f948f3c 100644 --- a/xltunai.py +++ b/xltunai.py @@ -82,7 +82,20 @@ def getBalanceFromMessage(message): return int(sn) except: return 0 + +def getSNFromReceiveTransferMessage(message): + try: + sn = "".join(re.findall(r'RefID (\d+)', message)) + return sn + except: + return +def getSNFromCashInMessage(message): + try: + sn = "".join(re.findall(r'Ref ID: (\d+)$', message)) + return sn + except: + return def toInternationalNumber(number): return re.sub(r'^0', '62', number) @@ -150,8 +163,8 @@ def getMasaAktifFromUssdResponseMessage(message): return time.strftime("%Y-%m-%d", masa_aktif) def getLastSNFromHistoryMessage(message): - if re.findall(r"P2P TRANSFER", message): - return 'P2P TRANSFER' + if not re.findall(r"RELOAD", message): + return 'NON RELOAD' sn = re.findall(r"Transaksi Terakhir\s:\s(\d+)", message) if sn: