[iOS]苹果内购的踩坑

2020-03-06  本文已影响0人  choici
1,TransactionState
SKPaymentTransactionStatePurchased(完成)
SKPaymentTransactionStateRestored(已付费)
SKPaymentTransactionStateFailed(失败)
SKPaymentTransactionStatePurchasing(添加商品到列表)
在状态显示为完成、已付费、失败的情况时,需要调用系统API
[[SKPaymentQueue defaultQueue] finishTransaction:tran]
来终结订单状态。
2. 卡单,提示已购买将免费恢复

Appdelegate中didFinishLaunchingWithOptions添加监听[[SKPaymentQueue defaultQueue] addTransactionObserver:self];实现监听方法

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray<SKPaymentTransaction *> *)transactions{
    for (SKPaymentTransaction *transaction in transactions) {
        switch (transaction.transactionState) {
            case SKPaymentTransactionStatePurchased: {
                //交易完成
                if ([SKPaymentQueue defaultQueue]) {
                    [[SKPaymentQueue defaultQueue] finishTransaction: transaction];
                }
            }
                break;
            case SKPaymentTransactionStateFailed: {
                //交易失败
                if ([SKPaymentQueue defaultQueue]) {
                    [[SKPaymentQueue defaultQueue] finishTransaction: transaction];
                }
            }
                break;
            case SKPaymentTransactionStateRestored: {
                //付费
                if ([SKPaymentQueue defaultQueue]) {
                    [[SKPaymentQueue defaultQueue] finishTransaction: transaction];
                }
            }
                break;
            case SKPaymentTransactionStatePurchasing:
                //商品添加进列表
                break;
            default:
                break;
        }
    }
}
上一篇下一篇

猜你喜欢

热点阅读