android - 通过 Google Play 服务 API 将成员(member)卡添加到 Google Pay

标签 android google-play-services google-pay

我在使用 google play services api 将成员(member)卡添加到 google pay 应用程序时遇到问题。我在收到谷歌支付请求后得到了帐户验证,但我收到了 400 条日志。

找不到问题所在...

下面的代码是按照本指南编写的:

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

附上代码(看评论,很重要)

// 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)

日志:

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@14574021@14.5.74 (040408-219897028):4)
    at com.android.volley.toolbox.RequestFuture.get(:com.google.android.gms@14574021@14.5.74 (040408-219897028):1)
    at atew.a(:com.google.android.gms@14574021@14.5.74 (040408-219897028):29)
    at atew.a(:com.google.android.gms@14574021@14.5.74 (040408-219897028):25)
    at atyd.a(:com.google.android.gms@14574021@14.5.74 (040408-219897028):8)
    at atxx.a(:com.google.android.gms@14574021@14.5.74 (040408-219897028):16)
    at atof.a(:com.google.android.gms@14574021@14.5.74 (040408-219897028):4)
    at atxw.a(:com.google.android.gms@14574021@14.5.74 (040408-219897028):4)
    at atyg.a(:com.google.android.gms@14574021@14.5.74 (040408-219897028):2)
    at atxq.a(Unknown Source:2)
    at atxu.a(Unknown Source:19)
    at xrb.a(:com.google.android.gms@14574021@14.5.74 (040408-219897028):3)
    at cpb.onTransact(:com.google.android.gms@14574021@14.5.74 (040408-219897028):4)
    at atxq.onTransact(:com.google.android.gms@14574021@14.5.74 (040408-219897028):1)
    at android.os.Binder.transact(Binder.java:627)
    at dry.onTransact(:com.google.android.gms@14574021@14.5.74 (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@14574021@14.5.74 (040408-219897028):49)
    at qni.performRequest(:com.google.android.gms@14574021@14.5.74 (040408-219897028):13)
    at com.android.volley.NetworkDispatcher.a(:com.google.android.gms@14574021@14.5.74 (040408-219897028):6)
    at com.android.volley.NetworkDispatcher.run(:com.google.android.gms@14574021@14.5.74 (040408-219897028):2)
E: Unknown ServerResponse type=1

Github 问题:https://github.com/google-pay/s2gp-quickstart-android/issues/4(示例代码,Google passes API 团队尚未更新的 passes API 开发人员指南)

最佳答案

Your app needs to be whitelisted by the Google Pay team. Yes, is very important, but...

我向 Google Pay 团队发送了我发布的 SHA1 指纹 (https://developers.google.com/pay/passes/guides/get-started/basic-setup/native-android-sdk)。之后,当直接从 apk 文件安装应用程序时,一切都开始正常工作(当点击“添加到 GPay”-> 成员(member)卡添加到 Google Pay 时)!

但是上传到Play Market时还是不行(

经过艰苦的研究...)

解决方法: SHA1 指纹需要从“Google Play Console > Release Management > App Signing > App signing certificate”获取

关于android - 通过 Google Play 服务 API 将成员(member)卡添加到 Google Pay,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53320259/

相关文章:

android - Glide 加载旧图像

android - 如何为 Android 13 请求推送通知权限?

android - 无法解析符号 'LocationRequest' Android 项目

paypal - Google Pay中是否有类似PayPal Adaptive Payments的选项

android - java.lang.ClassNotFoundException : android. 支持.v7.app.AppCompatViewInflater

android - 将 fragment 之间的数据传递给 Activity

android - 我无法创建文件夹drawable-xxxhdpi

java - Google Play 服务缺失或没有正确的权限

android - Google Play 服务的未知问题

android - 有没有一种方法可以通过编程方式访问我的Google电子钱包商家帐户,因此我可以轻松地从手机中查看每天的收入等等?