Saldo - en Swedbank/ Nordea/ ICA/ LF/ Coop widget [1.2.0]

Diskussion i 'Applikationsutveckling' startad av kria, 25 apr 2010.

  1. kria

    kria Youth Droid Medlem

    Blev medlem:
    31 okt 2009
    Inlägg:
    107
    Mottagna gillanden:
    0

    MINA ENHETER

    Vad det är för markup (wml, html etc) har ingen betydelse i sammanhanget, så länge man kan ansluta och hämta data så är det bara att parsa. Om det finns browser restriktioner så kan man spoofa user agent. Jag kan ta en titt på att integrera Nordea, även dom verkar ju ha nån förenklad inloggning så man slipper tvåfaktorsautentisering. Jag ska bara övertala nån polare att dela med sig av sitt konto :)
     
  2. Ziq

    Ziq Senior Droid Medlem

    Blev medlem:
    3 dec 2009
    Inlägg:
    1 915
    Mottagna gillanden:
    179
    Operatör:
    Tele2
    Telefon:
    Samsung Galaxy S7

    MINA ENHETER

    Operatör:
    Tele2
    Telefon:
    Samsung Galaxy S7
    ROM:
    Stock
    Platta:
    Galaxy Tab 10.1
    ROM:
    [AOSP] Android 5.1.1 Lollipop
    Super! :)
     
  3. Kentomen

    Kentomen Adult Droid Medlem

    Blev medlem:
    28 okt 2009
    Inlägg:
    650
    Mottagna gillanden:
    73

    MINA ENHETER

    Nordea skulle som sagt vara super.
     
  4. Sed

    Sed Adult Droid Medlem

    Blev medlem:
    18 mar 2010
    Inlägg:
    968
    Mottagna gillanden:
    310

    MINA ENHETER

  5. wmb

    wmb Android Hedersmedlem

    Blev medlem:
    19 okt 2009
    Inlägg:
    7 093
    Mottagna gillanden:
    2 015
    Operatör:
    Halebop

    MINA ENHETER

    Operatör:
    Halebop
    Jag har reggat min mobilnr, kopplat till mitt personkonto.

    Jag ringer ett nr, 2-3 sek senare säger rösten vilket saldo jag har, efter det kan jag använda telefonbanken om jag vill.

    Gäller swedbank
     
  6. roxer2b

    roxer2b Teen Droid Medlem

    Blev medlem:
    8 sept 2009
    Inlägg:
    481
    Mottagna gillanden:
    0

    MINA ENHETER

    Det borde väl vara möjligt att skicka requests till nordeas wapsida och sedan läsa ut önskad information. Sedan vet jag ju inte hur mycket jobbigare det skulle vara än html då jag itne testat att göra något sånt på android.
     
  7. JambaFun

    JambaFun Infant Droid Medlem

    Blev medlem:
    13 apr 2010
    Inlägg:
    12
    Mottagna gillanden:
    0

    MINA ENHETER

    Häftigt kria! Jag snickrar på min egen Swedbank-widget som också råkar heta Saldo, men nu fick jag ju allt gratis :)

    En funktion som jag tänkt mycket på är att enkelt kunna fylla upp kontot till en viss summa från ett annat konto. Typ som så här:

    1. Du ska handla en stavmixer för 1795 kr på rea.
    2. Som vanligt är du paranoid och har bara ett belopp på ditt Visakort för att täcka lunchen och kanske en pizza och cola till kvällen.
    3. Som vanligt är du därför alltid obstinat över att ditt köp ska nekas så fort du köper nåt dyrare än en hundring.
    4. Framme i stavmixeraffärskassan sneglar du på ditt Saldo och ser att det ligger på 15:50 kr.
    5. Du trycker på din widget och wips fyller den upp till närmsta 500-ing.
    6. Detta räcker ju inte så du trycker en gång till och den fyller upp till nästa 500-ing.
    7. Se nummer 6.
    8. Se nummer 7.
    9. Ditt saldo är nu 2000 och du kan lugnt genomföra ditt köp.

    En annan lösning är nån form av slajder som man kan dra, men det tycker jag är overkill. Det ska självklart gå att välja från vilket konto det ska dras och till vilket belopp det ska fyllas upp.
     
  8. Sed

    Sed Adult Droid Medlem

    Blev medlem:
    18 mar 2010
    Inlägg:
    968
    Mottagna gillanden:
    310

    MINA ENHETER

    Det går bra att köra mot vanliga nordeas förenklade sida också(se ovan).

    Nordeainloggning och hämtning av saldon(både konton och kreditkortskonton):
    PHP:
    public class SwedbankManager {
        private static final 
    String TAG "SwedbankManager";

        private static final 
    String LOGIN_URL "https://gfs.nb.se/bin2/gfskod";
        private static final 
    String ACCOUNTS_URL "https://gfs.nb.se/bin2/gfskod?OBJECT=KF00T";
        private static final 
    String CREDITS_URL "https://gfs.nb.se/bin2/gfskod?OBJECT=CC00T";
        private static final 
    String TOKEN_PARAM "_csrf_token";
        private static final 
    String USER_PARAM "kundnr";
        private static final 
    String PASS_PARAM "pinkod";

        private static final 
    String OBJECT_PARAM "OBJECT";
        private static final 
    String CHECKCODE_PARAM "CHECKCODE";
        
        private static final 
    String USER_AGENT "Mozilla/5.0 (Linux; U; Android 1.5; en-se; HTC Hero Build/CUPCAKE) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1";
        private static final 
    String ACCOUNTS_REGEX 
            
    "KF00T', '(\\d+)', '([\\w\\s\\d]+)'[^\\n]*\\s*<td class=\"last\" align=\"right\" nowrap>([0-9\\.\\,]+)";
        
        private static final 
    String CREDITS_REGEX 
            
    "Kontoutdrag'; return true;\" onMouseOut=\"status='';\">([\\w\\s\\d]+)<[^\\n]*\\s*<td align=\"right\" class=\"last\" nowrap>([0-9\\.\\,]+)";
        


        private 
    String username;
        private 
    String password;

        public 
    SwedbankManager(String usernameString password) {
            
    this.username username;
            
    this.password password;
        }

        public 
    Account getAccount(int idthrows SwedbankException {
            
    Hashtable<IntegerAccountaccounts getAccounts();
            return 
    accounts.get(Integer.valueOf(id));
        }

        public 
    Hashtable<IntegerAccountgetAccounts() throws SwedbankException {
            
    Log.d(TAG"-> getAccounts()");
            
    HttpClient httpClient = new DefaultHttpClient();
            
    //TODO: grab internal agent
            //httpClient.getParams().setParameter(HttpProtocolParams.USER_AGENT, USER_AGENT);
            
    Hashtable<IntegerAccountaccounts = new Hashtable<IntegerAccount>();

            try {
                
    // First get token
                
    Log.d(TAG"getting token...");
                
    //String res = HTTPHelper.get(httpClient, LOGIN_URL);
                //Pattern pattern = Pattern.compile(TOKEN_REGEX);
                //Matcher matcher = pattern.matcher(res);
                /*if (!matcher.find()) {
                    Log.e(TAG, "No token match.");
                    throw new SwedbankException("No token match.");
                }
                String token = matcher.group(1);
                Log.d(TAG, "token= " + token);*/

                // Then do login
                
    List<NameValuePairparameters = new ArrayList<NameValuePair>(3);
                
    //parameters.add(new BasicNameValuePair(TOKEN_PARAM, token));
                
    parameters.add(new BasicNameValuePair(USER_PARAMusername));
                
    parameters.add(new BasicNameValuePair(PASS_PARAMpassword));
                
    parameters.add(new BasicNameValuePair(OBJECT_PARAM"TT00"));
                
    parameters.add(new BasicNameValuePair(CHECKCODE_PARAM"124535648456899"));

                
    Log.d(TAG"logging in...");
                
    String res HTTPHelper.post(httpClientLOGIN_URLparameters);
                
                
    //TODO: use regexp to grab swedbank err text
                
    if (res.contains("Tekniskt fel")) {
                    
    //login failed.. bail
                    
    throw new SwedbankException("auth fail");
                }

                
    // Now we should be logged in with a cookie set, let's get accounts info
                
    Log.d(TAG"getting account info...");
                
    res HTTPHelper.get(httpClientACCOUNTS_URL);
                
    Log.d(TAG"accounts html dump:");
                
    Log.d(TAGres);
                
    Pattern pattern Pattern.compile(ACCOUNTS_REGEX);
                
    Matcher matcher pattern.matcher(res);

                while (
    matcher.find()) {
                    
    //int groupCount = matcher.groupCount();
                    //if (groupCount < 4) {
                    //                    throw new SwedbankException("Pattern match issue: groupCount < 4");
                    //}
                    //for (int i = 1; i <= groupCount; i++) {
                    //    Log.d(TAG, i + ":" + matcher.group(i));
                    //}
                    
    int id Integer.parseInt(matcher.group(1));
                    
    int ordinal Integer.parseInt(matcher.group(1));
                    
    String name matcher.group(2);
                    
    long balance Long.parseLong(matcher.group(3).replaceAll("\\,|\\."""))/100;
                    
    accounts.put(Integer.valueOf(id), new Account(idordinalnamebalance));
                }
                
                
    // Now we should be logged in with a cookie set, let's get accounts info
                
    Log.d(TAG"getting account info...");
                
    res HTTPHelper.get(httpClientCREDITS_URL);
                
    Log.d(TAG"accounts html dump:");
                
    Log.d(TAGres);
                
    pattern Pattern.compile(CREDITS_REGEX);
                
    matcher pattern.matcher(res);

                while (
    matcher.find()) {
                    
    //int groupCount = matcher.groupCount();
                    //if (groupCount < 4) {
                    //                    throw new SwedbankException("Pattern match issue: groupCount < 4");
                    //}
                    //for (int i = 1; i <= groupCount; i++) {
                    //    Log.d(TAG, i + ":" + matcher.group(i));
                    //}
                    
    int id 100;
                    
    int ordinal id;
                    
    String name matcher.group(1);
                    
    long balance Long.parseLong(matcher.group(2).replaceAll("\\,|\\."""))/100;
                    
    accounts.put(Integer.valueOf(id), new Account(idordinalnamebalance));
                }
                
                
                
                
    //accounts.put(Integer.valueOf("5"), new Account(5, 5, "test", 2323));

            
    } catch (IOException e) {
                
    Log.e(TAGe.getMessage(), e);
                throw new 
    SwedbankException(e.getMessage(), e);

            } catch (
    HTTPException e) {
                
    Log.e(TAGe.getMessage(), e);
                throw new 
    SwedbankException(e.getMessage(), e);
            }

            
    Log.d(TAG"<- getAccounts()");

            return 
    accounts;

        }
    }
    Använde krias källkod. Endast testat litegrann men det fungerar iaf.
     
  9. greyhound

    greyhound Teen Droid Medlem

    Blev medlem:
    15 jun 2009
    Inlägg:
    327
    Mottagna gillanden:
    19

    MINA ENHETER

    Tack för att du visade källkoden! Jag tycker den är ganska bra för att vara "dålig" :) Hittade inget konstigt vid en snabb överblick iaf.
     
  10. nimo

    nimo Infant Droid Medlem

    Blev medlem:
    26 apr 2010
    Inlägg:
    4
    Mottagna gillanden:
    0

    MINA ENHETER

    Jag satt faktiskt och jobbade på en nordea-widget när jag såg denna post. Insåg att jag sparar mycket tid genom att anpassa den här istället. Har gjort det nu och det fungerar mycket bra. Om trådskaparen inte har något emot det kan jag publicera den nordea-anpassade koden här.
     
  11. asdfdav

    asdfdav Kid Droid Medlem

    Blev medlem:
    17 jan 2010
    Inlägg:
    33
    Mottagna gillanden:
    2

    MINA ENHETER

    kanonwidget! tack!
     
  12. Varazir

    Varazir Senior Droid Medlem

    Blev medlem:
    15 sept 2009
    Inlägg:
    1 464
    Mottagna gillanden:
    54
    Operatör:
    Telia
    Telefon:
    Pixel 5

    MINA ENHETER

    Operatör:
    Telia
    Telefon:
    Pixel 5
    Info:
    Nova launcher
  13. Grovkillen

    Grovkillen Kid Droid Medlem

    Blev medlem:
    15 nov 2009
    Inlägg:
    50
    Mottagna gillanden:
    0

    MINA ENHETER

    Great job! :)
     
  14. crazyrobban

    crazyrobban Adult Droid Medlem

    Blev medlem:
    10 dec 2009
    Inlägg:
    582
    Mottagna gillanden:
    32
    Operatör:
    DGC
    Telefon:
    Galaxy Note Edge

    MINA ENHETER

    Operatör:
    DGC
    Telefon:
    Galaxy Note Edge
    Platta:
    Samsung Galaxy Tab Pro 8.4
    ROM:
    CM 13
    Fungerar klockrent!

    Lönen kom in för 30 minuter sedan, körde refresh och inte bara uppdaterade den saldot, det "rullade" in krona för krona i en rasande fart. Kul med lite onödigt ögongodis. :)
     
  15. leasken

    leasken Kid Droid Medlem

    Blev medlem:
    17 feb 2010
    Inlägg:
    40
    Mottagna gillanden:
    0

    MINA ENHETER

    Give me! :)

    Sjukt kool app skulle det bli!
     
  16. Sebbe

    Sebbe Youth Droid Medlem

    Blev medlem:
    6 apr 2010
    Inlägg:
    147
    Mottagna gillanden:
    2
    Operatör:
    Telia, Telenor
    Telefon:
    Samsung Galaxy S10+

    MINA ENHETER

    Operatör:
    Telia, Telenor
    Telefon:
    Samsung Galaxy S10+
    Telefon 2:
    Watch: Samsung Gear S3 Classic
    Telefon 3:
    Nexus 6P
    Platta:
    Samsung Tab S6
    Jätteroligt att det finns flera folk som jobbar på samma sak varförsig, men vore det inte trevligare om ni kollaborerade lite och jobbade alla på samma grejj, Saldo som då funkar på både nordea och swedbank, kanske tillockmed andra banker?

    C'mon! Unite ppl! :D
     
  17. Sed

    Sed Adult Droid Medlem

    Blev medlem:
    18 mar 2010
    Inlägg:
    968
    Mottagna gillanden:
    310

    MINA ENHETER

    Jag har postat info för Nordea-inloggning ovan. Bara för kria att koda på. :) . Och nimo kan posta sin kod eller skicka till kria.

    Vilka fler banker har begränsad/förenklad inloggning med kod? Vore bra med stöd för alla banker i samma app.
     
  18. Varazir

    Varazir Senior Droid Medlem

    Blev medlem:
    15 sept 2009
    Inlägg:
    1 464
    Mottagna gillanden:
    54
    Operatör:
    Telia
    Telefon:
    Pixel 5

    MINA ENHETER

    Operatör:
    Telia
    Telefon:
    Pixel 5
    Info:
    Nova launcher
    Lägger man upp den på nån site tex google code så kan man väll jobba tillsammans på appen ?
     
  19. danber

    danber Infant Droid Medlem

    Blev medlem:
    31 mar 2010
    Inlägg:
    9
    Mottagna gillanden:
    0

    MINA ENHETER

    Härligt!
    Det här ska testas ikväll. :)
     
  20. drewi

    drewi Teen Droid Medlem

    Blev medlem:
    6 feb 2010
    Inlägg:
    305
    Mottagna gillanden:
    10
    Telefon:
    Pixel 2 XL

    MINA ENHETER

    Telefon:
    Pixel 2 XL
    Google Wave skulle ju också kunna va till nytta om ni bygger på den tillsammans, jag har 20 invites