10/07/2023
I dagens digitale tidsalder er en problemfri og sikker betalingsoplevelse afgørende for enhver mobilapp. Brugere forventer hurtige, effektive og sikre måder at gennemføre køb på, direkte fra deres smartphones. For iOS-udviklere og virksomheder, der ønsker at tilbyde kortbetalinger, er PayPal Mobile SDK en robust og pålidelig løsning. Denne artikel vil guide dig gennem processen med at integrere kortbetalinger i din iOS-app ved hjælp af PayPal SDK, fra opsætning til håndtering af transaktioner og overholdelse af sikkerhedsstandarder.

Uanset om du bygger en e-handelsapp, en serviceplatform eller en anden type app, der kræver betalinger, giver PayPal SDK dig værktøjerne til at skabe en skræddersyet og brugervenlig oplevelse. Ved at følge denne detaljerede vejledning kan du sikre, at dine kunders følsomme kortdata håndteres sikkert, og at din app overholder de nyeste industristandarder.
Hvorfor Vælge PayPal iOS SDK til Kortbetalinger?
Valget af en betalingsløsning er en kritisk beslutning for enhver app. PayPal iOS SDK tilbyder flere fordele, der gør det til et foretrukket valg for mange udviklere:
- Sikkerhed i Top: PayPal er kendt for sin robuste sikkerhedsinfrastruktur. SDK'en hjælper med at håndtere følsomme kortdata sikkert, hvilket reducerer din apps PCI-overholdelsesbyrde.
- Overholdelse af Standarder: Med indbygget support for 3D Secure og overholdelse af PSD2 (Payment Services Directive 2) sikrer SDK'en, at dine transaktioner lever op til de seneste europæiske reguleringer for stærk kundeautentificering (SCA). Dette er afgørende for at minimere svindel og sikre godkendte transaktioner.
- Fleksibilitet og Tilpasning: Selvom SDK'en håndterer den komplekse logik, giver den dig mulighed for at bygge og tilpasse kortfelterne, så de matcher din apps branding og design. Dette skaber en ensartet og professionel brugeroplevelse.
- Forenklet Udvikling: Ved at abstrahere mange af de komplekse betalingsprocesser, såsom kryptering og kommunikation med betalingsgateways, forenkler SDK'en udviklingsprocessen, så du kan fokusere på din apps kernefunktionalitet.
- Global Rækkevidde: PayPal er en globalt anerkendt betalingsudbyder, hvilket betyder, at din app kan acceptere betalinger fra et bredt publikum verden over.
Trin-for-Trin Guide til Integration af Kortbetalinger
Integration af kortbetalinger med PayPal iOS SDK involverer både klient-side (din iOS-app) og server-side (din backend) operationer. Det er vigtigt at forstå samspillet mellem disse to for at sikre en succesfuld implementering.
1. Tilføj Kortbetalingsmodulet til Din App
Det første skridt er at inkludere de nødvendige biblioteker i dit Xcode-projekt. Du har to primære metoder: Swift Package Manager eller CocoaPods.
Swift Package Manager (SPM)
SPM er Apples foretrukne måde at håndtere afhængigheder på. Følg disse trin:
- Åbn Xcode.
- Naviger til dit projekt i Project Navigator, vælg din app-mål (target), og gå til fanen 'Package Dependencies'.
- Klik på '+' knappen for at tilføje en ny pakke.
- Indtast
https://github.com/paypal/paypal-ios/som repository-URL. - Vælg afkrydsningsfeltet for CardPayments-frameworket.
- Xcode vil automatisk hente og integrere pakken i dit projekt.
CocoaPods
Hvis du allerede bruger CocoaPods i dit projekt, kan du tilføje det ved at redigere din Podfile:
# Podfile pod 'PayPal/CardPayments'Efter at have tilføjet linjen, skal du køre pod install i din terminal for at opdatere dit projekt.
2. Opret en CardClient Instans
CardClient er den centrale klasse i SDK'en til at håndtere kortbetalinger. Du skal initialisere den med en konfiguration, der inkluderer dit klient-ID og miljøet (sandkasse til test, live til produktion).
let coreConfig = CoreConfig(clientID: "DIT_KLIENT_ID", environment: .sandbox) let cardClient = CardClient(config: coreConfig)Erstat "DIT_KLIENT_ID" med dit faktiske klient-ID fra din PayPal-udviklerkonto. Husk at skifte .sandbox til .live, når du er klar til at gå i produktion.
3. Hent Ordre-ID fra Din Server
Dette er et kritisk server-side trin. For at sikre sikkerhed og forhindre svindel skal ordreoprettelse altid ske på din backend. Din server skal kommunikere med PayPals Orders v2 API for at oprette en ordre og modtage et ORDER_ID. Dette ID fungerer som en reference for transaktionen og skal sendes til din klient-app.
For at gøre dette skal din server først anskaffe et ACCESS_TOKEN ved hjælp af PayPals Authentication API. Bemærk, at adgangstokens er miljøspecifikke (sandkasse vs. live).
curl --location --request POST 'https://api-m.sandbox.paypal.com/v2/checkout/orders/' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer DIT_ADGANGS_TOKEN' \ --data-raw '{ "intent": "CAPTURE|AUTHORIZE", "purchase_units": [ { "amount": { "currency_code": "USD", "value": "5.00" } } ] }'intent-parameteren er vigtig her:
CAPTURE: Pengene trækkes fra kundens konto med det samme. Dette er typisk for de fleste e-handelsbetalinger.AUTHORIZE: Pengene reserveres på kundens konto, men trækkes ikke. Du skal efterfølgende udføre en separat 'capture'-handling for at fuldføre transaktionen. Dette er nyttigt, hvis du f.eks. skal bekræfte lagerbeholdning eller serviceudførelse, før du trækker pengene.
Din server vil modtage et svar, der indeholder "id": "ORDRE_ID". Send dette ORDRE_ID til din iOS-app, når kunden påbegynder en betaling.
4. Opret en Kortanmodning (CardRequest)
Når din app har ORDER_ID fra serveren, skal du indsamle kortoplysningerne fra brugeren og oprette et Card-objekt. Dette er typisk her, hvor du implementerer din brugerdefinerede UI til kortindtastning.
1. Indsaml Kortbetalingsoplysninger
Byg et Card-objekt med køberens kortoplysninger. Det er afgørende at inkludere en faktureringsadresse, da dette kan reducere antallet af autentificeringsudfordringer for kunderne og forbedre konverteringsraten.
let card = Card( number: "4005519200000004", expirationMonth: "01", expirationYear: "2025", securityCode: "123", cardholderName: "Jane Smith", billingAddress: Address( addressLine1: "123 Main St.", addressLine2: "Apt. 1A", locality: "City", region: "IL", postalCode: "12345", countryCode: "US" ) )Husk, at du aldrig bør gemme disse følsomme oplysninger lokalt på enheden. SDK'en er designet til at håndtere dem sikkert.
2. Byg CardRequest
Opret nu et CardRequest-objekt ved hjælp af det indsamlede Card-objekt og ORDER_ID.
let cardRequest = CardRequest( orderID: "DIT_ORDRE_ID", card: card, sca: .scaAlways )Parameteren sca (Strong Customer Authentication) er relateret til 3D Secure og PSD2. Du har to valgmuligheder:
.scaWhenRequired: Udfordrer kunden med 3D Secure, når det er nødvendigt (standard). Dette er den mest almindelige indstilling..scaAlways: Kræver altid en 3D Secure-udfordring for alle korttransaktioner. Dette kan øge sikkerheden, men potentielt også friktionen for brugeren.
5. Godkend Ordren på Klienten
Når din CardRequest er klar, kalder du cardClient.approveOrder() for at starte betalingsprocessen. Dette vil sende kortoplysningerne sikkert til PayPal og håndtere eventuelle 3D Secure-udfordringer.
class MyViewController: UIViewController { // ... cardClient initialisering ... func cardCheckoutTapped(cardRequest: CardRequest) { cardClient.approveOrder(request: cardRequest) } }6. Håndter Betalingsresultatscenarier med CardDelegate
For at håndtere resultatet af betalingen skal du implementere CardDelegate-protokollen. Denne protokol definerer metoder, der kaldes, når betalingen er fuldført (succes eller fejl), annulleres, eller når 3D Secure-flowet starter/slutter.
extension MyViewController: CardDelegate { func setupCardClient() { cardClient.delegate = self } func card(_ cardClient: CardClient, didFinishWithResult result: CardResult) { // Betaling lykkedes! Send 'result.orderID' til din server for at autorisere/indfange. // 'result' indeholder yderligere information om den godkendte ordre. print("Betaling fuldført for ordre: \(result.orderID)") // TODO: Send ordre-ID til din server for endelig autorisering/indfangning } func card(_ cardClient: CardClient, didFinishWithError error: CoreSDKError) { // Betaling mislykkedes. Håndter fejlen og informér brugeren. print("Betaling mislykkedes: \(error.localizedDescription)") // TODO: Vis fejlmeddelelse til brugeren } func cardDidCancel(_ cardClient: CardClient) { // Brugeren annullerede betalingen (f.eks. under 3D Secure flow). print("Betaling annulleret af bruger.") // TODO: Informér brugeren om annullering } func cardThreeDSecureWillLaunch(_ cardClient: CardClient) { // 3D Secure-udfordringen er ved at blive vist. // Du kan vise en indlæsningsindikator her. print("3D Secure starter...") } func cardThreeDSecureDidFinish(_ cardClient: CardClient) { // 3D Secure-udfordringen er afsluttet. // Skjul indlæsningsindikatoren. print("3D Secure afsluttet.") } }Især didFinishWithResult-metoden er vigtig, da det er her, du modtager bekræftelsen på, at ordren er godkendt af PayPal. Du skal derefter sende dette ORDER_ID tilbage til din server for at fuldføre transaktionen.
7. Autoriser og Indfang Ordren på Din Server
Efter at cardClient.approveOrder() er lykkedes på klienten, og du har modtaget ORDER_ID i didFinishWithResult, skal din server udføre det sidste trin: autorisere eller indfange pengene. Dette er afgørende for at fuldføre transaktionen og trække pengene.

Autoriser Ordre (Hold Penge)
Hvis din oprindelige hensigt var AUTHORIZE, skal du kalde PayPals Orders V2 API's /authorize endpoint. Dette placerer pengene på hold på kundens konto.
curl --location --request POST 'https://api-m.sandbox.paypal.com/v2/checkout/orders/DIT_ORDRE_ID/authorize' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer DIT_ADGANGS_TOKEN' \ --data-raw ''Indfang Ordre (Træk Penge)
Hvis din oprindelige hensigt var CAPTURE, eller hvis du har autoriseret pengene og nu ønsker at trække dem, skal du kalde PayPals Orders V2 API's /capture endpoint. Dette trækker pengene fra kundens konto med det samme.
curl --location --request POST 'https://api-m.sandbox.paypal.com/v2/checkout/orders/DIT_ORDRE_ID/capture' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer DIT_ADGANGS_TOKEN' \ --data-raw ''Det er vigtigt at håndtere svaret fra disse serverkald for at bekræfte transaktionens succes og opdatere din egen database i overensstemmelse hermed.
Vigtigheden af 3D Secure og PSD2
3D Secure er en sikkerhedsprotokol designet til at give et ekstra lag af beskyttelse for online kredit- og betalingskorttransaktioner. Den kræver, at kortindehaveren gennemgår en yderligere godkendelsesproces (f.eks. en engangskode sendt via SMS, fingeraftryk eller ansigtsgenkendelse) hos sin bank. Dette hjælper med at verificere identiteten af den person, der foretager købet, og reducerer risikoen for svindel.
PSD2 (Payment Services Directive 2) er en europæisk regulering, der har til formål at gøre betalinger sikrere, øge forbrugerbeskyttelsen og fremme innovation. En central del af PSD2 er kravet om Strong Customer Authentication (SCA), som netop håndteres af 3D Secure. PayPal iOS SDK understøtter fuldt ud disse krav, hvilket sikrer, at dine kortbetalinger er compliant, især for europæiske brugere.
Ved at bruge SDK'en med sca: .scaWhenRequired eller sca: .scaAlways sikrer du, at din app automatisk håndterer 3D Secure-flowet, hvilket er afgørende for at opretholde høj sikkerhed og overholde lovgivningen.
Test af Din Integration
Før du går live med din app, er grundig testning absolut nødvendig. PayPal tilbyder et sandkasse-miljø, der simulerer live-miljøet, så du kan teste din integration uden at håndtere rigtige penge.
- Sandkasse-konti: Opret både en 'Business' og en 'Personal' sandkasse-konto på din PayPal-udviklerportal. Disse konti giver dig mulighed for at simulere betalinger som både sælger og køber.
- Testkort: Brug PayPals kreditkortgenerator til at generere testkreditkortnumre, udløbsdatoer og sikkerhedskoder. Disse kort virker kun i sandkasse-miljøet.
- Fejlscenarier: Test forskellige scenarier, herunder vellykkede betalinger, afviste betalinger (f.eks. med forkerte kortoplysninger eller utilstrækkelige midler), annullerede transaktioner og 3D Secure-udfordringer.
- Server-side tests: Sørg for, at din backend korrekt behandler ordre-ID'er, udfører autorisering/indfangning, og håndterer alle mulige svar fra PayPals API'er.
Under test i sandkassen kan du indtaste vilkårlige, men korrekt formaterede, data for felter som telefonnummer eller adresse. Disse data behøver ikke at være faktuelle, da det kun er et testmiljø.
Før du overgår til live-miljøet, skal du gennemføre en live onboarding-proces med PayPal for at sikre, at din konto er fuldt berettiget til at behandle kortbetalinger i produktion.
Den Nye PayPal App – Mere End Bare Betalinger
Selvom fokus for denne artikel er integration af betalinger via SDK'en, er det værd at bemærke, at PayPal løbende udvikler sin egen mobilapp for at forbedre brugeroplevelsen. Den nye PayPal-app introducerer en privat tovejs-beskedfunktion, der gør det muligt for brugere at kommunikere direkte i appen efter en peer-to-peer pengeoverførsel. Dette kan bruges til at bekræfte modtagelse, sende en takkebesked, eller afklare transaktionsdetaljer. Denne funktion understreger PayPals engagement i at skabe et mere forbundet og interaktivt finansielt økosystem, ud over blot at facilitere transaktioner.
Ofte Stillede Spørgsmål (FAQ)
AUTHORIZE (autorisere) betyder at reservere et beløb på kundens betalingskort. Pengene trækkes ikke med det samme, men banken garanterer, at beløbet er tilgængeligt, hvis du beslutter dig for at trække det senere. Dette er nyttigt, hvis du f.eks. skal bekræfte lagerbeholdning eller forberede en forsendelse, før du afslutter salget.
CAPTURE (indfange) betyder at trække pengene fra kundens betalingskort med det samme. Dette er den mest almindelige metode for de fleste onlinekøb, hvor varen eller tjenesten leveres umiddelbart efter betalingen.
Er 3D Secure obligatorisk?
For transaktioner i Europa er 3D Secure (eller stærk kundeautentificering, SCA) ofte obligatorisk på grund af PSD2-reguleringen. Selvom det ikke er obligatorisk for alle transaktioner globalt, anbefales det stærkt for at øge sikkerheden og reducere svindel, samt for at sikre bedre konverteringsrater, da banker er mere tilbøjelige til at godkende transaktioner med 3D Secure.
Hvad er et sandbox-miljø?
Et sandbox-miljø er et testmiljø, der simulerer det virkelige (live) produktionsmiljø. Det giver udviklere mulighed for at teste deres integrationer og applikationer grundigt uden at bruge rigtige penge eller påvirke live-data. Det er et sikkert sted at eksperimentere og fejlsøge din kode, før du implementerer den i et live-miljø.
Kan jeg tilpasse udseendet af betalingsfelterne?
Ja, PayPal iOS SDK giver dig fleksibiliteten til at bygge og tilpasse de brugergrænsefladeelementer, der indsamler kortoplysninger. Du kan designe inputfelter, knapper og eventuelle fejlmeddelelser, så de passer perfekt til din apps æstetik og branding. SDK'en håndterer den sikre overførsel og validering af data i baggrunden.
Hvad hvis min betaling fejler?
Hvis en betaling fejler, vil card(_:didFinishWithError:)-metoden i din CardDelegate blive kaldt. Du bør her håndtere fejlen, f.eks. ved at vise en brugervenlig fejlmeddelelse (f.eks. 'Kort afvist', 'Forkerte oplysninger') og vejlede brugeren til at prøve igen eller kontakte support. Logning af fejlen på din server er også vigtigt for fejlfinding.
Konklusion
At integrere kortbetalinger i din iOS-app med PayPal Mobile SDK er en ligetil proces, der giver dig adgang til en sikker, fleksibel og globalt anerkendt betalingsløsning. Ved at følge de trin, der er beskrevet i denne guide – fra opsætning af SDK'en og håndtering af server-side API-kald til implementering af klient-side logik og overholdelse af sikkerhedsstandarder som 3D Secure og PSD2 – kan du give dine brugere en gnidningsfri og tryg betalingsoplevelse. Husk altid at teste grundigt i sandkasse-miljøet, før du går live, for at sikre en problemfri udrulning. Med PayPal iOS SDK er du godt rustet til at håndtere dine apps betalingsbehov.
Hvis du vil læse andre artikler, der ligner Integrer Kortbetalinger med PayPal iOS SDK, kan du besøge kategorien Teknologi.
