diff --git a/Sources/BraintreePayPal/BTPayPalApprovalURLParser.swift b/Sources/BraintreePayPal/BTPayPalApprovalURLParser.swift index 84b1e273d..41dd5c926 100644 --- a/Sources/BraintreePayPal/BTPayPalApprovalURLParser.swift +++ b/Sources/BraintreePayPal/BTPayPalApprovalURLParser.swift @@ -51,7 +51,7 @@ struct BTPayPalApprovalURLParser { url = payPalAppRedirectURL } else if let approvalURL = body["paymentResource"]["redirectUrl"].asURL() ?? body["agreementSetup"]["approvalUrl"].asURL() { - let launchPayPalApp = body["launchPayPalApp"].asBool() ?? false + let launchPayPalApp = body["paymentResource"]["launchPayPalApp"].asBool() ?? false redirectType = launchPayPalApp ? .payPalApp(url: approvalURL) : .webBrowser(url: approvalURL) url = approvalURL } else { diff --git a/Sources/BraintreePayPal/BTPayPalClient.swift b/Sources/BraintreePayPal/BTPayPalClient.swift index 2eb68ac56..2b07255f0 100644 --- a/Sources/BraintreePayPal/BTPayPalClient.swift +++ b/Sources/BraintreePayPal/BTPayPalClient.swift @@ -366,14 +366,14 @@ import BraintreeDataCollector switch approvalURL.redirectType { case .payPalApp(let url): - guard (self.isVaultRequest ? approvalURL.baToken : approvalURL.ecToken) != nil else { + guard let token = self.isVaultRequest ? approvalURL.baToken : approvalURL.ecToken else { self.notifyFailure( with: self.isVaultRequest ? BTPayPalError.missingBAToken : BTPayPalError.missingECToken, completion: completion ) return } - self.launchPayPalApp(with: url, completion: completion) + self.launchPayPalApp(with: url, token: token, completion: completion) case .webBrowser(let url): self.handlePayPalRequest(with: url, paymentType: request.paymentType, completion: completion) } @@ -383,6 +383,7 @@ import BraintreeDataCollector private func launchPayPalApp( with payPalAppRedirectURL: URL, + token: String? = nil, completion: @escaping (BTPayPalAccountNonce?, Error?) -> Void ) { apiClient.sendAnalyticsEvent( @@ -394,6 +395,7 @@ import BraintreeDataCollector var urlComponents = URLComponents(url: payPalAppRedirectURL, resolvingAgainstBaseURL: true) let additionalQueryItems: [URLQueryItem] = [ + URLQueryItem(name: isVaultRequest ? "ba_token" : "token", value: token), URLQueryItem(name: "source", value: "braintree_sdk"), URLQueryItem(name: "switch_initiated_time", value: String(Int(round(Date().timeIntervalSince1970 * 1000)))) ]