use of com.paypal.android.sdk.onetouch.core.Result in project braintree_android by braintree.
the class PayPal method onActivityResult.
/**
* The result from PayPal's request.
*
* @param fragment A {@link BraintreeFragment} used to process the request.
* @param data Data associated with the result.
*/
protected static void onActivityResult(final BraintreeFragment fragment, int resultCode, Intent data) {
Request request = getPersistedRequest(fragment.getApplicationContext());
if (resultCode == Activity.RESULT_OK && data != null && request != null) {
boolean isAppSwitch = isAppSwitch(data);
Result result = PayPalOneTouchCore.parseResponse(fragment.getApplicationContext(), request, data);
switch(result.getResultType()) {
case Error:
fragment.postCallback(new BrowserSwitchException(result.getError().getMessage()));
sendAnalyticsEventForSwitchResult(fragment, request, isAppSwitch, "failed");
break;
case Cancel:
sendAnalyticsEventForSwitchResult(fragment, request, isAppSwitch, "canceled");
fragment.postCancelCallback(BraintreeRequestCodes.PAYPAL);
break;
case Success:
onSuccess(fragment, data, request, result);
sendAnalyticsEventForSwitchResult(fragment, request, isAppSwitch, "succeeded");
break;
}
} else {
String type;
if (request != null) {
type = request.getClass().getSimpleName().toLowerCase();
} else {
type = "unknown";
}
fragment.sendAnalyticsEvent("paypal." + type + ".canceled");
if (resultCode != Activity.RESULT_CANCELED) {
fragment.postCancelCallback(BraintreeRequestCodes.PAYPAL);
}
}
}
use of com.paypal.android.sdk.onetouch.core.Result in project braintree_android by braintree.
the class BrowserSwitchHelperUnitTest method handleBrowserResponse_sendsEventForReturn.
@Test
public void handleBrowserResponse_sendsEventForReturn() {
Result expectedResult = new Result("test", ResponseType.web, new JSONObject(), "");
CheckoutRequest request = mock(CheckoutRequest.class);
when(request.parseBrowserResponse(any(ContextInspector.class), any(Uri.class))).thenReturn(expectedResult);
BrowserSwitchHelper.parseBrowserSwitchResponse(mContextInspector, request, mock(Uri.class));
verify(request).trackFpti(any(Context.class), eq(TrackingPoint.Return), isNull(Protocol.class));
}
use of com.paypal.android.sdk.onetouch.core.Result in project braintree_android by braintree.
the class BrowserSwitchHelperUnitTest method handleBrowserResponse_parsesResponse.
@Test
public void handleBrowserResponse_parsesResponse() {
Result expectedResult = new Result();
CheckoutRequest request = mock(CheckoutRequest.class);
when(request.parseBrowserResponse(any(ContextInspector.class), any(Uri.class))).thenReturn(expectedResult);
Result result = BrowserSwitchHelper.parseBrowserSwitchResponse(mContextInspector, request, mock(Uri.class));
assertEquals(expectedResult, result);
}
use of com.paypal.android.sdk.onetouch.core.Result in project braintree_android by braintree.
the class AppSwitchHelperUnitTest method parseAppSwitchResponse_parsesErrorAndReturnsResult.
@Test
public void parseAppSwitchResponse_parsesErrorAndReturnsResult() {
Request request = mock(AuthorizationRequest.class);
when(request.validateV1V2Response(any(ContextInspector.class), any(Bundle.class))).thenReturn(true);
Intent intent = new Intent().putExtra("error", "there was an error");
Result result = AppSwitchHelper.parseAppSwitchResponse(mContextInspector, request, intent);
verify(request).trackFpti(any(Context.class), eq(TrackingPoint.Return), isNull(Protocol.class));
assertTrue(result.getError() instanceof WalletSwitchException);
assertEquals("there was an error", result.getError().getMessage());
}
use of com.paypal.android.sdk.onetouch.core.Result in project braintree_android by braintree.
the class AppSwitchHelper method processResponseIntent.
private static Result processResponseIntent(Bundle bundle) {
String error = bundle.getString("error");
if (!TextUtils.isEmpty(error)) {
return new Result(new WalletSwitchException(error));
} else {
String environment = bundle.getString("environment");
String bundleResponseType = bundle.getString("response_type").toLowerCase(Locale.US);
ResponseType response_type;
if ("code".equals(bundleResponseType)) {
response_type = ResponseType.authorization_code;
} else {
response_type = ResponseType.web;
}
try {
if (ResponseType.web == response_type) {
String webURL = bundle.getString("webURL");
return new Result(environment, response_type, new JSONObject().put("webURL", webURL), // email not sent back in checkout requests since Hermes doesn't return that info
null);
} else {
String authorization_code = bundle.getString("authorization_code");
String email = bundle.getString("email");
return new Result(environment, response_type, new JSONObject().put("code", authorization_code), email);
}
} catch (JSONException e) {
return new Result(new ResponseParsingException(e));
}
}
}
Aggregations