Show / Hide Table of Contents

    DEM 2 1.0.413 Release Notes

    Released 27.08.2020

    View in browser

    This release continues to improve existing features while introducing a few significant feature contributions.

    What's new

    • mToken Wrapper expanded with
       bool? BiometricLoginCancelOrFaild { get; }
       bool AuthorizeWebTransactionsWithQR(string messageType, string payload);
    

    Andorid

       public bool? BiometricLoginCancelOrFaild => throw new NotImplementedException();
    
       public bool AuthorizeWebTransactionsWithQR(string messageType, string payload)
            {
                try
                {
                    if (loadedFacade == null)
                    {
                        return false;
                    }
    
                    if (messageType == TokenNotificationType.NotificationTypeMac)
                    {
                        var token = ProcessMACNotification(payload);
    
                        List<CharArrayExt> mds = new List<CharArrayExt>();
    
                        var macValues = token.Payload.Where(x => x.Key == "m");
    
                        if (macValues != null && macValues.Count() > 0)
                        {                        
                            foreach (var mv in macValues)
                            {
                                var p = mv.Value.ToString();
                                var v = p.GetNumbers();
                                mds.Add(CharArrayExt.ValueOf(v));
                            }
                        }
    
                        CharArrayExt[] mdsInputs = mds.ToArray();
    
                        var transactionId = token.Payload.Where(x => x.Key == "t").FirstOrDefault().Value.ToString();
    
                        loadedFacade.ConfirmPayment(serverInfo, MacProfileName, mdsInputs, transactionId);
    
                        return true;
                    }
    
                    return false;
                }
                catch (Exception ex)
                {
                    debug.Log(ADebugLevel.CriticalError, "AuthorizeWebTransactionsWithQR", ex);
                    return false;
                }
            }
    

    iOS

       public bool? BiometricLoginCancelOrFaild { get; protected set; }
    
       void ActivationWithBiometricFail(NSError obj)
       {
                IsActivatedWithBiometric = false;
                if (obj.Code == -120)
                {
                    BiometricLoginCancelOrFaild = true;
                }
                else if (obj.Code == -121)
                {
                    BiometricLoginCancelOrFaild = true;
                }
                else if (obj.Code == -122)
                {
                    BiometricLoginCancelOrFaild = true;
                }
    
    
                LastErrorMessage = obj.ToString();
    
                System.Diagnostics.Debug.WriteLine("Token activation with biometric failed" + obj.ToString());
       }
    
    
    
            public bool AuthorizeWebTransactionsWithQR(string messageType, string payload)
            {
                try
                {
                    NSError getTokenFacadeError;
    
                    var tokenFacade = TokenFacade.GetTokenWithTokenName(TokenName, out getTokenFacadeError);
    
                    if (tokenFacade == null)
                    {
                        return false;
                    }
    
                    if (messageType == TokenNotificationType.NOTIFICATION_TYPE_MAC)
                    {
                        string Qr_Key_Cipher_Modulus = "9a2de79c8c033232a72daaa43aae701b887ef30895b89aa36129821a798dd6164ce299bae9c0fb6fc71febc5d44bda0b253942d66c73fd433d6f539cdac0489aad41049acf445f3d0f34cc5c1970e8ecef07469fd908f71de0f974480d63e718804463d68f48c4f4644f81ef81c406f46d9738c879daf73c7f8b95015672f70e299e39ec3354fb6422ea0708208ca65dea12bf61278faf4602dd0cda7f73e90d62f12a0d24ad494c737489611c0cebb61269c022c507e6a68fb34a075017419e9c875d6bbe2fea6963a799668ac5f139f4fa9c80ff901fe7e718a9e6434a2f31df8a9f36016caddc10c54478180a44be79de33d06167fec1b19df24cd26c78a5";
    
                        if (!String.IsNullOrWhiteSpace(config.FactoryConfig_MToken_Qr_Key_Cipher_Modulus))
                        {
                            Qr_Key_Cipher_Modulus = config.FactoryConfig_MToken_Qr_Key_Cipher_Modulus;
                        }
    
                        string Qr_Key_Cipher_Exponenet = "10001";
    
                        if (!String.IsNullOrWhiteSpace(config.FactoryConfig_MToken_Qr_Key_Cipher_Exponenet))
                        {
                            Qr_Key_Cipher_Exponenet = config.FactoryConfig_MToken_Qr_Key_Cipher_Exponenet;
                        }
    
                        var publicKeyModulus = CharArrayExt.ValueOfString(Qr_Key_Cipher_Modulus);
    
                        var publicKeyExponenet = CharArrayExt.ValueOfString(Qr_Key_Cipher_Exponenet);
    
                        NSError processMACnotificationError;
    
                        var macNotificationPayload = TokenFacade.ProcessMACNotificationWithEncodedPayload(payload, publicKeyModulus, publicKeyExponenet, out processMACnotificationError);
    
                        List<CharArrayExt> mds = new List<CharArrayExt>();
    
                        if (macNotificationPayload != null)
                        {
                            if (macNotificationPayload.MacValues?.Count() > 0)
                            {                            
                                foreach (var mv in macNotificationPayload.MacValues)
                                {
                                    mds.Add(CharArrayExt.ValueOfString(mv));
                                }
                            }
    
                            CharArrayExt[] mdsInputs = mds.ToArray();
    
                            NSError confirmError;
    
                            loadedFacade.ConfirmPaymentWithServerInfo(serverInfo, MacProfileName, mdsInputs, macNotificationPayload.TransactionId, out confirmError, AuthorizeWebTransactionsWithQRSuccess, AuthorizeWebTransactionsWithQRFail);
    
                            return true;
                        }
    
                    }
    
                    return false;
                }
                catch (Exception ex)
                {
                    debug.LogAlways(ex);
    
                    return false;
                }
    
            }
    
            void AuthorizeWebTransactionsWithQRSuccess()
            {
                System.Diagnostics.Debug.WriteLine("Web transaction authorized!");
            }
    
            void AuthorizeWebTransactionsWithQRFail(NSError obj)
            {
                System.Diagnostics.Debug.WriteLine("Web transaction authorization failed" + obj.ToString());
            }
    
    • DEM V2 documentation - what's new

    Bug fixed

    Halk

    External

    • 1417, 1431, 1432

    Nova

    • UI fix for EntryComboBox

    Erste

    • Mulitpletransaction fix
    • AccesToken fix

    Latest application on AppCentar

    Halk - SxS MToken - SC 24x7 UAT

    • Android 70.93 MB (121)
    • iOS 64.92 MB (61)

    DEM V2 - Staging - SxS on Halk test

    • Android 59.56 MB (227)
    • iOS 67.11 MB (211)

    Packages (413)

    NuGet feed AzureDevOps

    Build status

    Contributions welcome!

    If you have one or more of some common pieces of code that you are always replicating across delivery apps, don't hesitate to contribute! We are the first NuGet package you install when creating a new .Net Mobile banking app!

    Please have a look at our contribution guide before you get started.

    If you need any help getting started, please let us know.

    Useful Links

    • Roadmap
    • Configuration
    • Current experimental flags
    • Weekly Mobile Newsletter - Issue 22

    Thank you to our community for helping to make DEM even better! Mobile Team

    Back to top Copyright 2020 Asseco SEE