Search code examples
androidstripe-paymentsgoogle-pay

Google Pay in Android application Api 1 vs Api 2


I have go through this integration tutorial on Stripe website where there is shown Google Pay integration I assume in Api version 1. https://stripe.com/docs/mobile/android/google-pay

But now I have found that from July 2018 there is new Api version 2 for Google Pay.

https://developers.google.com/pay/api/android/guides/tutorial

I can see this new api is more JSON based using string key-values rather than strongly typed constraints.

Is Api version 1 deprecated? Is there Api version 2 strongly-typed equivalent for Android? Will Stripe support Api version 2? What I lose if I stay with Api version 1? Will for instance 3D secure cards work? or version number doesn't matter from client perspective?

I can see this are some new things:

private static JSONArray getAllowedCardAuthMethods() {
  return new JSONArray()
      .put("PAN_ONLY")
      .put("CRYPTOGRAM_3DS");
}

Solution

  • Is Api version 1 deprecated?

    No. Not yet at least.

    Is there Api version 2 strongly-typed equivalent for Android?

    The current API affords both object builder and json e.g. IsReadyToPayRequest.newBuilder() or IsReadyToPayRequest.fromJson(), however json is the new preferred method and offers additional features:

    Key point: The new JSON-based request objects include features and functionality not available to apps that use the previous Builder implementation.

    "In the previous version of the Google Pay API, the Builder object we used only supported cards as a form of payment for IsReadyToPayRequest or PaymentDataRequest. In the latest version of the Google Pay API, the CARD payment method is only one of multiple possible payment methods for IsReadyToPayRequest or PaymentDataRequest."

    What I lose if I stay with Api version 1? Will for instance 3D secure cards work? or version number doesn't matter from client perspective?

    https://developers.google.com/pay/api/android/guides/resources/update-to-latest-version details the transition between builder and json APIs, including tokenized cards:

    If your app supported PAYMENT_METHOD_TOKENIZED_CARD:
    
        Add "CRYPTOGRAM_3DS" to the allowedAuthMethods array.
    

    so 3DS was/is available with builder API via WalletConstants.PAYMENT_METHOD_TOKENIZED_CARD