Przelewy24 mobile payments



Podobne dokumenty
User s manual for icarwash

Zasady rejestracji i instrukcja zarządzania kontem użytkownika portalu

Installation of EuroCert software for qualified electronic signature

Instrukcja obsługi User s manual

Zmiany techniczne wprowadzone w wersji Comarch ERP Altum

Płatności mobilne Przelewy24

Płatności mobilne Przelewy24

Płatności mobilne Przelewy24

OpenPoland.net API Documentation

Zakopane, plan miasta: Skala ok. 1: = City map (Polish Edition)

Stargard Szczecinski i okolice (Polish Edition)

Przelewy24. Integration manual. Przelewy24 Integration manual. Date: Version: 3.2

Instrukcja konfiguracji usługi Wirtualnej Sieci Prywatnej w systemie Mac OSX

Camspot 4.4 Camspot 4.5

Karpacz, plan miasta 1:10 000: Panorama Karkonoszy, mapa szlakow turystycznych (Polish Edition)

Katowice, plan miasta: Skala 1: = City map = Stadtplan (Polish Edition)

POLITYKA PRYWATNOŚCI / PRIVACY POLICY

USB firmware changing guide. Zmiana oprogramowania za przy użyciu połączenia USB. Changelog / Lista Zmian

1. W systemie Windows przejdź do Panel sterowania> Sieć i Internet> Centrum sieci i udostępniania.

INSTRUKCJE JAK AKTYWOWAĆ SWOJE KONTO PAYLUTION

How to Connect a Siretta Industrial Router to a VPN Tunnel Using OpenVPN Protocol

Rev Źródło:

Wojewodztwo Koszalinskie: Obiekty i walory krajoznawcze (Inwentaryzacja krajoznawcza Polski) (Polish Edition)

MeetingHelper. Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania. Instrukcja obsługi dla programisty

Strona główna > Produkty > Systemy regulacji > System regulacji EASYLAB - LABCONTROL > Program konfiguracyjny > Typ EasyConnect.

USB firmware changing guide. Zmiana oprogramowania za przy użyciu połączenia USB. Changelog / Lista Zmian

OSTC GLOBAL TRADING CHALLENGE MANUAL

ARNOLD. EDUKACJA KULTURYSTY (POLSKA WERSJA JEZYKOWA) BY DOUGLAS KENT HALL

Ilona B. Miles website Terms of Use (ewentualnie: Service)


MaPlan Sp. z O.O. Click here if your download doesn"t start automatically

SSO Management API configuration

Umowa Licencyjna Użytkownika Końcowego End-user licence agreement

Miedzy legenda a historia: Szlakiem piastowskim z Poznania do Gniezna (Biblioteka Kroniki Wielkopolski) (Polish Edition)

SubVersion. Piotr Mikulski. SubVersion. P. Mikulski. Co to jest subversion? Zalety SubVersion. Wady SubVersion. Inne różnice SubVersion i CVS

Revenue Maximization. Sept. 25, 2018

The HOCHTIEF Polska Supplier Portal Frequently Asked Questions (FAQ)

Aktualizacja Oprogramowania Firmowego (Fleszowanie) Microprocessor Firmware Upgrade (Firmware downloading)


Warsztat: Infoblox DNS Firewall & DNS Infoblox Threat Analytics. Czyli jak w godzinę ochronić użytkowników.

Pomoc do programu konfiguracyjnego RFID-CS27-Reader User Guide of setup software RFID-CS27-Reader

Zarządzanie sieciami telekomunikacyjnymi

ERASMUS + : Trail of extinct and active volcanoes, earthquakes through Europe. SURVEY TO STUDENTS.

How to share data from SQL database table to the OPC Server? Jak udostępnić dane z tabeli bazy SQL do serwera OPC? samouczek ANT.

Pielgrzymka do Ojczyzny: Przemowienia i homilie Ojca Swietego Jana Pawla II (Jan Pawel II-- pierwszy Polak na Stolicy Piotrowej) (Polish Edition)

Dolny Slask 1: , mapa turystycznosamochodowa: Plan Wroclawia (Polish Edition)

Healthix Consent Web-Service Specification

USB firmware changing guide. Zmiana oprogramowania za przy użyciu połączenia USB. Changelog / Lista Zmian

Wojewodztwo Koszalinskie: Obiekty i walory krajoznawcze (Inwentaryzacja krajoznawcza Polski) (Polish Edition)

USB firmware changing guide. Zmiana oprogramowania za przy użyciu połączenia USB. Changelog / Lista Zmian

Testy jednostkowe - zastosowanie oprogramowania JUNIT 4.0 Zofia Kruczkiewicz

Jak otrzymać zwrot części zapłaty Poradnik


ATM (Automatic Teller Machine)

A. WAN1/WAN2 Interface and LAN NAT/Routing host. B. VPN Host and LAN NAT Host. C. An example using Part A and B

SSW1.1, HFW Fry #20, Zeno #25 Benchmark: Qtr.1. Fry #65, Zeno #67. like


Configuring and Testing Your Network

Helena Boguta, klasa 8W, rok szkolny 2018/2019

Tychy, plan miasta: Skala 1: (Polish Edition)

Blow-Up: Photographs in the Time of Tumult; Black and White Photography Festival Zakopane Warszawa 2002 / Powiekszenie: Fotografie w czasach zgielku

DODATKOWE ĆWICZENIA EGZAMINACYJNE

Konfiguracja połączenia VPN w systemie Windows 7 z serwerem rozgrywki wieloosobowej gry Medal Of Honor: Wojna na Pacyfiku: Pacyfik.

user s manual Applications client for mobile devices NVR-5000 series NVR s

Wojewodztwo Koszalinskie: Obiekty i walory krajoznawcze (Inwentaryzacja krajoznawcza Polski) (Polish Edition)

Tabela Godzin Granicznych realizacji przelewów dla Klientów Korporacyjnych w HSBC Bank Polska S.A.

W związku z wprowadzeniem nowego system do Państwa szkoły, firma Kuchnia z Klasą ustaliła nowy cennik. Proszę zwrócić uwagę na obniżki cen!

Emilka szuka swojej gwiazdy / Emily Climbs (Emily, #2)

Leba, Rowy, Ustka, Slowinski Park Narodowy, plany miast, mapa turystyczna =: Tourist map = Touristenkarte (Polish Edition)

Aby zarejestrować się do serwisu, należy wejść w odpowiedni link:

Office 365 Midsize Business

Miedzy legenda a historia: Szlakiem piastowskim z Poznania do Gniezna (Biblioteka Kroniki Wielkopolski) (Polish Edition)

European Crime Prevention Award (ECPA) Annex I - new version 2014

Realizacja systemów wbudowanych (embeded systems) w strukturach PSoC (Programmable System on Chip)

Remember to set your printer to omit this page when running off copies.using this document.


Karpacz, plan miasta 1:10 000: Panorama Karkonoszy, mapa szlakow turystycznych (Polish Edition)

PSB dla masazystow. Praca Zbiorowa. Click here if your download doesn"t start automatically

Author: Bartłomiej Słota. Supervisor: prof. dr hab. inż. Zbigniew Kotulski


TACHOGRAPH SIMULATOR DTCOSIM

Architektura komunikacji

Cel szkolenia. Konspekt

How to translate Polygons

Wojewodztwo Koszalinskie: Obiekty i walory krajoznawcze (Inwentaryzacja krajoznawcza Polski) (Polish Edition)

Jak otrzymać zwrot części zapłaty Poradnik

THE ADMISSION APPLICATION TO PRIVATE PRIMARY SCHOOL. PART I. Personal information about a child and his/her parents (guardians) Child s name...

ANKIETA ŚWIAT BAJEK MOJEGO DZIECKA

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Polityka prywatności

Wprowadzenie do programu RapidMiner, część 2 Michał Bereta 1. Wykorzystanie wykresu ROC do porównania modeli klasyfikatorów

Compatible cameras for NVR-5000 series Main Stream Sub stream Support Firmware ver. 0,2-1Mbit yes yes yes n/d

RS868v3 module configuration

ORIGINAL USER MANUAL. Remote Control Z-Wave NC 896-GB IU/ZRH12/ /F

Jak otrzymać zwrot części zapłaty od X-Rite Poradnik

MS OD Integrating MDM and Cloud Services with System Center Configuration Manager

Technical conditions Warunki techniczne

Arrays -II. Arrays. Outline ECE Cal Poly Pomona Electrical & Computer Engineering. Introduction


Transkrypt:

Created by: Arkadiusz Przelewy24 mobile payments Integration manual Date: 2016-05-06 Version: 2.0.11 This document contains technical details about Przelewy24 payments inside native mobile applications ( in-app payments). General configuration examples are present in Java programming language (Android). In appropriate sections there are detailed examples for every mobile platform. In many points this documentation refers to a www payments documentation. This document is available online: http://www.przelewy24.pl/storage/app/media/pobierz/instalacja/przelewy24_specyfikacja_3 _2.pdf. This documentation refers to mobile libraries: Android v. 2.0.7, ios v. 2.0.4, Windows Phone Silverlight v. 2.0.2 and Windows Phone Runtime v. 2.0.3. NOTE! To receive information about mobile libraries updates, please send to partner@przelewy24.pl a message Please add my e- mail (put your e-mail here) to a mobile library update information mailing list. At this address will be send only information about a library updates, there will be no any marketing emails send to you. Page 1 z 28

Created by: Arkadiusz Index 1 Native mobile libraries (Android, ios and Windows Phone SDK)...4 1.1 Description...4 1.2 Transaction flow using a native mobile library...4 1.3 How to implement one click payment using a payment card?...5 1.4 How to initialize a payment using a mobile library?...7 1.4.1 Initialization with full payment data...7 1.4.2 Initialization with a payment token...7 1.5 How to pre select payment method in a mobile library?...8 1.6 How to set specific payment channel?...8 1.7 How to enable test mode?...8 1.8 How to verify transaction?...8 1.8.1 Verification thrugh a partner server...8 1.8.2 Internal verification in Przelewy24 system...9 1.9 How to enable banks RWD pages?...9 1.10 How to enable library to save bank passwords?...9 1.11 How to set saving bank passwords by default?...10 1.12 How to enable automatically copying of SMS passwords?...10 1.13 How to receive to an application automatically after transaction finish?...10 1.14 How to limit time for a payment?...10 1.15 How to cancel payment and return to application?...10 2 Definitions...10 3 Integration of an Android library...11 3.1 Project configuration...11 3.2 A library configuration...12 3.3 Perform a transaction...13 3.4 Application obfuscation...14 3.5 Known bugs...15 Page 2 z 28

Created by: Arkadiusz 4 Integration of an ios library...15 4.1 Project configuration...15 4.2 A library configuration...17 4.3 Perform a transaction...18 5 Integration of a Windows Phone library...19 5.1 Project configuration...20 5.1.1 Windows Phone Silverlight...20 5.1.2 Windows Phone Runtime...20 5.2 A library configuration...20 5.3 Perform a transaction...21 Page 3 z 28

Created by: Arkadiusz 1 Native mobile libraries (Android, ios and Windows Phone SDK) 1.1 Description Native mobile libraries for Android, ios and Windows Phone platforms enables users to make a payment inside a mobile application ( in-app ) without switching user between application and external Web Browser or another application. Whole payment process is managed in a one application window. Many payment method are available: bank transfers (automatic pay-by-link and semi-automatic e-transfers), payment cards, virtual wallets (PayPal, SkySach, ) etc. 1.2 Transaction flow using a native mobile library After payment initialization, on a smartphone screen a payment window appears. A payment window is a WebView control with loaded przelewy24.pl transaction service. After payment method selection, a bank/method page will be loaded in the same window. User have to log into his account or enter payment data (f.ex. payment card data). User accept a payment and a library redirect him to another screen, to wait for a payment confirmation. Image 1: A mobile library transaction flow After a payment, Przelewy24 system sends a payment confirmation to a p24_url_status url. To confirm the transaction, partner server have to respond with verification connection. When partner server makes a verification connection, on a smartphone screen user will see information about correct payment. In this moment user can return to an application with correct payment status. Page 4 z 28

Created by: Arkadiusz Image 2: Bank transfer payment process using an Android mobile library 1.3 How to implement one click payment using a payment card? Partner can save payment card used during payments, and enable user to use it for next payment with one-click flow. This saved card can be show in an application as separate payment method. When user choose this card, an application make a request to a server for charge card, and a payment is done immediately. User don't have to provide any card data again. Page 5 z 28

Created by: Arkadiusz Image 3: One-click payment inside Android application One-click payment required cooperation of three systems: mobile application, partner server and Przelewy24 WebService for card recurring. NOTE: To implement one-click payment, appropriate agreement with payment cards operator is needed please contact with Przelewy24 Sales Department (partner@przelewy24.pl, +48 61 642 93 45). One click payment process stages: User makes first card payment inside application, using a native mobile library. When Przelewy24 system sends transaction status (p24_url_status), partner server makes verification connection (trnverify). Partner server call Przelewy24 WebService (GetTransactionReference method) with a transaction ID received during p24_url_status call. In this way partner server receive refid of a card, which was used for a payment. Partner server call P24 WebService (CheckCard method) with refid, to check if this card enables recurring payments. If the card enables recurring, partner server saves the card refid and bind it to a user account. During next payment inside mobile application, the application retrieves from partner server a list of saved cards and presents it as separated payment methods, next to a bank transfer and a payment with any card (see Image Rysunek). User choose a card from a list. An application connects to a partner server which calls P24 WebService (ChargeCard method), P24 system makes cart charge and returns transaction status (ok/error). Page 6 z 28

Created by: Arkadiusz To implement one click payment inside an application, it is necessary to implement communication between a partner server, Przelewy24 WebService and a mobile application. 1.4 How to initialize a payment using a mobile library? To implement a payment you have to configure P24Config, P24Payment i P24 objects. A mobile library enables two initialization methods: with full payment data provided directly to a library or by register transaction previously in the background system, and pass to a library only a transaction token. An example source codes of a library configuration are presented in chapters 3, 4 and 5. 1.4.1 Initialization with full payment data To initialize transaction with a full payment data, you need to create a configuration object (P24Config) and set parameters: merchant ID and CRC key (available in P24 partner panel). Next create P24Payment object and set transaction data: value (in grosz), currency (f.ex. PLN ), client e-mail and session ID (unique for every transaction). Additionally you can set client address data (surname, address, city, zip code, country), which are required by some card payments, and transaction description which will be showing in P24 partner panel. According to verification configuration variant, you should set p24_url_status url in P24Payment object. Verification configuration variants are described in point 1.8. Next you have to open a payment screen. This is described in points 3.3, 4.3 and 5.3. 1.4.2 Initialization with a transaction token There is possibility to register transaction with separated connection from a partner server. This process is described in point 5.1 of www payments documentation. If a registering transaction will be processed in a mobile library, you have to add p24_mobile_lib=1 parameter to a registration message. As a result you will receive TOKEN. To configure a library you don't have to set any data to P24Config and P24Payment objects set only TOKEN into P24Payment param. TOKEN setting example for every platform is described in points 3.2, 4.2 and 5.2. NOTE during registration of transaction which will be used in a mobile library, you should remember about additional parameters: p24_channel if it will be not set, then traditional payment and use pre-payment payment methods will be available by default they are unnecessary in a mobile payment. To disable this methods, please set appropriated value to this param (f.ex. value 3 bank transfer, and payment card), p24_method to pre select of a payment method, set method ID to this parameter and the same ID into library configuration (P24Payment.setMethod). Page 7 z 28

Created by: Arkadiusz 1.5 How to pre select payment method in a mobile library? To force a library to choose a payment method automatically, set ID of payment form into method parameter. p24payment.setmethod("xxx"); If a library is configured to use TOKEN (pt. 1.4.2), method ID should be set also during transaction register process (parameter p24_method). If set method id is unavailable during library start, then full payment form list will be displayed. 1.6 How to set specific payment channel? There is possibility to set specific payment channel, f.ex. payment only by payment cards, payment only by bank transfers, etc. To configure this, set appropriate flag into p24channel param. p24config.setp24channel(p24config.p24_channel_transfers); Detailed description of payment channels is in point 5.1 of www payment documentation (p24_channel parameter). Default value is P24Config.P24_CHANNEL_CARDS P24Config.P24_CHANNEL_24_7 1.7 How to enable test mode? In a test mode you can check if you implement library and verification process correct, without need of make real payment. To test a library in a SANDBOX environment, set parameter in P24Config. p24config.enabletestmode(true); You have to remember to set correct CRC key from SANDBOX server. More about test mode you can read in pt. 5.8 of www payments. 1.8 How to verify transaction? In a mobile libraries there are two ways to verify transaction: through a partner server (recommended) and internally in Przelewy24 system. 1.8.1 Verification through a partner server After a payment, the library is waiting for Przelewy24 system until it receive a payment confirmation from a bank (it takes various time, depends on payment form). When Przelewy24 system receives information about correct payment, it sends transaction status to p24_url_status url set by merchant in a configuration. After receiving status notification, a merchant's server has to send verification to Przelewy24 (pt. 5.5 of www payments documentation). The library detects when the transaction is verified by merchant's server and shows to user information about the transaction being successful. Page 8 z 28

Created by: Arkadiusz Thanks to this flow, merchant is sure, that his server has information about the performed payment, even if user closed payment view before transaction was verified, or if some Internet connection error occurred. To enable this verification mode, set p24_url_status in the Przelewy24 partner panel (to do this please send a URL to serwis@przelewy24.pl from e-mail assigned to your account), or in the library: p24payment.setp24urlstatus("http://xxxxxx"); The setting in the library has higher priority than the setting in the partner panel. If p24_url_status is not set anywhere, the transaction will be verified internally in Przelewy24 system. A verification script must be implemented according to documentation 3.2. This verification model is dedicated for applications which require that merchant's server to have information about payments. 1.8.2 Internal verification in Przelewy24 system After a payment, when Przelewy24 system registers it, the transaction will be immediately and automatically verified by the system. There is no communication between the Przelewy24 system and a merchant's server. Information about correct transaction is sent to the mobile application only via the library. To enable this verification mode, don't set p24_url_status neither in transaction panel nor in the library config. This verification mode is dedicated for applications like games, which don't communicate with external servers. There is no need to provide any additional verification services. In this mode there is risk that before transaction verification user can close transaction windows and return to an application. In this scenario a transaction will be not verified and it should be verified manually by merchant in Przelewy24 partner panel. 1.9 How to enable banks RWD pages? Only few banks provide their transaction system in RWD technology. Mobile libraries can modify bank pages by their own, to fit in to a small smartphone screen. p24config.setusemobilestyles(true); This parameter is true by default, you can disable it. Because of technical limitations this feature is unavailable in Windows Phone Silverlight library. 1.10 How to enable a library to save banks passwords? To simplify bank log in process, a library can save bank login and password and prompt it during next login. In this mode a library also helps user to enter masked password. p24config.setstorelogindata(true); Page 9 z 28

Created by: Arkadiusz Default is false. 1.11 How to set saving bank passwords by default? If setting setstorelogindata was set to true, then by default library will ask user to save password during first payment. You can force saving passwords by default, without asking user (but still user will be able to disable this feature in Options window). p24config.setdontaskforsavelogindata(true); Default is false. 1.12 How to enable automatically copying of SMS passwords? When smartphone receives SMS with a password to confirm a transaction, a library can recognize it and paste it to a payment form automatically. p24config.setreadsmspasswords(true) Default is false. Because of technical limitations this feature is available only in Android. 1.13 How to return to an application automatically after a transaction finish? By default, after payment verification a library presents a transaction summary and wait for a user interaction. You can configure a library to automatically close transaction window after specified time. p24config.setautofinishtimeout(3000); Default is P24Config.NO_AUTO_FINISH = 0 a library is waiting for a user interaction. 1.14 How to limit time for a payment? You have to set time limit for a transaction. p24config.settimelimit(30); Default (and maximum) is 99 (min). 1.15 How to cancel payment and return to an application? In any step of a payment user can cancel payment and return to an application using Back button (for Android and Windows Phone platforms it is a hardware button, for ios it is a software button in top left corner). If user opened a bank page in the meantime, then he will be informed about a transaction verification in a background. Page 10 z 28

Created by: Arkadiusz 2 Definitions Merchant a Company or an Individual, who has signed a contract with Przelewy24. Session ID a unique ID from Merchant s system, used to data verification process. CRC key random string, used to calculate a CRC value, shown in Przelewy24 Admin panel. 3 Integration of an Android library This chapter describes how to integrate a mobile library with an Android application. A library v2.0.6 is compatible with AndroidStudio (tested on v1.2.2). 3.1 Project configuration In Android project, set minimum SDK version at least API level 7 (Android 2.1). Android 2.1 is the minimum required version for the library. In AndroidStudio add library module: File New New module.... From list More modules choose Import.JAR or.aar Package and click Next. In File name enter path to p24lib.aar, as Subproject name set p24lib and click Finish. Add dependencies to created module by add in build.gradle in section dependencies : compile project(':p24lib') A library uses AppCompat v21 add in dependencies : compile 'com.android.support:appcompat-v7:22.1.+' A library uses open source Jsoup module (http://jsoup.org/), it is added to aar file (no need of additional configuration). Set in AndroidManifest.xml (manifest node): <uses-permission android:name="android.permission.internet"/> <uses-permission android:name="android.permission.access_network_state"/> If automatic SMS copying is enabled, than add: <uses-permission android:name="android.permission.receive_sms"/> <uses-featureandroid:name="android.hardware.telephony" android:required="false" /> In an application node add TransferActivity (the main payment activity): Page 11 z 28

Created by: Arkadiusz <activity android:name="pl.dialcom24.p24lib.transferactivity" android:configchanges="orientation keyboard keyboardhidden" android:theme="theme.appcompat.light.darkactionbar"/> NOTE All activities in a library extends ActionBarActivity, so you need to use styles from a group Theme.AppCompat.*". NOTE in default configuration of Activity, during screen orientation change a library will reload WebView page transaction will be reloaded so user could not be able to finish a payment. To prevent this set: android:configchanges="orientation keyboard keyboardhidden" In this same place add BankListActivity (this is a library settings windows in which user can change params setstorelogindata, setusemobilestyles, setreadsmspasswords and remove saved bank login data): <activity android:name="pl.dialcom24.p24lib.bank.banklistactivity" android:configchanges="keyboardhidden orientation keyboard screensize" android:theme="theme.appcompat.light.darkactionbar"/> 3.2 A library configuration Create objects P24Config, P24, P24Payment and set the necessary configuration data: P24Config p24config = new P24Config(); P24 p24 = new P24(config); P24Payment p24payment = new P24Payment(); Example configuration for initialization with full payment data (pt 1.4.1): p24config.setmerchantid(xxxxx); p24config.setcrc("xxxxxxxxxxxxxxxx"); p24payment.setsessionid("1234567890"); p24payment.setamount(100); p24payment.setcurrency("pln"); p24payment.setclientaddress("test street"); p24payment.setclientname("john Smith"); Page 12 z 28

Created by: Arkadiusz p24payment.setclientcountry("pl"); p24payment.setclientcity("poznan"); p24payment.setclientphone("643535555"); p24payment.setclientemail("test@test.pl"); Example configuration for initialization with token (pt 1.4.2): p24payment.settoken("xxxxxxxxxx-xxxxxx-xxxxxx-xxxxxxxxxx"); Example optional configuration (described above): p24payment.setmethod("1"); p24config.enabletestmode(true); p24config.setstorelogindata(true); p24config.setusemobilestyles(false); p24config.setreadsmspasswords(true); p24config.setdontaskforsavelogindata(true); p24config.setautofinishtimeout(3000); p24config.settimelimit(30); p24config.setp24channel(p24config.p24_channel_cards); p24payment.setp24urlstatus("http://xxxxxx"); p24payment.settransferlabel("test label"); 3.3 Perform a transaction To initiate the transaction process, use P24 and P24Payment objects and call method P24.getPaymentIntent(Context, P24Payment): private final static int REQUEST_CODE = 25; Intent pintent = p24.getpaymentintent(context, p24payment); startactivityforresult(pintent, REQUEST_CODE); Calling the above method will result in starting TransferActivity, which will show the payment view. The user will be able to choose a payment form (if no default payment form has to been set) and to perform the payment. After finishing the payment process, the payment view will be closed. Information about payment status will be passed to onactivityresult(int, int, Intent) method. In onactivityresult method, you should check if requestcode and resultcode parameters are correct. resultcode should be equal to RESULT_OK and requestcode should be equal to REQUEST_CODE. If values are correct, you can check the Page 13 z 28

Created by: Arkadiusz transaction status. For this, you should get P24PaymentResult object using the P24.getPaymentResult(Intent) method. Set the Intent coming from onactivityresult as the parameter (it is the same Intent as the one used for initiating the payment process): @Override protected void onactivityresult(int requestcode, int resultcode, Intent data){ } if (requestcode!= REQUEST_CODE) { return; } if (resultcode == RESULT_OK) { P24PaymentResult payresult = p24.getpaymentresult(data); boolean ispaymentok = payresult.isok(); if (ispaymentok) { // success } else { } } else { // error String error = payresult.getstatusmessage(); // transaction cancelled or user closed library page before // transaction was verified } 3.4 Application obfuscation To obfuscate an application with the library, add the following rules to the proguard configuration: -keep class pl.dialcom24.p24lib.transferactivity$javascriptinterface { *; } -keep class pl.dialcom24.p24lib.bank.jshelpers.javascriptinterface { *; } -keep enum pl.dialcom24.p24lib.p24paymentresultstatus { *; } -keep class pl.dialcom24.p24lib.bank.jshelpers.p24securejavascriptinterface { *; } Page 14 z 28

Created by: Arkadiusz 3.5 Known bugs Entrust SSL Certificate on Android 4.3 on some compilations of Android 4.3, there is a bug when user load www page with Entrust certificate. That certificate is used in Alior Bank and AliorSync pages. This bug makes the application crash, when one of these two banks is selected from payment forms list. Currently this bug isn't fixable, so we can't protect the library against it (we can only disable defective payment forms for all users with Android 4.3). You may suggest the users who report this bug to update Android on their phone. Links: http://stackoverflow.com/questions/18130047/android-webview-crash-4-3 https://code.google.com/p/android/issues/detail?id=58400&colspec=id%20type%20status %20Owner %20Summary%20Stars http://stackoverflow.com/questions/18824076/how-to-catch-this-excepjon-in-androidwebview 4 Integration of an ios library An ios library was created in Objective-C programming language, in Xcode 4.3. A library is also compatible with Swift. 4.1 Project configuration In project settings set ios Deployment Target ( Info tab in project settings) to 4.3 or higher. Version 4.3 is the minimal ios system version required for proper functioning of the library. Configuration is same for Objective-C and Swift. Add library files (libp24.a, P24.h) to project: select File Add Files To in XCode, set directory containing the library (lib directory), check Copy items into destination folder (if needed), check Create groups for any added folders, select all items in Add to targets. Make sure that the Targets settings have been updated correctly. A libp24.a file should be automatically added in Link Binary With Libraries field, in Build Phases tab. To check it: select project w Project Navigator, select project in which you want to use the library, select Build Phases, Page 15 z 28

Created by: Arkadiusz select Link Binary With Libraries, if file libp24.a is not on the list, drag and drop it from Project Navigator window, repeat above steps for all Targets in which you want to use the library. Add required system libraries to Target. The following libraries are required: Security.Framework, UIKit.Framework, Foundation.Framework, libxml2, libz. These libraries have to be added into the Link Binary With Libraries section, in the Build Phases tab. You have to do that for all Targets, in which you want to use the library. Set -ObjC -lstdc++ in Other Linker Flags. Other Linker Flags field is in Linking section: choose Build Settings in Target settings, set Other Linker Flags to -ObjC -lstdc++. Field Other Linker Flags is in Linking section, repeat this steps for every targets. Add this setting into Info.plist file: <key>nsapptransportsecurity</key> <dict> <key>nsallowsarbitraryloads</key> <true/> </dict> For an application in Swift add {PROJECT-NAME}-Bridging-Header.h file. In Build Settings tab in Objective-C Bridging Header field set path to created file (f.ex. {PROJECT-NAME}/ {PROJECT-NAME}-Bridging-Header.h ). Enter in the created file: #import "P24.h" Page 16 z 28

Created by: Arkadiusz 4.2 A library configuration Import P24.h file, create objects P24Config, P24, P24Payment and set necessary configuration data. Example for Objective-C: P24Config *p24config = [[P24Config alloc] init]; P24 *p24 = [[P24 alloc] initwithconfig:p24config delegate:self]; P24Payment *p24payment = [[P24Payment alloc] init]; For Swift: let p24config = P24Config(); let p24 = P24(config: p24config, delegate: self); let p24payment = P24Payment(); Example configuration for initialization with full payment data (pkt. 1.4.1): p24config.merchantid = @"XXXXX"; p24config.crc = @"XXXXXXXXXXXXXXXX"; p24payment.sessionid = @"1234567890"; p24payment.amount = 100; p24payment.currency = @"PLN"; p24payment.clientaddress = @"Ulica testowa"; p24payment.clientcity = @"Poznan"; p24payment.clientzipcode = @"61-600"; p24payment.clientname = @"Jan Kowalski"; p24payment.clientcountry = @"PL"; p24payment.clientphone = @"PL"; p24payment.language = @"pl"; p24payment.clientemail = @"test@test.pl"; Example configuration for initialization with token (pkt. 1.4.2): p24payment.token = @"XXXXXXXXXX-XXXXXX-XXXXXX-XXXXXXXXXX"; Example optional configuration (described above): p24payment.method = @"XXX"; Page 17 z 28

Created by: Arkadiusz [p24config.enabletestmode: YES]; p24config.storelogindata = YES; p24config.usemobilestyles = NO; p24config.dontaskforsavelogindata = YES; p24config.timelimit = 30; p24config.p24channel = P24_CHANNEL_CARDS; p24payment.p24urlstatus = @"http://xxxxxx"; p24payment.transferlabel = @"Test label"; Similarly for Swift. 4.3 Perform a transaction Implement P24Delegate protocol in the controller (it contains method used for transaction result notification): - (void)p24:(p24 *)p24 didfinishpayment:(p24payment *)p24payment withresult:(p24paymentresult *)p24paymentresult { BOOL paymentok = [p24paymentresult isok]; if (!paymentok) { NSLog(@ Payment error: %d, %@, p24paymentresult.status.code, p24paymentresult.status.description); } - (void)p24:(p24 *)p24 didcancelpayment:(p24payment *)p24payment { // transaction cancelled or user closed library page before // transaction was verified } - (void)p24:(p24 *)p24 didfailpayment:(p24payment *)p24payment witherror:(nserror *)error {} Using P24 and P24Payment you can start a transaction. In order to do this, use startpayment:inviewcontroller: from P24 object: [p24 startpayment:p24payment inviewcontroller:self]; Page 18 z 28

Created by: Arkadiusz A payment view will appear. A user will be able to choose payment form (if it was not set by default) and perform the payment. When the transaction is finished, the payment view will close. Information about payment status will be passed to one of the methods of P24Delegate protocol. Similarly for Swift: func p24(p24: P24!, didfinishpayment p24payment: P24Payment!, withresult p24paymentresult: P24PaymentResult!) { let paymentok = p24paymentresult.isok(); if (!paymentok) { print("payment error: %d, %@", p24paymentresult.status.code, p24paymentresult.status.description); } } func p24(p24: P24!, didcancelpayment p24payment: P24Payment!) { // transaction cancelled or user closed library page before // transaction was verified } func p24(p24: P24!, didfailpayment p24payment: P24Payment!, witherror error: NSError!) { } Perform a transaction: p24.startpayment(p24payment, inviewcontroller: self); 5 Integration of a Windows Phone library A Windows Phone library was created in C#. This chapter describes how to integrate a library with Visual Studio project. NOTE: Currently in a Windows Phone semi-automatic bank payments (e-transfers) are unavailable. Page 19 z 28

Created by: Arkadiusz 5.1 Project configuration 5.1.1 Windows Phone Silverlight In project settings, you must set Windows Phone version (Target Windows Phone OS Version). Minimum Windows Phone version compatible with library, is 7.1. Add references to three libraries (all are placed in lib folder): DialCom24.P24Lib.dll, BouncyCastle.Crypto.WP7.dll, HtmlAgilityPack.dll 5.1.2 Windows Phone Runtime Copy whole catalog lib/ into Windows Phone 8.1 project. In the project add references to three libraries: DialCom24.P24Lib.Runtime.dll, crypto.dll, HtmlAgilityPack.dll In Package.appxmanifest in a tab Content URIs add: https://secure.przelewy24.pl/* https://www.przelewy24.pl/* 5.2 A library configuration Create P24Config, P24, P24Payment objects and set configuration data: P24Config p24config = new P24Config(); P24 p24 = new P24(p24config); P24Payment p24payment = new P24Payment(); Example configuration for initialization with full payment data (pkt. 1.4.1): p24config.merchantid = "XXXXX"; p24config.crc = "XXXXXXXXXXXXXXXX"; p24config.sessionid = "1234567890"; p24config.amount = 100; Page 20 z 28

Created by: Arkadiusz p24config.language = "pl"; p24config.currency = "PLN"; p24config.clientaddress = "Test street"; p24config.clientcity = "Poznan"; p24config.clientzipcode = "61-600"; p24config.clientname = "John Smith"; p24config.clientcountry = "PL"; p24config.clientphone = "600600600"; p24config.clientemail = "test@test.pl"; Example configuration for initialization with token (pkt. 1.4.2): p24payment.token = "XXXXXXXXXX-XXXXXX-XXXXXX-XXXXXXXXXX"; Example optional configuration (described above): p24payment.method = "XXX"; p24config.testmode = true; p24config.savelogindata = true; p24config.usemobilestyles = true; //only Windows Phone Runtime p24config.autofinishtimeout = 3000; p24config.dontaskforsavelogindata = true; p24config.timelimit = 30; p24payment.p24urlstatus("http://xxxxxx"); p24payment.transferlabel = "Test label"; 5.3 Perform a transaction Using P24 and P24Payment you can stat payment process. To do this use this code: //Windows Phone Silverlight Uri uri = p24.getstartpaymenturi(payment); NavigationService.Navigate(uri); //Windows Phone Runtime Page 21 z 28

Created by: Arkadiusz Frame.Navigate(p24.GetStartPaymentParam(payment)); A payment window will appear. User will be able to choose payment method and do the payment. After payment finish user will be redirected back into application window. Transaction result will be avaliable in OnNavigatedTo(NavigationEventArgs e) method: protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) { base.onnavigatedto(e); if (p24.ispaymentcompleted) { if (p24.ispaymentcancelled) { // transaction cancelled or user closed library page before // transaction was verified } else { P24PaymentResult result = p24.paymentresult; if (result.isok) { // trnsaction ok string sessionid = result.sessionid; int orderid = result.orderid; long orderidfull = result.orderidfull; int amount = result.amount; string currency = result.currency; } else { /* error */ } } } } Payment result is in P24PaymentResult object. Page 22 z 28

Created by: Arkadiusz Attachment no. 1 Document changes history Date Author Notes 2015-08-17 Arkadiusz Document created 2015-08-20 Arkadiusz A library change log added 2015-08-24 Arkadiusz 2015-08-26 Arkadiusz 2015-08-27 Arkadiusz 2015-08-28 Arkadiusz 2015-10-30 Arkadiusz Version 2.0.1 added p24_channel and p24_method params description Version 2.0.2 update of Windows Phone library description Version 2.0.4 - Android library v2.0.5 Version 2.0.5 - ios library v2.0.3 and Windows Phone v2.0.1 Version 2.0.6 Android library migration from Eclipse to AndroidStudio Page 23 z 28

Created by: Arkadiusz Attachment no. 2 Android library changes history Date Author Notes 2012-09-01 Arkadiusz Document created 2013-06-04 Arkadiusz Update to v1.4.0 2013-06-27 Arkadiusz Update to v1.4.2 2013-07-18 Arkadiusz Update to v1.4.3 2013-09-13 Arkadiusz 2013-10-17 Arkadiusz 2013-10-18 Arkadiusz 2013-10-25 Arkadiusz 2013-11-14 Arkadiusz 2013-12-02 Arkadiusz 2013-12-03 Arkadiusz 2013-12-09 Arkadiusz 2013-12-17 Arkadiusz 2014-01-02 Arkadiusz 2014-01-13 Arkadiusz 2014-02-03 Arkadiusz 2014-02-05 Arkadiusz 2014-02-05 Arkadiusz 2014-02-25 Arkadiusz 2014-03-07 Arkadiusz 2014-08-25 Arkadiusz 2014-09-03 Arkadiusz Version 1.4.3 added description, how to configure library with sandbox server. Version 1.4.4 improved SMS reading. Version 1.4.5 changed default settings of saving login data and reading sms. Version 1.4.6 sms and passwords for new banks. Version 1.4.7 fixed the bug with unconfirmed transactions Version 1.5.0 banks pages with mobile styles, fixed encoding of the email with payment confirmation, fixed sending of p24_city parameter (important in cards payment) Version 1.5.1 obfuscation parameters, refactoring Version 1.5.2 added mobile styles to configuration, fixed configuration bugs Version 1.5.3 minor bug fixes Version 1.5.4 fixed bug with configuration apilevel=17 and Android 4.2+ Version 1.5.5 added parameter P24Payment.setMethod Version 1.5.6 classical zooming on bank pages (for pages without mobile styles), fixed loading message bug, Change bank and Finish transaction buttons moved to ActionBar (if AB is active). Version 1.5.7 WebView closing bug fixed Version 1.5.8 bugfix, certificates error handled, mobile styles for Android 2.1 Version 1.5.9 disabled WebView render priority (the setting caused crashing in applications converted to BlackBerry < 10.2) Version 1.6.0 implemented 3.1 documentation added P24Payment.setToken(String) parameter. Updated paragraph about automatic notifications Implemented automatic notifications about transaction according to documentation 3.2 2015-05-22 Arkadiusz Version 2.0.0 added e-transfers, end of supporting Page 24 z 28

Created by: Arkadiusz 2015-06-05 Arkadiusz 2015-06-19 Arkadiusz 2015-07-20 Arkadiusz 2015-08-20 Arkadiusz 2015-08-27 Arkadiusz 2015-10-30 Arkadiusz 2016-03-07 Arkadiusz 2016-05-06 Arkadiusz compatibility with 2.x API documentation, rewritten documentation, added asking user for saving bank credentials, added saving masked passwords Version 2.0.1 fixed bug in an e-transfers Version 2.0.2 dontaskforsavelogindata parameter fixed, set transaction description fixed Version 2.0.3 P24PaymentResultStatus bug fixed Version 2.0.4 added P24Payment.setClientPhone() parameter Version 2.0.5 added P24Payment.setTransferLabel(), parameter, english version Version 2.0.6 migration from eclipse to Android Studio Obfuscation rules update Version 2.0.7 fixed library compilation for Gradle 2.1.0, added validation for required parameters in P24Config and P24Payment, changed max value of timelimit to 99, changed type of parameter P24Config.merchantId to int Page 25 z 28

Created by: Arkadiusz Attachment no. 3 ios library changes history Date Author Notes 2013-06-13 Arkadiusz Document created 2013-09-13 Arkadiusz 2013-10-31 Arkadiusz 2013-11-07 Arkadiusz 2013-11-07 Arkadiusz 2013-11-20 Arkadiusz 2013-12-03 Arkadiusz 2013-12-13 Arkadiusz 2014-01-10 Arkadiusz 2014-03-13 Arkadiusz 2014-04-07 Arkadiusz 2014-06-18 Arkadiusz 2014-08-25 Arkadiusz 2014-09-03 Arkadiusz 2014-10-24 Arkadiusz 2015-05-22 Arkadiusz 2015-06-30 Arkadiusz 2015-08-20 Arkadiusz 2015-08-28 Arkadiusz 2015-10-30 Arkadiusz Added description how to configure library with sandbox server Version 1.2.3 new banks added, saving bank credentials set as default, added compatibility with ios7 Version 1.2.4 bugs fixes Version 1.3.0 added mobile styles for banks pages, bug fixes Version 1.3.1 automatically update of bank website layout and configuration. Project configuration changed (add -lstdc++ flag and system library libz) Version 1.3.2 bug fix Version 1.3.3 fixed p24_encoding parameter, improved performance when using mobile styles, added mobile styles for config. NOTE! P24.h file has been changed. Version 1.3.4 added opton for default payment method, some graphical fixes for ios7. NOTE! P24.h file has been changed. Version 1.3.5 fixed problem with loading some bank pages Version 1.4.0 documentation 3.1 implemented added P24Payment.token. Added compatibility with arm64 architecture. NOTE! P24.h file has changed. Version 1.4.1 disabled modal mode on ipad Updated description of automatic notifications implementation Version 1.4.2 implemented automatic notifications about transaction according to documentation 3.2 Version 1.4.3 fixed bug with p24urlstatus, added option to set tint color of options buttons in NavigationBar Version 2.0.0 added e-transfers, end of supporting compatibility with 2.x API documentation, rewritten documentation, added asking user for saving bank credentials, added saving masked passwords Version 2.0.1 dontaskforsavelogindata parameter fixed, set transaction description fixed Version 2.0.2 added p24payment.clientphone parameter Version 2.0.3 P24Payment.transferLabel parameter added, UI in english, P24_CHANNEL_PBL parameter added Version 2.0.4 fixed language change for ios 9 2016-01-29 Arkadiusz Added configuration Info.plist for ios 9 Page 26 z 28

Created by: Arkadiusz 2016-02-12 Arkadiusz Added integration description for Swift Page 27 z 28

Created by: Arkadiusz Attachment no. 4 Windows Phone library changes history Date Author Notes 2013-05-27 Arkadiusz Document created 2013-07-09 Arkadiusz Update contact information in document 2013-07-23 Arkadiusz Added status bar configuration in P24Config 2013-07-26 Arkadiusz Version 1.0.2 disable moving payment list screen 2013-09-13 Arkadiusz Added description how to configure library with sandbox server 2013-09-23 Arkadiusz Version 1.0.3 small layout and performance fixes. Fixed hanging on Windows Phone 8 bug. 2014-03-07 Arkadiusz Version 1.1.0 graphical changes, saving bank credentials, auto close transaction summary view 2014-04-07 Arkadiusz Version 1.2.0 implemented 3.1 documentation added P24Payment.setToken parameter. 2014-08-35 Arkadiusz Updated paragraph about automatic notifications. 2014-09-03 Arkadiusz Version 1.2.1 implemented automatic notifications about transaction according to documentation 3.2. 2014-12-01 Arkadiusz Version 1.2.2 fixed bug in automatic notifications about transaction according to documentation 3.2. 2015-02-13 Arkadiusz Version 1.2.2.1 bug fix 2015-05-27 Arkadiusz Version 1.2.3 fixed bug of back when P24Payment.Method is set 2015-08-26 Arkadiusz 2015-08-28 Arkadiusz 2015-10-30 Arkadiusz 2016-02-05 Arkadiusz Vetsion 2.0.0 compatibility with Windows Phone from v8.0, end of supporting compatibility with 2.x API documentation, rewritten documentation, added asking user for saving bank credentials, added saving masked passwords Version 2.0.1 added P24Payment.TransferLabel parameter, english version Version 2.0.2 ING and Pekao S.A. banks problems fixed, compatibility with Windows Phone from v8.1 (ING bank fix needed compilation of library for WP v8.1) Version 2.0.3 from v2.0.3 a library supports only Windows Phone Runtime platform. Mobile styles added. Page 28 z 28