I have problem with adding loyalty card to google pay app using google play services api. I have got account verficication after google pay request, but I'm receiving 400 in logs.
Can't find what's wrong...
Code below has been written following this guides:
https://developers.google.com/pay/passes/guides/get-started/implementing-the-api/save-to-google-pay#from-native-android-app
https://developers.google.com/pay/passes/guides/overview/basics/typical-api-flow
Attached code (Take a look on comments, it's important)
// is 9999999
val userId : String = usr.idUser.toString()
// value is "John Snow"
val fullname : String = usr.fullname
// ISSUER_ID - is numeric value from console
val wob = LoyaltyWalletObject.newBuilder()
// the class id has similar name. All characters has been replaced with 'x' character
.setClassId("$ISSUER_ID.xxxx.xxx.xxxxxxxxxxxx.xxxxxxxxxx")
// similar to comment from method setClassId
.setId("$ISSUER_ID.xxxx.xxx.xxxxxxxxxxxx.xxxxxxxxxx.$userId")
.setState(WalletObjectsConstants.State.ACTIVE)
// id of user in app
.setAccountId(userId)
// name of user in app
.setAccountName(fullname)
// from console - "Issuer" = Loyalty
.setIssuerName("Loyalty")
// from console - "Program Name" = Loyalty card
.setProgramName("Loyalty card")
// barcode type from docs
.setBarcodeType("code128")
// card 16 digits card number
.setBarcodeValue("1234567890123456")
// formatter card number
.setBarcodeAlternateText("1234 5678 9012 3456")
// url on web resources
.addLinksModuleDataUris(uris)
.build()
val request = CreateWalletObjectsRequest.newBuilder()
.setLoyaltyWalletObject(wob)
.build()
val opts = Wallet.WalletOptions.Builder()
.setTheme(WalletConstants.THEME_LIGHT)
.setEnvironment(WalletConstants.ENVIRONMENT_PRODUCTION)
.build()
val client = Wallet.getWalletObjectsClient(activity, opts)
val task = client.createWalletObjects(request)
AutoResolveHelper.resolveTask(task,activity,UIRequestCode.RC_GPAY)
The log:
E: [13290] BasicNetwork.performRequest: Unexpected response code 400 for https://wallet.google.com/payments/apis/instantbuy/android/v1/createWalletObjects
E: Exception sending Volley request
java.util.concurrent.ExecutionException: com.android.volley.ClientError
at com.android.volley.toolbox.RequestFuture.a(:com.google.android.gms@[email protected] (040408-219897028):4)
at com.android.volley.toolbox.RequestFuture.get(:com.google.android.gms@[email protected] (040408-219897028):1)
at atew.a(:com.google.android.gms@[email protected] (040408-219897028):29)
at atew.a(:com.google.android.gms@[email protected] (040408-219897028):25)
at atyd.a(:com.google.android.gms@[email protected] (040408-219897028):8)
at atxx.a(:com.google.android.gms@[email protected] (040408-219897028):16)
at atof.a(:com.google.android.gms@[email protected] (040408-219897028):4)
at atxw.a(:com.google.android.gms@[email protected] (040408-219897028):4)
at atyg.a(:com.google.android.gms@[email protected] (040408-219897028):2)
at atxq.a(Unknown Source:2)
at atxu.a(Unknown Source:19)
at xrb.a(:com.google.android.gms@[email protected] (040408-219897028):3)
at cpb.onTransact(:com.google.android.gms@[email protected] (040408-219897028):4)
at atxq.onTransact(:com.google.android.gms@[email protected] (040408-219897028):1)
at android.os.Binder.transact(Binder.java:627)
at dry.onTransact(:com.google.android.gms@[email protected] (040408-219897028):3)
at android.os.Binder.execTransact(Binder.java:697)
Caused by: com.android.volley.ClientError
at com.android.volley.toolbox.BasicNetwork.performRequest(:com.google.android.gms@[email protected] (040408-219897028):49)
at qni.performRequest(:com.google.android.gms@[email protected] (040408-219897028):13)
at com.android.volley.NetworkDispatcher.a(:com.google.android.gms@[email protected] (040408-219897028):6)
at com.android.volley.NetworkDispatcher.run(:com.google.android.gms@[email protected] (040408-219897028):2)
E: Unknown ServerResponse type=1
Github issue: https://github.com/google-pay/s2gp-quickstart-android/issues/4 (sample code, developer Guide for passes APIs not yet updated by Google passes API team)
Your app needs to be whitelisted by the Google Pay team. Yes, is very important, but...
I sent to Google Pay team my release SHA1 Fingerprint (https://developers.google.com/pay/passes/guides/get-started/basic-setup/native-android-sdk). After that, when install app directly from apk file, all start work great (when click on "Add To GPay" -> loyalty card add to Google Pay)!
But continued to not work when upload to Play Market(
After hard research... )
Solution: SHA1 Fingerprint need get from "Google Play Console > Release Management > App Signing > App signing certificate"
I was having this problem as well. The error message isn't very informative. Your app needs to be whitelisted by the Google Pay team. You need to contact them at https://support.google.com/pay/merchants/contact/interest and provide the following:
So I finally got this to work, in the merchant center under the general area I changed the status field from DRAFT to UNDER_REVIEW. It immediately changed to approved and I could save the loyalty card.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With