<SKPaymentQueue: 0x283eb1090> error = Error Domain=SKErrorDomain Code=0 “发生未知错误” UserInfo={NSLocalizedDescription=发生未知错误, NSUnderlyingError=0x283208b40 {Error Domain=ASDServerErrorDomain Code=3532 “您目前已订阅此项目” UserInfo={NSLocalizedDescription=您目前已订阅此项目}}}
#pragma mark - SKPaymentTransactionObserver
//----监听购买结果
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray<SKPaymentTransaction *> *)transactions{
//记录了所有的购买记录
NSLog(@"进入paymentQueue");
for (SKPaymentTransaction *transaction in transactions) {
switch (transaction.transactionState) {
case SKPaymentTransactionStatePurchased:
{
[self verifyPruchase:transaction];
NSLog(@"交易完成");
}
break;
case SKPaymentTransactionStatePurchasing:
{
NSLog(@"商品添加进列表");
}
break;
case SKPaymentTransactionStateRestored:
{
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
NSMutableDictionary *payDic = [NSMutableDictionary dictionary];
payDic[@"result"] = [NSNumber numberWithInt:1];
[[NSNotificationCenter defaultCenter] postNotificationName:EPayFinishNotificationName object:payDic];
NSLog(@"已经购买过商品");
}
break;
case SKPaymentTransactionStateFailed:
{
NSLog(@"交易失败");
if (transaction.error.userInfo[NSUnderlyingErrorKey] != NULL) {
NSError *error = transaction.error.userInfo[NSUnderlyingErrorKey];
if (error.code == 3532) {
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
NSMutableDictionary *payDic = [NSMutableDictionary dictionary];
payDic[@"result"] = [NSNumber numberWithInt:2];
[[NSNotificationCenter defaultCenter] postNotificationName:EPayFinishNotificationName object:payDic];
NSLog(@"您目前已订阅此项目");
return;
}
}
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
NSMutableDictionary *payDic = [NSMutableDictionary dictionary];
payDic[@"result"] = [NSNumber numberWithInt:1];
[[NSNotificationCenter defaultCenter] postNotificationName:EPayFinishNotificationName object:payDic];
}
break;
default:
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
NSMutableDictionary *payDic = [NSMutableDictionary dictionary];
payDic[@"result"] = [NSNumber numberWithInt:1];
[[NSNotificationCenter defaultCenter] postNotificationName:EPayFinishNotificationName object:payDic];
NSLog(@"交易异常");
break;
}
}
}