来源|OPMETA优化研习社
前言
"为什么我的GooglePlay应用没有内购订单和内购收入呢"有时候不完全是因为用户不想内购,其实很可能是因为用户的支付路径存在问题,比如点击支付按钮后没能弹出支付窗口、弹出支付窗口后商品价格与显示价格不一致、明明卡中余额充足但支付后窗口提示付款错误等等问题。为了避免出现这些类似的情形,在应用上线尤其打算进行买量推广前都不容忽视GooglePlay内购测试这一步骤,今天打算就GooglePlay内购测试的一些注意事项跟大家分享和探讨。
为什么要做GooglePlay内购测试?
上架包含有内购商品的GooglePlay应用,可以通过内购测试来确认内购接入效果,以确保应用上线后玩家能正常购买和支付。
怎么做GooglePlay内购测试?
在之前的文章提到过相关测试步骤,这里总结概括为以下6步:
1. 内购集成库&商品ID创建
在程序层面集成GooglePlay内购的集成库文档可参考:
https://developer.android.com/google/play/billing/integrate并在GooglePlay后台设置对应的商品ID,客户端在拉起Billing SDK时对应设定的商品ID进行处理。
2. 提包
导出aab包提到Google Play的的App Bundle管理器或者内部测试/封闭测试/开放性测试轨道中
3. 配置测试许可
在测试邮箱中添加测试账号,并将许可测试的状态更改为许可【licensed】
4.配置Visa卡
配置Visa卡,当显示为测试订单时,实际测试不会支付费用。
如没有Visa卡,也可以尝试使用Google Play官方推出的测试卡套件模拟配置测试卡进行测试。
参考文档:
https://developers.google.com/pay/api/android/guides/resources/test-card-suite?hl=zh-cn5. 测试界面测试卡选择
完成测试卡配置之后,点击测试卡的界面测试卡会出现4种不同的选择。可以验证不同的支付条件下应用的奖品下发是否正常。
Test card, always approves - 测试卡,一律批准
Test card, always decline - 测试卡,一律拒绝
-
常规测试卡 (Test Card) 指的是玩家直接通过Google Play进行支付,GP通过玩家配置的银行卡进行付款,如果说GP能够从银行卡里收钱,则会批准交易。如果扣款失败,则会拒绝交易。
-
针对这两种情况,需要重点测试的是产品能否及时监听到Google Billing SDK给的支付状态的回调并以合理的逻辑发放奖励。尤其是测试玩家拒绝付款之后是否还会出现奖励仍然发放的情况。
Slow test card, approves after a few minutes - 慢速测试卡,几分钟后批准
Slow test card, declines after a few minutes - 慢速测试卡,几分钟后拒绝
-
慢速测试卡 (Slow Test Card) 指的是玩家直接不直接通过Google Play进行支付,在东南亚,南美等地区,由于银行卡支付系统并不完善,当地玩家有通过三方支付系统付款(Paypal)或者线下便利店充值的习惯。这个时候订单不是马上完成的,订单状态会变为pending,且Google Play后台会显示一个【待处理付款】的订单。开发者需要在应用内不定期监听这些订单是否有更新状态,在应用新启动的时候也需要监听订单是否完成,从而及时的发放奖励。
6. 报错代码-Google Payment error code
如果说在测试过程中出现Google支付的报错,可以参考google官方的报错代码来定位可能导致的问题。
https://developer.android.com/google/play/billing/errors?hl=zh-cn
内购测试中的误区
误区1:测试邮箱账号和GooglePlay常规登录邮箱账号不一致
因为提包到GooglePlay测试轨道,测试账号下载都会跳转到GooglePlay页面进行下载,如果两者登录的账号不同就相当于没有配置成功测试许可。
GooglePlay商店切换账号
误区2:弹出支付窗口不等于测试成功,要支付成功并且在GooglePlay后台看到测试订单才算单订单测试成功
弹出支付窗口只代表内购窗口能正常拉起,并不等于测试成功。在测试过程中我曾发现很多应用都能正常弹出支付窗口,但是实际无法支付能失败的情形。
误区3: 真实付款or不用真实付款
测试订单会提示this is a test order,you will not be charged时在测试时不用真实的付款出去,如果不是测试账号也可选择真实付款在订单界面再退款,不过如果内购商品测试数量较多,建议还是选择测试订单的方法。
误区4:新版本or前一个版本
GooglePlay测试轨道上架新版本到新版本完全能更新下载其实存在一段时间的延迟,如果发现GooglePlay内购存在问题更新了新版本,打开测试链接下载是要确认下版本号是新版本还是旧版本,一般更新版本后40分钟甚至需要半天时间打开测试链接才是新版本,否则即使更新了新版本,下载的其实还是未更新的前一个版本。
误区5:测试的APK包
不是对接好Billing SDK,导出APK包就可以直接测试的,需要把aab包上传到Google Play后台的App Bundle管理器之后(不一定要发内部测试或者别的测试轨道),再下载带GP签名的应用才可以正常调起支付功能。
导致测试失败的特殊情况
1. GP后台配置的商品ID错误
这个是最常见的GP内购测试失败的问题,代码里调用的SKU ID要与后台的完全一致(包括大小写)才可以正常拉起对应的商品。
2. 测试国家存在不完全匹配的情况
GooglePlay账号国家、visa卡所属地区、测试的国家存在不完全匹配的情况,可能导致在某些国家无法测试,我在测试过程中遇到过GP账号为美国,测试美国、加拿大等欧美国家能正常支付,测试菲律宾会提示测试失败。
3. GP商品名称显示存在延迟
如果想连续测试多个国家比如测试完美国再测试中国香港,GooglePlay的内购货币其实不会立马从美元切换到港币,中间仍有40分钟甚至以上的延迟期。
内购商品名称本地化适配
对尤其有主量地区的应用需要在内购测试中确认下商品名称的本地化,避免美国用户点击购买窗口后弹出的是中文的商品名称,同时订单本地化的商品名称也要和显示的商品一致,比如界面显示$0.99可购买钻石60个,订单中设置的商品名称要一致为Diamond*60,避免用户因为对商品信息不理解或获取信息不对称而放弃付款。
商品名称、ID和价格设置
内购问题排查分析
可以用应用内埋点来排查监控应用的内购问题,我这里举3个埋点事件给大家进行参考,比如通过设置埋点事件:
-
purchase_click(代表用户点击内购商品按钮)
-
purchase_success(代表用户成功购买商品)
-
payment_cancel(代表付款订单取消)
-
payment_error(代表付款失败,可以增加付款失败具体原因报错代码)
用purchase_click和purchase_success时间可以看出具备内购意愿到付款成功的流失率,再通过payment_cancel和payment_error事件排查流失的原因。
总结
GooglePlay内购测试是应用上架调试重要的一项,我总结了一些测试过程中的误区和内购测试排查的方法,希望能帮到更多应用完善内购测试,顺利获得内购收入!