WSTĘP
Biblioteka mobilna dla systemu iOS umożliwia wykonanie płatności wewnątrz aplikacji mobilnej sklepu bez konieczności przełączania użytkownika między aplikacją a przeglądarką lub inną aplikacją.
W bibliotece dostępne są następujące metody płatności:
- Przelewy bankowe
- Karty płatnicze
- Apple Pay
- BLIK
INSTALACJA
Upewnij się, że framework Tpay został zaimportowany do twojego projektu. Możesz to zrobić, dodając wiersz na górze pliku Swift:
import Tpay
Instalacji możesz dokonać na trzy różne sposoby:
- Przy użyciu Swift Package ManagerExample:Skopiuj link do tej sekcjiSkopiuj kod
File > Swift Packages > Add Package Dependency Add https://github.com/tpay-com/tpay-sdk-ios.git Select "Up to Next Major" with "1.0.0"
- Przy użyciu CocoaPodsExample:Skopiuj link do tej sekcjiSkopiuj kod
use_frameworks! target :MyTarget do pod 'Tpay' end
Po utworzeniu pliku użyj komendypod
install
. - Ręcznie, pobierając pliki z naszego repozytorium na GitHub
Plik
Tpay.xcframework
umieść wFrameworks, Libraries and Embedded Content
w swoim projekcie.
UPRAWNIENIA
Moduł Tpay umożliwia użytkownikowi automatyczne wypełnienie formularza karty płatniczych za pośrednictwem aparatu fotograficznego, w celu bezpiecznego przetwarzania płatności. Ta funkcja wymaga skonfigurowania opcji Prywatność — opis użycia aparatu w pliku Info.plist
aplikacji.
Ważne, aby użytkownik nadał te uprawnienia w swoim urządzeniu.
- Otwórz plik
Info.plist
w swoim projekcie. - Dodaj wartość klucza do uprawnienia Privacy - Camera Usage Description w celu dostępu do kamery. Należy wyraźnie zaznaczyć, że kamera służy do automatycznego wypełniania formularza kart płatniczych w celu bezpiecznego przetwarzania płatności.
KONFIGURACJA
- Utwórz instancjęMerchant.Authorizationwraz z danymi Sprzedawcy*Example:Skopiuj link do tej sekcjiSkopiuj kod
let authorization = Merchant.Authorization(clientId: "your_client_id", clientSecret: "your_client_secret")
* dane znajdziesz w Panelu Akceptanta w zakładce Integracje -> API w sekcji Klucze do nowego Open API.
- Utwórz instancjęMerchant, łącząc z innymi opcjonalnymi konfiguracjami, np.
CardsConfiguration, blikConfiguration.
Oto przykład tworzenia podstawowej konfiguracji sprzedawcy:
Example:Skopiuj link do tej sekcjiSkopiuj kodlet merchant = Merchant(authorization: authorization)
Instancję
Merchant
możesz dostosować dowolnie na podstawie wymagań swojej aplikacji.Użyj metodyconfigure(merchant:), aby ustawić konfigurację sprzedawcy w ramach Tpay SDK:
Example:Skopiuj link do tej sekcjiSkopiuj koddo { try TpayModule.configure(merchant: merchant) // Configuration successful } catch { // Handle configuration errors }
- Utwórz typ zgodny z protokołemMerchantDetailsProvider, implementując jego wymagane metody. Podaj lokalizację dla każdej informacji.
Dane pojawią się na ekranie modułu Tpay i są niezbędne do spełnienia wymogów RODO.
Example:Skopiuj link do tej sekcjiSkopiuj kodclass MyMerchantDetailsProvider: MerchantDetailsProvider { func merchantDisplayName(for language: Language) -> String { // Return the merchant's display name based on the specified language } func merchantHeadquarters(for language: Language) -> String? { // Return the merchant's headquarters location based on the specified language } func regulationsLink(for language: Language) -> URL { // Return the URL to the regulations page based on the specified language } }
- Użyj metodyconfigure(merchantDetailsProvider:), aby skonfigurować dane Sprzedawcy.Example:Skopiuj link do tej sekcjiSkopiuj kod
TpayModule.configure(merchantDetailsProvider: myMerchantDetailsProvider)
Stwórz tablice z wybranymi metodami płatności.
Ustaw metody płatności, które chcesz oferować swoim klientom.Example:Skopiuj link do tej sekcjiSkopiuj kodlet paymentMethods: [PaymentMethod] = [.card, .blik, .digitalWallet(.applePay)]
Co oznaczają poszczególne pola?
- .card–karty płatnicze
- .blik– blik LVL 0
- .digitalWallet(.applePay) – portfele wirtualne np. Apple Pay
- Użyj metody configure(paymentMethods:), aby skonfigurować wybrane metody płatności. Example:Skopiuj link do tej sekcjiSkopiuj kod
do { try TpayModule.configure(paymentMethods: paymentMethods) // Configuration successful } catch { // Handle configuration errors }
Ważne: SDK domyślnie ustawia wszystkie metody płatności jako dostępne.
- Metoda płatności kartami płatniczymi wymaga osobnej konfiguracji w pliku Merchant.CardsAPI
- Metoda płatności Apple Pay wymaga osobnej konfiguracji w pliku Merchant.WalletConfiguration.ApplePayConfiguration
- Użyj metody
configure(preferredLanguage:supportedLanguages:)
w celu skonfigurowania języka.Example:Skopiuj link do tej sekcjiSkopiuj koddo { try TpayModule.configure(preferredLanguage: .en, supportedLanguages: .allCases) // Configuration successful } catch { // Handle configuration errors }
Moduł obsługuje język polski (jako domyślny) i angielski.
- Aby zwiększyć poziom bezpieczeństwa, przypnij certyfikat SSL. Utwórz protokół SSLCertificatesProvider, następnie dodaj go do metody configure(sslCertificatesProvider:)Example:Skopiuj link do tej sekcjiSkopiuj kod
[ TpayModule.configure(sslCertificatesProvider: sslProvider)
- Przed dalszą implementacją zalecamy użycie metody sprawdzającej poprawność konfiguracji. Możesz łączyć ze sobą wiele metod konfiguracji. Example:Skopiuj link do tej sekcjiSkopiuj kod
do { try TpayModule.configure(merchant: merchant) .configure(paymentMethods: paymentMethods) .configure(sslCertificatesProvider: sslProvider) .configure(merchantDetailsProvider: detailsProvider) .configure(preferredLanguage: .en, supportedLanguages: [.en, .pl]) // Configuration chain completed successfully } catch { // Handle configuration errors } let configurationCheckResult = TpayModule.checkConfiguration() switch configurationCheckResult { case .valid: // Configuration is complete and valid, proceed with payment processes case .invalid(let error): // Configuration is invalid, handle the specific error accordingly }
Po poprawnej weryfikacji konfiguracji możesz przejść do implementacji płatności.
PŁATNOŚCI
- Utwórz transakcje wykorzystując strukturę SingleTransaction określając jej kwotę oraz opis. Example:Skopiuj link do tej sekcjiSkopiuj kod
let singleTransaction = SingleTransaction(amount: 50.0, description: "Product Purchase")
- automaticPaymentMethods - do automatycznych metod płatności możesz użyć zarejestrowanego alias BLIK lub tokenizacji karty. Jeśli chcesz wykonać standardową płatność, użyj wartości: nil.Do transakcji możesz dodać dane płatnika oraz automatyczne metody płatności. Te dane możesz przesłać podczas generowania transakcji.
Jeśli zamierzasz przyjmować cykliczne płatności kartami płatniczymi, utwórz instancję RecursiveTransactionwraz z określeniem parametrów tj. częstotliwość, ilość i data ważności.
Example:Skopiuj link do tej sekcjiSkopiuj kodlet recursiveTransaction = RecursiveTransaction( wrapping: singleTransaction, frequency: .monthly, quantity: .count(5), expiryDate: futureDate)
Co oznaczają poszczególne pola?
- wrapping- singleTransaction
- frequency- częstotliwość: daily / monthly / quarterly / weekly / yearly
- quantity- ilość przyjmowanych płatności
- expiryDate- data wygaśnięcia płatności
- Zaprezentuj metody płatności w swoim projekcie za pomocą klasySheet
Utwórz instancję klasy
Sheet
, następnie zainicjuj ją obiektemTransaction
orazPaymentDelegate
Example:Skopiuj link do tej sekcjiSkopiuj kodlet paymentSheet = Payment.Sheet(transaction: transaction, delegate: delegate)
Użyj metody
present(from:)
do zaprezentowania metod płatnościExample:Skopiuj link do tej sekcjiSkopiuj koddo { try paymentSheet.present(from: presentingViewController) } catch { // Handle configuration errors or other exceptions }
W celu zamknięcia prezentacji metod płatności, wywołaj metodę
Example:Skopiuj link do tej sekcjiSkopiuj koddismiss() paymentSheet.dismiss()
- Dodaj widok za pośrednictwem SwiftUI.
TOKENIZACJA KART PŁATNICZYCH
Tokenizacja kart jest konieczna do rejestracji karty płatniczych bez inicjalizacji transakcji płatniczej, dzięki czemu klienci mogą dokonywać kolejnych płatności w sklepie bez ponownego podawania danych kart lub rozpocząć cykliczne płatności w sklepie.
- Utwórz instancję klasySheet, następnie zainicjuj ją obiektemPayeroraz AddCardDelegateExample:Skopiuj link do tej sekcjiSkopiuj kod
let addCardSheet = AddCard.Sheet(payer: payer, delegate: delegate)
Użyj metody
present(from:)
do zaprezentowania metod płatnościExample:Skopiuj link do tej sekcjiSkopiuj koddo { try addCardSheet.present(from: presentingViewController) } catch { // Handle configuration errors or other exceptions }
- W celu zamknięcia prezentacji metod płatności, wywołaj metodę Example:Skopiuj link do tej sekcjiSkopiuj kod
dismiss() paymentSheet.dismiss()
- Dodaj widok za pośrednictwem SwiftUI.Example:Skopiuj link do tej sekcjiSkopiuj kod
struct ContentView: View { @State private var isTokenizationSheetPresented = false var body: some View { Button("Add Card") { isTokenizationSheetPresented.toggle() } .presentCardTokenizationSheet(isPresented: $isTokenizationSheetPresented) { // Handle card tokenization completed } onTokenizationCancelled: { // Handle card tokenization cancelled } onErrorOccured: { error in // Handle tokenization error } } }
PŁATNOŚCI AUTOMATYCZNE
Płatność OneClick kartą płatniczą
Tpay SDK umożliwia rejestrację karty płatniczych bez inicjalizacji transakcji płatniczej, dzięki czemu klienci mogą dokonywać kolejnych płatności w sklepie bez ponownego podawania danych kart lub rozpocząć cykliczne płatności w sklepie.
Do obsługi tej funkcjonalności konieczne jest poprawnie przyjmowanie powiadomień z systemu Tpay. Szczegóły jak poprawnie odbierać powiadomienia znajdziesz w dokumentacji OpenAPI.
- Do tokenizowanej karty każdego płatnika utwórz instancjęCardTokeni przekaż ją za pomocąPayerContext.Example:Skopiuj link do tej sekcjiSkopiuj kod
let card = CardToken( token: token, cardTail: tail, brand: brand) let payerContext = PayerContext( payer: payer, automaticPaymentMethods: .init(tokenizedCards: [card]))
Płatność OneClick BLIK
Aby udostępnić swoim klientom funkcjonalność BLIK OneClick, w pierwszej kolejności zdefiniuj alias, który będzie rejestrowany w systemie BLIK, gdy użytkownik wyrazi na to zgodę.
- Dane podaj konfigurując swojego Sprzedawcę za pomocąExample:Skopiuj link do tej sekcjiSkopiuj kod
Merchant.BlikConfiguration
Example:Skopiuj link do tej sekcjiSkopiuj kodlet blikConfiguration = Merchant.BlikConfiguration(aliasToBeRegistered: .init(value: .uid("myBlikAlias"))) let merchant = Merchant(authorization: authorization, blikConfiguration: blikConfiguration)
Co oznacza to pole?
- myBlikAlias - wartość aliasu BLIK
- Po otrzymaniu powiadomienia rejestracji aliasu (sekcja Powiadomienia w dokumentacji OpenAPI) możesz przekazać te dane wraz z
PayerContext
.Example:Skopiuj link do tej sekcjiSkopiuj kodlet blikAlias = RegisteredBlikAlias(value: .uid(retrievedAlias)) let payerContext = PayerContext( payer: payer, automaticPaymentMethods: .init(registeredBlikAlias: blikAlias))