Google 登录和支付以及Facebook登录

3,910 阅读8分钟

本文介绍google登录和google应用内购买以及facebook登录在他们后台申请对应key的介绍以及接入过程中会遇到的一些问题。 google登录和google支付移动端都需要对应的key,才能发起有效登录和支付请求。

Google登录

  1. firebase后台申请一个对应的应用,如图1所示,在项目组中创建一个应用,需要填写包名以及sha-1值

  2. 注册成功后需要到获取凭证的后台,如图2所示,获取对应的web client id,该key用于服务器登录和支付成功后订单校验。需要注意的是,客户端和服务器端都要使用的该key。

注意:

  1. 这些内容在两个后台。
  2. 登陆过程中可能会包ApiException:8,10,12500,12501 等错误,首先需要检查你的key是否使用正确,第二个,你是否打开google登录的权限(该权限在firebase后台打开)。
  3. 我使用国内的设备测试,发现这些状态码是不稳定的,多点击几次也会就能正常登录。

Google pay

1.Google开发者账号

首先,需要一个google开发者账号,该账号需要花费$25。

2. 创建和配置应用

Google play后台中创建应用,如图3所示。然后根据相关的提示,一直填写对应的信息。图4,图5等。在填写图4的信息时,需要注意的是,需要上传一个app,然后才能够填写内容评级等相关信息。只有当图5中红圈中的内容全部填写完成,如图6,才能够发布应用。

3. 发布一个可测试的应用

到应用版本中-->应用版本中创建一个测试应用,按流程进行发布。该发布的过程中,需要添加测试账号如果不会添加测试账号请查看该文章,需要注意的是,测试账号添加成功后,要把应用发布成功的链接发给测试人员,需要用户同意方可参与到测试中。

注:

  1. 应用需要发布成功才能有测试人员同意的链接。

  2. 应用发布成功需要一定的时间,一般需要三个小时左右。

4.创建商品列表

当应用创建成功后,到后台的 商店发布-->应用内商品创建应用内商品列表。如图8.

  1. 获取客户端支付需要的公钥,如图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的版本号和线上的版本号必须一致,否者测试支付失败

服务器检索异常
  1. 发布的新商品需要等一会儿客户端才能成功调用。
  2. 商品id服务器定义的id不匹配
  3. 客户端使用的公钥有问题。这里需要注意的是,google后台显示的公钥有时会带空格,刷新一次网页就正常了。
您已经拥有该商品
  1. 应用内购买实际上分为两步,第一步是购买,第二步是消耗。如果你购买了某个商品没有进行消耗,那么下次就不能成功购买。在这里需要注意的是,如果你购买了商品,消耗未成功,那么调用mHelper提供的queryInventoryAsync方法查询出购买未消耗的商品,对该商品进行消耗。这个过程一般跟业务逻辑有关。 例如我们现在的做法如下图:
    应用初始化时,对未消耗的商品做的处理
订单丢失

在部分国家,会出现订单丢失的情况,客户端提示支付成功,但是服务器端和google后台都没有收到订单记录。这个我是在测试伊朗时发现的,但是得不到确认,很难复现。

关于绑定银行卡支付
  1. 如果使用真实货币支付,首先你需要一张支持外币的信用卡。例如mastcard,visa等。在绑定银行卡的过程中,你可能需要切换你的账单地址,否者很难绑定成功,总之,这个过程比较麻烦。测试支付可以添加测试账号测试。
不能弹出Google 支付的界面
  1. 你是否给Google Service显示悬浮框权限
  2. 该账号是否已经存在购买的商品,但是还未消耗,此时也不会弹出支付框
测试设备服务不支持
  1. google service版本太低,需要到应用商店的设置中,点击版本号,提示更新。这个过程有点慢,感觉点击没有反应,实际上是在后台下载。需要等一会儿,或者需要重启一下设备等。反正就是要让应用商店更新到最新的版本。否者会出现设备不支持google pay。
关于Google play store 升级

如果手机的Google 服务先关组件是通过三方安装,那么很有可能版本比较低。不支持支付的api version3. 此时需要对Google play stroe 进行升级。在菜单栏中-->设置-->点击版本号。然后点击确认。需要注意的是,点击确认后,手机可能看试没有反应。实际上在下载。根据网络情况,等一定时间,重启手机。应用就更新了。

初始化失败

如果Google服务的版本已经是最新了还出现出事话失败的情况,可以通过以下方式解决。

  1. 需要将手机中的google账号全部删除

  2. 然后把google service和google play商店中的缓存全部清理掉

  3. 重新登录账号。。

  4. 手机没有安装service相关组件,下载go安装器安装手机相关的组件,需要手动更新下,默认下载的版本有些老。

关于不能重复购买的问题

google pay分为google内购和google订阅。 google内购的商品一共分为两步,一个是购买,一步是消耗。如果购买的商品不消耗的话,下次购买不能够成功。此时返回的错误码是7.针对这种情况,有个查询的方法,可以查询到当前设备未消耗的商品,那么重新调用一次消耗方法就能解决该问题。

其他问题:
  1. 如果我在后台创建了内购的商品,但是我可以使用订阅的api调用,也能够成功购买。同理,创建的订阅商品,也能能够通过内购的api调用成功。
网络不支持

显然,测试google支付需要使用vpn。如果网络不通,那么上面的都等于没说。

图1创建应用的后台

图2

Google登陆接入的官方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错误 blog.csdn.net/alex_my/art…

以上是我在接入google登陆和支付的总结。如果写的不对的地方或者需要更正的请大家留言,谢谢。