背景信息
- Unity IAP;
- 目标是对支付异常情况的捕捉及处理;
具体实现
异常列表完善
- 内置的异常如下:
- 初始化阶段:InitializationFailureReason(3个)
- 支付阶段:PurchaseFailureReason(8个)
- 新增的异常如下(初始化阶段之前):
NetworkUnavailable
:初始化阶段的第一优先级判断,玩家本地无网络连接时;
因此,最终的异常列表如下(异常描述就省略了,🙊 当然不是因为表格太丑二删掉的):
类型 | 具体异常 | 处理方案 |
---|---|---|
判断网络 (初始化前) |
NetworkUnavailable |
网络异常 |
InitializationFailureReason (3个) |
AppNotKnown |
支付失败 |
NoProductsAvailable |
支付失败 | |
PurchasingUnavailable |
支付失败 | |
PurchaseFailureReason (8个) |
DuplicateTransaction |
/ |
ExistingPurchasePending |
/ | |
PaymentDeclined |
/ | |
ProductUnavailable |
支付失败 | |
PurchasingUnavailable |
支付失败 | |
SignatureInvalid |
支付失败 | |
Unknown |
支付失败 | |
UserCancelled |
/ |
异常处理方案
按照捕捉到的具体异常进行分类处理,共如下三类:
- 网络异常:需要交互;
- 支付失败:需要交互;
- 其他(取消/重复购买/仅iOS的特殊异常):暂不处理;