XFuture XConnector API dla mBank
Metoda pozwala autoryzować zawartośc koszyka zleceń.

Namespace: GTools
Assembly: mBankConnectorLibrary (in mBankConnectorLibrary.dll) Version: 2.0.0.0

Syntax

C#
public void authorizeBasket(
	List<CollectedTransferData> operations,
	string accountNumber
)
Visual Basic
Public Sub authorizeBasket ( _
	operations As List(Of CollectedTransferData), _
	accountNumber As String _
)
Visual C++
public:
void authorizeBasket(
	List<CollectedTransferData^>^ operations, 
	String^ accountNumber
)

Parameters

operations
Type: System.Collections.Generic..::..List<(Of <(<'CollectedTransferData>)>)>
Lista obiektów typu CollectedTransferData, reprezentujących zlecenia z koszyka zleceń
accountNumber
Type: System..::..String
Numer rachunku, którego dotyczy wywołanie

Remarks

Koszyk zleceń jest kontenerem dla operacji, co do których nie zdecydowano się na natychmiastową autoryzację w momencie składania zlecenia. Zlecenia z koszyka można autoryzować w poźniejszym terminie. Aby podpisać i przekazać do realizacji cały koszyk, należy w argumencie 'operations' przekazać 'null'(C#) lub 'nothing'(VB). Aby podpisać wybrane przelewy z koszyka, należy w pierwszej kolejności pobrać zawartość koszyka za pomocą wywołania 'getBasketContent', a następnie z otrzymanej listy zleceń wybrac i przekazać jedynie te zlecenia, które mają zostać przekazane do realizacji. Metoda jest asynchroniczna i może wyzwalać szereg zdarzeń. 'statusChanged' - zdarzenie wyzwalane jest w trakcie wykonywania metody w celu informowania o kolejnych etapach wykonywanej operacji 'operationFinished' - zdarzenie wyzwalane jest po zakończeniu wykonywania metody i pozwala ocenić rezultat operacji 'authorizationReportReady' - zdarzenie wyzwalane jest po zakończniu procesu autoryzacji i pozwala szczegółowo ocenić rezultat operacji. 'operationProgressing' - zdarzenie inforujące o procesie postępu sekwencyjnej autoryzacji zleceń UWAGA: W przypadku trybu CONTINUE_AFTER_FAILURE, zdarzenie operationFinished zostanie wygenerowane jedynie w przypadku błędu nie związanego ze zleceniem, lub po zakończeniu sekwencyjnego procesu autoryzacji. W drugim przypadku operationFinished wywołane zostanie w kontekście SUCCESS, a lista zleceń potnecjalnie nieobsłużonych dostępna będzie za pośrednictwem zdarzenia 'authorizationReportReady'. W trybie BREAK_ON_FAILURE, zdarzenie 'operationFinished' generowane będzie po wystapieniu pierwszego błędu, lub na zakończenie operacji.

Examples

Klasa demonstruje sposób autoryzacji zawartości koszyka. Aby autoryzować bezwzględnie cały koszyk, zamiast listy zleceń, przekazujemy argument null. W przykładzie należy najpierw dokonać logowania za pomocą metody login, a po zakończeniu operacji wywołać metodę authorizeBasket. Zostanie przeprowadzona próba podpisania zawartości koszyka. Jeśli w koszyku nie będzie żadnych zleceń, operacja zakończy się niepowodzeniem. W przeciwnym wypadku istniejące przelewy zostaną podpisane w procesie sekwencyjnego wywoływania zdarzenia authorizationRequest. Aby nie ingerować w realny ruch środków na testowanym rachunku, użyty kod autoryzacyjny jest niepoprawny; w efekcie zostanie wygenerowane zdarzenie 'operationFinished' z argumentem 'Failure' oraz właściwym komunikatem błędu we właściwości 'errorMessage' konektora, oraz zdarzenie 'authorizetionReportReady'. W przyapdku poprawnego kodu argument zdarzenia 'operationFinished' powinien mieć wartość 'Success', a samo zdarzenie wywołane zostałoby po zakończeniu procesu autoryzacji. Sposób postępowania: utwórz instancję klasy BasketAuthorizationExampleClass; wywołaj metodę login(); wywołaj metodę authorizeBasket; obserwuj rezultaty w oknie diagnostycznym.
CopyC#
 //Przykładowa klasa, pokazujaca sposób autoryzacji koszyka.
        class BasketAuthorizationExampleClass
{
    //prywatny obiekt konektora
    private GTools.mBankConnector mymBankConnector;
    //konstruktor
    public BasketAuthorizationExampleClass(string login, string haslo)
    {
        this.mymBankConnector = new mBankConnector(login, haslo);
        this.mymBankConnector.operationFinished += new mBankConnector.mBankOperation_StatusChangedEventListener(mymBankConnector_operationFinished);
        this.mymBankConnector.statusChanged += new mBankConnector.mBankConnector_StatusChangedEventListener(mymBankConnector_statusChanged);
        this.mymBankConnector.authorizationRequest += new mBankConnector.mBankConnector_AuthorizationEventListener(mymBankConnector_authorizationRequest);
        this.mymBankConnector.authorizationReportReady += new mBankConnector.mBankConnector_BasketAuthorizationReport(mymBankConnector_authorizationReportReady);
    }

    //sluchacz zdarzenia authorizationReportReady konektora, wyzwalany opcjonalnie
    //po zakonczeniu operacji autoryzacji
    void mymBankConnector_authorizationReportReady(System.Collections.Generic.List<CollectedTransferData> successful, System.Collections.Generic.List<System.Collections.Generic.KeyValuePair<CollectedTransferData, string>> unsuccessful)
    {
        System.Diagnostics.Debug.WriteLine("Raport autoryzacji koszyka:");

        System.Diagnostics.Debug.WriteLine("Przelewy, których autoryzacja nie powiodła się:");

        //wyswietlamy uproszczoną informację na temat każdej operacji, której nie udało się autoryzować.
        foreach (System.Collections.Generic.KeyValuePair<CollectedTransferData, string> operation in unsuccessful)
        {
            System.Diagnostics.Debug.WriteLine("zlecenie: " + operation.Key.transferTitle +
                System.Environment.NewLine +
                "przyczyna: " + operation.Value);
        }

    }

    //sluchacz zdarzenia authorizationRequest konektora, wyzwalany
    //w przypadku potrzeby autoryzacji operacji
    void mymBankConnector_authorizationRequest(string codeNumber)
    {
        System.Diagnostics.Debug.WriteLine("Otrzymano żądanie autoryzacji." +
            System.Environment.NewLine +
            "Nastąpi próba autoryzacji błędnym kodem.");
       //Przekazujemy kod autoryzacyjny. Kod w tym przykładzie jest docelowo błędny
       mymBankConnector.authorization("invalidCode");
        //Proces autoryzacji uruchomiono w taki sposób, aby zakończył się po
        //wystąpieniu pierwszego błędu i generował zdarzenie raportu. Dlatego 
        //po pierwszej próbie autoryzacji wygenerowane zostanie zdarzenie 
        //'operationFinished' w kontekście 'FAILURE',a szczegółowy rezultat 
        //procesu autoryzacji wyświetlony zostanie w obsłudze
        //zdarzenia 'authorizationReportReady'.

    }


    //sluchacz zdarzenia operationFinished konektora, wyzwalany
    //po zakończeniu operacji, lub w przypadku błędu

    private void mymBankConnector_operationFinished(mBankConnector.mBankLastOperationResultEnum status)
    {

        //Jeśli operacja zakończyła się sukcesem
        if (status == mBankConnector.mBankLastOperationResultEnum.SUCCESS)
        {
            if (mymBankConnector.serviceContext == ServiceType.LOGIN)
            {
                System.Diagnostics.Debug.WriteLine("Logowanie zakończone sukcesem");

            }
            else if (mymBankConnector.serviceContext == ServiceType.AUTHORIZEBASKET)
            {
                System.Diagnostics.Debug.WriteLine("Autoryzacja koszyka zakonczona sukcesem");
            }

        }
        //Jeśli operacja zakończyła się niepowodzeniem
        else
        {
            //Wyświetlamy informację w oknie diagnostycznym
            System.Diagnostics.Debug.WriteLine(
                 string.Format("Operacja {0} zakończyła się niepowodzeniem. Komunikat błędu: {1}",
                 mymBankConnector, mymBankConnector.serviceContext.ToString(),
                 mymBankConnector.errorMessage)
            );
        }

    }

    //sluchacz zdarzenia statusChanged konektora, wyzwalany
    //przy każdej zmianie statusu
    private void mymBankConnector_statusChanged(mBankConnector.mBankConnectorStatusEnum status)
    {
        System.Diagnostics.Debug.WriteLine(string.Format("Zmiana statusu konektora: {0}", mymBankConnector.status.ToString()));
    }

    //metoda usługi logowania
    public void login()
    {
        //wywołanie asynchronicznej metody logowania
        mymBankConnector.login();
        //po zakonczeniu logowania, metoda mymBankConnector_operationFinished, 
        //zarejestrowana jako słuchacz zdarzenia 'operationFinished' konektora,wyświetli 
        //listę dostępnych rachunków i kontekstów
    }

    //metoda usługi autoryzacji koszyka
    public void authorizeBasket()
    {
        if (mymBankConnector.status != mBankConnector.mBankConnectorStatusEnum.LOGGED_IN)
        {
            System.Diagnostics.Debug.WriteLine(
                "Konektor nie jest zalogowany, lub poprzednia operacja nie zakończyła się jeszcze");
            return;
        }
        else
        {
            //Podpisujemy całą zawartoś koszyka ( null, w innym wypadku lista
            //zleceń ) dla rachunku pierwszego na liście dostępnych rachunków.
            //Metoda jest asynchroniczna. Jeśli koszyk będzie pusty, operacja 
            //zakończy się niepowodzeniem. Metodę wywołujemy w trybie 
            //BREAK_ON_FAILURE, oraz z aktywnym zdarzeniem raportu. 
            //Dzięki temu po wystąpieniu pierwszego błędu ( źle wprowadzony
            //kod  autoryzacyjny, bład serwera, niewłaściwy obiekt przelewu 
            //itp ), konektor wygeneruje zdarzenie 'operationFinished',
            //oraz zdarzenie 'authorizationReportReady'.
            mymBankConnector.authorizeBasket(
                null, //caly koszyk
                mBankConnector.mBankBasketAuthorizationMode.BREAK_ON_FAILURE,
                true //generuj raport
            );

        }
    }

}

See Also