错误码
使用场景
- SDK 回调失败, 获取 SDK 错误信息
OmniSDKError
API列表
接口名称 | 接口功能 |
---|---|
getCode():Int | 获取SDK错误码 |
getMessage():String | 错误描述, 可用于弹出 toast |
getDescription():String | 包含SDK以及渠道的详细异常信息, 可用于输出日志定位错误 |
代码示例
- Java
public static void onLogin(OmniSDKResult<OmniSDKLoginResult> result) {
if (result.isSuccess()) {
OmniSDKLoginInfo info = result.get().getLoginInfo();
DemoLogger.i(tag, "onLoginSuccess : " + info);
callback.onLoginSucceeded(info);
} else {
OmniSDKError error = result.error();
if (error.getCode() == OmniSDKErrorCode.USER_CANCELLED.getValue()) {
// user cancel
} else {
// fail
Log.e(TAG, "onLogin fail msg: " + error.getDescription());
Toast.makeText(activity, error.getMessage(), Toast.LENGTH_SHORT).show();
}
}
}
错误码说明
错误码 | 枚举值 | 描述 | 备注 |
---|---|---|---|
1000 | OmniSDKErrorCode.UNKNOWN_ERROR | 未知错误 | |
1001 | OmniSDKErrorCode.USER_CANCELLED | 用户操作(登录、登出、支付等等)被取消 | |
1002 | OmniSDKErrorCode.NETWORK_ERROR | 网络错误 | |
1003 | OmniSDKErrorCode.INVALID_ARGUMENT | 业务参数不合法 | |
1004 | OmniSDKErrorCode.FUNCTION_NOT_SUPPORTED | 功能不支持 | |
1005 | OmniSDKErrorCode.SERVER_ERROR | 服务器错误信息 | |
1006 | OmniSDKErrorCode.CHANNEL_ERROR | 渠道侧 SDK 错误信息 | 对应 小米 vivo opop uc 应用宝 等渠道游戏SDK具体错误信息 |
1007 | OmniSDKErrorCode.PERMISSION_MISSING_ERROR | 权限缺失错误 | 比如调用图片分享时,需要文件读取权限 |
2000 | OmniSDKErrorCode.SDK_INIT_FAIL | SDK初始化失败 | |
3000 | OmniSDKErrorCode.LOGIN_FAIL | 账号登录失败 | |
3001 | OmniSDKErrorCode.LOGOUT_FAIL | 账号登出失败 | |
4000 | OmniSDKErrorCode.PURCHASE_CREATE_ORDER_FAIL | 订单创建失败 | 1. 检查SDK参数 2. 请运营配置正确的商品 Omni后台 与 渠道后台 3. CP根据支付文档传入正确的商品参数 4.其他情况联系SDK确认。 |
4001 | OmniSDKErrorCode.PURCHASE_NOTIFY_SERVICE_FAIL_ERROR | 付款成功,通知服务器失败 | 1. 用户支付成功或商品消耗但通知服务器未成功 2. 后台机制会自动处理,处理成功后无通知,除非多次失败需要人工介入 3. 用户切换前台会触发未发货检查机制 |
4002 | OmniSDKErrorCode.PURCHASE_INIT_FAIL_ERROR | 支付服务初始化设置失败 | Google Play连接失败导致 重启游戏解决 |
4003 | OmniSDKErrorCode.PURCHASE_ITEM_SUBSCRIBED_ERROR | 商品已订阅无法重复订阅 | 不需要向用户展示,用户只需看到GP 的提示就行;因为 GP 可能会在一段时间内重复发送这个 code 类型,但其实是同一个订单;游戏应该在用户订阅过一次后,隐藏对应的订阅商品 |
4004 | OmniSDKErrorCode.PURCHASE_ITEM_PENDING_ERROR | 商品 PENDING 状态,用户按Google提示完成付款 | 订单挂起,当用户付款成功后,服务器后台收到 GP 通知,会主动通知发货。客户端 SDK 无法收到 GP 通知。 |
4005 | OmniSDKErrorCode.PURCHASE_UNKNOWN_STATE_ERROR | 商品状态未知异常 | 1. GP 返回的异常,建议重新购买或检查网络环境 2. 查看 GP 错误信息,非购买失败的,可以不用理会 |
4006 | OmniSDKErrorCode.PURCHASE_ITEM_OWNED_ERROR | 购买失败,之前购买的产品未被消耗无法重新购买 | 建议用户重启游戏,等待15分钟间隔,触发道具消耗机制 |
5000 | OmniSDKErrorCode.LOAD_AD_FAIL | 广告资源加载失败 | |
5001 | OmniSDKErrorCode.SHOW_AD_FAIL | 广告展示失败 |
GooglePay 支付响应码
以 GP 文档为主
https://developer.android.com/google/play/billing/billing_reference
public @interface BillingResponseCode {
// The request has reached the maximum timeout before Google Play responds
int SERVICE_TIMEOUT = -3; // 正常失败处理
// Requested feature is not supported by Play Store on the current device
int FEATURE_NOT_SUPPORTED = -2; // 正常失败处理
// Play Store service is not connected now - potentially transient state.
int SERVICE_DISCONNECTED = -1; // 先正常失败处理;通过监听Play Store service 回调,正常时,弹出窗口:询问用户是否进行未支付订单处理,不支付则当无效订单处理
// Success.
int OK = 0; // 支付成功
// User pressed back or canceled a dialog.
int USER_CANCELED = 1; // 用户主动取消支付
// Network connection is down.
int SERVICE_UNAVAILABLE = 2; // 网络中断,弹窗:提示用户网络异常,是否重试,不重试则当无效订单处理
// Billing API version is not supported for the type requested.
int BILLING_UNAVAILABLE = 3; // 所请求的类型不支持 Google Play 结算服务 AIDL 版本:不支持所在国家(中国大陆)使用,解决方法,1. 清除GP商店、Service缓存数据,杀掉应用(可以清缓存);2. 切到可访问的VPN网络,打开GP商店(看到图书、电影标签说明正常)。3. 重新支付
// Requested product is not available for purchase.
int ITEM_UNAVAILABLE = 4; // 请求的商品已不再出售,正常失败处理,提示由游戏处理
// Invalid arguments provided to the API. This error can also indicate that the application was not correctly signed or properly set up for In-app Billing in Google Play, or does not have the necessary permissions in its manifest.
int DEVELOPER_ERROR = 5; // 提供给 API 的参数无效。此错误也可能说明应用未针对结算服务正确签名或设置,或者在其清单中缺少必要的权限。参数(游戏处理)、签名问题:这个通常在测试阶段就会爆出,游戏处理。同时更热时注意参数。
// Fatal error during the API action.
int ERROR = 6; // API 操作期间出现严重错误:正常失败,OmniSDK 先尝试一次,再次失败时,回调正常失败逻辑
// Failure to purchase since item is already owned.
int ITEM_ALREADY_OWNED = 7;// 未能购买,因为已经拥有此商品:Consumed 问题,有商品未消耗导致无法进行新商品购买,通过机制触发订单表内这种状态的订单,进行消耗处理
// Failure to consume since item is not owned.
int ITEM_NOT_OWNED = 8; // 未能消费,因为尚未拥有此商品: 目前遇到一种是GP service 断掉,gp 直接返回 code 8
}