【Google pay接入】获取refresh_token

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【Google pay接入】获取refresh_token相关的知识,希望对你有一定的参考价值。

参考技术A 完整效果:
https://accounts.google.com/o/oauth2/auth?scope=https://www.googleapis.com/auth/androidpublisher&response_type=code&access_type=offline&redirect_uri=https://developers.google.com&client_id=111222333-aaabbbccc.apps.googleusercontent.com
输入之后,就会跳转到这个界面,就按照提示选择你的登录邮箱登录,之后一直continue,最后,url里就替换成了code和scope

替换成code和scope的效果

我们需要的有效数据是code的值,拿到code的值之后进行urldecode解码

使用postman或者curl,或者你熟悉的http工具,创建http请求,postman的请求大致如下:

地址: https://accounts.google.com/o/oauth2/token
请求方式:post
参数:
grant_type=authorization_code
code=获取到的code(需要看看code中是否有%号,如果有需要urldecode)
client_id=创建api项目是的clientId(客户端ID)
client_secret=创建api项目时的clientSecret(客户端密钥)
redirect_uri=创建api项目时的重定向地址

如果此处返回,这个错误

应该是你上一步获取的code过期了,重新执行一下第12步,获取新的code替换下就好。

之前申请得到的refresh_token的默认有效期是7天,需要在包过审之后,登录Google Cloud Platform后台,在OAuth consent screen中对应用的状态进行修改,改成In production状态(发布中),然后再重新获取一遍refresh_token

Google Pay支付遇到的问题

Google Pay

        我们发现要显示的任何SKU,检查您的互联网连接并确保您的Google Developer Console设置正确。

       应用未通过审核或应用内商品ID传入有误,要先测内部测试版(bate、alpha)通过,再正式测支付。

无法购买您要的商品

        1.测试版 APK 请上传至 Alpha/Beta 任一渠道,并且登入加入测试的测试者帐号,下载 APK 后再进行测试。模拟器跟本地安装的测试结果是无法验证的。

        在"APK"页面里,有一个“选择使用网址”,把这个网址给你的测试人员,让你的测试人员用他的google账号点进去,点那个“成为测试人员”(前提是你把他加进了测试人员列表), 只有这样才能测试商品支付。

        2.请确认应用的 Manifest 中是否有添加正确的权限 (com.android.vending.BILLING)

        3. 保证 versionCode 和版本号与你上传的apk的包的一样。

        4.请确认测试用户都已添加至许可测试的区块

        5. 保证后台和你传入的购买商品的 id 一致,请确认打包apk的包名以及签名皆一致。

        6.打开手机的账号管理,把测试账号放在第一个位置,或者干脆删除其他非测试账号。

        7.可能封闭式测试、内部测试同时开启造成测试用户乱序。

        8.检查账号所在地是不是在开启地区/国家范围内(正常情况不需要)

        9.其他可能性包括连结内购服务的装置不支援最新的 IAB version 3,可能只支援版本 2,这方面也请多加确认。(谷歌技术团队提醒)

[DF-AA-01]

从服务器检索信息时出错[DF-AA-01]

        1.谷歌服务未开启;

        2.网络连接不到谷歌。

        解决方案:设置 -> 应用设置 -> 授权管理 -> 自启动管理 -> 打开 "Google 服务框架"

[DF-AA-20]

从服务器检索信息时出错[DF-AA-20]

        1.应用没有在Google Play商店发布,至少是alpha版本;

        2.应用或者开发者账号被封。

请点击:Goole Pay支付接入

支付失败、无法支付、购买无效

1.新增国家/地区,但是汇率未刷新。(刷新汇率即可,下面问题同样有效)

2.依照以下步骤清除装置上的缓存试试看是否问题仍持续发生。

  1. 打开设备的主设置应用。
  2. 点按应用应用管理器(显示选项可能因设备而异)。
  3. 点按 Google Play 商店
  4. 点按存储
  5. 依次点按清除缓存 > 确定
  6. 依次点按清除数据 > 确定
  7. 点按后退箭头以返回主菜单。
  8. 选择下载内容内容下载管理器
  9. 依次点按清除缓存 > 确定
  10. 依次点按清除数据 > 确定
  11. 重新启动应用。

弹窗提示:我们这边除了点错误,请重试。

        1、回传值是 5 且又遭遇 "this version of the application is not configured for billing" 的错误讯息,请同时确认以下排解资讯:

  1. AndroidManifest 文件中一定要包含 "com.android.vending.BILLING" 权限。
  2. APK 是在发布模式下构建的。
  3. APK 已使用发行证书签名 (重要提示:应用程式如果通过 “Google Play 应用签名计划”,仅在您直接从 Google Play 商店下载时才有效)。
  4. APK 至少要上传到 Play 控制台的 Alpha / Beta 测试轨道,且生效时间大约需要 24-48 小时。
  5. 欲测试的应用内商品必须上传到 Play 控制台 且其状态均需要为 "有效"。
  6. 测试帐号须正确添加至 Play 控制台的「许可测试」页面上。

        onPurchasesUpdated方法中,BillingResult.getResponseCode() == BillingClient.BillingResponseCode.DEVELOPER_ERROR

        2、因Android Studio提示A newer version of com.android.billingclient:billing than 3.0.0 is available: 3.0.3,我就将支付升级,结果无法识别api
官方文档上的是implementation 'com.android.billingclient:billing:3.0.0',
将   implementation 'com.android.billingclient:billing:3.0.3'改为   implementation 'com.android.billingclient:billing:3.0.0'
原因:谷歌还不支持3.0.3使用时谷歌自己会报错
官方文档不一定都对,例如:facebook官方文档的版本一直是 implementation 'com.facebook.android:facebook-android-sdk:[5,6)'
实际上已经过去无数版本目前的版本是 implementation 'com.facebook.android:facebook-android-sdk:9.1.1'
所以接入SDK还是结合文档加实际情况多方面考虑排查问题。

支付返回CODE(BillingResponseCode)

public @interface BillingResponseCode 
    int SERVICE_TIMEOUT = -3;//服务超时
    int FEATURE_NOT_SUPPORTED = -2;//不支持功能
    int SERVICE_DISCONNECTED = -1;//服务单元已断开
    int OK = 0;//成功
    int USER_CANCELED = 1;//用户按上一步或取消对话框
    int SERVICE_UNAVAILABLE = 2;//网络连接断开
    int BILLING_UNAVAILABLE = 3;//所请求的类型不支持 Google Play 结算服务 AIDL 版本
    int ITEM_UNAVAILABLE = 4;//请求的商品已不再出售。
    int DEVELOPER_ERROR = 5;//提供给 API 的参数无效。此错误也可能说明应用未针对结算服务正确签名或设置,或者在其清单中缺少必要的权限。
    int ERROR = 6;//API 操作期间出现严重错误
    int ITEM_ALREADY_OWNED = 7;//未能购买,因为已经拥有此商品
    int ITEM_NOT_OWNED = 8;//未能消费,因为尚未拥有此商品

无法用于此购买交易 

        如果买家所用付款方式无效(如使用过期的信用卡、交易金额超出运营商代扣额度上限等),也会导致交易失败。买家需要改用其他有效的付款方式,才能购买您的应用或应用内商品。

检查付款是否通过

        如果您的付款没有正确通过,您将不会收到您尝试购买的应用内购买。检查它是否通过网络上的 Play 商店应用或 Google Play:

使用 Play 商店应用:

        1.在您的 Android 手机或平板电脑上,打开 Google Play 商店应用谷歌播放。
        2.点按菜单菜单 接着 帐户。
        3.点击购买历史记录以查看您的订单。
使用网络浏览器:

        1.在您的计算机上,转到您的Google Play 帐户。
        2.向下滚动到购买历史记录。
        3.寻找应用内购买。

重启设备

有时重启设备有助于解决应用内购买问题。重新启动:

        1.在您的移动设备上,按住电源按钮。
        2.点击关机或重启(根据您的设备,此文本可能会有所不同)。
        3.如果需要,再次按住电源按钮以重新打开设备。
        4.等待设备启动备份。
        5.重新打开应用程序或游戏并检查应用程序内购买是否已交付。

更新 Play 商店应用

当您运行最新版本的 Play 商店时,应用内购买效果最佳。要更新应用程序:

        1.在您的 Android 手机或平板电脑上,打开 Google Play 商店应用谷歌播放。
        2.点击菜单菜单 接着 设置 设置 接着 Build version或Play Store version。
                构建版本或 Play 商店版本通常位于设置列表的底部。
        3.该应用程序将更新,或通知您您的版本是最新的。

确保日期和时间正确

如果您最近更改了设备上的日期和时间,请确保日期和时间正确:

        1.在 Android 手机或平板电脑上,打开设备的“设置”应用设置。
        2.点按日期和时间。
        3.查找“自动日期和时间”和“自动时区”并检查它们是否已打开或关闭。然后按照下面的相关步骤操作。 

如果“自动日期和时间”和“自动时区”关闭

        1.打开日期和时间以及时区设置。
        2.等待几分钟,然后检查您的问题是否已解决。
        3.如果不是,请尝试重新启动设备并再次检查。

如果打开“自动日期和时间”和“自动时区”

        如果这两个设置都打开,则日期和时间可能不是您的问题。检查您的连接并重新启动您的设备,或尝试其他故障排除步骤。

Google Play 接受的付款方式注意事项

信用卡或借记卡

        注意:通过 Google Play 接受的卡片类型可能会有所不同。如果您的卡在您认为应该时无法使用,请联系您的银行或发卡机构寻求帮助。使用信用卡或借记卡时,您可能会注意到帐户上的临时授权。

手机计费

        注意: 当您注册手机帐单时,您可能会在手机上看到以“DCB”或“DCB_Association”开头的 SMS(文本消息)。该消息会自动生成并发送,以完成您 Google Play 帐户的手机帐单注册。 

手机计费疑难解答

如果您没有看到运营商代扣选项,请记住:

  • 手机帐单仅可使用 Google Play 商店应用程序进行。它在计算机或移动浏览器上的 Google Play 网站上不可用。
  • 您在运营商处的帐户必须信誉良好。
  • 如果您使用带有双 SIM 卡的设备,请确保将正确的 SIM 卡放入插槽 1,并将插槽 2 留空。
  • 移动电话计费在有 root 权限的设备上不可用。
  • 某些移动电话运营商不能用于支付订阅费用。

请咨询您的运营商以确保:

  • 您没有超过运营商的每月支出限额。
  • 您的设备和服务计划允许购买高级内容。
  • 您的设备可以使用手机计费。

取消的购买

        未成功获得运营商授权的购买将立即取消。如需有关不成功的移动电话账单购买的帮助,请联系您的移动服务提供商。

电子钱包

        您可以使用 Touch 'n Go Wallet 在 Google Play 上购买应用程序和数字内容。您需要有足够余额的已注册Touch 'n Go 钱包帐户才能在 Google Play 上使用此服务。

查找您可以使用的付款方式

        可用的付款方式因国家/地区而异。

        点击查找所在国家支付情况

Google Play登录报错

做Google Play登录获取不到用户信息Google Play登录

        1.查看凿洞网络是否开启(12501)

        2.查看代码是否有误

        3.查看此应用是否加入Google Play应用签名计划

        如果加入涉及三方的都要使用应用签名证书下的资料

        例:google登录中开发者账号>API权限>关联的项目>选中你的关联项目

        例:facebook中登录的keyhash要做调整

        但是:打包时还是用原来的jks文件

使用firebase

Facebook登录

做Facebook登录获取不到用户信息

        前提是测试时正常,发版后查看keyhash配制是否正确

提示:"登录错误:登录此应用程序时出错。请稍后再试。"

        1.简单的临时解决方案是从您连接的Facebook应用程序中删除Deezer,并使用您的Facebook帐户重新连接到Deezer,该帐户无法更改您的密码。至少这适用于使用Facebook创建的Spotify帐户,现在也存在这个问题。

        2.keyhash配制是否正确

        keyhash可多个并存

        web和app应用,或者打包电脑不同存在多个keyhash

        web获取方式,直接打开会给一个keyhash

        app应用:    
        1:keytool -exportcert -alias androiddebugkey -keystore "C:\\Users\\USERNAME\\.android\\debug.keystore" | "PATH_TO_OPENSSL_LIBRARY\\bin\\openssl" sha1 -binary | "PATH_TO_OPENSSL_LIBRARY\\bin\\openssl" base64

        注:openssl不是内部或外部命令

        2:放在自己的Activity界面运行生成

try 
    PackageInfo info = getPackageManager().getPackageInfo(
            "com.ceshi.demo",
            PackageManager.GET_SIGNATURES);
    for (Signature signature : info.signatures) 
        MessageDigest md = MessageDigest.getInstance("SHA");
        md.update(signature.toByteArray());
        Log.e("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
    
 catch (PackageManager.NameNotFoundException e) 
 catch (NoSuchAlgorithmException e) 

谷歌提问

让应用商店详情的介绍文字更改颜色

答:在编辑文字时,加入 html 的色彩编码。例如:<font color="blue">您的文字 </font>

参考链接:快去找吧

预注册数量没有变化

答:有一定的数量要求,未达到数量要求则会一直显示为0

预注册:

        在后台的预注册数量数据,每日更新时间为PST 12点。若您在此时间吴看到任何数据更新,便代表预注册人数低于一定数值因而没显现出来,因此请您等待几小时后再查看。

相关推荐

Mycard支付

ONE store支付

Google Pay接入

aab打包

以上是关于【Google pay接入】获取refresh_token的主要内容,如果未能解决你的问题,请参考以下文章

网站接入微信支付

Google Pay API - 在没有 JWT 的情况下向 Google Pay 应用程序插入通行证

Google Pay API for Pass

如何通过android java发送google pay“请求”,如amazon bhim pay在线支付

Google Pay支付遇到的问题

Google Pay 使用 .net 解密直接令牌