diff --git a/CHANGELOG.md b/CHANGELOG.md index 956ea0c9e..ebe932abe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,13 @@ # PayPal iOS SDK Release Notes +## unreleased +* PayPalWebPayments + * Add `vault(url:)` method to `PayPalWebCheckoutClient` + * Add `PayPalVaultResult` type to return vault result + * Add `PayPalVaultDelegate` to handle results from vault flow + * Add `PayPalWebCheckoutClientError.paypalVaultResponseError` for missing or invalid response from vaulting + ## 1.1.0 (2023-11-16) * PayPalNativePayments * Bump `PayPalCheckout` to `1.2.0` diff --git a/Sources/PayPalWebPayments/PayPalWebCheckoutClient.swift b/Sources/PayPalWebPayments/PayPalWebCheckoutClient.swift index 54e2393fc..387a43f10 100644 --- a/Sources/PayPalWebPayments/PayPalWebCheckoutClient.swift +++ b/Sources/PayPalWebPayments/PayPalWebCheckoutClient.swift @@ -97,6 +97,12 @@ public class PayPalWebCheckoutClient: NSObject { return checkoutURLComponents?.url } + /// Starts a web session for vaulting PayPal Payment Method + /// After setupToken successfullly attaches a payment method, you will need to create a payment token with the setup token + /// - Parameters: + /// - url: URL created from string value from setupToken API + /// - Returns: PayPalVaultResult + /// - Throws: PayPalSDK error if vaulting could not complete successfully public func vault(url: URL) { webAuthenticationSession.start( url: url, diff --git a/UnitTests/PayPalWebPaymentsTests/PayPalWebCheckoutClient_Tests.swift b/UnitTests/PayPalWebPaymentsTests/PayPalWebCheckoutClient_Tests.swift index 753a42d53..e89948031 100644 --- a/UnitTests/PayPalWebPaymentsTests/PayPalWebCheckoutClient_Tests.swift +++ b/UnitTests/PayPalWebPaymentsTests/PayPalWebCheckoutClient_Tests.swift @@ -88,7 +88,7 @@ class PayPalClient_Tests: XCTestCase { XCTAssertEqual(vaultError.code, expectedError.code) expectation.fulfill() }, cancel: { _ in - expectation.fulfill() + XCTFail("Invoked cancel callback. Should invoke error().") }) payPalClient.vaultDelegate = mockVaultDelegate payPalClient.vault(url: url!) @@ -111,7 +111,6 @@ class PayPalClient_Tests: XCTestCase { let mockVaultDelegate = MockPayPalVaultDelegate(success: {_, _ in XCTFail("Invoked success() callback. Should invoke error().") - expectation.fulfill() }, error: {_, vaultError in XCTAssertEqual(vaultError.code, expectedError.code) expectation.fulfill()