From d589b21fd97907cc48fbf1b666ff5cde99554f68 Mon Sep 17 00:00:00 2001 From: Tim Chow Date: Wed, 27 Mar 2024 13:11:40 -0500 Subject: [PATCH 01/10] Add has user location consent to Data Collector and PayPal Data Collector (#954) * Add hasUserLocationConsent param to the Data Collector and PayPal Data Collector modules * Add unit tests for overloaded methods defaulting to false * Add deprecation annotation and add feature branch snapshot trigger * Add test case when request object is passed in * Add workflow dispatch --- .github/workflows/release_snapshot.yml | 1 + .../braintreepayments/api/DataCollector.java | 67 +++++++++++++----- .../api/DataCollectorRequest.kt | 5 ++ .../api/DataCollectorUnitTest.java | 39 +++++++++- .../api/LocalPaymentClient.java | 3 +- .../api/LocalPaymentClientUnitTest.java | 13 ++-- .../api/PayPalInternalClient.java | 3 +- .../api/PayPalInternalClientUnitTest.java | 8 +-- PayPalDataCollector/build.gradle | 2 +- .../libs/android-magnessdk-5.4.0.jar | Bin 155849 -> 0 bytes .../libs/android-magnessdk-5.5.0-beta1.jar | Bin 0 -> 154761 bytes .../api/MagnesInternalClient.java | 5 +- .../api/PayPalDataCollector.java | 50 ++++++++++--- ...> PayPalDataCollectorInternalRequest.java} | 22 ++++-- .../api/PayPalDataCollectorRequest.kt | 5 ++ .../api/MagnesInternalClientUnitTest.java | 38 +++++++--- ...DataCollectorInternalRequestUnitTest.java} | 4 +- .../api/PayPalDataCollectorUnitTest.java | 34 +++++---- .../PayPalNativeCheckoutInternalClient.java | 3 +- ...lNativeCheckoutInternalClientUnitTest.java | 9 +-- 20 files changed, 231 insertions(+), 80 deletions(-) create mode 100644 BraintreeDataCollector/src/main/java/com/braintreepayments/api/DataCollectorRequest.kt delete mode 100644 PayPalDataCollector/libs/android-magnessdk-5.4.0.jar create mode 100644 PayPalDataCollector/libs/android-magnessdk-5.5.0-beta1.jar rename PayPalDataCollector/src/main/java/com/braintreepayments/api/{PayPalDataCollectorRequest.java => PayPalDataCollectorInternalRequest.java} (64%) create mode 100644 PayPalDataCollector/src/main/java/com/braintreepayments/api/PayPalDataCollectorRequest.kt rename PayPalDataCollector/src/test/java/com/braintreepayments/api/{PayPalDataCollectorRequestUnitTest.java => PayPalDataCollectorInternalRequestUnitTest.java} (73%) diff --git a/.github/workflows/release_snapshot.yml b/.github/workflows/release_snapshot.yml index 8f2d149ac5..6759c67207 100644 --- a/.github/workflows/release_snapshot.yml +++ b/.github/workflows/release_snapshot.yml @@ -4,6 +4,7 @@ on: push: branches: - 'main' + workflow_dispatch: env: SIGNING_KEY_FILE_PATH: /home/runner/secretKey.gpg jobs: diff --git a/BraintreeDataCollector/src/main/java/com/braintreepayments/api/DataCollector.java b/BraintreeDataCollector/src/main/java/com/braintreepayments/api/DataCollector.java index 99f1fed613..b298df46fb 100644 --- a/BraintreeDataCollector/src/main/java/com/braintreepayments/api/DataCollector.java +++ b/BraintreeDataCollector/src/main/java/com/braintreepayments/api/DataCollector.java @@ -34,27 +34,32 @@ public DataCollector(@NonNull BraintreeClient braintreeClient) { * Collect device information for fraud identification purposes. * * @param context Android Context - * @param callback {@link DataCollectorCallback} + * @param callback {@link DataCollectorCallback + * @deprecated Passing in {@link DataCollectorRequest} is required. Use + * {@link PayPalDataCollector#collectDeviceData(Context, DataCollectorRequest, PayPalDataCollectorCallback)} instead. */ - public void collectDeviceData(@NonNull Context context, @NonNull DataCollectorCallback callback) { - collectDeviceData(context, null, callback); + @Deprecated() + public void collectDeviceData( + @NonNull Context context, + @NonNull DataCollectorCallback callback + ) { + DataCollectorRequest request = new DataCollectorRequest(false); + collectDeviceData(context, request, callback); } /** - * Collects device data based on your merchant configuration. - *

- * We recommend that you call this method as early as possible, e.g. at app launch. If that's too early, - * call it at the beginning of customer checkout. - *

- * Use the return value on your server, e.g. with `Transaction.sale`. + * Collect device information for fraud identification purposes. * - * @param context Android Context - * @param merchantId Optional - Custom Kount merchant id. Leave blank to use the default. - * @param callback {@link DataCollectorCallback} - * @deprecated Kount is officially deprecated, use {@link PayPalDataCollector#collectDeviceData(Context, String, PayPalDataCollectorCallback)} instead. + * @param context Android Context + * @param dataCollectorRequest The {@link DataCollectorRequest} containing the configuration for + * the data collection request + * @param callback {@link DataCollectorCallback} */ - @Deprecated - public void collectDeviceData(@NonNull final Context context, @Nullable final String merchantId, @NonNull final DataCollectorCallback callback) { + public void collectDeviceData( + @NonNull Context context, + @NonNull DataCollectorRequest dataCollectorRequest, + @NonNull DataCollectorCallback callback + ) { final Context appContext = context.getApplicationContext(); braintreeClient.getConfiguration(new ConfigurationCallback() { @Override @@ -62,7 +67,7 @@ public void onResult(@Nullable Configuration configuration, @Nullable Exception if (configuration != null) { final JSONObject deviceData = new JSONObject(); try { - String clientMetadataId = getPayPalClientMetadataId(appContext, configuration); + String clientMetadataId = getPayPalClientMetadataId(appContext, configuration, dataCollectorRequest); if (!TextUtils.isEmpty(clientMetadataId)) { deviceData.put(CORRELATION_ID_KEY, clientMetadataId); } @@ -76,6 +81,28 @@ public void onResult(@Nullable Configuration configuration, @Nullable Exception }); } + /** + * Collects device data based on your merchant configuration. + *

+ * We recommend that you call this method as early as possible, e.g. at app launch. If that's too early, + * call it at the beginning of customer checkout. + *

+ * Use the return value on your server, e.g. with `Transaction.sale`. + * + * @param context Android Context + * @param merchantId Optional - Custom Kount merchant id. Leave blank to use the default. + * @param callback {@link DataCollectorCallback} + * @deprecated Kount is officially deprecated, use {@link PayPalDataCollector#collectDeviceData(Context, String, PayPalDataCollectorCallback)} instead. + */ + @Deprecated + public void collectDeviceData( + @NonNull final Context context, + @Nullable final String merchantId, + @NonNull final DataCollectorCallback callback + ) { + collectDeviceData(context, callback); + } + /** * Collect device information for fraud identification purposes from PayPal only. * @@ -83,9 +110,13 @@ public void onResult(@Nullable Configuration configuration, @Nullable Exception * @param configuration the merchant configuration * @return The client metadata id associated with the collected data. */ - private String getPayPalClientMetadataId(Context context, Configuration configuration) { + private String getPayPalClientMetadataId( + Context context, + Configuration configuration, + DataCollectorRequest dataCollectorRequest + ) { try { - return payPalDataCollector.getClientMetadataId(context, configuration); + return payPalDataCollector.getClientMetadataId(context, configuration, dataCollectorRequest.getHasUserLocationConsent()); } catch (NoClassDefFoundError ignored) { } return ""; diff --git a/BraintreeDataCollector/src/main/java/com/braintreepayments/api/DataCollectorRequest.kt b/BraintreeDataCollector/src/main/java/com/braintreepayments/api/DataCollectorRequest.kt new file mode 100644 index 0000000000..e7886135b7 --- /dev/null +++ b/BraintreeDataCollector/src/main/java/com/braintreepayments/api/DataCollectorRequest.kt @@ -0,0 +1,5 @@ +package com.braintreepayments.api + +data class DataCollectorRequest( + val hasUserLocationConsent: Boolean +) diff --git a/BraintreeDataCollector/src/test/java/com/braintreepayments/api/DataCollectorUnitTest.java b/BraintreeDataCollector/src/test/java/com/braintreepayments/api/DataCollectorUnitTest.java index a37c4c2421..a8018dfe59 100644 --- a/BraintreeDataCollector/src/test/java/com/braintreepayments/api/DataCollectorUnitTest.java +++ b/BraintreeDataCollector/src/test/java/com/braintreepayments/api/DataCollectorUnitTest.java @@ -1,6 +1,7 @@ package com.braintreepayments.api; import static junit.framework.Assert.assertEquals; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.isNull; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; @@ -57,7 +58,7 @@ public void collectDeviceData_forwardsConfigurationFetchErrors() { @Test public void collectDeviceData_getsDeviceDataJSONWithCorrelationIdFromPayPal() throws Exception { - when(payPalDataCollector.getClientMetadataId(context, configuration)).thenReturn("sample_correlation_id"); + when(payPalDataCollector.getClientMetadataId(context, configuration, false)).thenReturn("sample_correlation_id"); BraintreeClient braintreeClient = new MockBraintreeClientBuilder() .configuration(configuration) @@ -76,4 +77,40 @@ public void collectDeviceData_getsDeviceDataJSONWithCorrelationIdFromPayPal() th JSONObject json = new JSONObject(deviceData); assertEquals("sample_correlation_id", json.getString("correlation_id")); } + + @Test + public void collectDeviceData_without_DataCollectorRequest_sets_hasUserLocationConsent_to_false() { + BraintreeClient braintreeClient = new MockBraintreeClientBuilder() + .configuration(configuration) + .build(); + + DataCollectorCallback callback = mock(DataCollectorCallback.class); + DataCollector sut = new DataCollector(braintreeClient, payPalDataCollector); + + sut.collectDeviceData(context, callback); + + ArgumentCaptor deviceDataCaptor = ArgumentCaptor.forClass(String.class); + verify(callback).onResult(deviceDataCaptor.capture(), (Exception) isNull()); + + verify(payPalDataCollector).getClientMetadataId(context, configuration, false); + } + + @Test + public void collectDeviceData_with_DataCollectorRequest_sets_correct_values_for_getClientMetadataId() { + BraintreeClient braintreeClient = new MockBraintreeClientBuilder() + .configuration(configuration) + .build(); + + DataCollectorCallback callback = mock(DataCollectorCallback.class); + DataCollector sut = new DataCollector(braintreeClient, payPalDataCollector); + + DataCollectorRequest dataCollectorRequest = new DataCollectorRequest(true); + + sut.collectDeviceData(context, dataCollectorRequest, callback); + + ArgumentCaptor deviceDataCaptor = ArgumentCaptor.forClass(String.class); + verify(callback).onResult(deviceDataCaptor.capture(), (Exception) isNull()); + + verify(payPalDataCollector).getClientMetadataId(context, configuration, true); + } } \ No newline at end of file diff --git a/LocalPayment/src/main/java/com/braintreepayments/api/LocalPaymentClient.java b/LocalPayment/src/main/java/com/braintreepayments/api/LocalPaymentClient.java index 1ef42565a9..9feadabad1 100644 --- a/LocalPayment/src/main/java/com/braintreepayments/api/LocalPaymentClient.java +++ b/LocalPayment/src/main/java/com/braintreepayments/api/LocalPaymentClient.java @@ -323,7 +323,8 @@ public void onBrowserSwitchResult(@NonNull final Context context, @NonNull Brows @Override public void onResult(@Nullable Configuration configuration, @Nullable Exception error) { if (configuration != null) { - localPaymentApi.tokenize(merchantAccountId, responseString, payPalDataCollector.getClientMetadataId(context, configuration), new LocalPaymentBrowserSwitchResultCallback() { + // TODO: pass in hasUserLocationConsent value + localPaymentApi.tokenize(merchantAccountId, responseString, payPalDataCollector.getClientMetadataId(context, configuration, false), new LocalPaymentBrowserSwitchResultCallback() { @Override public void onResult(@Nullable LocalPaymentNonce localPaymentNonce, @Nullable Exception error) { if (localPaymentNonce != null) { diff --git a/LocalPayment/src/test/java/com/braintreepayments/api/LocalPaymentClientUnitTest.java b/LocalPayment/src/test/java/com/braintreepayments/api/LocalPaymentClientUnitTest.java index bab6c4cd8c..67b1f1e90d 100644 --- a/LocalPayment/src/test/java/com/braintreepayments/api/LocalPaymentClientUnitTest.java +++ b/LocalPayment/src/test/java/com/braintreepayments/api/LocalPaymentClientUnitTest.java @@ -7,6 +7,7 @@ import static junit.framework.TestCase.assertNull; import static junit.framework.TestCase.assertSame; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.isNull; import static org.mockito.ArgumentMatchers.same; @@ -142,7 +143,7 @@ public void setListener_whenPendingBrowserSwitchResultExists_deliversResultToLis .integration("sample-integration-type") .build(); when(braintreeClient.getApplicationContext()).thenReturn(activity); - when(payPalDataCollector.getClientMetadataId(activity, payPalEnabledConfig)).thenReturn("sample-correlation-id"); + when(payPalDataCollector.getClientMetadataId(activity, payPalEnabledConfig, false)).thenReturn("sample-correlation-id"); LocalPaymentClient sut = new LocalPaymentClient(activity, lifecycle, braintreeClient, payPalDataCollector, localPaymentApi); sut.pendingBrowserSwitchResult = browserSwitchResult; @@ -528,7 +529,7 @@ public void onBrowserSwitchResult_whenPostFailure_notifiesListenerOfErrorAlongWi .tokenizeError(postError) .build(); - when(payPalDataCollector.getClientMetadataId(activity, payPalEnabledConfig)).thenReturn("sample-correlation-id"); + when(payPalDataCollector.getClientMetadataId(activity, payPalEnabledConfig, false)).thenReturn("sample-correlation-id"); LocalPaymentClient sut = new LocalPaymentClient(activity, lifecycle, braintreeClient, payPalDataCollector, localPaymentApi); sut.setListener(listener); @@ -555,7 +556,7 @@ public void onBrowserSwitchResult_whenResultOKAndSuccessful_tokenizesWithLocalPa .sessionId("sample-session-id") .integration("sample-integration-type") .build(); - when(payPalDataCollector.getClientMetadataId(activity, payPalEnabledConfig)).thenReturn("sample-correlation-id"); + when(payPalDataCollector.getClientMetadataId(activity, payPalEnabledConfig, false)).thenReturn("sample-correlation-id"); LocalPaymentClient sut = new LocalPaymentClient(activity, lifecycle, braintreeClient, payPalDataCollector, localPaymentApi); sut.setListener(listener); @@ -581,7 +582,7 @@ public void onBrowserSwitchResult_whenResultOKAndTokenizationSucceeds_sendsResul .integration("custom") .sessionId("session-id") .build(); - when(payPalDataCollector.getClientMetadataId(any(Context.class), same(payPalEnabledConfig))).thenReturn("client-metadata-id"); + when(payPalDataCollector.getClientMetadataId(any(Context.class), same(payPalEnabledConfig), anyBoolean())).thenReturn("client-metadata-id"); LocalPaymentNonce successNonce = LocalPaymentNonce.fromJSON(new JSONObject(Fixtures.PAYMENT_METHODS_LOCAL_PAYMENT_RESPONSE)); LocalPaymentApi localPaymentApi = new MockLocalPaymentApiBuilder() @@ -616,7 +617,7 @@ public void onBrowserSwitchResult_whenResultOKAndTokenizationSuccess_sendsAnalyt .tokenizeSuccess(LocalPaymentNonce.fromJSON(new JSONObject(Fixtures.PAYMENT_METHODS_LOCAL_PAYMENT_RESPONSE))) .build(); - when(payPalDataCollector.getClientMetadataId(any(Context.class), same(payPalEnabledConfig))).thenReturn("client-metadata-id"); + when(payPalDataCollector.getClientMetadataId(any(Context.class), same(payPalEnabledConfig), anyBoolean())).thenReturn("client-metadata-id"); LocalPaymentClient sut = new LocalPaymentClient(activity, lifecycle, braintreeClient, payPalDataCollector, localPaymentApi); sut.setListener(listener); @@ -644,7 +645,7 @@ public void onBrowserSwitchResult_whenResultOK_onConfigurationError_returnsError .sessionId("sample-session-id") .integration("sample-integration-type") .build(); - when(payPalDataCollector.getClientMetadataId(activity, payPalEnabledConfig)).thenReturn("sample-correlation-id"); + when(payPalDataCollector.getClientMetadataId(activity, payPalEnabledConfig, false)).thenReturn("sample-correlation-id"); LocalPaymentClient sut = new LocalPaymentClient(activity, lifecycle, braintreeClient, payPalDataCollector, localPaymentApi); sut.setListener(listener); diff --git a/PayPal/src/main/java/com/braintreepayments/api/PayPalInternalClient.java b/PayPal/src/main/java/com/braintreepayments/api/PayPalInternalClient.java index 11bcda9a85..4bb21c2613 100644 --- a/PayPal/src/main/java/com/braintreepayments/api/PayPalInternalClient.java +++ b/PayPal/src/main/java/com/braintreepayments/api/PayPalInternalClient.java @@ -71,8 +71,9 @@ public void onResult(String responseBody, Exception httpError) { String pairingIdKey = isBillingAgreement ? "ba_token" : "token"; String pairingId = parsedRedirectUri.getQueryParameter(pairingIdKey); + // TODO: pass in hasUserLocationConsent value String clientMetadataId = payPalRequest.getRiskCorrelationId() != null - ? payPalRequest.getRiskCorrelationId() : payPalDataCollector.getClientMetadataId(context, configuration); + ? payPalRequest.getRiskCorrelationId() : payPalDataCollector.getClientMetadataId(context, configuration, false); if (pairingId != null) { payPalResponse diff --git a/PayPal/src/test/java/com/braintreepayments/api/PayPalInternalClientUnitTest.java b/PayPal/src/test/java/com/braintreepayments/api/PayPalInternalClientUnitTest.java index 82c2680fd3..19fcec416c 100644 --- a/PayPal/src/test/java/com/braintreepayments/api/PayPalInternalClientUnitTest.java +++ b/PayPal/src/test/java/com/braintreepayments/api/PayPalInternalClientUnitTest.java @@ -409,7 +409,7 @@ public void sendRequest_withPayPalCheckoutRequest_omitsEmptyLineItems() throws J @Test public void sendRequest_whenRiskCorrelationIdNotNull_setsClientMetadataIdToRiskCorrelationId() { - when(payPalDataCollector.getClientMetadataId(context, configuration)).thenReturn("sample-client-metadata-id"); + when(payPalDataCollector.getClientMetadataId(context, configuration, false)).thenReturn("sample-client-metadata-id"); BraintreeClient braintreeClient = new MockBraintreeClientBuilder() .configuration(configuration) @@ -433,7 +433,7 @@ public void sendRequest_whenRiskCorrelationIdNotNull_setsClientMetadataIdToRiskC @Test public void sendRequest_whenRiskCorrelationIdNull_setsClientMetadataIdFromPayPalDataCollector() { - when(payPalDataCollector.getClientMetadataId(context, configuration)).thenReturn("sample-client-metadata-id"); + when(payPalDataCollector.getClientMetadataId(context, configuration, false)).thenReturn("sample-client-metadata-id"); BraintreeClient braintreeClient = new MockBraintreeClientBuilder() .configuration(configuration) @@ -481,7 +481,7 @@ public void sendRequest_withPayPalCheckoutRequest_whenRequestBillingAgreementFal @Test public void sendRequest_withPayPalVaultRequest_callsBackPayPalResponseOnSuccess() { - when(payPalDataCollector.getClientMetadataId(context, configuration)).thenReturn("sample-client-metadata-id"); + when(payPalDataCollector.getClientMetadataId(context, configuration, false)).thenReturn("sample-client-metadata-id"); BraintreeClient braintreeClient = new MockBraintreeClientBuilder() .configuration(configuration) @@ -512,7 +512,7 @@ public void sendRequest_withPayPalVaultRequest_callsBackPayPalResponseOnSuccess( @Test public void sendRequest_withPayPalCheckoutRequest_callsBackPayPalResponseOnSuccess() { - when(payPalDataCollector.getClientMetadataId(context, configuration)).thenReturn("sample-client-metadata-id"); + when(payPalDataCollector.getClientMetadataId(context, configuration, false)).thenReturn("sample-client-metadata-id"); BraintreeClient braintreeClient = new MockBraintreeClientBuilder() .configuration(configuration) diff --git a/PayPalDataCollector/build.gradle b/PayPalDataCollector/build.gradle index e1904090be..91542a021a 100644 --- a/PayPalDataCollector/build.gradle +++ b/PayPalDataCollector/build.gradle @@ -36,7 +36,7 @@ android { } dependencies { - implementation files('libs/android-magnessdk-5.4.0.jar') + implementation files('libs/android-magnessdk-5.5.0-beta1.jar') implementation deps.annotation api project(':BraintreeCore') diff --git a/PayPalDataCollector/libs/android-magnessdk-5.4.0.jar b/PayPalDataCollector/libs/android-magnessdk-5.4.0.jar deleted file mode 100644 index ea1a666e383f41c4d34ac1359c72c4a411a0c5f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 155849 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%0A6dsM1f~dN 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≺m@uqKF3#8i~pV#+ZZciVI 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�Y@-7|bW=gBVzq7q7KU0G0n8q&>xssd&;p}me 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 a|MnObm@q&=sRKVsBv4SQd_c<$^?v|6fW(LZ diff --git a/PayPalDataCollector/libs/android-magnessdk-5.5.0-beta1.jar b/PayPalDataCollector/libs/android-magnessdk-5.5.0-beta1.jar new file mode 100644 index 0000000000000000000000000000000000000000..1cc848f93936fe9757b31d1de542923d44f2e31d GIT binary patch literal 154761 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≪J$~F{8$OQ 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�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 QfL}XAz%4{BU?zh2A2=6#`v3p{ literal 0 HcmV?d00001 diff --git a/PayPalDataCollector/src/main/java/com/braintreepayments/api/MagnesInternalClient.java b/PayPalDataCollector/src/main/java/com/braintreepayments/api/MagnesInternalClient.java index c60085be10..4d0d96ed95 100644 --- a/PayPalDataCollector/src/main/java/com/braintreepayments/api/MagnesInternalClient.java +++ b/PayPalDataCollector/src/main/java/com/braintreepayments/api/MagnesInternalClient.java @@ -27,7 +27,7 @@ class MagnesInternalClient { } @MainThread - String getClientMetadataId(Context context, Configuration configuration, PayPalDataCollectorRequest request) { + String getClientMetadataId(Context context, Configuration configuration, PayPalDataCollectorInternalRequest request) { if (context == null) { return ""; } @@ -42,7 +42,8 @@ String getClientMetadataId(Context context, Configuration configuration, PayPalD .setMagnesSource(MagnesSource.BRAINTREE) .disableBeacon(request.isDisableBeacon()) .setMagnesEnvironment(magnesEnvironment) - .setAppGuid(request.getApplicationGuid()); + .setAppGuid(request.getApplicationGuid()) + .setHasUserLocationConsent(request.getHasUserLocationConsent()); magnesSDK.setUp(magnesSettingsBuilder.build()); diff --git a/PayPalDataCollector/src/main/java/com/braintreepayments/api/PayPalDataCollector.java b/PayPalDataCollector/src/main/java/com/braintreepayments/api/PayPalDataCollector.java index 2c84ce0b53..96880870ed 100644 --- a/PayPalDataCollector/src/main/java/com/braintreepayments/api/PayPalDataCollector.java +++ b/PayPalDataCollector/src/main/java/com/braintreepayments/api/PayPalDataCollector.java @@ -49,8 +49,12 @@ String getPayPalInstallationGUID(Context context) { * @param configuration The merchant configuration */ @MainThread - String getClientMetadataId(Context context, Configuration configuration) { - PayPalDataCollectorRequest request = new PayPalDataCollectorRequest() + String getClientMetadataId( + Context context, + Configuration configuration, + boolean hasUserLocationConsent + ) { + PayPalDataCollectorInternalRequest request = new PayPalDataCollectorInternalRequest(hasUserLocationConsent) .setApplicationGuid(getPayPalInstallationGUID(context)); return getClientMetadataId(context, request, configuration); @@ -69,7 +73,7 @@ String getClientMetadataId(Context context, Configuration configuration) { * @param configuration the merchant configuration */ @MainThread - String getClientMetadataId(Context context, PayPalDataCollectorRequest request, Configuration configuration) { + String getClientMetadataId(Context context, PayPalDataCollectorInternalRequest request, Configuration configuration) { return magnesInternalClient.getClientMetadataId(context, configuration, request); } @@ -84,8 +88,20 @@ String getClientMetadataId(Context context, PayPalDataCollectorRequest request, * @param context Android Context * @param callback {@link PayPalDataCollectorCallback} */ - public void collectDeviceData(@NonNull final Context context, @NonNull final PayPalDataCollectorCallback callback) { - collectDeviceData(context, null, callback); + public void collectDeviceData( + @NonNull final Context context, + @NonNull final PayPalDataCollectorCallback callback + ) { + PayPalDataCollectorRequest request = new PayPalDataCollectorRequest(false); + collectDeviceData(context, request, null, callback); + } + + public void collectDeviceData( + @NonNull final Context context, + @NonNull final PayPalDataCollectorRequest payPalDataCollectorRequest, + @NonNull final PayPalDataCollectorCallback callback + ) { + collectDeviceData(context, payPalDataCollectorRequest, null, callback); } /** @@ -100,21 +116,37 @@ public void collectDeviceData(@NonNull final Context context, @NonNull final Pay * @param riskCorrelationId Optional client metadata id * @param callback {@link PayPalDataCollectorCallback} */ - public void collectDeviceData(@NonNull final Context context, @Nullable final String riskCorrelationId, @NonNull final PayPalDataCollectorCallback callback) { + public void collectDeviceData( + @NonNull final Context context, + @Nullable final String riskCorrelationId, + @NonNull final PayPalDataCollectorCallback callback + ) { + PayPalDataCollectorRequest request = new PayPalDataCollectorRequest(false); + collectDeviceData(context, request, riskCorrelationId, callback); + } + + public void collectDeviceData( + @NonNull final Context context, + @NonNull final PayPalDataCollectorRequest payPalDataCollectorRequest, + @Nullable final String riskCorrelationId, + @NonNull final PayPalDataCollectorCallback callback + ) { braintreeClient.getConfiguration(new ConfigurationCallback() { @Override public void onResult(@Nullable Configuration configuration, @Nullable Exception error) { if (configuration != null) { final JSONObject deviceData = new JSONObject(); try { - PayPalDataCollectorRequest request = new PayPalDataCollectorRequest() - .setApplicationGuid(getPayPalInstallationGUID(context)); + PayPalDataCollectorInternalRequest request = new PayPalDataCollectorInternalRequest( + payPalDataCollectorRequest.getHasUserLocationConsent() + ).setApplicationGuid(getPayPalInstallationGUID(context)); + if (riskCorrelationId != null) { request.setRiskCorrelationId(riskCorrelationId); } String correlationId = - magnesInternalClient.getClientMetadataId(context, configuration, request); + magnesInternalClient.getClientMetadataId(context, configuration, request); if (!TextUtils.isEmpty(correlationId)) { deviceData.put(CORRELATION_ID_KEY, correlationId); } diff --git a/PayPalDataCollector/src/main/java/com/braintreepayments/api/PayPalDataCollectorRequest.java b/PayPalDataCollector/src/main/java/com/braintreepayments/api/PayPalDataCollectorInternalRequest.java similarity index 64% rename from PayPalDataCollector/src/main/java/com/braintreepayments/api/PayPalDataCollectorRequest.java rename to PayPalDataCollector/src/main/java/com/braintreepayments/api/PayPalDataCollectorInternalRequest.java index e7317c2785..b381483896 100644 --- a/PayPalDataCollector/src/main/java/com/braintreepayments/api/PayPalDataCollectorRequest.java +++ b/PayPalDataCollector/src/main/java/com/braintreepayments/api/PayPalDataCollectorInternalRequest.java @@ -7,17 +7,25 @@ /** * Used to configuration the PayPalDataCollector request */ -class PayPalDataCollectorRequest { +class PayPalDataCollectorInternalRequest { private String applicationGuid; private String clientMetadataId; private boolean disableBeacon; + final private boolean hasUserLocationConsent; private HashMap additionalData; + /** + * @param hasUserLocationConsent Indicates if the beacon feature should be disabled. + */ + PayPalDataCollectorInternalRequest(boolean hasUserLocationConsent) { + this.hasUserLocationConsent = hasUserLocationConsent; + } + /** * @param additionalData Additional data that should be associated with the data collection. */ - PayPalDataCollectorRequest setAdditionalData(HashMap additionalData) { + PayPalDataCollectorInternalRequest setAdditionalData(HashMap additionalData) { this.additionalData = additionalData; return this; @@ -27,7 +35,7 @@ PayPalDataCollectorRequest setAdditionalData(HashMap additionalD * @param applicationGuid The application global unique identifier. * There is a 36 character length limit on this value. */ - PayPalDataCollectorRequest setApplicationGuid(String applicationGuid) { + PayPalDataCollectorInternalRequest setApplicationGuid(String applicationGuid) { this.applicationGuid = applicationGuid; return this; @@ -36,7 +44,7 @@ PayPalDataCollectorRequest setApplicationGuid(String applicationGuid) { /** * @param riskCorrelationId The desired pairing ID, trimmed to 32 characters. */ - PayPalDataCollectorRequest setRiskCorrelationId(@NonNull String riskCorrelationId) { + PayPalDataCollectorInternalRequest setRiskCorrelationId(@NonNull String riskCorrelationId) { this.clientMetadataId = riskCorrelationId.substring(0, Math.min(riskCorrelationId.length(), 32)); return this; @@ -45,7 +53,7 @@ PayPalDataCollectorRequest setRiskCorrelationId(@NonNull String riskCorrelationI /** * @param disableBeacon Indicates if the beacon feature should be disabled. */ - PayPalDataCollectorRequest setDisableBeacon(boolean disableBeacon) { + PayPalDataCollectorInternalRequest setDisableBeacon(boolean disableBeacon) { this.disableBeacon = disableBeacon; return this; @@ -63,6 +71,10 @@ String getClientMetadataId() { return clientMetadataId; } + public boolean getHasUserLocationConsent() { + return hasUserLocationConsent; + } + boolean isDisableBeacon() { return disableBeacon; } diff --git a/PayPalDataCollector/src/main/java/com/braintreepayments/api/PayPalDataCollectorRequest.kt b/PayPalDataCollector/src/main/java/com/braintreepayments/api/PayPalDataCollectorRequest.kt new file mode 100644 index 0000000000..3bc02aaf60 --- /dev/null +++ b/PayPalDataCollector/src/main/java/com/braintreepayments/api/PayPalDataCollectorRequest.kt @@ -0,0 +1,5 @@ +package com.braintreepayments.api + +data class PayPalDataCollectorRequest( + val hasUserLocationConsent: Boolean +) diff --git a/PayPalDataCollector/src/test/java/com/braintreepayments/api/MagnesInternalClientUnitTest.java b/PayPalDataCollector/src/test/java/com/braintreepayments/api/MagnesInternalClientUnitTest.java index 257aed421a..b0057f3fda 100644 --- a/PayPalDataCollector/src/test/java/com/braintreepayments/api/MagnesInternalClientUnitTest.java +++ b/PayPalDataCollector/src/test/java/com/braintreepayments/api/MagnesInternalClientUnitTest.java @@ -39,7 +39,9 @@ public class MagnesInternalClientUnitTest { private MagnesResult magnesResult; private HashMap additionalData; - private PayPalDataCollectorRequest payPalDataCollectorRequest; + private PayPalDataCollectorInternalRequest payPalDataCollectorInternalRequest; + + private boolean hasUserLocationConsent = true; @Before public void beforeEach() { @@ -60,7 +62,7 @@ public void beforeEach() { additionalData = new HashMap<>(); - payPalDataCollectorRequest = new PayPalDataCollectorRequest() + payPalDataCollectorInternalRequest = new PayPalDataCollectorInternalRequest(hasUserLocationConsent) .setRiskCorrelationId("sample-client-metadata-id") .setDisableBeacon(true) .setAdditionalData(additionalData) @@ -70,7 +72,7 @@ public void beforeEach() { @Test public void getClientMetaDataId_returnsEmptyStringWhenContextIsNull() { MagnesInternalClient sut = new MagnesInternalClient(magnesSDK); - String result = sut.getClientMetadataId(null, sandboxConfiguration, payPalDataCollectorRequest); + String result = sut.getClientMetadataId(null, sandboxConfiguration, payPalDataCollectorInternalRequest); assertEquals("", result); } @@ -79,7 +81,7 @@ public void getClientMetaDataId_configuresMagnesSourceAsBraintree() throws Inval when(magnesSDK.collectAndSubmit(context, "sample-client-metadata-id", additionalData)).thenReturn(magnesResult); MagnesInternalClient sut = new MagnesInternalClient(magnesSDK); - sut.getClientMetadataId(context, sandboxConfiguration, payPalDataCollectorRequest); + sut.getClientMetadataId(context, sandboxConfiguration, payPalDataCollectorInternalRequest); ArgumentCaptor captor = ArgumentCaptor.forClass(MagnesSettings.class); verify(magnesSDK).setUp(captor.capture()); @@ -93,7 +95,7 @@ public void getClientMetaDataId_whenBraintreeEnvironmentIsSandbox_configuresMagn when(magnesSDK.collectAndSubmit(context, "sample-client-metadata-id", additionalData)).thenReturn(magnesResult); MagnesInternalClient sut = new MagnesInternalClient(magnesSDK); - sut.getClientMetadataId(context, sandboxConfiguration, payPalDataCollectorRequest); + sut.getClientMetadataId(context, sandboxConfiguration, payPalDataCollectorInternalRequest); ArgumentCaptor captor = ArgumentCaptor.forClass(MagnesSettings.class); verify(magnesSDK).setUp(captor.capture()); @@ -107,7 +109,7 @@ public void getClientMetaDataId_whenBraintreeEnvironmentIsProd_configuresMagnesE when(magnesSDK.collectAndSubmit(context, "sample-client-metadata-id", additionalData)).thenReturn(magnesResult); MagnesInternalClient sut = new MagnesInternalClient(magnesSDK); - sut.getClientMetadataId(context, prodConfiguration, payPalDataCollectorRequest); + sut.getClientMetadataId(context, prodConfiguration, payPalDataCollectorInternalRequest); ArgumentCaptor captor = ArgumentCaptor.forClass(MagnesSettings.class); verify(magnesSDK).setUp(captor.capture()); @@ -121,7 +123,7 @@ public void getClientMetaDataId_forwardsDisableBeaconOptionToMagnes() throws Inv when(magnesSDK.collectAndSubmit(context, "sample-client-metadata-id", additionalData)).thenReturn(magnesResult); MagnesInternalClient sut = new MagnesInternalClient(magnesSDK); - sut.getClientMetadataId(context, prodConfiguration, payPalDataCollectorRequest); + sut.getClientMetadataId(context, prodConfiguration, payPalDataCollectorInternalRequest); ArgumentCaptor captor = ArgumentCaptor.forClass(MagnesSettings.class); verify(magnesSDK).setUp(captor.capture()); @@ -135,7 +137,7 @@ public void getClientMetaDataId_forwardsApplicationGUIDOptionToMagnes() throws I when(magnesSDK.collectAndSubmit(context, "sample-client-metadata-id", additionalData)).thenReturn(magnesResult); MagnesInternalClient sut = new MagnesInternalClient(magnesSDK); - sut.getClientMetadataId(context, prodConfiguration, payPalDataCollectorRequest); + sut.getClientMetadataId(context, prodConfiguration, payPalDataCollectorInternalRequest); ArgumentCaptor captor = ArgumentCaptor.forClass(MagnesSettings.class); verify(magnesSDK).setUp(captor.capture()); @@ -144,9 +146,23 @@ public void getClientMetaDataId_forwardsApplicationGUIDOptionToMagnes() throws I assertEquals(validApplicationGUID, magnesSettings.getAppGuid()); } + @Test + public void getClientMetaDataId_setsHasUserLocationConsent() throws InvalidInputException { + when(magnesSDK.collectAndSubmit(context, "sample-client-metadata-id", additionalData)).thenReturn(magnesResult); + + MagnesInternalClient sut = new MagnesInternalClient(magnesSDK); + sut.getClientMetadataId(context, prodConfiguration, payPalDataCollectorInternalRequest); + + ArgumentCaptor captor = ArgumentCaptor.forClass(MagnesSettings.class); + verify(magnesSDK).setUp(captor.capture()); + + MagnesSettings magnesSettings = captor.getValue(); + assertEquals(hasUserLocationConsent, magnesSettings.hasUserLocationConsent()); + } + @Test public void getClientMetaDataId_returnsAnEmptyStringWhenApplicationGUIDIsInvalid() { - PayPalDataCollectorRequest requestWithInvalidGUID = new PayPalDataCollectorRequest() + PayPalDataCollectorInternalRequest requestWithInvalidGUID = new PayPalDataCollectorInternalRequest(true) .setApplicationGuid("invalid guid"); MagnesInternalClient sut = new MagnesInternalClient(magnesSDK); @@ -160,7 +176,7 @@ public void getClientMetaDataId_forwardsClientMetadataIdFromMagnesStart() throws when(magnesSDK.collectAndSubmit(context, "sample-client-metadata-id", additionalData)).thenReturn(magnesResult); MagnesInternalClient sut = new MagnesInternalClient(magnesSDK); - String result = sut.getClientMetadataId(context, prodConfiguration, payPalDataCollectorRequest); + String result = sut.getClientMetadataId(context, prodConfiguration, payPalDataCollectorInternalRequest); assertEquals("magnes-client-metadata-id", result); } @@ -171,7 +187,7 @@ public void getClientMetaDataId_returnsAnEmptyStringWhenCollectAndSubmitThrows() when(magnesSDK.collectAndSubmit(context, "sample-client-metadata-id", additionalData)).thenThrow(new InvalidInputException("invalid input")); MagnesInternalClient sut = new MagnesInternalClient(magnesSDK); - String result = sut.getClientMetadataId(context, prodConfiguration, payPalDataCollectorRequest); + String result = sut.getClientMetadataId(context, prodConfiguration, payPalDataCollectorInternalRequest); assertEquals("", result); } diff --git a/PayPalDataCollector/src/test/java/com/braintreepayments/api/PayPalDataCollectorRequestUnitTest.java b/PayPalDataCollector/src/test/java/com/braintreepayments/api/PayPalDataCollectorInternalRequestUnitTest.java similarity index 73% rename from PayPalDataCollector/src/test/java/com/braintreepayments/api/PayPalDataCollectorRequestUnitTest.java rename to PayPalDataCollector/src/test/java/com/braintreepayments/api/PayPalDataCollectorInternalRequestUnitTest.java index 8ba93bb41b..4dba03170f 100644 --- a/PayPalDataCollector/src/test/java/com/braintreepayments/api/PayPalDataCollectorRequestUnitTest.java +++ b/PayPalDataCollector/src/test/java/com/braintreepayments/api/PayPalDataCollectorInternalRequestUnitTest.java @@ -4,11 +4,11 @@ import org.junit.Test; -public class PayPalDataCollectorRequestUnitTest { +public class PayPalDataCollectorInternalRequestUnitTest { @Test public void setClientMetadataId_trimsId_to_32characters() { - PayPalDataCollectorRequest request = new PayPalDataCollectorRequest() + PayPalDataCollectorInternalRequest request = new PayPalDataCollectorInternalRequest(true) .setRiskCorrelationId("pairing-id-pairing-id-pairing-idXXX"); assertEquals("pairing-id-pairing-id-pairing-id", request.getClientMetadataId()); diff --git a/PayPalDataCollector/src/test/java/com/braintreepayments/api/PayPalDataCollectorUnitTest.java b/PayPalDataCollector/src/test/java/com/braintreepayments/api/PayPalDataCollectorUnitTest.java index 8ecdc745a9..7445a8a0a0 100644 --- a/PayPalDataCollector/src/test/java/com/braintreepayments/api/PayPalDataCollectorUnitTest.java +++ b/PayPalDataCollector/src/test/java/com/braintreepayments/api/PayPalDataCollectorUnitTest.java @@ -1,6 +1,7 @@ package com.braintreepayments.api; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.isNull; import static org.mockito.ArgumentMatchers.same; @@ -60,25 +61,28 @@ public void getPayPalInstallationGUID_returnsInstallationIdentifier() { @Test public void getClientMetadataId_configuresMagnesWithDefaultRequest() { + boolean hasUserLocationConsent = true; + when(uuidHelper.getInstallationGUID(context)).thenReturn(sampleInstallationGUID); - when(magnesInternalClient.getClientMetadataId(same(context), same(configuration), any(PayPalDataCollectorRequest.class))).thenReturn("paypal-clientmetadata-id"); + when(magnesInternalClient.getClientMetadataId(same(context), same(configuration), any(PayPalDataCollectorInternalRequest.class))).thenReturn("paypal-clientmetadata-id"); PayPalDataCollector sut = new PayPalDataCollector(braintreeClient, magnesInternalClient, uuidHelper); - sut.getClientMetadataId(context, configuration); + sut.getClientMetadataId(context, configuration, hasUserLocationConsent); - ArgumentCaptor captor = ArgumentCaptor.forClass(PayPalDataCollectorRequest.class); + ArgumentCaptor captor = ArgumentCaptor.forClass(PayPalDataCollectorInternalRequest.class); verify(magnesInternalClient).getClientMetadataId(same(context), same(configuration), captor.capture()); - PayPalDataCollectorRequest request = captor.getValue(); + PayPalDataCollectorInternalRequest request = captor.getValue(); assertEquals(sampleInstallationGUID, request.getApplicationGuid()); + assertEquals(hasUserLocationConsent, request.getHasUserLocationConsent()); } @Test public void getClientMetadataId_configuresMagnesWithCustomRequestAndForwardsClientMetadataIdFromMagnesResult() { when(uuidHelper.getInstallationGUID(context)).thenReturn(sampleInstallationGUID); - PayPalDataCollectorRequest customRequest = new PayPalDataCollectorRequest(); + PayPalDataCollectorInternalRequest customRequest = new PayPalDataCollectorInternalRequest(false); when(magnesInternalClient.getClientMetadataId(context, configuration, customRequest)).thenReturn("paypal-clientmetadata-id"); PayPalDataCollector sut = new PayPalDataCollector(braintreeClient, magnesInternalClient, uuidHelper); @@ -91,10 +95,10 @@ public void getClientMetadataId_configuresMagnesWithCustomRequestAndForwardsClie public void getClientMetadataId_forwardsClientMetadataIdFromMagnesResult() { when(uuidHelper.getInstallationGUID(context)).thenReturn(sampleInstallationGUID); - when(magnesInternalClient.getClientMetadataId(same(context), same(configuration), any(PayPalDataCollectorRequest.class))).thenReturn("paypal-clientmetadata-id"); + when(magnesInternalClient.getClientMetadataId(same(context), same(configuration), any(PayPalDataCollectorInternalRequest.class))).thenReturn("paypal-clientmetadata-id"); PayPalDataCollector sut = new PayPalDataCollector(braintreeClient, magnesInternalClient, uuidHelper); - String result = sut.getClientMetadataId(context, configuration); + String result = sut.getClientMetadataId(context, configuration, true); assertEquals("paypal-clientmetadata-id", result); } @@ -121,18 +125,19 @@ public void collectDeviceData_configuresMagnesWithDefaultRequest() { .build(); when(uuidHelper.getInstallationGUID(context)).thenReturn(sampleInstallationGUID); - when(magnesInternalClient.getClientMetadataId(same(context), same(configuration), any(PayPalDataCollectorRequest.class))).thenReturn("paypal-clientmetadata-id"); + when(magnesInternalClient.getClientMetadataId(same(context), same(configuration), any(PayPalDataCollectorInternalRequest.class))).thenReturn("paypal-clientmetadata-id"); PayPalDataCollector sut = new PayPalDataCollector(braintreeClient, magnesInternalClient, uuidHelper); PayPalDataCollectorCallback callback = mock(PayPalDataCollectorCallback.class); sut.collectDeviceData(context, callback); - ArgumentCaptor captor = ArgumentCaptor.forClass(PayPalDataCollectorRequest.class); + ArgumentCaptor captor = ArgumentCaptor.forClass(PayPalDataCollectorInternalRequest.class); verify(magnesInternalClient).getClientMetadataId(same(context), same(configuration), captor.capture()); - PayPalDataCollectorRequest request = captor.getValue(); + PayPalDataCollectorInternalRequest request = captor.getValue(); assertEquals(sampleInstallationGUID, request.getApplicationGuid()); + assertFalse(request.getHasUserLocationConsent()); } @Test @@ -142,19 +147,20 @@ public void collectDeviceData_configuresMagnesWithClientId() { .build(); when(uuidHelper.getInstallationGUID(context)).thenReturn(sampleInstallationGUID); - when(magnesInternalClient.getClientMetadataId(same(context), same(configuration), any(PayPalDataCollectorRequest.class))).thenReturn("paypal-clientmetadata-id"); + when(magnesInternalClient.getClientMetadataId(same(context), same(configuration), any(PayPalDataCollectorInternalRequest.class))).thenReturn("paypal-clientmetadata-id"); PayPalDataCollector sut = new PayPalDataCollector(braintreeClient, magnesInternalClient, uuidHelper); PayPalDataCollectorCallback callback = mock(PayPalDataCollectorCallback.class); sut.collectDeviceData(context, "custom-client-metadata-id", callback); - ArgumentCaptor captor = ArgumentCaptor.forClass(PayPalDataCollectorRequest.class); + ArgumentCaptor captor = ArgumentCaptor.forClass(PayPalDataCollectorInternalRequest.class); verify(magnesInternalClient).getClientMetadataId(same(context), same(configuration), captor.capture()); - PayPalDataCollectorRequest request = captor.getValue(); + PayPalDataCollectorInternalRequest request = captor.getValue(); assertEquals(sampleInstallationGUID, request.getApplicationGuid()); assertEquals("custom-client-metadata-id", request.getClientMetadataId()); + assertFalse( request.getHasUserLocationConsent()); } @Test @@ -163,7 +169,7 @@ public void collectDeviceData_getsDeviceDataJSONWithCorrelationIdFromPayPal() th .configuration(configuration) .build(); - when(magnesInternalClient.getClientMetadataId(same(context), same(configuration), any(PayPalDataCollectorRequest.class))).thenReturn("paypal-clientmetadata-id"); + when(magnesInternalClient.getClientMetadataId(same(context), same(configuration), any(PayPalDataCollectorInternalRequest.class))).thenReturn("paypal-clientmetadata-id"); PayPalDataCollector sut = new PayPalDataCollector(braintreeClient, magnesInternalClient, uuidHelper); diff --git a/PayPalNativeCheckout/src/main/java/com/braintreepayments/api/PayPalNativeCheckoutInternalClient.java b/PayPalNativeCheckout/src/main/java/com/braintreepayments/api/PayPalNativeCheckoutInternalClient.java index f720b6402c..d22b061ad2 100644 --- a/PayPalNativeCheckout/src/main/java/com/braintreepayments/api/PayPalNativeCheckoutInternalClient.java +++ b/PayPalNativeCheckout/src/main/java/com/braintreepayments/api/PayPalNativeCheckoutInternalClient.java @@ -59,8 +59,9 @@ void sendRequest(final Context context, final PayPalNativeRequest payPalRequest, String pairingIdKey = isBillingAgreement ? "ba_token" : "token"; String pairingId = parsedRedirectUri.getQueryParameter(pairingIdKey); + // TODO: pass in hasUserLocationConsent value String clientMetadataId = payPalRequest.getRiskCorrelationId() != null - ? payPalRequest.getRiskCorrelationId() : payPalDataCollector.getClientMetadataId(context, configuration); + ? payPalRequest.getRiskCorrelationId() : payPalDataCollector.getClientMetadataId(context, configuration, false); if (pairingId != null) { payPalResponse diff --git a/PayPalNativeCheckout/src/test/java/com/braintreepayments/api/PayPalNativeCheckoutInternalClientUnitTest.java b/PayPalNativeCheckout/src/test/java/com/braintreepayments/api/PayPalNativeCheckoutInternalClientUnitTest.java index 5137010b02..a864f22acd 100644 --- a/PayPalNativeCheckout/src/test/java/com/braintreepayments/api/PayPalNativeCheckoutInternalClientUnitTest.java +++ b/PayPalNativeCheckout/src/test/java/com/braintreepayments/api/PayPalNativeCheckoutInternalClientUnitTest.java @@ -5,6 +5,7 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.isNull; @@ -321,7 +322,7 @@ public void sendRequest_withPayPalCheckoutRequest_omitsEmptyLineItems() throws J @Test public void sendRequest_whenRiskCorrelationIdNotNull_setsClientMetadataIdToRiskCorrelationId() throws Exception { - when(payPalDataCollector.getClientMetadataId(context, configuration)).thenReturn("sample-client-metadata-id"); + when(payPalDataCollector.getClientMetadataId(context, configuration, false)).thenReturn("sample-client-metadata-id"); BraintreeClient braintreeClient = new MockBraintreeClientBuilder() .configuration(Configuration.fromJson(Fixtures.CONFIGURATION_WITH_LIVE_PAYPAL)) @@ -345,7 +346,7 @@ public void sendRequest_whenRiskCorrelationIdNotNull_setsClientMetadataIdToRiskC @Test public void sendRequest_whenRiskCorrelationIdNull_setsClientMetadataIdFromPayPalDataCollector() throws Exception { - when(payPalDataCollector.getClientMetadataId(any(), any())).thenReturn("sample-client-metadata-id"); + when(payPalDataCollector.getClientMetadataId(any(), any(), anyBoolean())).thenReturn("sample-client-metadata-id"); BraintreeClient braintreeClient = new MockBraintreeClientBuilder() .configuration(Configuration.fromJson(Fixtures.CONFIGURATION_WITH_LIVE_PAYPAL)) @@ -393,7 +394,7 @@ public void sendRequest_withPayPalCheckoutRequest_whenRequestBillingAgreementFal @Test public void sendRequest_withPayPalVaultRequest_callsBackPayPalResponseOnSuccess() throws Exception { - when(payPalDataCollector.getClientMetadataId(any(), any())).thenReturn("sample-client-metadata-id"); + when(payPalDataCollector.getClientMetadataId(any(), any(), anyBoolean())).thenReturn("sample-client-metadata-id"); BraintreeClient braintreeClient = new MockBraintreeClientBuilder() .configuration(Configuration.fromJson(Fixtures.CONFIGURATION_WITH_LIVE_PAYPAL)) @@ -424,7 +425,7 @@ public void sendRequest_withPayPalVaultRequest_callsBackPayPalResponseOnSuccess( @Test public void sendRequest_withPayPalCheckoutRequest_callsBackPayPalResponseOnSuccess() throws Exception { - when(payPalDataCollector.getClientMetadataId(any(), any())).thenReturn("sample-client-metadata-id"); + when(payPalDataCollector.getClientMetadataId(any(), any(), anyBoolean())).thenReturn("sample-client-metadata-id"); BraintreeClient braintreeClient = new MockBraintreeClientBuilder() .configuration(Configuration.fromJson(Fixtures.CONFIGURATION_WITH_LIVE_PAYPAL)) From cbbd389a1627cf4b056166f1506f954e2ab0acd4 Mon Sep 17 00:00:00 2001 From: Tim Chow Date: Fri, 29 Mar 2024 13:48:51 -0500 Subject: [PATCH 02/10] Add has user location consent param in PayPal, PayPal Native, and Local Payment modules (#956) * Add hasUserLocationConsent parameter to the PayPal module * Add hasUserLocationConsent parameter to the PayPal Native module * Add hasUserLocationConsent parameter to the Local Payment Module * Update changelog for hasUserLocationConsent interface changes * Update changelog for Data Collector and PayPal Data Collector * Update changelog wording and change unit test assertion * Update PayPalNativeCheckout/src/main/java/com/braintreepayments/api/PayPalNativeCheckoutVaultRequest.java Co-authored-by: Sarah Koop * Add empty constructor for PayPalRequest --------- Co-authored-by: Sarah Koop --- CHANGELOG.md | 31 +++++++++++++++ .../api/LocalPaymentClient.java | 25 ++++++------ .../api/LocalPaymentRequest.java | 20 ++++++++++ .../api/LocalPaymentClientUnitTest.java | 38 ++++++++++++++++++- .../api/LocalPaymentRequestUnitTest.java | 11 +++++- .../api/PayPalCheckoutRequest.java | 22 ++++++++++- .../api/PayPalInternalClient.java | 3 +- .../braintreepayments/api/PayPalRequest.java | 22 +++++++++++ .../api/PayPalVaultRequest.java | 12 ++++++ .../api/PayPalCheckoutRequestUnitTest.java | 15 ++++++-- .../api/PayPalInternalClientUnitTest.java | 21 ++++++++++ .../api/PayPalVaultRequestUnitTest.java | 15 ++++++-- .../PayPalNativeCheckoutInternalClient.java | 3 +- .../api/PayPalNativeCheckoutRequest.java | 20 ++++++++++ .../api/PayPalNativeCheckoutVaultRequest.java | 12 ++++++ .../api/PayPalNativeRequest.java | 11 +++++- .../api/PayPalCheckoutRequestUnitTest.java | 27 ++++++++----- .../api/PayPalNativeCheckoutClientUnitTest.kt | 4 +- ...lNativeCheckoutInternalClientUnitTest.java | 21 ++++++++++ .../api/PayPalVaultRequestUnitTest.java | 15 ++++++-- 20 files changed, 309 insertions(+), 39 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7cbbc43669..138151cad0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,36 @@ # Braintree Android SDK Release Notes +## unreleased + + +* Local Payment + * Fixes Google Play Store Rejection + * See [developer documentation](link) for required updates for user location data compliance + * Add `hasUserLocationConsent` property to `LocalPaymentRequest` + * Deprecate existing constructor that does not pass in `hasUserLocationConsent` +* PayPal + * Fixes Google Play Store Rejection + * See [developer documentation](link) for required updates for user location data compliance + * Add `hasUserLocationConsent` property to `PayPalCheckoutRequest`, `PayPalVaultRequest` and `PayPalRequest` + * Deprecate existing constructors that do not pass in `hasUserLocationConsent` +* PayPalNativeCheckout + * Fixes Google Play Store Rejection + * See [developer documentation](link) for required updates for user location data compliance + * Add `hasUserLocationConsent` property to `PayPalNativeCheckoutRequest`, `PayPalNativeVaultRequest` and `PayPalNativeCheckoutRequest` + * Deprecate existing constructors that do not pass in `hasUserLocationConsent` +* BraintreeDataCollector + * Fixes Google Play Store Rejection + * See [developer documentation](link) for required updates for user location data compliance + * Add `DataCollectorRequest` to pass in `hasUserLocationConsent` + * Update `DataCollector.collectDeviceData()` to take in `DataCollectorRequest` + * Deprecate existing `DataCollector.collectDeviceData()` +* PayPalDataCollector + * Fixes Google Play Store Rejection + * See [developer documentation](link) for required updates for user location data compliance + * Add `PayPalDataCollectorRequest` to pass in `hasUserLocationConsent` + * Update `PayPalDataCollector.collectDeviceData()` to take in `PayPalDataCollectorRequest` + * Deprecate existing `PayPalDataCollector.collectDeviceData()` + ## 4.43.0 (2024-03-19) * Move from Braintree to PayPal analytics service (FPTI) diff --git a/LocalPayment/src/main/java/com/braintreepayments/api/LocalPaymentClient.java b/LocalPayment/src/main/java/com/braintreepayments/api/LocalPaymentClient.java index 9feadabad1..06440aca5e 100644 --- a/LocalPayment/src/main/java/com/braintreepayments/api/LocalPaymentClient.java +++ b/LocalPayment/src/main/java/com/braintreepayments/api/LocalPaymentClient.java @@ -33,6 +33,8 @@ public class LocalPaymentClient { */ private String payPalContextId = null; + private boolean hasUserLocationConsent; + @VisibleForTesting BrowserSwitchResult pendingBrowserSwitchResult; @@ -136,6 +138,7 @@ public void onResult(@Nullable LocalPaymentResult localPaymentResult, @Nullable if (pairingId != null && !pairingId.isEmpty()) { payPalContextId = pairingId; } + hasUserLocationConsent = request.hasUserLocationConsent(); sendAnalyticsEvent(request.getPaymentType(), "local-payment.create.succeeded"); } else if (error != null) { sendAnalyticsEvent(request.getPaymentType(), "local-payment.webswitch.initiate.failed"); @@ -323,18 +326,18 @@ public void onBrowserSwitchResult(@NonNull final Context context, @NonNull Brows @Override public void onResult(@Nullable Configuration configuration, @Nullable Exception error) { if (configuration != null) { - // TODO: pass in hasUserLocationConsent value - localPaymentApi.tokenize(merchantAccountId, responseString, payPalDataCollector.getClientMetadataId(context, configuration, false), new LocalPaymentBrowserSwitchResultCallback() { - @Override - public void onResult(@Nullable LocalPaymentNonce localPaymentNonce, @Nullable Exception error) { - if (localPaymentNonce != null) { - sendAnalyticsEvent(paymentType, "local-payment.tokenize.succeeded"); - } else if (error != null) { - sendAnalyticsEvent(paymentType, "local-payment.tokenize.failed"); + localPaymentApi.tokenize(merchantAccountId, responseString, payPalDataCollector.getClientMetadataId(context, configuration, hasUserLocationConsent), + new LocalPaymentBrowserSwitchResultCallback() { + @Override + public void onResult(@Nullable LocalPaymentNonce localPaymentNonce, @Nullable Exception error) { + if (localPaymentNonce != null) { + sendAnalyticsEvent(paymentType, "local-payment.tokenize.succeeded"); + } else if (error != null) { + sendAnalyticsEvent(paymentType, "local-payment.tokenize.failed"); + } + callback.onResult(localPaymentNonce, error); } - callback.onResult(localPaymentNonce, error); - } - }); + }); } else if (error != null) { callback.onResult(null, error); } diff --git a/LocalPayment/src/main/java/com/braintreepayments/api/LocalPaymentRequest.java b/LocalPayment/src/main/java/com/braintreepayments/api/LocalPaymentRequest.java index e98e39b487..4086b49781 100644 --- a/LocalPayment/src/main/java/com/braintreepayments/api/LocalPaymentRequest.java +++ b/LocalPayment/src/main/java/com/braintreepayments/api/LocalPaymentRequest.java @@ -45,6 +45,22 @@ public class LocalPaymentRequest { private String phone; private boolean shippingAddressRequired; private String surname; + private final boolean hasUserLocationConsent; + + /** + * Deprecated. Use {@link LocalPaymentRequest#LocalPaymentRequest(boolean)} instead. + **/ + @Deprecated + public LocalPaymentRequest() { + hasUserLocationConsent = false; + } + + /** + * TODO: add javadoc for hasUserLocationConsent param + */ + public LocalPaymentRequest(boolean hasUserLocationConsent) { + this.hasUserLocationConsent = hasUserLocationConsent; + } /** * @param address Optional - The address of the customer. An error will occur if this address is not valid. @@ -206,6 +222,10 @@ public String getSurname() { return surname; } + public boolean hasUserLocationConsent() { + return hasUserLocationConsent; + } + public String build(String returnUrl, String cancelUrl) { try { JSONObject payload = new JSONObject() diff --git a/LocalPayment/src/test/java/com/braintreepayments/api/LocalPaymentClientUnitTest.java b/LocalPayment/src/test/java/com/braintreepayments/api/LocalPaymentClientUnitTest.java index 67b1f1e90d..58ccb11bc3 100644 --- a/LocalPayment/src/test/java/com/braintreepayments/api/LocalPaymentClientUnitTest.java +++ b/LocalPayment/src/test/java/com/braintreepayments/api/LocalPaymentClientUnitTest.java @@ -764,6 +764,42 @@ public void clearActiveBrowserSwitchRequests_forwardsInvocationToBraintreeClient verify(braintreeClient).clearActiveBrowserSwitchRequests(activity); } + @Test + public void onBrowserSwitchResult_sends_the_correct_value_of_hasUserLocationConsent_to_getClientMetadataId() throws JSONException { + BrowserSwitchResult browserSwitchResult = mock(BrowserSwitchResult.class); + when(browserSwitchResult.getStatus()).thenReturn(BrowserSwitchStatus.SUCCESS); + + when(browserSwitchResult.getRequestMetadata()).thenReturn(new JSONObject() + .put("payment-type", "ideal") + .put("merchant-account-id", "local-merchant-account-id")); + + String webUrl = "sample-scheme://local-payment-success?paymentToken=successTokenId"; + when(browserSwitchResult.getDeepLinkUrl()).thenReturn(Uri.parse(webUrl)); + BraintreeClient braintreeClient = new MockBraintreeClientBuilder() + .configuration(payPalEnabledConfig) + .integration("custom") + .sessionId("session-id") + .build(); + when(payPalDataCollector.getClientMetadataId(any(Context.class), same(payPalEnabledConfig), anyBoolean())).thenReturn("client-metadata-id"); + + LocalPaymentNonce successNonce = LocalPaymentNonce.fromJSON(new JSONObject(Fixtures.PAYMENT_METHODS_LOCAL_PAYMENT_RESPONSE)); + LocalPaymentResult localPaymentResult = mock(LocalPaymentResult.class); + LocalPaymentApi localPaymentApi = new MockLocalPaymentApiBuilder() + .tokenizeSuccess(successNonce) + .createPaymentMethodSuccess(localPaymentResult) + .build(); + + LocalPaymentRequest request = getIdealLocalPaymentRequest(); + LocalPaymentClient sut = new LocalPaymentClient(activity, lifecycle, braintreeClient, payPalDataCollector, localPaymentApi); + + sut.startPayment(request, localPaymentStartCallback); + + sut.setListener(listener); + sut.onBrowserSwitchResult(activity, browserSwitchResult); + + verify(payPalDataCollector).getClientMetadataId(any(), same(payPalEnabledConfig), eq(true)); + } + private LocalPaymentRequest getIdealLocalPaymentRequest() { PostalAddress address = new PostalAddress(); address.setStreetAddress("836486 of 22321 Park Lake"); @@ -773,7 +809,7 @@ private LocalPaymentRequest getIdealLocalPaymentRequest() { address.setRegion("CA"); address.setPostalCode("2585 GJ"); - LocalPaymentRequest request = new LocalPaymentRequest(); + LocalPaymentRequest request = new LocalPaymentRequest(true); request.setPaymentType("ideal"); request.setAmount("1.10"); request.setAddress(address); diff --git a/LocalPayment/src/test/java/com/braintreepayments/api/LocalPaymentRequestUnitTest.java b/LocalPayment/src/test/java/com/braintreepayments/api/LocalPaymentRequestUnitTest.java index f2042266b1..a1e7055842 100644 --- a/LocalPayment/src/test/java/com/braintreepayments/api/LocalPaymentRequestUnitTest.java +++ b/LocalPayment/src/test/java/com/braintreepayments/api/LocalPaymentRequestUnitTest.java @@ -9,10 +9,17 @@ import org.robolectric.RobolectricTestRunner; import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertFalse; import static junit.framework.Assert.assertTrue; @RunWith(RobolectricTestRunner.class) public class LocalPaymentRequestUnitTest { + + @Test + public void constructor_without_hasUserLocationConsent_defaults_to_false() { + LocalPaymentRequest request = new LocalPaymentRequest(); + assertFalse(request.hasUserLocationConsent()); + } @Test public void build_setsAllParams() throws JSONException { @@ -24,7 +31,7 @@ public void build_setsAllParams() throws JSONException { address.setRegion("CA"); address.setPostalCode("2585 GJ"); - LocalPaymentRequest request = new LocalPaymentRequest(); + LocalPaymentRequest request = new LocalPaymentRequest(true); request.setPaymentType("ideal"); request.setAmount("1.10"); request.setAddress(address); @@ -39,6 +46,8 @@ public void build_setsAllParams() throws JSONException { request.setBic("bank-id-code"); request.setDisplayName("My Brand!"); + assertTrue(request.hasUserLocationConsent()); + JSONObject json = new JSONObject(request.build("http://success-url.com", "http://cancel-url.com")); assertEquals("sale", json.getString("intent")); diff --git a/PayPal/src/main/java/com/braintreepayments/api/PayPalCheckoutRequest.java b/PayPal/src/main/java/com/braintreepayments/api/PayPalCheckoutRequest.java index 0ac33427ed..d32aecbf90 100644 --- a/PayPal/src/main/java/com/braintreepayments/api/PayPalCheckoutRequest.java +++ b/PayPal/src/main/java/com/braintreepayments/api/PayPalCheckoutRequest.java @@ -49,6 +49,8 @@ public class PayPalCheckoutRequest extends PayPalRequest implements Parcelable { private boolean shouldOfferPayLater; /** + * Deprecated. Use {@link PayPalCheckoutRequest#PayPalCheckoutRequest(String, boolean)} instead. + * * @param amount The transaction amount in currency units (as * determined by setCurrencyCode). * For example, "1.20" corresponds to one dollar and twenty cents. Amount must be a non-negative * number, may optionally contain exactly 2 decimal places separated by '.' and is @@ -57,8 +59,26 @@ public class PayPalCheckoutRequest extends PayPalRequest implements Parcelable { * This amount may differ slightly from the transaction amount. The exact decline rules * for mismatches between this client-side amount and the final amount in the Transaction * are determined by the gateway. - **/ + */ + @Deprecated public PayPalCheckoutRequest(@NonNull String amount) { + super(false); + this.amount = amount; + } + + /** + * @param amount The transaction amount in currency units (as * determined by setCurrencyCode). + * For example, "1.20" corresponds to one dollar and twenty cents. Amount must be a non-negative + * number, may optionally contain exactly 2 decimal places separated by '.' and is + * limited to 7 digits before the decimal point. + *

+ * This amount may differ slightly from the transaction amount. The exact decline rules + * for mismatches between this client-side amount and the final amount in the Transaction + * are determined by the gateway. + * TODO: add javadoc for hasUserLocationConsent param + */ + public PayPalCheckoutRequest(@NonNull String amount, boolean hasUserLocationConsent) { + super(hasUserLocationConsent); this.amount = amount; } diff --git a/PayPal/src/main/java/com/braintreepayments/api/PayPalInternalClient.java b/PayPal/src/main/java/com/braintreepayments/api/PayPalInternalClient.java index 4bb21c2613..55f0081b70 100644 --- a/PayPal/src/main/java/com/braintreepayments/api/PayPalInternalClient.java +++ b/PayPal/src/main/java/com/braintreepayments/api/PayPalInternalClient.java @@ -71,9 +71,8 @@ public void onResult(String responseBody, Exception httpError) { String pairingIdKey = isBillingAgreement ? "ba_token" : "token"; String pairingId = parsedRedirectUri.getQueryParameter(pairingIdKey); - // TODO: pass in hasUserLocationConsent value String clientMetadataId = payPalRequest.getRiskCorrelationId() != null - ? payPalRequest.getRiskCorrelationId() : payPalDataCollector.getClientMetadataId(context, configuration, false); + ? payPalRequest.getRiskCorrelationId() : payPalDataCollector.getClientMetadataId(context, configuration, payPalRequest.hasUserLocationConsent()); if (pairingId != null) { payPalResponse diff --git a/PayPal/src/main/java/com/braintreepayments/api/PayPalRequest.java b/PayPal/src/main/java/com/braintreepayments/api/PayPalRequest.java index d2576a5a41..456c3df445 100644 --- a/PayPal/src/main/java/com/braintreepayments/api/PayPalRequest.java +++ b/PayPal/src/main/java/com/braintreepayments/api/PayPalRequest.java @@ -70,13 +70,29 @@ public abstract class PayPalRequest implements Parcelable { private String merchantAccountId; private String riskCorrelationId; private final ArrayList lineItems; + private final boolean hasUserLocationConsent; /** + * Deprecated. Use {@link PayPalRequest#PayPalRequest(boolean)} instead. + * * Constructs a request for PayPal Checkout and Vault flows. */ + @Deprecated public PayPalRequest() { shippingAddressRequired = false; lineItems = new ArrayList<>(); + hasUserLocationConsent = false; + } + + /** + * Constructs a request for PayPal Checkout and Vault flows. + * + * TODO: add javadoc for hasUserLocationConsent param + */ + public PayPalRequest(boolean hasUserLocationConsent) { + shippingAddressRequired = false; + lineItems = new ArrayList<>(); + this.hasUserLocationConsent = hasUserLocationConsent; } /** @@ -255,6 +271,10 @@ public String getLandingPageType() { return landingPageType; } + public boolean hasUserLocationConsent() { + return hasUserLocationConsent; + } + abstract String createRequestBody(Configuration configuration, Authorization authorization, String successUrl, String cancelUrl) throws JSONException; protected PayPalRequest(Parcel in) { @@ -268,6 +288,7 @@ protected PayPalRequest(Parcel in) { merchantAccountId = in.readString(); riskCorrelationId = in.readString(); lineItems = in.createTypedArrayList(PayPalLineItem.CREATOR); + hasUserLocationConsent = in.readByte() != 0; } @Override @@ -287,5 +308,6 @@ public void writeToParcel(Parcel parcel, int i) { parcel.writeString(merchantAccountId); parcel.writeString(riskCorrelationId); parcel.writeTypedList(lineItems); + parcel.writeByte((byte) (hasUserLocationConsent ? 1 : 0)); } } diff --git a/PayPal/src/main/java/com/braintreepayments/api/PayPalVaultRequest.java b/PayPal/src/main/java/com/braintreepayments/api/PayPalVaultRequest.java index 643678d0c4..da17d29a1b 100644 --- a/PayPal/src/main/java/com/braintreepayments/api/PayPalVaultRequest.java +++ b/PayPal/src/main/java/com/braintreepayments/api/PayPalVaultRequest.java @@ -18,7 +18,19 @@ public class PayPalVaultRequest extends PayPalRequest implements Parcelable { private String userAuthenticationEmail; + /** + * Deprecated. Use {@link PayPalVaultRequest#PayPalVaultRequest(boolean)} instead. + */ + @Deprecated public PayPalVaultRequest() { + super(false); + } + + /** + * TODO: add javadoc for hasUserLocationConsent param + */ + public PayPalVaultRequest(boolean hasUserLocationConsent) { + super(hasUserLocationConsent); } /** diff --git a/PayPal/src/test/java/com/braintreepayments/api/PayPalCheckoutRequestUnitTest.java b/PayPal/src/test/java/com/braintreepayments/api/PayPalCheckoutRequestUnitTest.java index 3ae146f7bc..62a797547a 100644 --- a/PayPal/src/test/java/com/braintreepayments/api/PayPalCheckoutRequestUnitTest.java +++ b/PayPal/src/test/java/com/braintreepayments/api/PayPalCheckoutRequestUnitTest.java @@ -19,7 +19,7 @@ public class PayPalCheckoutRequestUnitTest { @Test public void newPayPalCheckoutRequest_setsDefaultValues() { - PayPalCheckoutRequest request = new PayPalCheckoutRequest("1.00"); + PayPalCheckoutRequest request = new PayPalCheckoutRequest("1.00", false); assertNotNull(request.getAmount()); assertNull(request.getCurrencyCode()); @@ -31,12 +31,19 @@ public void newPayPalCheckoutRequest_setsDefaultValues() { assertNull(request.getLandingPageType()); assertNull(request.getBillingAgreementDescription()); assertFalse(request.getShouldOfferPayLater()); + assertFalse(request.hasUserLocationConsent()); + } + + @Test + public void newPayPalCheckoutRequest_without_hasUserLocationConsent_defaults_to_false() { + PayPalCheckoutRequest request = new PayPalCheckoutRequest("1.00"); + assertFalse(request.hasUserLocationConsent()); } @Test public void setsValuesCorrectly() { PostalAddress postalAddress = new PostalAddress(); - PayPalCheckoutRequest request = new PayPalCheckoutRequest("1.00"); + PayPalCheckoutRequest request = new PayPalCheckoutRequest("1.00", true); request.setCurrencyCode("USD"); request.setShouldOfferPayLater(true); request.setIntent(PayPalPaymentIntent.SALE); @@ -64,11 +71,12 @@ public void setsValuesCorrectly() { assertEquals("123-correlation", request.getRiskCorrelationId()); assertEquals(PayPalRequest.LANDING_PAGE_TYPE_LOGIN, request.getLandingPageType()); assertTrue(request.getShouldOfferPayLater()); + assertTrue(request.hasUserLocationConsent()); } @Test public void parcelsCorrectly() { - PayPalCheckoutRequest request = new PayPalCheckoutRequest("12.34"); + PayPalCheckoutRequest request = new PayPalCheckoutRequest("12.34", true); request.setCurrencyCode("USD"); request.setLocaleCode("en-US"); request.setBillingAgreementDescription("Billing Agreement Description"); @@ -112,5 +120,6 @@ public void parcelsCorrectly() { assertEquals("merchant_account_id", result.getMerchantAccountId()); assertEquals(1, result.getLineItems().size()); assertEquals("An Item", result.getLineItems().get(0).getName()); + assertTrue(result.hasUserLocationConsent()); } } \ No newline at end of file diff --git a/PayPal/src/test/java/com/braintreepayments/api/PayPalInternalClientUnitTest.java b/PayPal/src/test/java/com/braintreepayments/api/PayPalInternalClientUnitTest.java index 19fcec416c..b1ea68caac 100644 --- a/PayPal/src/test/java/com/braintreepayments/api/PayPalInternalClientUnitTest.java +++ b/PayPal/src/test/java/com/braintreepayments/api/PayPalInternalClientUnitTest.java @@ -658,4 +658,25 @@ public void tokenize_onTokenizeError_returnsErrorToCallback() { verify(callback).onResult((PayPalAccountNonce) isNull(), same(error)); } + + @Test + public void payPalDataCollector_passes_correct_arguments_to_getClientMetadataId() throws Exception { + Configuration configuration = Configuration.fromJson(Fixtures.CONFIGURATION_WITH_LIVE_PAYPAL); + BraintreeClient braintreeClient = new MockBraintreeClientBuilder() + .configuration(configuration) + .authorizationSuccess(clientToken) + .returnUrlScheme("sample-scheme") + .sendPOSTSuccessfulResponse(Fixtures.PAYPAL_HERMES_RESPONSE) + .build(); + + PayPalInternalClient sut = new PayPalInternalClient(braintreeClient, payPalDataCollector, apiClient); + + PayPalCheckoutRequest payPalRequest = new PayPalCheckoutRequest("1.00", true); + payPalRequest.setIntent("authorize"); + payPalRequest.setMerchantAccountId("sample-merchant-account-id"); + + sut.sendRequest(context, payPalRequest, payPalInternalClientCallback); + + verify(payPalDataCollector).getClientMetadataId(context, configuration, true); + } } \ No newline at end of file diff --git a/PayPal/src/test/java/com/braintreepayments/api/PayPalVaultRequestUnitTest.java b/PayPal/src/test/java/com/braintreepayments/api/PayPalVaultRequestUnitTest.java index af852b66cc..2fce50d21a 100644 --- a/PayPal/src/test/java/com/braintreepayments/api/PayPalVaultRequestUnitTest.java +++ b/PayPal/src/test/java/com/braintreepayments/api/PayPalVaultRequestUnitTest.java @@ -22,7 +22,7 @@ public class PayPalVaultRequestUnitTest { @Test public void newPayPalVaultRequest_setsDefaultValues() { - PayPalVaultRequest request = new PayPalVaultRequest(); + PayPalVaultRequest request = new PayPalVaultRequest(false); assertNull(request.getLocaleCode()); assertFalse(request.isShippingAddressRequired()); @@ -30,12 +30,19 @@ public void newPayPalVaultRequest_setsDefaultValues() { assertNull(request.getDisplayName()); assertNull(request.getLandingPageType()); assertFalse(request.getShouldOfferCredit()); + assertFalse(request.hasUserLocationConsent()); + } + + @Test + public void newPayPalVaultRequest_without_hasUserLocationConsent_defaults_to_false() { + PayPalVaultRequest request = new PayPalVaultRequest(); + assertFalse(request.hasUserLocationConsent()); } @Test public void setsValuesCorrectly() { PostalAddress postalAddress = new PostalAddress(); - PayPalVaultRequest request = new PayPalVaultRequest(); + PayPalVaultRequest request = new PayPalVaultRequest(true); request.setLocaleCode("US"); request.setBillingAgreementDescription("Billing Agreement Description"); request.setShippingAddressRequired(true); @@ -53,11 +60,12 @@ public void setsValuesCorrectly() { assertEquals("123-correlation", request.getRiskCorrelationId()); assertEquals(PayPalRequest.LANDING_PAGE_TYPE_LOGIN, request.getLandingPageType()); assertTrue(request.getShouldOfferCredit()); + assertTrue(request.hasUserLocationConsent()); } @Test public void parcelsCorrectly() { - PayPalVaultRequest request = new PayPalVaultRequest(); + PayPalVaultRequest request = new PayPalVaultRequest(true); request.setLocaleCode("en-US"); request.setBillingAgreementDescription("Billing Agreement Description"); request.setShippingAddressRequired(true); @@ -96,6 +104,7 @@ public void parcelsCorrectly() { assertEquals("merchant_account_id", result.getMerchantAccountId()); assertEquals(1, result.getLineItems().size()); assertEquals("An Item", result.getLineItems().get(0).getName()); + assertTrue(result.hasUserLocationConsent()); } @Test diff --git a/PayPalNativeCheckout/src/main/java/com/braintreepayments/api/PayPalNativeCheckoutInternalClient.java b/PayPalNativeCheckout/src/main/java/com/braintreepayments/api/PayPalNativeCheckoutInternalClient.java index d22b061ad2..7b8c4a37ae 100644 --- a/PayPalNativeCheckout/src/main/java/com/braintreepayments/api/PayPalNativeCheckoutInternalClient.java +++ b/PayPalNativeCheckout/src/main/java/com/braintreepayments/api/PayPalNativeCheckoutInternalClient.java @@ -59,9 +59,8 @@ void sendRequest(final Context context, final PayPalNativeRequest payPalRequest, String pairingIdKey = isBillingAgreement ? "ba_token" : "token"; String pairingId = parsedRedirectUri.getQueryParameter(pairingIdKey); - // TODO: pass in hasUserLocationConsent value String clientMetadataId = payPalRequest.getRiskCorrelationId() != null - ? payPalRequest.getRiskCorrelationId() : payPalDataCollector.getClientMetadataId(context, configuration, false); + ? payPalRequest.getRiskCorrelationId() : payPalDataCollector.getClientMetadataId(context, configuration, payPalRequest.hasUserLocationConsent()); if (pairingId != null) { payPalResponse diff --git a/PayPalNativeCheckout/src/main/java/com/braintreepayments/api/PayPalNativeCheckoutRequest.java b/PayPalNativeCheckout/src/main/java/com/braintreepayments/api/PayPalNativeCheckoutRequest.java index 07677fe218..364faa8a82 100644 --- a/PayPalNativeCheckout/src/main/java/com/braintreepayments/api/PayPalNativeCheckoutRequest.java +++ b/PayPalNativeCheckout/src/main/java/com/braintreepayments/api/PayPalNativeCheckoutRequest.java @@ -49,6 +49,8 @@ public class PayPalNativeCheckoutRequest extends PayPalNativeRequest implements private boolean shouldOfferPayLater; /** + * Deprecated. Use {@link PayPalNativeCheckoutRequest#PayPalNativeCheckoutRequest(String, boolean)} instead. + * * @param amount The transaction amount in currency units (as * determined by setCurrencyCode). * For example, "1.20" corresponds to one dollar and twenty cents. Amount must be a non-negative * number, may optionally contain exactly 2 decimal places separated by '.' and is @@ -58,7 +60,25 @@ public class PayPalNativeCheckoutRequest extends PayPalNativeRequest implements * for mismatches between this client-side amount and the final amount in the Transaction * are determined by the gateway. **/ + @Deprecated public PayPalNativeCheckoutRequest(@NonNull String amount) { + super(false); + this.amount = amount; + } + + /** + * @param amount The transaction amount in currency units (as * determined by setCurrencyCode). + * For example, "1.20" corresponds to one dollar and twenty cents. Amount must be a non-negative + * number, may optionally contain exactly 2 decimal places separated by '.' and is + * limited to 7 digits before the decimal point. + *

+ * This amount may differ slightly from the transaction amount. The exact decline rules + * for mismatches between this client-side amount and the final amount in the Transaction + * are determined by the gateway. + * TODO: add javadoc for hasUserLocationConsent param + **/ + public PayPalNativeCheckoutRequest(@NonNull String amount, boolean hasUserLocationConsent) { + super(hasUserLocationConsent); this.amount = amount; } diff --git a/PayPalNativeCheckout/src/main/java/com/braintreepayments/api/PayPalNativeCheckoutVaultRequest.java b/PayPalNativeCheckout/src/main/java/com/braintreepayments/api/PayPalNativeCheckoutVaultRequest.java index e3ea362ef0..04c612bd60 100644 --- a/PayPalNativeCheckout/src/main/java/com/braintreepayments/api/PayPalNativeCheckoutVaultRequest.java +++ b/PayPalNativeCheckout/src/main/java/com/braintreepayments/api/PayPalNativeCheckoutVaultRequest.java @@ -14,7 +14,19 @@ public class PayPalNativeCheckoutVaultRequest extends PayPalNativeRequest implem private boolean shouldOfferCredit; + /** + * Deprecated. Use {@link PayPalNativeCheckoutVaultRequest#PayPalNativeCheckoutVaultRequest(boolean)} instead. + */ + @Deprecated public PayPalNativeCheckoutVaultRequest() { + super(false); + } + + /** + * TODO: add javadoc for hasUserLocationConsent param + */ + public PayPalNativeCheckoutVaultRequest(boolean hasUserLocationConsent) { + super(hasUserLocationConsent); } /** diff --git a/PayPalNativeCheckout/src/main/java/com/braintreepayments/api/PayPalNativeRequest.java b/PayPalNativeCheckout/src/main/java/com/braintreepayments/api/PayPalNativeRequest.java index 23aa63ec78..3a7a3618be 100644 --- a/PayPalNativeCheckout/src/main/java/com/braintreepayments/api/PayPalNativeRequest.java +++ b/PayPalNativeCheckout/src/main/java/com/braintreepayments/api/PayPalNativeRequest.java @@ -52,13 +52,16 @@ public abstract class PayPalNativeRequest implements Parcelable { private final ArrayList lineItems; private String returnUrl; private String userAuthenticationEmail; + private final boolean hasUserLocationConsent; + /** * Constructs a request for PayPal Checkout and Vault flows. */ - public PayPalNativeRequest() { + public PayPalNativeRequest(boolean hasUserLocationConsent) { shippingAddressRequired = false; lineItems = new ArrayList<>(); + this.hasUserLocationConsent = hasUserLocationConsent; } /** @@ -256,6 +259,10 @@ public ArrayList getLineItems() { return lineItems; } + public boolean hasUserLocationConsent() { + return hasUserLocationConsent; + } + abstract String createRequestBody(Configuration configuration, Authorization authorization, String successUrl, String cancelUrl) throws JSONException; protected PayPalNativeRequest(Parcel in) { @@ -271,6 +278,7 @@ protected PayPalNativeRequest(Parcel in) { lineItems = in.createTypedArrayList(PayPalNativeCheckoutLineItem.CREATOR); returnUrl = in.readString(); userAuthenticationEmail = in.readString(); + hasUserLocationConsent = in.readByte() != 0; } @Override @@ -292,5 +300,6 @@ public void writeToParcel(Parcel parcel, int i) { parcel.writeTypedList(lineItems); parcel.writeString(returnUrl); parcel.writeString(userAuthenticationEmail); + parcel.writeByte((byte) (hasUserLocationConsent ? 1 : 0)); } } diff --git a/PayPalNativeCheckout/src/test/java/com/braintreepayments/api/PayPalCheckoutRequestUnitTest.java b/PayPalNativeCheckout/src/test/java/com/braintreepayments/api/PayPalCheckoutRequestUnitTest.java index 4bf62a4da1..6208027701 100644 --- a/PayPalNativeCheckout/src/test/java/com/braintreepayments/api/PayPalCheckoutRequestUnitTest.java +++ b/PayPalNativeCheckout/src/test/java/com/braintreepayments/api/PayPalCheckoutRequestUnitTest.java @@ -1,5 +1,11 @@ package com.braintreepayments.api; +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertFalse; +import static junit.framework.Assert.assertNull; +import static junit.framework.Assert.assertTrue; +import static org.junit.Assert.assertNotNull; + import android.os.Parcel; import org.junit.Test; @@ -8,18 +14,12 @@ import java.util.ArrayList; -import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.assertFalse; -import static junit.framework.Assert.assertNull; -import static junit.framework.Assert.assertTrue; -import static org.junit.Assert.assertNotNull; - @RunWith(RobolectricTestRunner.class) public class PayPalCheckoutRequestUnitTest { @Test public void newPayPalCheckoutRequest_setsDefaultValues() { - PayPalNativeCheckoutRequest request = new PayPalNativeCheckoutRequest("1.00"); + PayPalNativeCheckoutRequest request = new PayPalNativeCheckoutRequest("1.00", false); assertNotNull(request.getAmount()); assertNull(request.getCurrencyCode()); @@ -29,11 +29,18 @@ public void newPayPalCheckoutRequest_setsDefaultValues() { assertEquals(PayPalNativeCheckoutPaymentIntent.AUTHORIZE, request.getIntent()); assertNull(request.getBillingAgreementDescription()); assertFalse(request.getShouldOfferPayLater()); + assertFalse(request.hasUserLocationConsent()); } @Test - public void setsValuesCorrectly() { + public void newPayPalCheckoutRequest_without_hasUserLocationConsent_defaults_to_false() { PayPalNativeCheckoutRequest request = new PayPalNativeCheckoutRequest("1.00"); + assertFalse(request.hasUserLocationConsent()); + } + + @Test + public void setsValuesCorrectly() { + PayPalNativeCheckoutRequest request = new PayPalNativeCheckoutRequest("1.00", true); request.setCurrencyCode("USD"); request.setShouldOfferPayLater(true); request.setIntent(PayPalNativeCheckoutPaymentIntent.SALE); @@ -74,11 +81,12 @@ public void setsValuesCorrectly() { assertEquals("CA", request.getShippingAddressOverride().getRegion()); assertEquals("US", request.getShippingAddressOverride().getCountryCodeAlpha2()); assertTrue(request.getShouldOfferPayLater()); + assertTrue(request.hasUserLocationConsent()); } @Test public void parcelsCorrectly() { - PayPalNativeCheckoutRequest request = new PayPalNativeCheckoutRequest("12.34"); + PayPalNativeCheckoutRequest request = new PayPalNativeCheckoutRequest("12.34", true); request.setCurrencyCode("USD"); request.setLocaleCode("en-US"); request.setBillingAgreementDescription("Billing Agreement Description"); @@ -117,5 +125,6 @@ public void parcelsCorrectly() { assertEquals("merchant_account_id", result.getMerchantAccountId()); assertEquals(1, result.getLineItems().size()); assertEquals("An Item", result.getLineItems().get(0).getName()); + assertTrue(result.hasUserLocationConsent()); } } diff --git a/PayPalNativeCheckout/src/test/java/com/braintreepayments/api/PayPalNativeCheckoutClientUnitTest.kt b/PayPalNativeCheckout/src/test/java/com/braintreepayments/api/PayPalNativeCheckoutClientUnitTest.kt index 33d86235a7..45d78f36fd 100644 --- a/PayPalNativeCheckout/src/test/java/com/braintreepayments/api/PayPalNativeCheckoutClientUnitTest.kt +++ b/PayPalNativeCheckout/src/test/java/com/braintreepayments/api/PayPalNativeCheckoutClientUnitTest.kt @@ -58,7 +58,7 @@ class PayPalNativeCheckoutClientUnitTest { @Test fun tokenizePayPalAccount_throwsWhenPayPalRequestIsBaseClass() { - val baseRequest: PayPalNativeRequest = object : PayPalNativeRequest() { + val baseRequest: PayPalNativeRequest = object : PayPalNativeRequest(true) { @Throws(JSONException::class) public override fun createRequestBody( configuration: Configuration, @@ -346,7 +346,7 @@ class PayPalNativeCheckoutClientUnitTest { @Test fun launchNativeCheckout_notifiesErrorWhenPayPalRequestIsBaseClass_sendsAnalyticsEvents() { - val baseRequest: PayPalNativeRequest = object : PayPalNativeRequest() { + val baseRequest: PayPalNativeRequest = object : PayPalNativeRequest(true) { @Throws(JSONException::class) public override fun createRequestBody( configuration: Configuration, diff --git a/PayPalNativeCheckout/src/test/java/com/braintreepayments/api/PayPalNativeCheckoutInternalClientUnitTest.java b/PayPalNativeCheckout/src/test/java/com/braintreepayments/api/PayPalNativeCheckoutInternalClientUnitTest.java index a864f22acd..0451d01ea6 100644 --- a/PayPalNativeCheckout/src/test/java/com/braintreepayments/api/PayPalNativeCheckoutInternalClientUnitTest.java +++ b/PayPalNativeCheckout/src/test/java/com/braintreepayments/api/PayPalNativeCheckoutInternalClientUnitTest.java @@ -606,4 +606,25 @@ public void tokenize_onTokenizeError_returnsErrorToCallback() { verify(callback).onResult(isNull(), same(error)); } + + @Test + public void payPalDataCollector_passes_correct_arguments_to_getClientMetadataId() throws Exception { + Configuration configuration = Configuration.fromJson(Fixtures.CONFIGURATION_WITH_LIVE_PAYPAL); + BraintreeClient braintreeClient = new MockBraintreeClientBuilder() + .configuration(configuration) + .authorizationSuccess(clientToken) + .returnUrlScheme("sample-scheme") + .sendPOSTSuccessfulResponse(Fixtures.PAYPAL_HERMES_RESPONSE) + .build(); + + PayPalNativeCheckoutInternalClient sut = new PayPalNativeCheckoutInternalClient(braintreeClient, payPalDataCollector, apiClient); + + PayPalNativeCheckoutRequest payPalRequest = new PayPalNativeCheckoutRequest("1.00", true); + payPalRequest.setIntent("authorize"); + payPalRequest.setMerchantAccountId("sample-merchant-account-id"); + + sut.sendRequest(context, payPalRequest, payPalInternalClientCallback); + + verify(payPalDataCollector).getClientMetadataId(context, configuration, true); + } } \ No newline at end of file diff --git a/PayPalNativeCheckout/src/test/java/com/braintreepayments/api/PayPalVaultRequestUnitTest.java b/PayPalNativeCheckout/src/test/java/com/braintreepayments/api/PayPalVaultRequestUnitTest.java index 50667e55e3..b7f53a5b81 100644 --- a/PayPalNativeCheckout/src/test/java/com/braintreepayments/api/PayPalVaultRequestUnitTest.java +++ b/PayPalNativeCheckout/src/test/java/com/braintreepayments/api/PayPalVaultRequestUnitTest.java @@ -18,18 +18,25 @@ public class PayPalVaultRequestUnitTest { @Test public void newPayPalVaultRequest_setsDefaultValues() { - PayPalNativeCheckoutVaultRequest request = new PayPalNativeCheckoutVaultRequest(); + PayPalNativeCheckoutVaultRequest request = new PayPalNativeCheckoutVaultRequest(false); assertNull(request.getLocaleCode()); assertFalse(request.isShippingAddressRequired()); assertNull(request.getDisplayName()); assertFalse(request.getShouldOfferCredit()); + assertFalse(request.hasUserLocationConsent()); + } + + @Test + public void newPayPalNativeVaultRequest_without_hasUserLocationConsent_defaults_to_false() { + PayPalNativeCheckoutVaultRequest request = new PayPalNativeCheckoutVaultRequest(); + assertFalse(request.hasUserLocationConsent()); } @Test public void setsValuesCorrectly() { PostalAddress postalAddress = new PostalAddress(); - PayPalNativeCheckoutVaultRequest request = new PayPalNativeCheckoutVaultRequest(); + PayPalNativeCheckoutVaultRequest request = new PayPalNativeCheckoutVaultRequest(true); request.setLocaleCode("US"); request.setBillingAgreementDescription("Billing Agreement Description"); request.setShippingAddressRequired(true); @@ -44,11 +51,12 @@ public void setsValuesCorrectly() { assertEquals("Display Name", request.getDisplayName()); assertEquals("123-correlation", request.getRiskCorrelationId()); assertTrue(request.getShouldOfferCredit()); + assertTrue(request.hasUserLocationConsent()); } @Test public void parcelsCorrectly() { - PayPalNativeCheckoutVaultRequest request = new PayPalNativeCheckoutVaultRequest(); + PayPalNativeCheckoutVaultRequest request = new PayPalNativeCheckoutVaultRequest(true); request.setLocaleCode("en-US"); request.setBillingAgreementDescription("Billing Agreement Description"); request.setShippingAddressRequired(true); @@ -82,5 +90,6 @@ public void parcelsCorrectly() { assertEquals("merchant_account_id", result.getMerchantAccountId()); assertEquals(1, result.getLineItems().size()); assertEquals("An Item", result.getLineItems().get(0).getName()); + assertTrue(result.hasUserLocationConsent()); } } From 8b3589d095cb74a366245d842bbb8b515e51e8ef Mon Sep 17 00:00:00 2001 From: Tim Chow Date: Wed, 3 Apr 2024 14:19:51 -0500 Subject: [PATCH 03/10] Update Magnes SDK and Add Javadocs for the hasUserLocationConsent Param (#961) * Update Magnes SDK to 5.5.0 and add javadocs for the hasUserLocationConsent param in Local Payment and PayPal modules * Revert PayPalNative interface changes * Add docs for DataCollector and PayPalDataCollector * Update CHANGELOG.md to add Magnes version bump Co-authored-by: Sarah Koop * Bump Detekt to 1.23.6 for ignoring maxLineLength for comments that contain URLs --------- Co-authored-by: Sarah Koop --- .../braintreepayments/api/DataCollector.java | 2 + .../api/DataCollectorRequest.kt | 11 ++++++ CHANGELOG.md | 7 +--- .../api/LocalPaymentRequest.java | 8 +++- .../api/PayPalCheckoutRequest.java | 22 +++++++---- .../braintreepayments/api/PayPalRequest.java | 8 +++- .../api/PayPalVaultRequest.java | 8 +++- PayPalDataCollector/build.gradle | 2 +- ...-beta1.jar => android-magnessdk-5.5.0.jar} | Bin 154761 -> 154740 bytes .../api/PayPalDataCollector.java | 37 ++++++++++++++++-- .../api/PayPalDataCollectorRequest.kt | 11 ++++++ .../PayPalNativeCheckoutInternalClient.java | 2 +- .../api/PayPalNativeCheckoutRequest.java | 20 ---------- .../api/PayPalNativeCheckoutVaultRequest.java | 12 ------ .../api/PayPalNativeRequest.java | 10 +---- .../api/PayPalCheckoutRequestUnitTest.java | 15 ++----- .../api/PayPalNativeCheckoutClientUnitTest.kt | 4 +- ...lNativeCheckoutInternalClientUnitTest.java | 21 ---------- .../api/PayPalVaultRequestUnitTest.java | 15 ++----- build.gradle | 8 ++-- detekt/detekt-config.yml | 10 +---- 21 files changed, 110 insertions(+), 123 deletions(-) rename PayPalDataCollector/libs/{android-magnessdk-5.5.0-beta1.jar => android-magnessdk-5.5.0.jar} (86%) diff --git a/BraintreeDataCollector/src/main/java/com/braintreepayments/api/DataCollector.java b/BraintreeDataCollector/src/main/java/com/braintreepayments/api/DataCollector.java index b298df46fb..82edb590ff 100644 --- a/BraintreeDataCollector/src/main/java/com/braintreepayments/api/DataCollector.java +++ b/BraintreeDataCollector/src/main/java/com/braintreepayments/api/DataCollector.java @@ -108,6 +108,8 @@ public void collectDeviceData( * * @param context Android Context * @param configuration the merchant configuration + * @param dataCollectorRequest The {@link DataCollectorRequest} containing the configuration for + * the data collection request * @return The client metadata id associated with the collected data. */ private String getPayPalClientMetadataId( diff --git a/BraintreeDataCollector/src/main/java/com/braintreepayments/api/DataCollectorRequest.kt b/BraintreeDataCollector/src/main/java/com/braintreepayments/api/DataCollectorRequest.kt index e7886135b7..5cb553bc9d 100644 --- a/BraintreeDataCollector/src/main/java/com/braintreepayments/api/DataCollectorRequest.kt +++ b/BraintreeDataCollector/src/main/java/com/braintreepayments/api/DataCollectorRequest.kt @@ -1,5 +1,16 @@ package com.braintreepayments.api +/** + * Parameters needed when the SDK collects data for fraud identification purposes + * + * @property hasUserLocationConsent is an optional parameter that informs the SDK + * if your application has obtained consent from the user to collect location data in compliance with + * [Google Play Developer Program policies](https://support.google.com/googleplay/android-developer/answer/10144311#personal-sensitive) + * This flag enables PayPal to collect necessary information required for Fraud Detection and Risk Management. + * + * @see [User Data policies for the Google Play Developer Program](https://support.google.com/googleplay/android-developer/answer/10144311#personal-sensitive) + * @see [Examples of prominent in-app disclosures](https://support.google.com/googleplay/android-developer/answer/9799150?hl=en#Prominent%20in-app%20disclosure) + */ data class DataCollectorRequest( val hasUserLocationConsent: Boolean ) diff --git a/CHANGELOG.md b/CHANGELOG.md index 138151cad0..f28bac07f9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,6 @@ ## unreleased - * Local Payment * Fixes Google Play Store Rejection * See [developer documentation](link) for required updates for user location data compliance @@ -13,12 +12,8 @@ * See [developer documentation](link) for required updates for user location data compliance * Add `hasUserLocationConsent` property to `PayPalCheckoutRequest`, `PayPalVaultRequest` and `PayPalRequest` * Deprecate existing constructors that do not pass in `hasUserLocationConsent` -* PayPalNativeCheckout - * Fixes Google Play Store Rejection - * See [developer documentation](link) for required updates for user location data compliance - * Add `hasUserLocationConsent` property to `PayPalNativeCheckoutRequest`, `PayPalNativeVaultRequest` and `PayPalNativeCheckoutRequest` - * Deprecate existing constructors that do not pass in `hasUserLocationConsent` * BraintreeDataCollector + * Bump Magnes SDK to version 5.5.0 * Fixes Google Play Store Rejection * See [developer documentation](link) for required updates for user location data compliance * Add `DataCollectorRequest` to pass in `hasUserLocationConsent` diff --git a/LocalPayment/src/main/java/com/braintreepayments/api/LocalPaymentRequest.java b/LocalPayment/src/main/java/com/braintreepayments/api/LocalPaymentRequest.java index 4086b49781..fafd5e36d8 100644 --- a/LocalPayment/src/main/java/com/braintreepayments/api/LocalPaymentRequest.java +++ b/LocalPayment/src/main/java/com/braintreepayments/api/LocalPaymentRequest.java @@ -56,7 +56,13 @@ public LocalPaymentRequest() { } /** - * TODO: add javadoc for hasUserLocationConsent param + * @param hasUserLocationConsent is an optional parameter that informs the SDK + * if your application has obtained consent from the user to collect location data in compliance with + * Google Play Developer Program policies + * This flag enables PayPal to collect necessary information required for Fraud Detection and Risk Management. + * + * @see User Data policies for the Google Play Developer Program + * @see Examples of prominent in-app disclosures */ public LocalPaymentRequest(boolean hasUserLocationConsent) { this.hasUserLocationConsent = hasUserLocationConsent; diff --git a/PayPal/src/main/java/com/braintreepayments/api/PayPalCheckoutRequest.java b/PayPal/src/main/java/com/braintreepayments/api/PayPalCheckoutRequest.java index d32aecbf90..22cbab5123 100644 --- a/PayPal/src/main/java/com/braintreepayments/api/PayPalCheckoutRequest.java +++ b/PayPal/src/main/java/com/braintreepayments/api/PayPalCheckoutRequest.java @@ -68,14 +68,20 @@ public PayPalCheckoutRequest(@NonNull String amount) { /** * @param amount The transaction amount in currency units (as * determined by setCurrencyCode). - * For example, "1.20" corresponds to one dollar and twenty cents. Amount must be a non-negative - * number, may optionally contain exactly 2 decimal places separated by '.' and is - * limited to 7 digits before the decimal point. - *

- * This amount may differ slightly from the transaction amount. The exact decline rules - * for mismatches between this client-side amount and the final amount in the Transaction - * are determined by the gateway. - * TODO: add javadoc for hasUserLocationConsent param + * For example, "1.20" corresponds to one dollar and twenty cents. Amount must be a non-negative + * number, may optionally contain exactly 2 decimal places separated by '.' and is + * limited to 7 digits before the decimal point. + *

+ * This amount may differ slightly from the transaction amount. The exact decline rules + * for mismatches between this client-side amount and the final amount in the Transaction + * are determined by the gateway. + * @param hasUserLocationConsent is an optional parameter that informs the SDK + * if your application has obtained consent from the user to collect location data in compliance with + * Google Play Developer Program policies + * This flag enables PayPal to collect necessary information required for Fraud Detection and Risk Management. + * + * @see User Data policies for the Google Play Developer Program + * @see Examples of prominent in-app disclosures */ public PayPalCheckoutRequest(@NonNull String amount, boolean hasUserLocationConsent) { super(hasUserLocationConsent); diff --git a/PayPal/src/main/java/com/braintreepayments/api/PayPalRequest.java b/PayPal/src/main/java/com/braintreepayments/api/PayPalRequest.java index 456c3df445..8b095ac980 100644 --- a/PayPal/src/main/java/com/braintreepayments/api/PayPalRequest.java +++ b/PayPal/src/main/java/com/braintreepayments/api/PayPalRequest.java @@ -87,7 +87,13 @@ public PayPalRequest() { /** * Constructs a request for PayPal Checkout and Vault flows. * - * TODO: add javadoc for hasUserLocationConsent param + * @param hasUserLocationConsent is an optional parameter that informs the SDK + * if your application has obtained consent from the user to collect location data in compliance with + * Google Play Developer Program policies + * This flag enables PayPal to collect necessary information required for Fraud Detection and Risk Management. + * + * @see User Data policies for the Google Play Developer Program + * @see Examples of prominent in-app disclosures */ public PayPalRequest(boolean hasUserLocationConsent) { shippingAddressRequired = false; diff --git a/PayPal/src/main/java/com/braintreepayments/api/PayPalVaultRequest.java b/PayPal/src/main/java/com/braintreepayments/api/PayPalVaultRequest.java index da17d29a1b..a322cac16e 100644 --- a/PayPal/src/main/java/com/braintreepayments/api/PayPalVaultRequest.java +++ b/PayPal/src/main/java/com/braintreepayments/api/PayPalVaultRequest.java @@ -27,7 +27,13 @@ public PayPalVaultRequest() { } /** - * TODO: add javadoc for hasUserLocationConsent param + * @param hasUserLocationConsent is an optional parameter that informs the SDK + * if your application has obtained consent from the user to collect location data in compliance with + * Google Play Developer Program policies + * This flag enables PayPal to collect necessary information required for Fraud Detection and Risk Management. + * + * @see User Data policies for the Google Play Developer Program + * @see Examples of prominent in-app disclosures */ public PayPalVaultRequest(boolean hasUserLocationConsent) { super(hasUserLocationConsent); diff --git a/PayPalDataCollector/build.gradle b/PayPalDataCollector/build.gradle index 91542a021a..2c89680d20 100644 --- a/PayPalDataCollector/build.gradle +++ b/PayPalDataCollector/build.gradle @@ -36,7 +36,7 @@ android { } dependencies { - implementation files('libs/android-magnessdk-5.5.0-beta1.jar') + implementation files('libs/android-magnessdk-5.5.0.jar') implementation deps.annotation api project(':BraintreeCore') diff --git a/PayPalDataCollector/libs/android-magnessdk-5.5.0-beta1.jar b/PayPalDataCollector/libs/android-magnessdk-5.5.0.jar similarity index 86% rename from PayPalDataCollector/libs/android-magnessdk-5.5.0-beta1.jar rename to PayPalDataCollector/libs/android-magnessdk-5.5.0.jar index 1cc848f93936fe9757b31d1de542923d44f2e31d..321d04ea518a1494e222cb716d77c48d464a77e7 100644 GIT binary patch delta 16072 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 LgLyyp>3{k^IDjKv diff --git a/PayPalDataCollector/src/main/java/com/braintreepayments/api/PayPalDataCollector.java b/PayPalDataCollector/src/main/java/com/braintreepayments/api/PayPalDataCollector.java index 96880870ed..6a19326390 100644 --- a/PayPalDataCollector/src/main/java/com/braintreepayments/api/PayPalDataCollector.java +++ b/PayPalDataCollector/src/main/java/com/braintreepayments/api/PayPalDataCollector.java @@ -45,8 +45,14 @@ String getPayPalInstallationGUID(Context context) { * "future payment") from a mobile device. Pass the result to your server, to include in the * payment request sent to PayPal. Do not otherwise cache or store this value. * - * @param context Android Context - * @param configuration The merchant configuration + * @param context Android Context + * @param configuration The merchant configuration + * @param hasUserLocationConsent is an optional parameter that informs the SDK + * if your application has obtained consent from the user to collect location data in compliance with + * Google Play Developer Program policies + * This flag enables PayPal to collect necessary information required for Fraud Detection and Risk Management. + * @see User Data policies for the Google Play Developer Program + * @see Examples of prominent in-app disclosures */ @MainThread String getClientMetadataId( @@ -55,7 +61,7 @@ String getClientMetadataId( boolean hasUserLocationConsent ) { PayPalDataCollectorInternalRequest request = new PayPalDataCollectorInternalRequest(hasUserLocationConsent) - .setApplicationGuid(getPayPalInstallationGUID(context)); + .setApplicationGuid(getPayPalInstallationGUID(context)); return getClientMetadataId(context, request, configuration); } @@ -96,6 +102,18 @@ public void collectDeviceData( collectDeviceData(context, request, null, callback); } + /** + * Collects device data based on your merchant configuration. + *

+ * We recommend that you call this method as early as possible, e.g. at app launch. If that's too early, + * call it at the beginning of customer checkout. + *

+ * Use the return value on your server, e.g. with `Transaction.sale`. + * + * @param context Android Context + * @param payPalDataCollectorRequest params for the data collection request + * @param callback {@link PayPalDataCollectorCallback} + */ public void collectDeviceData( @NonNull final Context context, @NonNull final PayPalDataCollectorRequest payPalDataCollectorRequest, @@ -125,6 +143,19 @@ public void collectDeviceData( collectDeviceData(context, request, riskCorrelationId, callback); } + /** + * Collects device data for PayPal APIs. + *

+ * We recommend that you call this method as early as possible, e.g. at app launch. If that's too early, + * call it at the beginning of customer checkout. + *

+ * Use the return value on your server, e.g. with `Transaction.sale`. + * + * @param context Android Context + * @param payPalDataCollectorRequest params for the data collection request + * @param riskCorrelationId Optional client metadata id + * @param callback {@link PayPalDataCollectorCallback} + */ public void collectDeviceData( @NonNull final Context context, @NonNull final PayPalDataCollectorRequest payPalDataCollectorRequest, diff --git a/PayPalDataCollector/src/main/java/com/braintreepayments/api/PayPalDataCollectorRequest.kt b/PayPalDataCollector/src/main/java/com/braintreepayments/api/PayPalDataCollectorRequest.kt index 3bc02aaf60..8c4678f04b 100644 --- a/PayPalDataCollector/src/main/java/com/braintreepayments/api/PayPalDataCollectorRequest.kt +++ b/PayPalDataCollector/src/main/java/com/braintreepayments/api/PayPalDataCollectorRequest.kt @@ -1,5 +1,16 @@ package com.braintreepayments.api +/** + * Parameters needed when the SDK collects data for fraud identification purposes + * + * @property hasUserLocationConsent is an optional parameter that informs the SDK + * if your application has obtained consent from the user to collect location data in compliance with + * [Google Play Developer Program policies](https://support.google.com/googleplay/android-developer/answer/10144311#personal-sensitive) + * This flag enables PayPal to collect necessary information required for Fraud Detection and Risk Management. + * + * @see [User Data policies for the Google Play Developer Program](https://support.google.com/googleplay/android-developer/answer/10144311#personal-sensitive) + * @see [Examples of prominent in-app disclosures](https://support.google.com/googleplay/android-developer/answer/9799150?hl=en#Prominent%20in-app%20disclosure) + */ data class PayPalDataCollectorRequest( val hasUserLocationConsent: Boolean ) diff --git a/PayPalNativeCheckout/src/main/java/com/braintreepayments/api/PayPalNativeCheckoutInternalClient.java b/PayPalNativeCheckout/src/main/java/com/braintreepayments/api/PayPalNativeCheckoutInternalClient.java index 7b8c4a37ae..65dad0d372 100644 --- a/PayPalNativeCheckout/src/main/java/com/braintreepayments/api/PayPalNativeCheckoutInternalClient.java +++ b/PayPalNativeCheckout/src/main/java/com/braintreepayments/api/PayPalNativeCheckoutInternalClient.java @@ -60,7 +60,7 @@ void sendRequest(final Context context, final PayPalNativeRequest payPalRequest, String pairingIdKey = isBillingAgreement ? "ba_token" : "token"; String pairingId = parsedRedirectUri.getQueryParameter(pairingIdKey); String clientMetadataId = payPalRequest.getRiskCorrelationId() != null - ? payPalRequest.getRiskCorrelationId() : payPalDataCollector.getClientMetadataId(context, configuration, payPalRequest.hasUserLocationConsent()); + ? payPalRequest.getRiskCorrelationId() : payPalDataCollector.getClientMetadataId(context, configuration, false); if (pairingId != null) { payPalResponse diff --git a/PayPalNativeCheckout/src/main/java/com/braintreepayments/api/PayPalNativeCheckoutRequest.java b/PayPalNativeCheckout/src/main/java/com/braintreepayments/api/PayPalNativeCheckoutRequest.java index 364faa8a82..07677fe218 100644 --- a/PayPalNativeCheckout/src/main/java/com/braintreepayments/api/PayPalNativeCheckoutRequest.java +++ b/PayPalNativeCheckout/src/main/java/com/braintreepayments/api/PayPalNativeCheckoutRequest.java @@ -49,8 +49,6 @@ public class PayPalNativeCheckoutRequest extends PayPalNativeRequest implements private boolean shouldOfferPayLater; /** - * Deprecated. Use {@link PayPalNativeCheckoutRequest#PayPalNativeCheckoutRequest(String, boolean)} instead. - * * @param amount The transaction amount in currency units (as * determined by setCurrencyCode). * For example, "1.20" corresponds to one dollar and twenty cents. Amount must be a non-negative * number, may optionally contain exactly 2 decimal places separated by '.' and is @@ -60,25 +58,7 @@ public class PayPalNativeCheckoutRequest extends PayPalNativeRequest implements * for mismatches between this client-side amount and the final amount in the Transaction * are determined by the gateway. **/ - @Deprecated public PayPalNativeCheckoutRequest(@NonNull String amount) { - super(false); - this.amount = amount; - } - - /** - * @param amount The transaction amount in currency units (as * determined by setCurrencyCode). - * For example, "1.20" corresponds to one dollar and twenty cents. Amount must be a non-negative - * number, may optionally contain exactly 2 decimal places separated by '.' and is - * limited to 7 digits before the decimal point. - *

- * This amount may differ slightly from the transaction amount. The exact decline rules - * for mismatches between this client-side amount and the final amount in the Transaction - * are determined by the gateway. - * TODO: add javadoc for hasUserLocationConsent param - **/ - public PayPalNativeCheckoutRequest(@NonNull String amount, boolean hasUserLocationConsent) { - super(hasUserLocationConsent); this.amount = amount; } diff --git a/PayPalNativeCheckout/src/main/java/com/braintreepayments/api/PayPalNativeCheckoutVaultRequest.java b/PayPalNativeCheckout/src/main/java/com/braintreepayments/api/PayPalNativeCheckoutVaultRequest.java index 04c612bd60..e3ea362ef0 100644 --- a/PayPalNativeCheckout/src/main/java/com/braintreepayments/api/PayPalNativeCheckoutVaultRequest.java +++ b/PayPalNativeCheckout/src/main/java/com/braintreepayments/api/PayPalNativeCheckoutVaultRequest.java @@ -14,19 +14,7 @@ public class PayPalNativeCheckoutVaultRequest extends PayPalNativeRequest implem private boolean shouldOfferCredit; - /** - * Deprecated. Use {@link PayPalNativeCheckoutVaultRequest#PayPalNativeCheckoutVaultRequest(boolean)} instead. - */ - @Deprecated public PayPalNativeCheckoutVaultRequest() { - super(false); - } - - /** - * TODO: add javadoc for hasUserLocationConsent param - */ - public PayPalNativeCheckoutVaultRequest(boolean hasUserLocationConsent) { - super(hasUserLocationConsent); } /** diff --git a/PayPalNativeCheckout/src/main/java/com/braintreepayments/api/PayPalNativeRequest.java b/PayPalNativeCheckout/src/main/java/com/braintreepayments/api/PayPalNativeRequest.java index 3a7a3618be..49df278554 100644 --- a/PayPalNativeCheckout/src/main/java/com/braintreepayments/api/PayPalNativeRequest.java +++ b/PayPalNativeCheckout/src/main/java/com/braintreepayments/api/PayPalNativeRequest.java @@ -52,16 +52,13 @@ public abstract class PayPalNativeRequest implements Parcelable { private final ArrayList lineItems; private String returnUrl; private String userAuthenticationEmail; - private final boolean hasUserLocationConsent; - /** * Constructs a request for PayPal Checkout and Vault flows. */ - public PayPalNativeRequest(boolean hasUserLocationConsent) { + public PayPalNativeRequest() { shippingAddressRequired = false; lineItems = new ArrayList<>(); - this.hasUserLocationConsent = hasUserLocationConsent; } /** @@ -259,9 +256,6 @@ public ArrayList getLineItems() { return lineItems; } - public boolean hasUserLocationConsent() { - return hasUserLocationConsent; - } abstract String createRequestBody(Configuration configuration, Authorization authorization, String successUrl, String cancelUrl) throws JSONException; @@ -278,7 +272,6 @@ protected PayPalNativeRequest(Parcel in) { lineItems = in.createTypedArrayList(PayPalNativeCheckoutLineItem.CREATOR); returnUrl = in.readString(); userAuthenticationEmail = in.readString(); - hasUserLocationConsent = in.readByte() != 0; } @Override @@ -300,6 +293,5 @@ public void writeToParcel(Parcel parcel, int i) { parcel.writeTypedList(lineItems); parcel.writeString(returnUrl); parcel.writeString(userAuthenticationEmail); - parcel.writeByte((byte) (hasUserLocationConsent ? 1 : 0)); } } diff --git a/PayPalNativeCheckout/src/test/java/com/braintreepayments/api/PayPalCheckoutRequestUnitTest.java b/PayPalNativeCheckout/src/test/java/com/braintreepayments/api/PayPalCheckoutRequestUnitTest.java index 6208027701..65cb221878 100644 --- a/PayPalNativeCheckout/src/test/java/com/braintreepayments/api/PayPalCheckoutRequestUnitTest.java +++ b/PayPalNativeCheckout/src/test/java/com/braintreepayments/api/PayPalCheckoutRequestUnitTest.java @@ -19,7 +19,7 @@ public class PayPalCheckoutRequestUnitTest { @Test public void newPayPalCheckoutRequest_setsDefaultValues() { - PayPalNativeCheckoutRequest request = new PayPalNativeCheckoutRequest("1.00", false); + PayPalNativeCheckoutRequest request = new PayPalNativeCheckoutRequest("1.00"); assertNotNull(request.getAmount()); assertNull(request.getCurrencyCode()); @@ -29,18 +29,11 @@ public void newPayPalCheckoutRequest_setsDefaultValues() { assertEquals(PayPalNativeCheckoutPaymentIntent.AUTHORIZE, request.getIntent()); assertNull(request.getBillingAgreementDescription()); assertFalse(request.getShouldOfferPayLater()); - assertFalse(request.hasUserLocationConsent()); - } - - @Test - public void newPayPalCheckoutRequest_without_hasUserLocationConsent_defaults_to_false() { - PayPalNativeCheckoutRequest request = new PayPalNativeCheckoutRequest("1.00"); - assertFalse(request.hasUserLocationConsent()); } @Test public void setsValuesCorrectly() { - PayPalNativeCheckoutRequest request = new PayPalNativeCheckoutRequest("1.00", true); + PayPalNativeCheckoutRequest request = new PayPalNativeCheckoutRequest("1.00"); request.setCurrencyCode("USD"); request.setShouldOfferPayLater(true); request.setIntent(PayPalNativeCheckoutPaymentIntent.SALE); @@ -81,12 +74,11 @@ public void setsValuesCorrectly() { assertEquals("CA", request.getShippingAddressOverride().getRegion()); assertEquals("US", request.getShippingAddressOverride().getCountryCodeAlpha2()); assertTrue(request.getShouldOfferPayLater()); - assertTrue(request.hasUserLocationConsent()); } @Test public void parcelsCorrectly() { - PayPalNativeCheckoutRequest request = new PayPalNativeCheckoutRequest("12.34", true); + PayPalNativeCheckoutRequest request = new PayPalNativeCheckoutRequest("12.34"); request.setCurrencyCode("USD"); request.setLocaleCode("en-US"); request.setBillingAgreementDescription("Billing Agreement Description"); @@ -125,6 +117,5 @@ public void parcelsCorrectly() { assertEquals("merchant_account_id", result.getMerchantAccountId()); assertEquals(1, result.getLineItems().size()); assertEquals("An Item", result.getLineItems().get(0).getName()); - assertTrue(result.hasUserLocationConsent()); } } diff --git a/PayPalNativeCheckout/src/test/java/com/braintreepayments/api/PayPalNativeCheckoutClientUnitTest.kt b/PayPalNativeCheckout/src/test/java/com/braintreepayments/api/PayPalNativeCheckoutClientUnitTest.kt index 45d78f36fd..33d86235a7 100644 --- a/PayPalNativeCheckout/src/test/java/com/braintreepayments/api/PayPalNativeCheckoutClientUnitTest.kt +++ b/PayPalNativeCheckout/src/test/java/com/braintreepayments/api/PayPalNativeCheckoutClientUnitTest.kt @@ -58,7 +58,7 @@ class PayPalNativeCheckoutClientUnitTest { @Test fun tokenizePayPalAccount_throwsWhenPayPalRequestIsBaseClass() { - val baseRequest: PayPalNativeRequest = object : PayPalNativeRequest(true) { + val baseRequest: PayPalNativeRequest = object : PayPalNativeRequest() { @Throws(JSONException::class) public override fun createRequestBody( configuration: Configuration, @@ -346,7 +346,7 @@ class PayPalNativeCheckoutClientUnitTest { @Test fun launchNativeCheckout_notifiesErrorWhenPayPalRequestIsBaseClass_sendsAnalyticsEvents() { - val baseRequest: PayPalNativeRequest = object : PayPalNativeRequest(true) { + val baseRequest: PayPalNativeRequest = object : PayPalNativeRequest() { @Throws(JSONException::class) public override fun createRequestBody( configuration: Configuration, diff --git a/PayPalNativeCheckout/src/test/java/com/braintreepayments/api/PayPalNativeCheckoutInternalClientUnitTest.java b/PayPalNativeCheckout/src/test/java/com/braintreepayments/api/PayPalNativeCheckoutInternalClientUnitTest.java index 0451d01ea6..a864f22acd 100644 --- a/PayPalNativeCheckout/src/test/java/com/braintreepayments/api/PayPalNativeCheckoutInternalClientUnitTest.java +++ b/PayPalNativeCheckout/src/test/java/com/braintreepayments/api/PayPalNativeCheckoutInternalClientUnitTest.java @@ -606,25 +606,4 @@ public void tokenize_onTokenizeError_returnsErrorToCallback() { verify(callback).onResult(isNull(), same(error)); } - - @Test - public void payPalDataCollector_passes_correct_arguments_to_getClientMetadataId() throws Exception { - Configuration configuration = Configuration.fromJson(Fixtures.CONFIGURATION_WITH_LIVE_PAYPAL); - BraintreeClient braintreeClient = new MockBraintreeClientBuilder() - .configuration(configuration) - .authorizationSuccess(clientToken) - .returnUrlScheme("sample-scheme") - .sendPOSTSuccessfulResponse(Fixtures.PAYPAL_HERMES_RESPONSE) - .build(); - - PayPalNativeCheckoutInternalClient sut = new PayPalNativeCheckoutInternalClient(braintreeClient, payPalDataCollector, apiClient); - - PayPalNativeCheckoutRequest payPalRequest = new PayPalNativeCheckoutRequest("1.00", true); - payPalRequest.setIntent("authorize"); - payPalRequest.setMerchantAccountId("sample-merchant-account-id"); - - sut.sendRequest(context, payPalRequest, payPalInternalClientCallback); - - verify(payPalDataCollector).getClientMetadataId(context, configuration, true); - } } \ No newline at end of file diff --git a/PayPalNativeCheckout/src/test/java/com/braintreepayments/api/PayPalVaultRequestUnitTest.java b/PayPalNativeCheckout/src/test/java/com/braintreepayments/api/PayPalVaultRequestUnitTest.java index b7f53a5b81..50667e55e3 100644 --- a/PayPalNativeCheckout/src/test/java/com/braintreepayments/api/PayPalVaultRequestUnitTest.java +++ b/PayPalNativeCheckout/src/test/java/com/braintreepayments/api/PayPalVaultRequestUnitTest.java @@ -18,25 +18,18 @@ public class PayPalVaultRequestUnitTest { @Test public void newPayPalVaultRequest_setsDefaultValues() { - PayPalNativeCheckoutVaultRequest request = new PayPalNativeCheckoutVaultRequest(false); + PayPalNativeCheckoutVaultRequest request = new PayPalNativeCheckoutVaultRequest(); assertNull(request.getLocaleCode()); assertFalse(request.isShippingAddressRequired()); assertNull(request.getDisplayName()); assertFalse(request.getShouldOfferCredit()); - assertFalse(request.hasUserLocationConsent()); - } - - @Test - public void newPayPalNativeVaultRequest_without_hasUserLocationConsent_defaults_to_false() { - PayPalNativeCheckoutVaultRequest request = new PayPalNativeCheckoutVaultRequest(); - assertFalse(request.hasUserLocationConsent()); } @Test public void setsValuesCorrectly() { PostalAddress postalAddress = new PostalAddress(); - PayPalNativeCheckoutVaultRequest request = new PayPalNativeCheckoutVaultRequest(true); + PayPalNativeCheckoutVaultRequest request = new PayPalNativeCheckoutVaultRequest(); request.setLocaleCode("US"); request.setBillingAgreementDescription("Billing Agreement Description"); request.setShippingAddressRequired(true); @@ -51,12 +44,11 @@ public void setsValuesCorrectly() { assertEquals("Display Name", request.getDisplayName()); assertEquals("123-correlation", request.getRiskCorrelationId()); assertTrue(request.getShouldOfferCredit()); - assertTrue(request.hasUserLocationConsent()); } @Test public void parcelsCorrectly() { - PayPalNativeCheckoutVaultRequest request = new PayPalNativeCheckoutVaultRequest(true); + PayPalNativeCheckoutVaultRequest request = new PayPalNativeCheckoutVaultRequest(); request.setLocaleCode("en-US"); request.setBillingAgreementDescription("Billing Agreement Description"); request.setShippingAddressRequired(true); @@ -90,6 +82,5 @@ public void parcelsCorrectly() { assertEquals("merchant_account_id", result.getMerchantAccountId()); assertEquals(1, result.getLineItems().size()); assertEquals("An Item", result.getLineItems().get(0).getName()); - assertTrue(result.hasUserLocationConsent()); } } diff --git a/build.gradle b/build.gradle index 38f4bcecdd..eb66098768 100644 --- a/build.gradle +++ b/build.gradle @@ -71,7 +71,7 @@ buildscript { plugins { id 'org.jetbrains.dokka' version '1.7.10' id 'io.github.gradle-nexus.publish-plugin' version '1.1.0' - id 'io.gitlab.arturbosch.detekt' version '1.22.0' + id 'io.gitlab.arturbosch.detekt' version '1.23.6' } ext["signing.keyId"] = System.getenv('SIGNING_KEY_ID') ?: '' @@ -112,12 +112,12 @@ nexusPublishing { } dependencies { - detektPlugins "io.gitlab.arturbosch.detekt:detekt-formatting:1.22.0" - detektPlugins "io.gitlab.arturbosch.detekt:detekt-rules-libraries:1.22.0" + detektPlugins "io.gitlab.arturbosch.detekt:detekt-formatting:1.23.6" + detektPlugins "io.gitlab.arturbosch.detekt:detekt-rules-libraries:1.23.6" } detekt { - toolVersion = "1.22.0" + toolVersion = "1.23.6" config = files("detekt/detekt-config.yml") input = files( "BraintreeCore/src", diff --git a/detekt/detekt-config.yml b/detekt/detekt-config.yml index 31428a8263..1c814ccefd 100644 --- a/detekt/detekt-config.yml +++ b/detekt/detekt-config.yml @@ -406,7 +406,6 @@ naming: parameterPattern: '[a-z][A-Za-z0-9]*' privateParameterPattern: '[a-z][A-Za-z0-9]*' excludeClassPattern: '$^' - ignoreOverridden: true EnumNaming: active: true excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] @@ -428,7 +427,6 @@ naming: excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] functionPattern: '([a-z][a-zA-Z0-9]*)|(`.*`)' excludeClassPattern: '$^' - ignoreOverridden: true ignoreAnnotated: - 'Composable' FunctionParameterNaming: @@ -436,7 +434,6 @@ naming: excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**'] parameterPattern: '[a-z][A-Za-z0-9]*' excludeClassPattern: '$^' - ignoreOverridden: true InvalidPackageDeclaration: active: false excludes: ['**/*.kts'] @@ -482,7 +479,6 @@ naming: variablePattern: '[a-z][A-Za-z0-9]*' privateVariablePattern: '(_)?[a-z][A-Za-z0-9]*' excludeClassPattern: '$^' - ignoreOverridden: true performance: active: true @@ -598,7 +594,7 @@ style: includeLineWrapping: false ForbiddenComment: active: true - values: + comments: - 'FIXME:' - 'STOPSHIP:' allowedPatterns: '' @@ -644,8 +640,6 @@ style: ignoreEnums: false ignoreRanges: false ignoreExtensionFunctions: true - MandatoryBracesIfStatements: - active: false MandatoryBracesLoops: active: false MaxLineLength: @@ -672,8 +666,6 @@ style: active: true OptionalUnit: active: false - OptionalWhenBraces: - active: false PreferToOverPairSyntax: active: false ProtectedMemberInFinalClass: From 335aecf7d6f22c50b13ce9db62f04d376eed4169 Mon Sep 17 00:00:00 2001 From: Timothy Chow Date: Wed, 3 Apr 2024 14:52:37 -0500 Subject: [PATCH 04/10] Remove changlog links to developer docs for the Google Play Store Rejection fix --- CHANGELOG.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7266749802..2069d8e8e2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,24 +4,20 @@ * Local Payment * Fixes Google Play Store Rejection - * See [developer documentation](link) for required updates for user location data compliance * Add `hasUserLocationConsent` property to `LocalPaymentRequest` * Deprecate existing constructor that does not pass in `hasUserLocationConsent` * PayPal * Fixes Google Play Store Rejection - * See [developer documentation](link) for required updates for user location data compliance * Add `hasUserLocationConsent` property to `PayPalCheckoutRequest`, `PayPalVaultRequest` and `PayPalRequest` * Deprecate existing constructors that do not pass in `hasUserLocationConsent` * BraintreeDataCollector * Bump Magnes SDK to version 5.5.0 * Fixes Google Play Store Rejection - * See [developer documentation](link) for required updates for user location data compliance * Add `DataCollectorRequest` to pass in `hasUserLocationConsent` * Update `DataCollector.collectDeviceData()` to take in `DataCollectorRequest` * Deprecate existing `DataCollector.collectDeviceData()` * PayPalDataCollector * Fixes Google Play Store Rejection - * See [developer documentation](link) for required updates for user location data compliance * Add `PayPalDataCollectorRequest` to pass in `hasUserLocationConsent` * Update `PayPalDataCollector.collectDeviceData()` to take in `PayPalDataCollectorRequest` * Deprecate existing `PayPalDataCollector.collectDeviceData()` From 9568ac34a54cb2cba01d3fdf171736f909d823c9 Mon Sep 17 00:00:00 2001 From: Tim Chow Date: Wed, 3 Apr 2024 15:39:51 -0500 Subject: [PATCH 05/10] Update PayPal/src/main/java/com/braintreepayments/api/PayPalCheckoutRequest.java Co-authored-by: Sarah Koop --- .../java/com/braintreepayments/api/PayPalCheckoutRequest.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/PayPal/src/main/java/com/braintreepayments/api/PayPalCheckoutRequest.java b/PayPal/src/main/java/com/braintreepayments/api/PayPalCheckoutRequest.java index 22cbab5123..7ec42d969b 100644 --- a/PayPal/src/main/java/com/braintreepayments/api/PayPalCheckoutRequest.java +++ b/PayPal/src/main/java/com/braintreepayments/api/PayPalCheckoutRequest.java @@ -62,8 +62,7 @@ public class PayPalCheckoutRequest extends PayPalRequest implements Parcelable { */ @Deprecated public PayPalCheckoutRequest(@NonNull String amount) { - super(false); - this.amount = amount; + this(amount, false); } /** From d3294535f561d5ece126cc50bfa2fcfaed912088 Mon Sep 17 00:00:00 2001 From: Timothy Chow Date: Wed, 3 Apr 2024 15:49:34 -0500 Subject: [PATCH 06/10] Use new constructor for LocalPaymentRequest --- .../java/com/braintreepayments/api/LocalPaymentRequest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LocalPayment/src/main/java/com/braintreepayments/api/LocalPaymentRequest.java b/LocalPayment/src/main/java/com/braintreepayments/api/LocalPaymentRequest.java index fafd5e36d8..496571d3ef 100644 --- a/LocalPayment/src/main/java/com/braintreepayments/api/LocalPaymentRequest.java +++ b/LocalPayment/src/main/java/com/braintreepayments/api/LocalPaymentRequest.java @@ -52,7 +52,7 @@ public class LocalPaymentRequest { **/ @Deprecated public LocalPaymentRequest() { - hasUserLocationConsent = false; + this(false); } /** From f2097f6eba1a28755c1db37e49eef515b8598c85 Mon Sep 17 00:00:00 2001 From: Tim Chow Date: Thu, 4 Apr 2024 09:01:02 -0500 Subject: [PATCH 07/10] Fix indent for Google Play changelog Co-authored-by: Sarah Koop --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2069d8e8e2..4616282d4b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,8 +22,8 @@ * Update `PayPalDataCollector.collectDeviceData()` to take in `PayPalDataCollectorRequest` * Deprecate existing `PayPalDataCollector.collectDeviceData()` * GooglePay - * Add `GooglePayClient#isReadyToPay(Context, ReadyForGooglePayRequest, GooglePayIsReadyToPayCallback)` method - * Deprecate `GooglePayClient#isReadyToPay(FragmentActivity, ReadyForGooglePayRequest, GooglePayIsReadyToPayCallback)` method + * Add `GooglePayClient#isReadyToPay(Context, ReadyForGooglePayRequest, GooglePayIsReadyToPayCallback)` method + * Deprecate `GooglePayClient#isReadyToPay(FragmentActivity, ReadyForGooglePayRequest, GooglePayIsReadyToPayCallback)` method ## 4.43.0 (2024-03-19) From 730042b3db3998c893a31a3bf019b40b19b12112 Mon Sep 17 00:00:00 2001 From: Tim Chow Date: Thu, 4 Apr 2024 09:35:40 -0500 Subject: [PATCH 08/10] Remove internal javadoc Co-authored-by: Sarah Koop --- .../api/PayPalDataCollectorInternalRequest.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/PayPalDataCollector/src/main/java/com/braintreepayments/api/PayPalDataCollectorInternalRequest.java b/PayPalDataCollector/src/main/java/com/braintreepayments/api/PayPalDataCollectorInternalRequest.java index b381483896..e3587b26d0 100644 --- a/PayPalDataCollector/src/main/java/com/braintreepayments/api/PayPalDataCollectorInternalRequest.java +++ b/PayPalDataCollector/src/main/java/com/braintreepayments/api/PayPalDataCollectorInternalRequest.java @@ -15,9 +15,6 @@ class PayPalDataCollectorInternalRequest { final private boolean hasUserLocationConsent; private HashMap additionalData; - /** - * @param hasUserLocationConsent Indicates if the beacon feature should be disabled. - */ PayPalDataCollectorInternalRequest(boolean hasUserLocationConsent) { this.hasUserLocationConsent = hasUserLocationConsent; } From 45665818186cf94e0d506b2dd298135330656a3a Mon Sep 17 00:00:00 2001 From: Timothy Chow Date: Thu, 4 Apr 2024 10:06:49 -0500 Subject: [PATCH 09/10] Fix indent for Google Play changelog and move riskCorrelationId into PayPalDataCollector --- CHANGELOG.md | 4 +- .../api/PayPalDataCollector.java | 38 ++++++------------- .../api/PayPalDataCollectorRequest.kt | 5 ++- .../api/PayPalDataCollectorUnitTest.java | 33 +++++++++++++++- 4 files changed, 48 insertions(+), 32 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2069d8e8e2..4616282d4b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,8 +22,8 @@ * Update `PayPalDataCollector.collectDeviceData()` to take in `PayPalDataCollectorRequest` * Deprecate existing `PayPalDataCollector.collectDeviceData()` * GooglePay - * Add `GooglePayClient#isReadyToPay(Context, ReadyForGooglePayRequest, GooglePayIsReadyToPayCallback)` method - * Deprecate `GooglePayClient#isReadyToPay(FragmentActivity, ReadyForGooglePayRequest, GooglePayIsReadyToPayCallback)` method + * Add `GooglePayClient#isReadyToPay(Context, ReadyForGooglePayRequest, GooglePayIsReadyToPayCallback)` method + * Deprecate `GooglePayClient#isReadyToPay(FragmentActivity, ReadyForGooglePayRequest, GooglePayIsReadyToPayCallback)` method ## 4.43.0 (2024-03-19) diff --git a/PayPalDataCollector/src/main/java/com/braintreepayments/api/PayPalDataCollector.java b/PayPalDataCollector/src/main/java/com/braintreepayments/api/PayPalDataCollector.java index 6a19326390..a38851ca1f 100644 --- a/PayPalDataCollector/src/main/java/com/braintreepayments/api/PayPalDataCollector.java +++ b/PayPalDataCollector/src/main/java/com/braintreepayments/api/PayPalDataCollector.java @@ -84,6 +84,8 @@ String getClientMetadataId(Context context, PayPalDataCollectorInternalRequest r } /** + * Deprecated. Use {@link PayPalDataCollector#collectDeviceData(Context, PayPalDataCollectorRequest, PayPalDataCollectorCallback)} + * * Collects device data based on your merchant configuration. *

* We recommend that you call this method as early as possible, e.g. at app launch. If that's too early, @@ -94,35 +96,18 @@ String getClientMetadataId(Context context, PayPalDataCollectorInternalRequest r * @param context Android Context * @param callback {@link PayPalDataCollectorCallback} */ + @Deprecated public void collectDeviceData( @NonNull final Context context, @NonNull final PayPalDataCollectorCallback callback ) { - PayPalDataCollectorRequest request = new PayPalDataCollectorRequest(false); - collectDeviceData(context, request, null, callback); + PayPalDataCollectorRequest request = new PayPalDataCollectorRequest(false, null); + collectDeviceData(context, request, callback); } /** - * Collects device data based on your merchant configuration. - *

- * We recommend that you call this method as early as possible, e.g. at app launch. If that's too early, - * call it at the beginning of customer checkout. - *

- * Use the return value on your server, e.g. with `Transaction.sale`. + * Deprecated. Use {@link PayPalDataCollector#collectDeviceData(Context, PayPalDataCollectorRequest, PayPalDataCollectorCallback)} * - * @param context Android Context - * @param payPalDataCollectorRequest params for the data collection request - * @param callback {@link PayPalDataCollectorCallback} - */ - public void collectDeviceData( - @NonNull final Context context, - @NonNull final PayPalDataCollectorRequest payPalDataCollectorRequest, - @NonNull final PayPalDataCollectorCallback callback - ) { - collectDeviceData(context, payPalDataCollectorRequest, null, callback); - } - - /** * Collects device data for PayPal APIs. *

* We recommend that you call this method as early as possible, e.g. at app launch. If that's too early, @@ -134,13 +119,14 @@ public void collectDeviceData( * @param riskCorrelationId Optional client metadata id * @param callback {@link PayPalDataCollectorCallback} */ + @Deprecated public void collectDeviceData( @NonNull final Context context, @Nullable final String riskCorrelationId, @NonNull final PayPalDataCollectorCallback callback ) { - PayPalDataCollectorRequest request = new PayPalDataCollectorRequest(false); - collectDeviceData(context, request, riskCorrelationId, callback); + PayPalDataCollectorRequest request = new PayPalDataCollectorRequest(false, riskCorrelationId); + collectDeviceData(context, request, callback); } /** @@ -153,13 +139,11 @@ public void collectDeviceData( * * @param context Android Context * @param payPalDataCollectorRequest params for the data collection request - * @param riskCorrelationId Optional client metadata id * @param callback {@link PayPalDataCollectorCallback} */ public void collectDeviceData( @NonNull final Context context, @NonNull final PayPalDataCollectorRequest payPalDataCollectorRequest, - @Nullable final String riskCorrelationId, @NonNull final PayPalDataCollectorCallback callback ) { braintreeClient.getConfiguration(new ConfigurationCallback() { @@ -172,8 +156,8 @@ public void onResult(@Nullable Configuration configuration, @Nullable Exception payPalDataCollectorRequest.getHasUserLocationConsent() ).setApplicationGuid(getPayPalInstallationGUID(context)); - if (riskCorrelationId != null) { - request.setRiskCorrelationId(riskCorrelationId); + if (payPalDataCollectorRequest.getRiskCorrelationId() != null) { + request.setRiskCorrelationId(payPalDataCollectorRequest.getRiskCorrelationId()); } String correlationId = diff --git a/PayPalDataCollector/src/main/java/com/braintreepayments/api/PayPalDataCollectorRequest.kt b/PayPalDataCollector/src/main/java/com/braintreepayments/api/PayPalDataCollectorRequest.kt index 8c4678f04b..0a545bb6c0 100644 --- a/PayPalDataCollector/src/main/java/com/braintreepayments/api/PayPalDataCollectorRequest.kt +++ b/PayPalDataCollector/src/main/java/com/braintreepayments/api/PayPalDataCollectorRequest.kt @@ -10,7 +10,10 @@ package com.braintreepayments.api * * @see [User Data policies for the Google Play Developer Program](https://support.google.com/googleplay/android-developer/answer/10144311#personal-sensitive) * @see [Examples of prominent in-app disclosures](https://support.google.com/googleplay/android-developer/answer/9799150?hl=en#Prominent%20in-app%20disclosure) + * + * @property riskCorrelationId Optional client metadata id */ data class PayPalDataCollectorRequest( - val hasUserLocationConsent: Boolean + val hasUserLocationConsent: Boolean, + val riskCorrelationId: String? = null ) diff --git a/PayPalDataCollector/src/test/java/com/braintreepayments/api/PayPalDataCollectorUnitTest.java b/PayPalDataCollector/src/test/java/com/braintreepayments/api/PayPalDataCollectorUnitTest.java index 7445a8a0a0..71114deece 100644 --- a/PayPalDataCollector/src/test/java/com/braintreepayments/api/PayPalDataCollectorUnitTest.java +++ b/PayPalDataCollector/src/test/java/com/braintreepayments/api/PayPalDataCollectorUnitTest.java @@ -2,6 +2,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.isNull; import static org.mockito.ArgumentMatchers.same; @@ -33,6 +34,9 @@ public class PayPalDataCollectorUnitTest { private BraintreeClient braintreeClient; private MagnesInternalClient magnesInternalClient; + private PayPalDataCollectorRequest payPalDataCollectorRequest; + private String riskCorrelationId = "risk_correlation_id"; + @Before public void beforeEach() throws JSONException { uuidHelper = mock(UUIDHelper.class); @@ -40,6 +44,8 @@ public void beforeEach() throws JSONException { context = ApplicationProvider.getApplicationContext(); + payPalDataCollectorRequest = new PayPalDataCollectorRequest(true, riskCorrelationId); + configuration = mock(Configuration.class); // this uuid has no actual meaning; magnes requires a valid guid for tests @@ -113,7 +119,7 @@ public void collectDeviceData_forwardsConfigurationFetchErrors() { PayPalDataCollector sut = new PayPalDataCollector(braintreeClient, magnesInternalClient, uuidHelper); PayPalDataCollectorCallback callback = mock(PayPalDataCollectorCallback.class); - sut.collectDeviceData(context, callback); + sut.collectDeviceData(context, payPalDataCollectorRequest, callback); verify(callback).onResult(null, configError); } @@ -140,6 +146,29 @@ public void collectDeviceData_configuresMagnesWithDefaultRequest() { assertFalse(request.getHasUserLocationConsent()); } + @Test + public void collectDeviceData_with_request_configuresMagnesWithDefaultRequest() { + BraintreeClient braintreeClient = new MockBraintreeClientBuilder() + .configuration(configuration) + .build(); + + when(uuidHelper.getInstallationGUID(context)).thenReturn(sampleInstallationGUID); + when(magnesInternalClient.getClientMetadataId(same(context), same(configuration), any(PayPalDataCollectorInternalRequest.class))).thenReturn("paypal-clientmetadata-id"); + + PayPalDataCollector sut = new PayPalDataCollector(braintreeClient, magnesInternalClient, uuidHelper); + + PayPalDataCollectorCallback callback = mock(PayPalDataCollectorCallback.class); + sut.collectDeviceData(context, payPalDataCollectorRequest, callback); + + ArgumentCaptor captor = ArgumentCaptor.forClass(PayPalDataCollectorInternalRequest.class); + verify(magnesInternalClient).getClientMetadataId(same(context), same(configuration), captor.capture()); + + PayPalDataCollectorInternalRequest request = captor.getValue(); + assertEquals(sampleInstallationGUID, request.getApplicationGuid()); + assertEquals(riskCorrelationId, request.getClientMetadataId()); + assertTrue(request.getHasUserLocationConsent()); + } + @Test public void collectDeviceData_configuresMagnesWithClientId() { BraintreeClient braintreeClient = new MockBraintreeClientBuilder() @@ -174,7 +203,7 @@ public void collectDeviceData_getsDeviceDataJSONWithCorrelationIdFromPayPal() th PayPalDataCollector sut = new PayPalDataCollector(braintreeClient, magnesInternalClient, uuidHelper); PayPalDataCollectorCallback callback = mock(PayPalDataCollectorCallback.class); - sut.collectDeviceData(context, callback); + sut.collectDeviceData(context, payPalDataCollectorRequest, callback); ArgumentCaptor deviceDataCaptor = ArgumentCaptor.forClass(String.class); verify(callback).onResult(deviceDataCaptor.capture(), (Exception) isNull()); From bc47a7dbefa520479b4116ba0825368ab9b5f941 Mon Sep 17 00:00:00 2001 From: Timothy Chow Date: Thu, 4 Apr 2024 14:51:12 -0500 Subject: [PATCH 10/10] Fix javadoc syntax --- .../java/com/braintreepayments/api/DataCollector.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/BraintreeDataCollector/src/main/java/com/braintreepayments/api/DataCollector.java b/BraintreeDataCollector/src/main/java/com/braintreepayments/api/DataCollector.java index 82edb590ff..aa07850ce2 100644 --- a/BraintreeDataCollector/src/main/java/com/braintreepayments/api/DataCollector.java +++ b/BraintreeDataCollector/src/main/java/com/braintreepayments/api/DataCollector.java @@ -31,14 +31,15 @@ public DataCollector(@NonNull BraintreeClient braintreeClient) { } /** + * @deprecated Passing in {@link DataCollectorRequest} is required. Use + * {@link DataCollector#collectDeviceData(Context, DataCollectorRequest, DataCollectorCallback)} instead. + * * Collect device information for fraud identification purposes. * * @param context Android Context - * @param callback {@link DataCollectorCallback - * @deprecated Passing in {@link DataCollectorRequest} is required. Use - * {@link PayPalDataCollector#collectDeviceData(Context, DataCollectorRequest, PayPalDataCollectorCallback)} instead. + * @param callback {@link DataCollectorCallback} */ - @Deprecated() + @Deprecated public void collectDeviceData( @NonNull Context context, @NonNull DataCollectorCallback callback