1. Wstęp
  2. Biblioteki dla webmasterów
  3. Skrypty w przeglądarce użytkownika

Skrypty w przeglądarce użytkownika

Konfiguracja strony WWW ogranicza się do używania gotowych skryptów integracyjnych „billon-<moduł>.js”. Ich wybór zależy od funkcjonalności, jaką chcemy obsługiwać. Poniżej ich lista (pobierz wszystkie):

  • billon.jspodstawowy skrypt realizujący zapytania typu POST, dostarczający funkcje pomocnicze i pełniący rolę namespace’a dla pozostałych skryptów,

    Przykład wywołania:

    // Funkcja pomocnicza - formatowanie nazwy użytkownika zgodne z API Billonu.
    var realUsername = billon.trimUsername("moja_aplikacja_24.7");
    // var realUsername zwróci "moja-aplikacja-247".
    
  • billon-object.js – dostarcza do innych skryptów niezbędne modele obiektów zgodnych z API Billonu,

    Przykład wywołania:

    // Tak utworzony obiekt automatycznie zawiera wymagane przez API Billonu parametry currency (domyślnie ustawione na "PLN") i inne.
    var peerLocation = new billonAmount({
      amount: 1,
    });
    
  • billon-agent.jsumożliwia połączenie przez AJAX, wymaga skryptu „billon.js”,

    Przykład wywołania:

    var billonAgent = new billon.agent("http://billon.me:1400/payment");
    billonAgent.call("initiate", function (response) {
      if (response.requestStatus === "SUCCESS") {
        // Udało się zainicjować zapytanie o płatność. Na razie jednak nie wiemy o jego przebiegu.
      }
    });
  • billon-noApp.js – skrypt wyświetlający ekran informacyjny dla osób nie posiadających uruchomionej aplikacji na urządzeniu, wymagający skryptu „billon.js”,

    Przykład wywołania:

    billon.noApp();

  • billon-user.js – skrypt zajmuje się automatycznym wykrywaniem użytkownika zalogowanego w aplikacji na urządzeniu wraz z danymi umożliwiającymi szybsze odnalezienie go w sieci, wymaga skryptów kolejno „billon.js” i „billon-object.js”,

    Przykład wywołania:

    var field = $("#BillonUserName");
    billon.user.get({
      abort: function ()
      {
        // Jeśli pole jest uzupełnienione, anulujemy wykonanie się wykrywania użytkownika.
        if (field.val().length > 0) 
        {
          return true;
        }
        return false;
      }
    }, function (err, User)
      {
        user = User;
        if (err)
        {
          return billon.noApp();
        }
        field.val(user.userName);
    });
    
  • billon-hash.js – jest to zmienna o nazwie billon odczytana z hasha strony w formacie JSON, w celu np. inicjacji płatności automatycznie po uruchomieniu danego linku, wymagający skryptu „billon.js”,
  • billon-paymentDialog.jspodstawowy skrypt obsługujący płatność, pozwala na zainicjowanie płatności i uruchomienie okna dialogowego, który śledził będzie proces transakcji. Skrypt korzysta z modelu ekranu, który nasłuchuje i reaguje na komunikaty. Wymaga skryptów kolejno „billon.js”, „billon-object.js” i „billon-user.js”.

    Przykład wywołania:

    billon.paymentDialog({
        lang: "pl",
        // Adres zdefiniowany jako parametr billon.agent powinien wskazywać na kontroler, którym obsługujemy płatność (w tym przykładzie PaymentController), lub katalog, w którym dostępne są skrypty PHP obsługujące płatność.     
        connection: new billon.agent("http://billon.me:1400/payment"),
        paymentDialogAddress: "https://cdn.billon.pro/screen/paymentDialog/index.html", // w przypadku problemów niepokazywaniem okna dialogowego
        SkipAnotherUser: true, // opcjonalne - pominięcie kroku wyboru innego użytkownika niż wykryty
        ShowSellerFinishedPaymentInfo: false, // parametr opcjonalny - wartość "true" zalecana w przypadku sklepów
        AnotherTry: function () // opcjonalne zastąpienie akcji kliknięcia "Spróbuj jeszcze raz"
        {
            if (false/*new Date() - startDate > 120000*/)
            {
                window.location.href = 'some-page';
            }
            else
            {
                return false; // wywołanie domyślnej akcji
            }
        },
        on: {
            "billon-paymentDialog-remove": function()
            { // opcjonalna obsługa zdarzenia, funkcja wywoływana po zamknięciu okna dialogowego
                window.location.href += '&close=ok';
            }
        },
        request: {
          Address: "initiate",
          Data: function (user/*, amount*/) // drugi argument w przypadku dotacji na kwotę ustalaną przez płacącego
          {
            return {
              itemsId: [1], // przykładowy parametr, według którego będzie ustalony opłacany produkt po stronie serwera
              // amount: 1000, - w przypadku datków na kwotę jednej jednostki monetarnej, np. 1 zł, zamiast "itemsId"
              // amount: amount, - w przypadku datków na kwotę ustalaną przez płacącego zamiast "itemsId"
              user: user
            };
          }
        },
        listen: {
          Address: "status",
          Data: function (requestResponse) 
          {
            return {
              taskId: requestResponse.taskId
            };
          },
          Response: function (response)
          { // opcjonalne nasłuchiwanie odpowiedzi aplikacji sprzedawcy
            if (response.progressPercent == "100")
            {
    	  console.log('Transakcja zakończona');
    	}
          },
          Interval: 1000 // opcjonalny czas pomiędzy odpytywaniem o status płatności w milisekundach, domyślnie 1000
        }
      });
    

    Parametry argumentu metody „billon.paymentDialog”:

    Nazwa Opcje Wartość domyślna Opis
    connection np. new billon.agent(„http://billon.info:1401/opinie”) obiekt „billon.agent” utworzony, dla konkretnego kontrolera (np. pośredniczącego w Node.js) lub katalogu ze skryptami PHP
    SkipAnotherUser false, true brak wartości traktowany jako „false” czy ma być pominięte pytanie o wybraniu innego niż wykrytego użytkownika (poza przypadkiem dotacji na wybraną kwotę przez użytkownika)
    lang en, pl en język okna dialogowego
    request obiekt z nazwą parameru kontolera w parametrze „Address” oraz funkcją „Data” z jednym argumentem w przypadku płatności o ustalonej kwocie lub dwoma w przypadku dotacji na wybraną przez użytkownika kwotę zwracającą obiekt z parametrami:

    • „user” o wartości pierwszego argumentu funkcji,
    • „amount” w przypadku dotacji z kwotą wyrażoną w liczbie tysięcznych części podstawowej jednostki monetarnej (dziesiętnych części grosza) lub o wartości drugiego argumentu funkcji,
    • innymi własnymi parametrami potrzebnymi przy obsłudze płatności, np. „itemsId” z tablicą identyfikatorów produktów w przypadku płatności zakupowej
    pusty obiekt obiekt komunikacji z parametrem lub akcją kontrolera lub skryptu PHP inicjujowania płatności
    listen obiekt z parametrami:

    • „Address” z nazwą parametru lub akcji kontrolera lub skryptu PHP nasłuchiwania płatności,
    • funkcją „Data”:
      Data: function (requestResponse)
      {
         return {
      	taskId: requestResponse.taskId
         };
      }
      
    • opcjonalną funkcją „Response” przyjmującą jako argument obiekt odpowiedzi aplikacji 24/7 na operację SOAP „getTaskStatus”,
    • opcjonalny „Interval” z liczbą milisekund, co ile będzie wysyłane zapytanie o status płatności
    pusty obiekt obiekt komunikacji z parametrem lub akcją kontrolera lub skryptu PHP nasłuchiwania płatności
    ShowSellerFinishedPaymentInfo false, true brak wartości traktowany jako „false” czy po pomyślnej płatności ma być wyświetlony komunikat „Pieniądze są już u sprzedawcy!” zamiast „Pieniądze są już u odbiorcy!” lub „Seller has received money!” zamiast „Recipient has received money!”
    AnotherTry funkcja funkcja wywoływana po kliknięciu kotwicy (hiperłącza) „Spróbuj jeszcze raz”, która poprzedza domyślną akcję kotwicy w przypadku zwrócenia wartości „false” lub ją zastępuje w przeciwnym wypadku (funkcja „AnotherTry” zastępuje domyślną akcję próbowania jeszcze raz, a zwrócenie przez nią wartości „false” powoduje wywołanie domyślnej akcji)
    on obiekt z funkcją „billon-paymentDialog-remove” opcjonalny obiekt z funkcją „billon-paymentDialog-remove” wywoływaną po zamknięciu okna dialogowego
    paymentDialogAddress np. https://cdn.billon.pro/screen/paymentDialog/index.html adres dokumentu „screen/paymentDialog/index.html” w katalogu nadrzędnym skryptów Billon model ekranu konieczny do ustawienia w przypadku problemów z brakiem widocznego okna dialogowego
  • billon-paymentDialog.bundle.min.js – zminimalizowany skrypt „billon-paymentDialog.js” zawierający wymagane skrypty „billon.js”, „billon-agent.js”, „billon-object.js”, „billon-user.js”, korzysta się z niego podobnie, jak ze skryptu „billon-paymentDialog.js”, ale nie trzeba dołączać wymaganych skryptów, domyślnie korzysta z modelu okna dialogowego ze zminimalizowanym kodem,

  • billon-loadingBar.js – skrypt obsługujący płatność, pozwala na zainicjowanie płatności i uruchomienie paska na dole ekranu, który śledził będzie proces transakcji. Skrypt wymaga modelu ekranu w postaci małej aplikacji angular.js, która nasłuchuje i reaguje na komunikaty. Standardowo jest to dedykowany ekran loadingBar2 (zobacz czysty ekran oczekujący na komunikaty ze skryptu). Wymaga skryptów kolejno „billon.js”, „billon-object.js” i „billon-user.js”.

    Przykład wywołania:

    billon.loadingBar({
        lang: "pl",
        // Adres zdefiniowany jako parametr billon.agent powinien wskazywać na kontroler, którym obsługujemy płatność (w tym przykładzie PaymentController), lub katalog, w którym dostępne są skrypty PHP obsługujące płatność.     
        connection: new billon.agent("http://billon.me:1400/payment"),
        loadingBarAddress: "https://cdn.billon.pro/screen/loadingBar2/index.html", // w przypadku problemów niepokazywaniem paska
        SkipAnotherUser: true, // opcjonalne - pominięcie kroku wyboru innego użytkownika niż wykryty
        request: {
          Address: "initiate",
          Data: function (user)
          {
            return {
              itemsId: [1],
              // amount: 1000, - w przypadku datków zamiast "itemsId"
              user: user,
              colour: 0 // opcjonalnie inny niestandardowy parametr
            };
          }
        },
        listen: {
          Address: "status",
          Data: function (requestResponse) 
          {
            return {
              taskId: requestResponse.taskId
            };
          },
          Response: function (response)
          { // opcjonalne nasłuchiwanie odpowiedzi aplikacji sprzedawcy
            if (response.progressPercent == "100")
            {
    	  console.log('Transakcja zakończona');
    	}
          }
        }
      });
    

    Parametry argumentu metody „billon.loadingBar”:

    Nazwa Opcje Wartość domyślna Opis
    connection np. new billon.agent(„http://billon.info:1401/opinie”) obiekt „billon.agent” utworzony, dla konkretnej usługi pośredniczącej
    SkipAnotherUser false, true brak wartości traktowany jako „false” czy na pasku ma być pominięte pytanie o wybraniu innego niż wykrytego użytkownika
    lang en, pl en język paska
    request obiekt z nazwą parameru kontolera w parametrze „Address” oraz funkcją „Data”, która musi zwracać obiekt z parametrami:

    • „user” o wartości argumentu funkcji,
    • „amount” z wartością dotacji wyrażoną w liczbie dziesiętnych części grosza w przypadku dotacji,
    • innymi własnymi parametrami potrzebnymi przy obsłudze płatności, np. „itemsId” z tablicą identyfikatorów produktów w przypadku płatności zakupowej
    pusty obiekt obiekt komunikacji z parametrem lub akcją kontrolera lub skryptu PHP inicjowania płatności
    listen obiekt z parametrami:

    • „Address” z nazwą parametru lub akcji kontrolera lub skryptu PHP nasłuchiwania płatności,
    • funkcją „Data”:
      Data: function (requestResponse)
      {
         return {
      	taskId: requestResponse.taskId
         };
      }
      
    • opcjonalną funkcją „Response” przyjmującą jako argument obiekt odpowiedzi aplikacji sprzedawcy na operację SOAP „getTaskStatus”
    pusty obiekt obiekt komunikacji z parametrem lub akcją kontrolera lub skryptu PHP nasłuchiwania płatności
    loadingBarAddress np. https://cdn.billon.pro/screen/loadingBar2/index.html adres dokumentu „screen/loadingBar2/index.html” w katalogu nadrzędnym skryptów Billon model ekranu konieczny do ustawienia w przypadku problemów z brakiem widoczengo paska
  • billon-plates.js – skrypt obsługujący płatności talerzykowe. Skrypt wykorzystuje modele przycisku i okna dialogowego, które nasłuchują i reagują na komunikaty. Wymaga skryptów kolejno „billon.js”, „billon-object.js” i „billon-user.js”.

    Przykład wywołania:

    billon.plates({
       connection: new billon.agent("http://billon.info:1401/plates"), // adres wskazujący na kontroler Sails.js obsługujący płatność (w tym przypadku PlatesController) lub katalog ze skryptami PHP obsługującymi płatność
       lang: 'pl', // język "pl" lub "en", domyślnie "en"
       plateButtonAddress: "https://cdn.billon.pro/screen/plate-button/index.html", // w przypadku problemów niepokazywaniem przycisków, 
                                                                                          // w przypadku braku problemów pominąć
       plateDialogAddress: "https://cdn.billon.pro/screen/plate-dialog/index.html", // w przypadku problemów niepokazywaniem dialogów, 
                                                                                          // w przypadku braku problemów pominąć
       SkipAnotherUser: false, // opcjonalne - pominięcie kroku wyboru innego użytkownika niż wykryty, domyślnie krok nie jest pomijany
       DisableButtonsTitle: false, // opcjonalne - domyślne niedodawanie tytułu (etykiety) z ceną do przycisków, domyślnie tytuły są ustawiane
       tariff: {
          Address: 'list', // nazwa parametru lub akcji kontrolera lub skryptu PHP, gdzie wywoływana jest metoda "tariff"
          DisplayedCurrency: '', // wyświetlana waluta, domyślnie kod ISO 4217 waluty ustawionej module "billon"
          CentSign: ' gr' // symbol waluty dla setnej części podstawowej jednostki pieniężnej wyświetlany dla cen o wartości poniżej tej jednostki, 
                        // domyślnie stosowany jest symbol ustawiony w parametrze "DisplayedCurrency" 
                        // lub kod ISO 4217 waluty ustawionej module "billon" w przypadku braku tego parametru
       },
       series: {
          request: {
             Address: 'initiate', // nazwa parametru lub akcji kontrolera lub skryptu PHP, gdzie wywoływana jest metoda "platePaymentSeriesStart"
             Data: function (user) 
             {
               return {
                 user: user
               };
             }
          },
          ListenResponse: function (response, user)
          {
             if (response.status == "SERIES_ACCEPTED" || response.status == "TRANSFERRING" || response.status == "TRANSFERING")
             { // zapis identyfikatora serii i nazwy użytkownika Billon, w tym przypadku w Local Storage
                localStorage.setItem("seriesId", response.taskId);
    	    localStorage.setItem("user", JSON.stringify(user));
             }
          }
       },
       paymentRequest: {
          Address: 'pay', // nazwa parametru lub akcji kontrolera lub skryptu PHP, gdzie wywoływana jest metoda "paymentInitiation"
          Data: function()
          { // odczyt zapisanego wcześniej identyfikatora serii i nazwy użytkownika Billon, w tym przypadku z Local Storage
             try
             {
                return {
                   seriesId: localStorage.getItem("seriesId"),
                   user: JSON.parse(localStorage.getItem("user"))
                };
             }
             catch (e)
             {
                return {};
             }
          }
       },
       listen: {
          Address: "status", // nazwa parametru lub akcji kontrolera lub skryptu PHP, gdzie wywoływana jest metoda "paymentStatus"
          Data: function (requestResponse) 
          {
            return {
              taskId: requestResponse.taskId
            };
          }
       },
       buttons: [ // tablica przycisków
       {
          place: document.getElementById('button-container-1'), // element HTML, w którym ma być umieszczony przycisk
          type: 'alpha', // typ przycisku
          DisableTitle: false, // opcjonalne - nieustawianie tytułu przycisku z ceną,
                                // domyślnie brana pod uwagę jest globalna opcja
                                // "DisableButtonsTitle"
          RequestData: function(type)
          {
             return {
                type: type,
                itemsId: [1] // tablica identyfikatorów produktów
             }
          },
          ListenResponse: function(response)
          { // metoda opcjonalna
             switch (response.status)
             {
                case "FINISHED_OK":
                   // zdarzenie pomyślnej zapłaty przyciskiem
                   break;
                case "FINISHED_ERR_USER_REJECTED": // brak możliwości płatności w ramach zapamiętanej serii
                   localStorage.setItem("seriesId", null);
    	       localStorage.setItem("user", JSON.stringify(null));
             }
          }
       },
       {
          place: document.getElementById('button-container-2'),
          type: 'beta',
          RequestData: function(type)
          {
             return {
                type: type,
                itemsId: [2]
             }
          },
          ListenResponse: function(response)
          {
             switch (response.status)
             {
                case "FINISHED_OK":
                   // zdarzenie pomyślnej zapłaty przyciskiem
                   break;
                case "FINISHED_ERR_USER_REJECTED": // brak możliwości płatności w ramach zapamiętanej serii
                   localStorage.setItem("seriesId", null);
    	       localStorage.setItem("user", JSON.stringify(null));
             }
          }
       },
       {
          place: document.getElementById('button-container-3'),
          type: 'gamma',
          RequestData: function(type)
          {
             return {
                type: type,
                itemsId: [3]
             }
          },
          ListenResponse: function(response)
          {
             switch (response.status)
             {
                case "FINISHED_OK":
                   // zdarzenie pomyślnej zapłaty przyciskiem
                   break;
                case "FINISHED_ERR_USER_REJECTED": // brak możliwości płatności w ramach zapamiętanej serii
                   localStorage.setItem("seriesId", null);
    	       localStorage.setItem("user", JSON.stringify(null));
             }
          }
       },
       {
          place: document.getElementById('button-container-4'),
          type: 'delta',
          RequestData: function(type)
          {
             return {
                type: type,
                itemsId: [4]
             }
          },
          ListenResponse: function(response)
          {
             switch (response.status)
             {
                case "FINISHED_OK":
                   // zdarzenie pomyślnej zapłaty przyciskiem
                   break;
                case "FINISHED_ERR_USER_REJECTED": // brak możliwości płatności w ramach zapamiętanej serii
                   localStorage.setItem("seriesId", null);
    	       localStorage.setItem("user", JSON.stringify(null));
             }
          }
       },
       {
          place: document.getElementById('button-container-5'),
          type: 'epsilon',
          RequestData: function(type)
          {
             return {
                type: type,
                itemsId: [5]
             }
          },
          ListenResponse: function(response)
          {
             switch (response.status)
             {
                case "FINISHED_OK":
                   // zdarzenie pomyślnej zapłaty przyciskiem
                   break;
                case "FINISHED_ERR_USER_REJECTED": // brak możliwości płatności w ramach zapamiętanej serii
                   localStorage.setItem("seriesId", null);
    	       localStorage.setItem("user", JSON.stringify(null));
             }
          }
       }]
    });
    

    Parametry argumentu metody „billon.plates”:

    Nazwa Opcje Wartość domyślna Opis
    connection np. new billon.agent(„http://billon.info:1401/opinie”) obiekt „billon.agent” utworzony, dla konkretnej usługi pośredniczącej
    SkipAnotherUser false, true brak wartości traktowany jako „false” czy w oknie dialogowym ma być pominięte pytanie o wybraniu innego niż wykrytego użytkownika
    DisableButtonsTitle false, true brak wartości traktowany jako „false” czy domyślnie ma zostać wyłączone ustawianie tytułów (etykiet widocznych, np. po najechaniu myszką) przycisków, dzięki czemu taryfa nie będzie sprawdzana przy dodawaniu przycisków
    lang en, pl en język okna dialogowego
    tariff obiekt z nazwą parameru kontolera w parametrze „Address”, opcjonalną wyświetlaną walutą w parametrze „DisplayedCurrency” i opcjonalnym symbolem dla setnej części podstawowej jednostki pieniężnej w parametrze „CentSign” obiekt z parametrem lub akcją kontrolera lub skryptem PHP wysyłającym taryfę oraz z wyświetlanymi symbolami podstawowej jednostki monetranej i jej setnej części
    series obiekt, którego parametrem jest obiekt „request” z parametrami:

    • „Address” z nazwą parametru lub akcją kontrolera lub skryptu PHP startu serii płatności,
    • metodą „Data”:
      Data: function (user)
      {
         return {
      	user: user
         };
      }
      

    oraz opcjonalna metoda „ListenResponse” z odpowiedzią aplikacji 24/7 i obiektem użytkownika jako argumentami

    obiekt komunikacji z kontrolerem lub skryptem PHP przy operacji startu serii płatności z nazwą parametru kontrolera, w którym seriia jest rozpoczynana, i funkcją obsługującą przychodzące statusy z aplikacji 24/7
    paymentRequest obiekt z parametrami:

    • „Address” z nazwą parametru lub akcji kontrolera lub skryptu PHP rozpoczęcia płatności,
    • funkcją „Data” bez argumentów zwracającą obiekt z danymi przysyłanymi do kontrolera lub skryptu PHP
    obiekt komunikacji z kontrolerem lub skryptem PHP przy operacji rozpoczęcia płatności z nazwą metody kontrolera lub nazwą skryptu obsługującą operację rozpoczęcia płatności talerzykowej i metodą zwracającą przesyłane dane, np. identyfikator serii płatności i obiekt użytkownika
    listen obiekt z parametrami:

    • „Address” z nazwą parametru lub akcji kontrolera lub skryptu PHP nasłuchiwania płatności,
    • funkcją „Data”:
      Data: function (requestResponse)
      {
         return {
      	taskId: requestResponse.taskId
         };
      }
      
    obiekt komunikacji z parametrem lub akcją kontrolera lub skryptem PHP nasłuchiwania płatności i rozpoczynia serii płatności z nazwą metody kontrolera lub nazwą skryptu
    buttons tablica obiektów z parametrami:

    • „place” z obiektem JavaScript elementu HTML, do którego ma być dodany przycisk;
    • „type” z łańcuchem znaków typu talerzyka („alpha”, „beta”, „gamma”, „delta” lub „epsilon”);
    • opcjonalnym „DisableTitle” określającym, czy nie ustawiać etykiety przycisku;
    • metodą „RequestData” z typem (np. „PLATE_ALPHA”) jako argumentem zwracającą obiekt do przesłania przy rozpoczynaniu płatności;
    • opcjonalną metodą „ListenResponse” do nasłuchiwania statusów operacji płatności przyjmującą w argumencie obiekt odpowiedzi z serwisu pośredniczącego
    opis przycisków do rozpoczynania płatności z ich lokalizacją, typem, metodą zwracającą obiekt z danym, które uzupełniają z zastępowaniem dane zwracane przez metodę „paymentRequest.Data”, metodę nasłuchującą przychodzące statusy z serwisu pośredniczącego w trakcie operacji płatności
    plateButtonAddress np. https://cdn.billon.pro/screen/plateButton/index.html adres dokumentu „screen/plate-button/index.html” w katalogu nadrzędnym skryptów Billon model przycisku konieczny do ustawienia w przypadku problemów z brakiem widocznych przycisków
    plateDialogAddress np. https://cdn.billon.pro/screen/plateDialog/index.html adres dokumentu „screen/plate-dialog/index.html” w katalogu nadrzędnym skryptów Billon model okna dialogowego konieczny do ustawienia w przypadku problemów z brakiem widocznego okna
Czy ten artykuł jest dla Ciebie pomocny? Tak Nie

Jak możemy pomóc?