本文介绍google登录和google应用内购买以及facebook登录在他们后台申请对应key的介绍以及接入过程中会遇到的一些问题。
google登录和google支付移动端都需要对应的key,才能发起有效登录和支付请求。
Google登录
-
firebase后台申请一个对应的应用,如图1所示,在项目组中创建一个应用,需要填写包名以及
sha-1值
。 -
注册成功后需要到获取凭证的后台,如
图2
所示,获取对应的web client id
,该key用于服务器登录和支付成功后订单校验。需要注意的是,客户端和服务器端都要使用的该key。
注意:
- 这些内容在两个后台。
- 登陆过程中可能会包ApiException:8,10,12500,12501 等错误,首先需要检查你的key是否使用正确,第二个,你是否打开google登录的权限(该权限在firebase后台打开)。
- 我使用国内的设备测试,发现这些状态码是不稳定的,多点击几次也会就能正常登录。
Google pay
1.Google开发者账号
首先,需要一个google开发者账号
,该账号需要花费$25。
2. 创建和配置应用
Google play后台中创建应用,如图3所示。然后根据相关的提示,一直填写对应的信息。图4,图5
等。在填写图4的信息时,需要注意的是,需要上传一个app,然后才能够填写内容评级等相关信息。只有当图5中红圈
中的内容全部填写完成,如图6
,才能够发布应用。
3. 发布一个可测试的应用
到应用版本中-->应用版本中创建一个测试应用,按流程进行发布。该发布的过程中,需要添加测试账号如果不会添加测试账号请查看该文章,需要注意的是,测试账号添加成功后,要把应用发布成功的链接发给测试人员,需要用户同意方可参与到测试中。
注:
-
应用需要发布成功才能有测试人员同意的链接。
-
应用发布成功需要一定的时间,一般需要三个小时左右。
4.创建商品列表
当应用创建成功后,到后台的 商店发布-->应用内商品创建应用内商品列表。如图8
.
- 获取客户端支付需要的公钥,如
图10
所示。
通过以上的步骤,就可以完整的测试支付流程。由于添加了测试账号,在测试支付的过程中不需要支付实际的费用。查看应用程序购买的商品列表,如图11
在测试支付的过程中可能会遇到如下问题
支付遭拒
1.1 应用商品可能违反了当地的政策,例如vpn在中东很多国家是违法的。
1.2 由于代理的vpn,ip频繁切换导致过银行风控
1.3 绑定的银行卡地址和google后台注册的地址不相符和,可以通过修改google的地址进行解决,但是该种方式很复杂,成功率很低。
1.4 出现支付遭拒的订单号客户端是由两串number
构成的,如果是成功的情况,订单号是由GPA.number
构成。
1.5 出现支付遭拒是一件正常的事情,我咨询过很多做游戏和应用的开发,在国外都有遇到支付遭拒的情况,应该能排查代码的问题。
1.6 手机设备root过,不能支付成功
防止丢单的整个流程
你无法购买商品
1.6 测试支付的apk的版本号和线上的版本号
必须一致,否者测试支付失败
服务器检索异常
- 发布的新商品需要等一会儿客户端才能成功调用。
-
商品id
和服务器定义的id
不匹配 - 客户端使用的公钥有问题。这里需要注意的是,
google后台
显示的公钥有时会带空格,刷新一次网页就正常了。
您已经拥有该商品
- 应用内购买实际上分为两步,第一步是购买,第二步是消耗。如果你购买了某个商品没有进行消耗,那么下次就不能成功购买。在这里需要注意的是,如果你购买了商品,消耗未成功,那么调用
mHelper
提供的queryInventoryAsync
方法查询出购买未消耗的商品,对该商品进行消耗。这个过程一般跟业务逻辑有关。
例如我们现在的做法如下图:
应用初始化时,对未消耗的商品做的处理
订单丢失
在部分国家,会出现订单丢失的情况,客户端提示支付成功,但是服务器端和google后台都没有收到订单记录。这个我是在测试伊朗时发现的,但是得不到确认,很难复现。
关于绑定银行卡支付
- 如果使用真实货币支付,首先你需要一张支持外币的信用卡。例如mastcard,visa等。在绑定银行卡的过程中,你可能需要切换你的账单地址,否者很难绑定成功,总之,这个过程比较麻烦。测试支付可以添加测试账号测试。
不能弹出Google 支付的界面
- 你是否给Google Service
显示悬浮框
权限 - 该账号是否已经存在购买的商品,但是还未消耗,此时也不会弹出支付框
测试设备服务不支持
- google service版本太低,需要到应用商店的设置中,点击版本号,提示更新。这个过程有点慢,感觉点击没有反应,实际上是在后台下载。需要等一会儿,或者需要重启一下设备等。反正就是要让应用商店更新到最新的版本。否者会出现设备不支持google pay。
关于Google play store 升级
如果手机的Google 服务先关组件是通过三方安装,那么很有可能版本比较低。不支持支付的api version3. 此时需要对Google play stroe 进行升级。在菜单栏中-->设置-->点击版本号。然后点击确认。需要注意的是,点击确认后,手机可能看试没有反应。实际上在下载。根据网络情况,等一定时间,重启手机。应用就更新了。
初始化失败
如果Google服务的版本已经是最新了还出现出事话失败的情况,可以通过以下方式解决。
-
需要将手机中的google账号全部删除
-
然后把google service和google play商店中的缓存全部清理掉
-
重新登录账号。。
-
手机没有安装service相关组件,下载go安装器安装手机相关的组件,需要手动更新下,默认下载的版本有些老。
关于不能重复购买的问题
google pay分为google内购和google订阅。 google内购的商品一共分为两步,一个是购买,一步是消耗。如果购买的商品不消耗的话,下次购买不能够成功。此时返回的错误码是7.针对这种情况,有个查询的方法,可以查询到当前设备未消耗的商品,那么重新调用一次消耗方法就能解决该问题。
其他问题:
- 如果我在后台创建了内购的商品,但是我可以使用订阅的api调用,也能够成功购买。同理,创建的订阅商品,也能能够通过内购的api调用成功。
网络不支持
显然,测试google支付需要使用vpn。如果网络不通,那么上面的都等于没说。
图1创建应用的后台 图2Google登陆接入的官方demo地址
https://github.com/googlesamples/google-services/tree/master/android/signin
Google支付接入的demo
https://github.com/googlesamples/android-play-billing.git
图3
图4
图5
图6
图7
图8
图9
图10
图11
Facebook 登陆
后台的地址
https://developers.facebook.com/apps
唯一需要注意的地方就是要把对应的内容全部填写完整。测试的时候由于应用处于开发阶段,因此需要使用测试账号完成相关测试。
image.png
需要获取到KEY的位置
申请登录权限成功时,显示绿色申请登陆权限
填写完相关信息后,需要等待一定的时间,目前不知道具体时长。
遇到的问题
a.GraphServiceQueryExecutor: query error X.3GZ: [code] 1675030 [message]: 执行查询时出错。 [extra]:
请检查测试账号是否正确,测试账号都差不多一定要确认是正确的。我遇到的就是同事用了另一个测试账号,从测试名看都对的,实际上是个另外一个项目测试账号。
参考其他的链接
【链接】谷歌支付验证403错误
https://blog.csdn.net/alex_my/article/details/82984706
以上是我在接入google登陆和支付的总结。如果写的不对的地方或者需要更正的请大家留言,谢谢。
网友评论