GooglePlay
模块引入
implementation WB.fixVersions('Pay:GooglePlay')
配置文件说明
无需特殊配置,带上计费文件即可
混淆过滤
-keep class com.android.vending.billing.**
集成测试
如何判断sdk是否初始化成功?
通过GooglePayAgent查看日志,当日志输出“Init success,The BillingClient is ready”则证明初始化成功。
问题说明
1.初始化失败:
日志报:Init failed,The BillingClient is not ready,code=3
1)可能是google play service版本太旧,2)SDK版本太旧,3)vpn地域不支持,4)国内手机不支持。
解决方法:a.先验证环境。在商店下载一个有内购的应用,看能否进行内购。b.如果别人的能进行内购之后,再次测试你的应用,看是否正常,来确认应用的支付环境 是否正常。
2. 能够查询价格,但无法购买,提示"商品无法购买"之类。
这是基础配置问题,有以下可能:版本号与线上版本不对应,测试版本却不是测试账号(大概率),签名不对应。
3. 能调起弹窗,但是弹窗内容是内部错误,日志为“getDebugMessage==An internal error occurred”的,建议更换VPN。
4. 能够查询价格,但无法调起支付都没有弹窗,错误码:3,报错:Error:In-app billing error: Null data in IAB activity resul。
原因是没有给Google play商店弹窗权限,国内很多手机都有弹窗权限管理,特别是小米,如果没允许,是不会有任何提示,并且拦截了的。(这个问题在新版的gp商 店已经不存在)
5. 支付提示成功,但却走onQueryFail回调,并且返回的商品列表为null。
这是因为你调错了方法,记得purchaseInApp是内购的,purchaseSubs是订阅的。查询的时候同理。另外查询的时候报错,很有可能是你setSKUS的时候传了一个空 字符串,而不是空数组。
6. 查询的时候返回的商品列表长度为0。
setSkus的时候将内购sku和订阅sku的参数顺序弄错了,应该是第一个是内购的,第二个参数是订阅的。
或者是商品还没有发布成功,需要等待一段时间(很有可能,新发布的商品是无论怎么查询还是购买,谷歌那边都是没有响应的)
7.错误码总结:
响应代码 值 说明
BILLING_RESPONSE_RESULT_OK 0 成功
BILLING_RESPONSE_RESULT_USER_CANCELED 1 用户按上一步或取消对话框
BILLING_RESPONSE_RESULT_SERVICE_UNAVAILABLE 2 网络连接断开
BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE 3 所请求的类型不支持 Billing API 版本(支付环境问题)
BILLING_RESPONSE_RESULT_ITEM_UNAVAILABLE 4 请求的商品已不再出售。
BILLING_RESPONSE_RESULT_DEVELOPER_ERROR 5 提供给 API 的参数无效。此错误也可能说明未在 Google Play 中针对应用内购买结算正确签署或设置 应用,或者应用在其清单中不具备所需的权限。
BILLING_RESPONSE_RESULT_ERROR 6 API 操作期间出现严重错误
BILLING_RESPONSE_RESULT_ITEM_ALREADY_OWNED 7 未能购买,因为已经拥有此商品
BILLING_RESPONSE_RESULT_ITEM_NOT_OWNED 8 未能消费,因为尚未拥有此商品
最后更新于
这有帮助吗?