ios - In App Purchase 不会将其状态更改为 SKPaymentTransactionStatePurchased

标签 ios in-app-purchase

我已经在我的 iphone-ipad 应用程序中添加了应用程序购买功能,它现在可以在应用程序商店中使用。我正在更新此应用并使用以下方法获取交易状态通知

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
    for (SKPaymentTransaction *transaction in transactions)
    {
        NSLog(@"Payment Queue");
        switch (transaction.transactionState)
        {
            case SKPaymentTransactionStatePurchased:
                [self completeTransaction:transaction];
                break;
            case SKPaymentTransactionStateFailed:
                NSLog(@"Payment not finished");
                [self failedTransaction:transaction];
                break;
            case SKPaymentTransactionStateRestored:
                [self restoreTransaction:transaction];
                break;
            case SKPaymentTransactionStatePurchasing:
                NSLog(@"Trying To Purchase");
                break;
            default:
                NSLog(@"Buraya giriyor");
                break;
    }
}

}

但问题是当我尝试连接到沙箱服务器时,我得到了事务失败状态。一切都与应用程序商店中的工作相同。我刚刚更新了应用程序中的一些 View 。在商店中使用该应用程序时,它会询问 AppleID 并要求确认下载内容。当我在应用程序购买中进行测试时,它还要求提供此 AppleID 和确认。但是现在,尽管它找到并获取了产品标识符,但它并不要求这些确认。



1 月 9 日星期五 04:14:19 iPod-touch CCDergi[1740]:indirilenappkey = 201107

两行之间的日志信息属于我要购买的产品。


1 月 9 日星期五 04:14:21 iPod-touch CCDergi[1740]:-------------------------------- --------------

Fri Jan 9 04:14:21 iPod-touch CCDergi[1740] : Product title: Call Center Life Issue 8

Fri Jan 9 04:14:21 iPod-touch CCDergi[1740] : 产品描述:调用中心生活杂志第 8 期

1 月 9 日星期五 04:14:21 iPod-touch CCDergi[1740]:产品价格:2.99

1 月 9 日星期五 04:14:21 iPod-touch CCDergi[1740]:产品 ID:com.selvitech.cclife.201107

1 月 9 日星期五 04:14:21 iPod-touch CCDergi[1740]:-------------------------------- --------------

1 月 9 日星期五 04:14:21 iPod-touch CCDergi[1740]:购买 Dergi

1 月 9 日星期五 04:14:21 iPod-touch CCDergi[1740]:支付队列

1 月 9 日星期五 04:14:21 iPod-touch CCDergi[1740]:尝试购买

1 月 9 日星期五 04:14:25 iPod-touch CCDergi[1740]:支付队列

1 月 9 日星期五 04:14:25 iPod-touch CCDergi[1740]:付款未完成



可能是什么问题?我缺少什么?

提前谢谢你..

最佳答案

**(取消那个..这对我不起作用,尽管它可能对其他人有帮助)

我注意到 transactionReceipt 方法在 iOS9 上不可用。它返回 nil 值而不是收据数据。所以部分使用该方法的APP购买失败。此方法自 iOS7 起已弃用。最后它变得不起作用。

    NSData receipt = [transaction transactionReceipt]; //always return nil on ios9  

您应该使用 [NSBundle appStoreReceiptURL] 获取收据数据。

    NSURL* url = [[NSBundle mainBundle] appStoreReceiptURL];  
    NSData* receipt = [NSData dataWithContentsOfURL:url]; //works fine. 

一旦我尝试将其集成到我的应用程序中进行测试,我将进行更新。

关于ios - In App Purchase 不会将其状态更改为 SKPaymentTransactionStatePurchased,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7026630/

相关文章:

ios - 在 Swift 中使用属性和 Map 过滤自定义对象数组

ios - 显示键盘时更新 UIKeyboardAppearance

iOS - 在设备处于纵向模式时以横向方式捕获视频

iphone - 如何在运行时在 iPhone sdk 中删除图像背景

iOS 应用内购买项目未显示在发行版上,使用开发者证书运行良好

ios - 如果在数组中找不到值,则从字典中删除对象

ios - 持久化交易收据

ios - InApp购买未完成付款

ios - Apple 自动续订订阅何时续订?

ios - 何时刷新收据与恢复 iOS 中的购买?