大话Google Play

作者: 空同定翁 | 来源:发表于2017-06-16 11:15 被阅读649次

    什么是Google Play?


    受国内政策影响,大部分android用户是没有接触过google play的。Google Play是什么呢?是下载应用的Google Play Store?是必须安装的Google Play服务框架?还是在Store中买物品时的Google Play支付。我更乐意将Google Play划分为以下几个部分:

    Google Play Store

    Google Play Services

    Google Play支付

    Google Play Server

    Google Play Store


    Google Play Store

    提供了应用下载,类似与应用宝。提供的应用分为付费/免费应用,付费应用指支持google play应用内购买的应用。

    Google Play Services

    Google Play Services提供了google play支持服务,如google账户服务等。

    Google Play支付

    Google Play支付,其作用类似于微信支付或qq钱包,是本文介绍的重点。当用户在google play store下载某个付费应用,并进行购买时,实际的购买是通过google play支付完成。

    Google Play Server

    Google Play的服务端,提供支付订单管理、票据验证等各种操作。

    如何测试Google Play支付?


    小A开发了某款应用,该应用具有应用内购买功能(用户能在应用内进行购买,如在游戏中购买钻石游戏币)。小A现在需要将该应用发布到Google Play Store中,发布前希望能测试该应用的购买功能。Google Play提供了免费测试购买功能,即测试用户可以免费购买应用内物品。

    该测试需要在Google Play Console中进行配置

    Google Play应用内购买


    什么是应用内购买?

    简单来说,就是用户能在应用内购买物品,如用户能在王者荣耀中买游戏币买钻石等。

    Google Play提供了应用内购买的能力,说人话就是:用户可以通过Google Play支付来完成应用内物品的购买。

    回到小A发布应用的例子上,先回答几个问题:

    1. 小A为什么要发布应用到Googel Play Store呢?

    答:推广应用,提高下载量,赚钱。

    2. 应用发布到Google Play Store有什么要求呢?

    答:这么说吧,发布到Google Play Store的应用如果具有应用内购买功能的话,Google要求一定要用Google Play支付。为什么呢?Google 要分成,分30%。那Google当然得知道每个应用的账单流水了,要不然怎么计算这30%。

    那Google Play应用内购买是怎么玩的呢?

    ps: 为防讲的不清楚,先贴个官方版:google play应用内购买

    先举个例子:深圳有很多大商场,如天虹,天虹中有各种品牌的店面,如adidas,nike。5号小B发工资了,带着妹子来逛天虹,想给妹子买双运动鞋。逛了一大圈后,决定在nike店里买鞋x。服务员给小B开了单子,叫他出门左拐去收银台付款;小B拿着单在收银台付钱后,收银员给小B一个付钱后的票据;小B拿着票据,回到nike店,取回买好的鞋子。

    上面例子中,可类比成:

    小B买鞋的例子涉及到几个概念:

    物品

    下单

    支付

    票据

    发货


    物品

    国外都是物品概念,这就话怎么理解呢?

    即一个物品对应一个物品Id,用户一次只能购买一个物品。

    假设某游戏存在游戏币x,假如小C想购买5个游戏币x,有两种方法,方法A:一次购买5个游戏币x;方法B:购买5次,每次购买一个游戏币x。国内支持方法A、B,但在国外如google play或iap,只支持方法B。如果想一次购买5个游戏币x,那在google play中只能将5个游戏币x配置成一个物品。

    Google Play将物品划分为:消耗型物品订阅型物品。

    消耗型物品

    用户物品购买完成后必须消耗,否则不能再次购买该物品。

    回到上面例子,小C想购买5个游戏币x,现只能通过购买5次来实现。那小C在每次购买完游戏币x后,都必须通过Google Play的消耗接口消耗该物品,否则下次小C不能再购买游戏币x,并提示小C“已拥有该物品“”。

    消耗接口:Google Play提供的API,用来物品购买后的消耗。

    订阅型物品

    订阅物品购买后不需要消耗。

    订阅型物品类似于国内的包月、7天特权等概念。如腾讯视频的月卡会员、vip7天特权,对应到Google Play就是:按月订阅型物品,按周订阅型物品。

    示例

    上图是配置在Google Play应用的物品信息,可以看出:

    每个物品对应一个唯一的物品Id

    每个物品有对应的价格

    后两个订阅型物品,是按3个月订阅的,即用户购买三个月后,用户不再拥有该物品。

    下单/支付

    Google Play是不区分下单和支付的,即当用户购买物品时,用户支付完成后,Google Play Server会为这次购买生成一个唯一的订单号。

    用户购买完成后,Google会将订单信息发送到用户关联的GMail邮箱中:

    测试用户购买

    应用的测试用户可免费购买该应用内的物品,Google Play Server同样会为其生成唯一的订单号,但该订单号是由字母组成,而真实付费购买订单是由数字组成,如上图所示。


    票据

    当用户支付完成后,开发者在支付接口回调中,会收到这次购买的票据信息。如:

    如上所示,票据主要包含了以下部分:

    订单号

    应用包名

    购买的物品Id

    购买时间

    购买状态

    透传字段

    该字段是开发者调用Google Play支付接口时传入,支付完成后,在票据中返回。其作用主要有:

    安全验证,通过判断该字段是否相同来判断是否为虚假票据。

    信息关联,如在米大师中,米大师会为每次购买生成唯一的订单号,通过该字段可以实现米大师订单号与Google Play订单号的关联。

    GW返回令牌

    该字段主要用于Google Developer API的使用。

    发货

    Google Play不存在发货概念,当用户支付完成后,开发者只需在Google Play支付回调中通知应用服务端进行发货,并在发货完成后,调用Google Play的消耗接口进行消耗即可。

    举个栗子:

    小B在王者荣耀韩国版买了1000点券,支付通过Google Play完成,小B在完成支付后,查看账户余额发现购买1000点券已经发放。这1000点券由谁发放呢?当然是由应用自身去完成发货,即王者荣耀,而由于王者荣耀韩国版接的是米大师,物品托管在米大师,所有这1000点券就交由米大师去发放了。

    发货通知方式

    Google Play

    Google Play采用SDK通知方式,通知应用服务器发货:

    用户支付完成后,开发者在Google Play支付回调中通知应用SDK发货;

    应用SDK通知应用Server发货

    国内渠道

    国内大部分渠道采用的是Server通知方式,即由支付渠道Server通知应用Server进行发货。

    Google Play存在问题


    Google Play从发布到现在已历经多个版本,当年的业务场景发展到现在也暴露出了不是问题。业务在接入Google Play时也经常会碰到各种疑惑,这其中包括:

    汇率

    币种

    退款


    汇率

    Google使用用户下单时的汇率,并将买家币种换算成Google账号所有币种。现在汇率是全天候更新,Google会自动完成币种换算。

    这意味着啥?

    意味着开发者再也不用关注汇率带来的坑了!在之前,Google Play的汇率不是实时更新的,那就可能存在用户通过汇率差低价买入物品,而导致开发者损失。

    关于汇率差,还存在一个问题:就是Google Play结算问题。

    Google Play结算采用的方式应该是固定周期结算(降低结算费用),那可能存在以下情况:

    开发者银行账户是香港的,用户在美国购买了物品,购买时汇率为A,而到Google Play结算时美元兑换港币汇率发生变化,此时汇率为B。如果B小于A,用户是否有损失,此时Google Play是如何进行处理的?

    币种

    当用户点击够买某物品时,会弹出Google Play确认框,上面会显示物品的价格和币种:

    之前测试发现,不同的情况,该币种不一样。这个币种是由什么决定的呢?

    绑卡用户

    什么是绑卡用户,即用户在Google Payment完成信用卡的绑定,绑卡时需要填写用户的归属地。

    绑卡后,以后用户的支付币种就由绑卡用户的归属地决定。

    非绑卡用户

    如果用不未绑卡,那这个币种就是根据用户的IP决定的。如用户IP在香港,显示的就是HK了,在美国显示的就是US。

    固定币种

    某些区域,如南非,可能由于当地货币汇率变化太快。Google Play在这些区域采用默认币种进行支付,默认币种为美元。

    退款

    Google Play允许用户在购买物品两小时内全额退款,但一个用户下一个物品只能退款一次。

    Google Play允许的退款范围包括:

    购买两小时内退款

    未经授权的交易退款:65天内可申请退款

    商品有缺陷或无意中进行交易退款:48小时内可申请退款,48小时后由开发者决定是否退款。

    退款存在问题:

    用户在某游戏中购买了物品x,两小时内进行退款,此时物品已经发货。此时物品已发货,但开发者并未收到钱,导致开发者损失,而Google Play并不补偿这部分损失。

    解决方法:

    首先Google Play针对退款进行限次,两小时内同一物品只能退款一次,其它退款需要进行审核。其次,应用开发者可以通过接入风控系统来发现恶意退款。米大师接入了风控系统,能根据用户设备账号等信息判断用户是否是恶意退款,从而避免业务损失。

    相关文章

      网友评论

      • 弦上月满:你的博文,错别字略多
      • V_Ballack:请教一个问题,Google官方文档上写的是测试订单不会显示orderId字段,但是我这边的测试订单,每一笔都有orderId。请问这个是什么情况?
        空同定翁:@V_Ballack 我们自己的内部风控系统
        V_Ballack:@空同定翁 十分感谢您的回答。我们这边也面临用户恶意退款的情况,请问您提到的风控系统,是google提供的服务吗?可以发一下官方的链接给我吗?
        空同定翁:@V_Ballack 这个我们也发现了,最近google play应该是更改策略了,之前是没有订单号的。现在每笔测试都有订单号,而且订单号也不是以前的字母形式,而是正式订单好的形式。另外,不清楚的可以在google play console中问google 客服。

      本文标题:大话Google Play

      本文链接:https://www.haomeiwen.com/subject/dgaaxxtx.html