Skip to content

Commit

Permalink
0.0.21
Browse files Browse the repository at this point in the history
  • Loading branch information
PaysafeAutoCommitter committed Jul 19, 2024
1 parent 64a2d65 commit 8ea0c7c
Show file tree
Hide file tree
Showing 8 changed files with 45 additions and 43 deletions.
4 changes: 2 additions & 2 deletions .scannerwork/report-task.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@ serverUrl=https://sonar.neterra.paysafe.com
serverVersion=9.9.0.65466
branch=master
dashboardUrl=https://sonar.neterra.paysafe.com/dashboard?id=com.paysafe.psp%3Apaysafe-ph-mobile-sdk-ios&branch=master
ceTaskId=AZDGeIj1vAZdAZVsOPv3
ceTaskUrl=https://sonar.neterra.paysafe.com/api/ce/task?id=AZDGeIj1vAZdAZVsOPv3
ceTaskId=AZDKzPNOvAZdAZVsOcd0
ceTaskUrl=https://sonar.neterra.paysafe.com/api/ce/task?id=AZDKzPNOvAZdAZVsOcd0
2 changes: 1 addition & 1 deletion PaysafePaymentsSDK.podspec
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = 'PaysafePaymentsSDK'
s.version = '0.0.20'
s.version = '0.0.21'
s.summary = 'Paysafe iOS SDK that implements the Payments APIs.'

s.homepage = 'https://github.com/paysafegroup/paysafe_sdk_ios_payments_api.git'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ struct GatewayResponse: Decodable {
/// Client token
let clientToken: String?
/// JWT token
let jwtToken: String?
let sessionToken: String?
/// Processor
let processor: String?
}
57 changes: 29 additions & 28 deletions Sources/PaysafeCore/PublicAccess/PSAPIClient.swift
Original file line number Diff line number Diff line change
Expand Up @@ -148,39 +148,14 @@ public class PSAPIClient {
}
.eraseToAnyPublisher()
}

/// Refresh payment token.
///
/// - Parameters:
/// - paymentHandleToken: Payment handle token
/// - retryCount: Number of retry attempts, default as 3
/// - delayInSeconds: Delay between retries, default as 6 seconds
func refreshPaymentToken(using paymentHandleToken: String, and retryCount: Int = 3, and delayInSeconds: TimeInterval = 6) -> AnyPublisher<String, PSError> {
getPaymentHandleTokenStatus(
using: paymentHandleToken
)
.flatMap { [weak self] refreshPaymentHandleTokenResponse -> AnyPublisher<String, PSError> in
guard let self else {
return Fail(error: .genericAPIError(PaysafeSDK.shared.correlationId)).eraseToAnyPublisher()
}
return handleRefreshPaymentHandleTokenResponse(
using: refreshPaymentHandleTokenResponse,
and: retryCount,
and: delayInSeconds
)
}
.eraseToAnyPublisher()
}
}

// MARK:- Venmo
extension PSAPIClient {

/// Venmo CanceledRequest
///
/// - Parameters:
/// - jwtToken: JWT Token
///
///

func venmoCanceledRequest(jwtToken: String) -> AnyPublisher<Bool, PSError> {
let paymentMethodDeviceData = "{\"correlation_id\": \"" + networkingService.correlationId + "\"}"

Expand All @@ -192,7 +167,7 @@ extension PSAPIClient {
URLQueryItem(name: "payment_method_jwtToken", value: jwtToken),
URLQueryItem(name: "payment_method_deviceData", value: paymentMethodDeviceData),
URLQueryItem(name: "errorCode", value: "VENMO_CANCELED")]

urlComps.queryItems = queryItems
guard let sendPaymentNonceUrl = urlComps.url?.absoluteString else {
return Fail(error: .venmoFailedAuthorization(networkingService.correlationId)).eraseToAnyPublisher()
Expand All @@ -216,6 +191,32 @@ extension PSAPIClient {
.eraseToAnyPublisher()
}

/// Refresh payment token.
///
/// - Parameters:
/// - paymentHandleToken: Payment handle token
/// - retryCount: Number of retry attempts, default as 3
/// - delayInSeconds: Delay between retries, default as 6 seconds
func refreshPaymentToken(using paymentHandleToken: String, and retryCount: Int = 3, and delayInSeconds: TimeInterval = 6) -> AnyPublisher<String, PSError> {
getPaymentHandleTokenStatus(
using: paymentHandleToken
)
.flatMap { [weak self] refreshPaymentHandleTokenResponse -> AnyPublisher<String, PSError> in
guard let self else {
return Fail(error: .genericAPIError(PaysafeSDK.shared.correlationId)).eraseToAnyPublisher()
}
return handleRefreshPaymentHandleTokenResponse(
using: refreshPaymentHandleTokenResponse,
and: retryCount,
and: delayInSeconds
)
}
.eraseToAnyPublisher()
}
}

// MARK: - Venmo related methods
extension PSAPIClient {
/// update PaymentNonce
///
/// - Parameters:
Expand Down
13 changes: 7 additions & 6 deletions Sources/PaysafeCore/PublicAccess/Venmo/PSVenmoContext.swift
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,14 @@ public class PSVenmoContext {
private let currencyConverter = CurrencyConverter(
conversionRules: CurrencyConverter.defaultCurrenciesMap()
)
/// Cancellables set
private var cancellables = Set<AnyCancellable>()


/// The URL scheme to return to this app after switching to another app or opening a SFSafariViewController.
/// This URL scheme must be registered as a URL Type in the app's info.plist, and it must start with the app's bundle ID.
static var returnURLScheme: String = ""

/// Cancellables set
private var cancellables = Set<AnyCancellable>()

/// Initializes the PSVenmoContext.
///
/// - Parameters:
Expand Down Expand Up @@ -64,7 +65,7 @@ public class PSVenmoContext {
}
}
}

///
/// - Parameters:
/// - clientId: Venmo client id
Expand All @@ -84,11 +85,11 @@ public class PSVenmoContext {
case .initiated, .processing:
if paymentHandle.action == "REDIRECT" {
guard let clientToken = paymentHandle.gatewayResponse?.clientToken,
let jwtToken = paymentHandle.gatewayResponse?.jwtToken else {
let sessionToken = paymentHandle.gatewayResponse?.sessionToken else {
return Fail(error: .genericAPIError(PaysafeSDK.shared.correlationId)).eraseToAnyPublisher()
}
psVenmo.configureClient(clientId: clientToken)
return venmoFlow(using: jwtToken, amount: amount).map { result in
return venmoFlow(using: sessionToken, amount: amount).map { result in
if result {
return (paymentHandle, PSVenmoResult.success)
} else {
Expand Down
6 changes: 3 additions & 3 deletions Sources/PaysafeNetworking/PSNetworkingService.swift
Original file line number Diff line number Diff line change
Expand Up @@ -139,9 +139,9 @@ public class PSNetworkingService: NSObject, RequestPerforming {
throw APIError.invalidResponse
}
case 300...399:
if let value = true as? ResponseType {
return value
}
if let value = true as? ResponseType {
return value
}
throw APIError.invalidResponse
default: throw (try? JSONDecoder().decode(APIError.self, from: data)) ?? APIError.genericAPIError
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ extension PaymentResponse {
"timeToLiveSeconds": 899,
"gatewayResponse": {
"clientToken": "eyJ2ZXJzaW9uIjoyLCJhdXRob3JpemF0aW9uRmluZ2VycHJpbnQiOiJleUowZVhBaU9pSktWMVFpTENKaGJHY2lPaUpGVXpJMU5pSXNJbXRwWkNJNklqSXdNVGd3TkRJMk1UWXRjMkZ1WkdKdmVDSXNJbWx6Y3lJNkltaDBkSEJ6T2k4dllYQnBMbk5oYm1SaWIzZ3VZbkpoYVc1MGNtVmxaMkYwWlhkaGVTNWpiMjBpZlEuZXlKbGVIQWlPakUzTVRnek5UUXpNamdzSW1wMGFTSTZJamd5T0dJek9EVm1MVGsyWmpNdE5HUXhNeTFpWkRNMkxUUTRZVEUyTkRZeFpUVTJPQ0lzSW5OMVlpSTZJalJuZUhodWVITjRiVFV5Y0RaemEzQWlMQ0pwYzNNaU9pSm9kSFJ3Y3pvdkwyRndhUzV6WVc1a1ltOTRMbUp5WVdsdWRISmxaV2RoZEdWM1lYa3VZMjl0SWl3aWJXVnlZMmhoYm5RaU9uc2ljSFZpYkdsalgybGtJam9pTkdkNGVHNTRjM2h0TlRKd05uTnJjQ0lzSW5abGNtbG1lVjlqWVhKa1gySjVYMlJsWm1GMWJIUWlPbVpoYkhObGZTd2ljbWxuYUhSeklqcGJJbTFoYm1GblpWOTJZWFZzZENKZExDSnpZMjl3WlNJNld5SkNjbUZwYm5SeVpXVTZWbUYxYkhRaVhTd2liM0IwYVc5dWN5STZlMzE5LkNIMGRLa0VObXYyeHJ3ZFVXN3BwN3lDTU1EQk1XSENfTEkwNm9xUkVuWDZtS2tSd0tqeTJFYURwRTJTWEFUazl3cTRWenBwS1ZGSWF3ZjdDWVVCX1FRIiwiY29uZmlnVXJsIjoiaHR0cHM6Ly9hcGkuc2FuZGJveC5icmFpbnRyZWVnYXRld2F5LmNvbTo0NDMvbWVyY2hhbnRzLzRneHhueHN4bTUycDZza3AvY2xpZW50X2FwaS92MS9jb25maWd1cmF0aW9uIiwiZ3JhcGhRTCI6eyJ1cmwiOiJodHRwczovL3BheW1lbnRzLnNhbmRib3guYnJhaW50cmVlLWFwaS5jb20vZ3JhcGhxbCIsImRhdGUiOiIyMDE4LTA1LTA4IiwiZmVhdHVyZXMiOlsidG9rZW5pemVfY3JlZGl0X2NhcmRzIl19LCJjbGllbnRBcGlVcmwiOiJodHRwczovL2FwaS5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tOjQ0My9tZXJjaGFudHMvNGd4eG54c3htNTJwNnNrcC9jbGllbnRfYXBpIiwiZW52aXJvbm1lbnQiOiJzYW5kYm94IiwibWVyY2hhbnRJZCI6IjRneHhueHN4bTUycDZza3AiLCJhc3NldHNVcmwiOiJodHRwczovL2Fzc2V0cy5icmFpbnRyZWVnYXRld2F5LmNvbSIsImF1dGhVcmwiOiJodHRwczovL2F1dGgudmVubW8uc2FuZGJveC5icmFpbnRyZWVnYXRld2F5LmNvbSIsInZlbm1vIjoib2ZmIiwiY2hhbGxlbmdlcyI6W10sInRocmVlRFNlY3VyZUVuYWJsZWQiOnRydWUsImFuYWx5dGljcyI6eyJ1cmwiOiJodHRwczovL29yaWdpbi1hbmFseXRpY3Mtc2FuZC5zYW5kYm94LmJyYWludHJlZS1hcGkuY29tLzRneHhueHN4bTUycDZza3AifSwicGF5cGFsRW5hYmxlZCI6dHJ1ZSwicGF5cGFsIjp7ImJpbGxpbmdBZ3JlZW1lbnRzRW5hYmxlZCI6dHJ1ZSwiZW52aXJvbm1lbnROb05ldHdvcmsiOmZhbHNlLCJ1bnZldHRlZE1lcmNoYW50IjpmYWxzZSwiYWxsb3dIdHRwIjp0cnVlLCJkaXNwbGF5TmFtZSI6IlBheVNhZmUiLCJjbGllbnRJZCI6IkFXOHJnR3J5N0hucEhEUWtDd2FhOHF0RksxTUZnVUlia2EyR3N1Q2VYZExsZlNLOHNmcVFOZnd1M1ZBZ2VDNEFIZl94Y0xtVkhnVnJZdmJ5IiwiYmFzZVVybCI6Imh0dHBzOi8vYXNzZXRzLmJyYWludHJlZWdhdGV3YXkuY29tIiwiYXNzZXRzVXJsIjoiaHR0cHM6Ly9jaGVja291dC5wYXlwYWwuY29tIiwiZGlyZWN0QmFzZVVybCI6bnVsbCwiZW52aXJvbm1lbnQiOiJvZmZsaW5lIiwiYnJhaW50cmVlQ2xpZW50SWQiOiJtYXN0ZXJjbGllbnQzIiwibWVyY2hhbnRBY2NvdW50SWQiOiJwYXlzYWZlIiwiY3VycmVuY3lJc29Db2RlIjoiVVNEIn19",
"jwtToken": "eyJhbGciOiJIUzI1NiJ9.eyJwbXRoZGxJZCI6ImU3NTZhZTcyLTU0NGItNGIxOC1hMGY2LTcwYjIzNDQ3MGNlYiIsIm1yY2hudENuc21ySWQiOiJhQGIuY29tIiwiYWNjdElkIjoiMzE0ODFhYmMtMjRhYi00M2U1LWI2MmEtMjk2NTA2MTM3ZmVkIiwiZXhwIjoxNzE4Mjg4NjgxfQ.9jR7PLG_AOKZ6JIaAh5EErGGw7cRvy-kkdg-mcpZ7fQ",
"sessionToken": "eyJhbGciOiJIUzI1NiJ9.eyJwbXRoZGxJZCI6ImU3NTZhZTcyLTU0NGItNGIxOC1hMGY2LTcwYjIzNDQ3MGNlYiIsIm1yY2hudENuc21ySWQiOiJhQGIuY29tIiwiYWNjdElkIjoiMzE0ODFhYmMtMjRhYi00M2U1LWI2MmEtMjk2NTA2MTM3ZmVkIiwiZXhwIjoxNzE4Mjg4NjgxfQ.9jR7PLG_AOKZ6JIaAh5EErGGw7cRvy-kkdg-mcpZ7fQ",
"processor": "BRAINTREE"
},
"returnLinks": [
Expand Down
2 changes: 1 addition & 1 deletion version.properties
Original file line number Diff line number Diff line change
@@ -1 +1 @@
VERSION=0.0.20
VERSION=0.0.21

0 comments on commit 8ea0c7c

Please sign in to comment.