@Override public void trackFpti(Context context, TrackingPoint trackingPoint, Protocol protocol) { Map<String, String> fptiDataBundle = new HashMap<>(); fptiDataBundle.put("clid", getClientId()); PayPalOneTouchCore.getFptiManager(context).trackFpti(trackingPoint, getEnvironment(), fptiDataBundle, protocol); }
private String buildPayload(Context context, X509Certificate cert) { JSONObject payload = new JSONObject(); try { payload.put("version", 3); payload.put("client_id", getClientId()); payload.put("app_name", DeviceInspector.getApplicationInfoName(context)); payload.put("environment", getEnvironment()); payload.put("environment_url", EnvironmentManager.getEnvironmentUrl(getEnvironment())); payload.put("scope", getScopeString()); payload.put("response_type", "code"); payload.put("privacy_url", getPrivacyUrl()); payload.put("agreement_url", getUserAgreementUrl()); payload.put("client_metadata_id", getClientMetadataId()); payload.put("key_id", cert.getSerialNumber()); // If this is false, keep me logged in will not be offered (won't save cookies) payload.put("android_chrome_available", isChromeAvailable(context)); for (Entry<String, String> entry : mAdditionalPayloadAttributes.entrySet()) { payload.put(entry.getKey(), entry.getValue()); } return Base64.encodeToString(payload.toString().getBytes(), Base64.NO_WRAP); } catch (JSONException e) { throw new RuntimeException(e); } }
@Test public void getAuthorizationRequest_containsCorrectValues() throws JSONException, InvalidArgumentException { Configuration configuration = Configuration.fromJson(stringFromFixture("configuration/with_offline_paypal.json")); BraintreeFragment fragment = mMockFragmentBuilder .authorization(Authorization.fromString(TOKENIZATION_KEY)) .configuration(configuration) .build(); AuthorizationRequest request = PayPal.getAuthorizationRequest(fragment); assertEquals(EnvironmentManager.MOCK, request.getEnvironment()); assertEquals("com.braintreepayments.api.braintree://onetouch/v1/cancel", request.getCancelUrl()); assertEquals("com.braintreepayments.api.braintree://onetouch/v1/success", request.getSuccessUrl()); assertEquals("paypal_client_id", request.getClientId()); assertEquals(configuration.getPayPal().getPrivacyUrl(), request.getPrivacyUrl()); assertEquals(configuration.getPayPal().getUserAgreementUrl(), request.getUserAgreementUrl()); String[] scopes = request.getScopeString().split(" "); Arrays.sort(scopes); assertEquals(2, scopes.length); assertEquals("email", scopes[0]); assertEquals("https://uri.paypal.com/services/payments/futurepayments", scopes[1]); }
@Test public void parcels() { AuthorizationRequest request = new AuthorizationRequest(RuntimeEnvironment.application); request.environment("test"); request.clientId("client-id"); request.clientMetadataId("client-metadata-id"); request.cancelUrl("com.braintreepayments.demo.braintree.cancel", "cancel"); request.successUrl("com.braintreepayments.demo.braintree.success", "success"); request.privacyUrl("privacy-url"); request.userAgreementUrl("user-agreement-url"); request.withAdditionalPayloadAttribute("payload-key", "payload-value"); request.withScopeValue("email"); request.withScopeValue("address"); Parcel parcel = Parcel.obtain(); request.writeToParcel(parcel, 0); parcel.setDataPosition(0); AuthorizationRequest parceledRequest = AuthorizationRequest.CREATOR.createFromParcel(parcel); assertEquals("test", parceledRequest.getEnvironment()); assertEquals("client-id", parceledRequest.getClientId()); assertEquals("client-metadata-id", parceledRequest.getClientMetadataId()); assertEquals("com.braintreepayments.demo.braintree.cancel://onetouch/v1/cancel", parceledRequest.getCancelUrl()); assertEquals("com.braintreepayments.demo.braintree.success://onetouch/v1/success", parceledRequest.getSuccessUrl()); assertEquals("privacy-url", parceledRequest.getPrivacyUrl()); assertEquals("user-agreement-url", parceledRequest.getUserAgreementUrl()); assertEquals("{payload-key=payload-value}", parceledRequest.getAdditionalPayloadAttributes().toString()); assertEquals("address email", parceledRequest.getScopeString()); } }