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

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

  1. 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
    Coolt me like
     
  2. JimEn

    JimEn Kid Droid Medlem

    Blev medlem:
    26 mar 2010
    Inlägg:
    36
    Mottagna gillanden:
    1

    MINA ENHETER

    nice :) om du skulle kunna lägga upp versionen som bara klarar ett så skulle jag bli överlycklig :D

    Kan man lägga till två skånetrafiken konton? jag har ett jojo kort på mitt konto och frugan har sitt på ett eget konto så skulle vara trevligt om man kunde se bägge :)
     
  3. Marry

    Marry Baby Droid Medlem

    Blev medlem:
    23 jun 2010
    Inlägg:
    26
    Mottagna gillanden:
    0

    MINA ENHETER

    Den här lilla grejen var ju helt underbar! Man kan se direkt från sin startskärm hur kontot rensas :) Mycket cred till utvecklaren!
     
  4. 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
    Testar också Bankdroid nu, får se hur det ter sig :)
     
  5. kalleboo

    kalleboo Kid Droid Medlem

    Blev medlem:
    9 maj 2010
    Inlägg:
    92
    Mottagna gillanden:
    0

    MINA ENHETER

    OK jag har skrivit klart jojokort-stöd (Skånetrafiken). Det fungerar nu även om du har flera kort.

    Har kört det i ett par dagar och det verkar stabilt. Nån gång under natten har den en gång misslyckats med att logga in och disablat autouppdatering (det är bara att slå på igen), det är kanske när dom kör maintenance på sidan, jag får undersöka mera.

    Ladda ner här: http://kalleboo.s3.amazonaws.com/Saldo.apk Om du har installerat programmet från Market innan så går det kanske inte att installera "över" och då får man snällt avinstallera, tappa bort sina inställningar och installera om :/ tyvärr är det så tills kria kommer tillbaka från döden.

    [​IMG] [​IMG]

    Källkod om du inte litar på att jag inte snor din data (så du kan kompilera själv):
    Kod:
    package com.adrup.saldo.bank.skanetrafiken;
    
    import com.adrup.http.HttpException;
    import com.adrup.http.HttpHelper;
    import com.adrup.saldo.SaldoHttpClient;
    import com.adrup.saldo.bank.Account;
    import com.adrup.saldo.bank.AccountHashKey;
    import com.adrup.saldo.bank.AuthenticationException;
    import com.adrup.saldo.bank.BankException;
    import com.adrup.saldo.bank.BankLogin;
    import com.adrup.saldo.bank.BankManager;
    import com.adrup.saldo.bank.RemoteAccount;
    
    import org.apache.http.NameValuePair;
    import org.apache.http.client.HttpClient;
    import org.apache.http.message.BasicNameValuePair;
    
    import android.content.Context;
    import android.text.Html;
    import android.util.Log;
    
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.LinkedHashMap;
    import java.util.List;
    import java.util.Map;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    
    /**
     * A Skånetrafiken implementation of {@link BankManager}.
     * 
     * @author Karl Baron
     *
     */
    public class SkanetrafikenManager implements BankManager {
    	private static final String TAG = "SkanetrafikenManager";
    	private static final String NAME = "Skanetrafiken";
    
    	private BankLogin mBankLogin;
    	private Context mContext;
    	
    	public SkanetrafikenManager(BankLogin bankLogin, Context context) {
    		this.mBankLogin = bankLogin;
    		this.mContext = context;
    	}
    	
    	@Override
    	public String getName() {
    		return NAME;
    	}
    
    	@Override
    	public Map<AccountHashKey, RemoteAccount> getAccounts() throws BankException {
    		return getAccounts(new LinkedHashMap<AccountHashKey, RemoteAccount>());
    	}
    	
    	@Override
    	public Map<AccountHashKey, RemoteAccount> getAccounts(Map<AccountHashKey, RemoteAccount> accounts) throws BankException {
    		Log.d(TAG, "-> getAccounts()");
    		HttpClient httpClient = new SaldoHttpClient(mContext);
    
    		try {
    			Log.d(TAG, "post login form...");
    			List<NameValuePair> parameters = new ArrayList<NameValuePair>(3);
    			parameters.add(new BasicNameValuePair("__EVENTTARGET", "ctl00$LoginBlob1$DefaultLoginButton"));
    			parameters.add(new BasicNameValuePair("ctl00$LoginBlob1$Username", mBankLogin.getUsername()));
    			parameters.add(new BasicNameValuePair("ctl00$LoginBlob1$Password", mBankLogin.getPassword()));
    
    			String res = HttpHelper.post(httpClient, "http://www.skanetrafiken.se/templates/StartPage.aspx?id=2182&epslanguage=SV", parameters);
    			if (res.contains("Inloggningen misslyckades")) {
    				throw new AuthenticationException("auth fail");
    			}
    
    			Log.d(TAG, "getting account list...");
    			res = HttpHelper.get(httpClient, "https://www.skanetrafiken.se/templates/CardInformation.aspx?id=26957&epslanguage=SV");
    			
    			//pick out the viewstate (we need it to get acct balance)
    			Pattern pattern = Pattern.compile("id=\"__VIEWSTATE\" value=\"(.*)\"");
    			Matcher matcher = pattern.matcher(res);			
    			if (!matcher.find())
    				throw new SkanetrafikenException("failed to find viewstate");
    			
    			String viewstate = matcher.group(1);
    			
    			Log.d(TAG, "searching account info...");
    			pattern = Pattern.compile("<tr class=\"st.+?row\">.+?<a id=\"ctl00_fullRegion_mainRegion_CardInformation1_mRepeaterMyCards_ctl(\\d{2})_LinkButton3\".+?>(.+?)</a>.+?LinkButton1.+?\">(\\d+?)</a>",Pattern.DOTALL);
    			matcher = pattern.matcher(res);
    
    			Pattern pattern_balance = Pattern.compile("labelsaldoinfo\">(\\d*),");
    			Matcher matcher_balance;
    			int n = 0;
    			while (matcher.find()) {
    				int groupCount = matcher.groupCount();
    				if (groupCount < 2)
    					throw new SkanetrafikenException("Missing data for account "+n);
    
    				String accountType = "Reskassa";
    				String rowid       = matcher.group(1);
    				String name        = Html.fromHtml(matcher.group(2)).toString();
    				String remoteId    = matcher.group(3);
    				int ordinal        = ++n;
    				long balance       = 9999; //will be loaded from details page
    
    				Log.d(TAG, "loading balance for card "+remoteId+" ("+name+")...");
    				parameters = new ArrayList<NameValuePair>(2);
    				parameters.add(new BasicNameValuePair("__VIEWSTATE", viewstate));
    				parameters.add(new BasicNameValuePair("ctl00$fullRegion$mainRegion$CardInformation1$mRepeaterMyCards$ctl"+rowid+"$Button", "Kortinfo"));
    				String res_balance = HttpHelper.post(httpClient, "https://www.skanetrafiken.se/templates/CardInformation.aspx?id=26957&epslanguage=SV", parameters);
    				matcher_balance = pattern_balance.matcher(res_balance);
    				if (!matcher_balance.find() || matcher_balance.groupCount() < 1)
    					throw new SkanetrafikenException("couldnt find balance");
    
    				balance = Long.parseLong(matcher_balance.group(1));
    				
    				//We got it all! save...
    				accounts.put(new AccountHashKey(remoteId, mBankLogin.getId()), new Account(remoteId, mBankLogin.getId(), ordinal, name, balance));
    			}
    
    			Log.d(TAG, "done.");
    		} catch (IOException e) {
    			Log.e(TAG, e.getMessage(), e);
    			throw new SkanetrafikenException(e.getMessage(), e);
    
    		} catch (HttpException e) {
    			Log.e(TAG, e.getMessage(), e);
    			throw new SkanetrafikenException(e.getMessage(), e);
    		}
    
    		Log.d(TAG, "<- getAccounts()");
    
    		return accounts;
    	}
    
    	
    }
    
    
     
    Last edited: 5 jul 2010
  6. nullmind

    nullmind Infant Droid Medlem

    Blev medlem:
    7 jul 2010
    Inlägg:
    1
    Mottagna gillanden:
    0

    MINA ENHETER

    Liten Coop-fix

    Gillar programmet men störde mig lite på att Coop inte funkade.... och någon gång får man väl lära sig hur ett Androidprogram ser ut så jag drog ner källkoden och felsökte lite grann.

    Har inte fått full kläm på git än, specifikt har jag inte tagit reda på hur jag kan commita mina ändringar. Därför lägger jag dem här och ber någon med access att lägga upp dem (eller tala om för mig hur jag går tillväga).

    Följande variabelvärden måste ändras i CoopManager.java:
    Kod:
    	private static final String USER_PARAM = "ctl00$ContentPlaceHolderTodo$ContentPlaceHolderMainPageContainer$ContentPlaceHolderMainPageWithNavigationAndGlobalTeaser$ContentPlaceHolderPreContent$RegisterMediumUserForm$TextBoxUserName";
    	private static final String PASS_PARAM = "ctl00$ContentPlaceHolderTodo$ContentPlaceHolderMainPageContainer$ContentPlaceHolderMainPageWithNavigationAndGlobalTeaser$ContentPlaceHolderPreContent$RegisterMediumUserForm$TextBoxPassword";
    	private static final String BUTTON_PARAM = "ctl00$ContentPlaceHolderTodo$ContentPlaceHolderMainPageContainer$ContentPlaceHolderMainPageWithNavigationAndGlobalTeaser$ContentPlaceHolderPreContent$RegisterMediumUserForm$ButtonLogin";
    
     
  7. desire.

    desire. Adult Droid Medlem

    Blev medlem:
    11 maj 2010
    Inlägg:
    653
    Mottagna gillanden:
    9

    MINA ENHETER

    Kan inte lägga till min bank, har nordea, försoker refresha men den säger bara att no informartion to retrive, först när jag installerade denna app funkare det utan problem, men nu plötsligt slutade den fungera, några tips? :)
     
  8. robbzon

    robbzon Youth Droid Medlem

    Blev medlem:
    8 apr 2010
    Inlägg:
    175
    Mottagna gillanden:
    4

    MINA ENHETER

    Har du nyaste versionen?
     
  9. claxx

    claxx Kid Droid Medlem

    Blev medlem:
    6 jun 2009
    Inlägg:
    95
    Mottagna gillanden:
    0

    MINA ENHETER

    Jag har samma problem, har inte funkat på ett bra tag
     
  10. RickardP

    RickardP Adult Droid Medlem

    Blev medlem:
    8 apr 2010
    Inlägg:
    515
    Mottagna gillanden:
    22

    MINA ENHETER

    Kria: vad händer? Saknar att kunna kolla mitt saldo, får väl börja kolla andra appar om inget händer snart..
     
  11. Nerre

    Nerre Professional Droid Medlem

    Blev medlem:
    12 feb 2010
    Inlägg:
    2 110
    Mottagna gillanden:
    204
    Operatör:
    Telenor
    Telefon:
    Xperia Z1 compact

    MINA ENHETER

    Operatör:
    Telenor
    Telefon:
    Xperia Z1 compact
    Övrigt:
    Smartwatch 3
    Jag gick över till BankDroid så länge. Saknar bara den smidiga manuella uppdateringen (men det är bara ett tryck extra med Bankdroid).
     
  12. liato

    liato Adult Droid Medlem

    Blev medlem:
    6 maj 2010
    Inlägg:
    982
    Mottagna gillanden:
    361

    MINA ENHETER

    Går att uppdatera genom att klicka på bankikonen på widgeten.
     
  13. Nerre

    Nerre Professional Droid Medlem

    Blev medlem:
    12 feb 2010
    Inlägg:
    2 110
    Mottagna gillanden:
    204
    Operatör:
    Telenor
    Telefon:
    Xperia Z1 compact

    MINA ENHETER

    Operatör:
    Telenor
    Telefon:
    Xperia Z1 compact
    Övrigt:
    Smartwatch 3
    Var väldigt svårt att träffa rätt där med 1x2-widgeten. Lyckades en gång av fem.
     
  14. liato

    liato Adult Droid Medlem

    Blev medlem:
    6 maj 2010
    Inlägg:
    982
    Mottagna gillanden:
    361

    MINA ENHETER

    Kan nog göra så att den uppdateras om man klickar på banknamnet också.
     
  15. rejj

    rejj Kid Droid Medlem

    Blev medlem:
    9 jul 2010
    Inlägg:
    75
    Mottagna gillanden:
    7

    MINA ENHETER

    Kommit ganska långt, det som kvarstår är hantering av kreditkort, då jag inga kreditkort har ännu, beställt dock.

    Arbetar på samma vis som bankdroid mot mobil.nordea.se, blir dock 2 extra hämtningar av sidor mot för tidigare men borde bli mindre data totalt ändå tycker jag. Fonderna ligger ej med i "översikten" för konton, samt en hämtning av login.html för att plocka ut token för inloggning.

    Har även något slags ide att lägga in notifiering om att det finns e-fakturor att signera, men inte riktigt säker på hur man ska behandla det då den informationen kommer vid "varje" inloggning. Skulle ju bli smått frustrerad om det kom en notifiering stup i kvarten.. :ehm:

    Var skall uppdaterad NordeaManager.java skickas måhända, när jag blir klar ? :D
     
  16. 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
    Någon av er som utvecklar för appen borde höra av sig till kria (hans fullständiga namn finns på market och han är listad på eniro) och höra om han planerar att återuppta appen eller kan tänka sig att ersätta nuvarande version med en hänvisning till Saldo II som någon av er publicerar?
     
  17. Zentric

    Zentric Teen Droid Medlem

    Blev medlem:
    15 sept 2009
    Inlägg:
    289
    Mottagna gillanden:
    5

    MINA ENHETER

    Är det normalt detta? Efter en ombootning av min telefon SGS så ser jag att Saldo redan har laddats in i minnet. Det har iofs många andra program också gjort. Så som handcent osv. Varför laddas det in?
     
  18. 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
    För att det är meningen att det ska laddas in? Vare sig du har widget eller inte så måste ju programmet startas för att kunna kolla efter uppdateringar på dina konton..

    Om du varken använder widget eller uppdateringar så kanske det kan tyckas onödigt, men appen utvecklades ursprungligen som en widget.. Eftersom utvecklaren är försvunnen så har du nog svårt att få gensvar för synpunkter i dagsläget..
     
  19. Zentric

    Zentric Teen Droid Medlem

    Blev medlem:
    15 sept 2009
    Inlägg:
    289
    Mottagna gillanden:
    5

    MINA ENHETER

    Jag får byta till någon annan app då? Vilken är det som gäller? :)
     
  20. 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
    Bankdroid gör i princip samma sak..