iphone:应用内购买错误

标签 iphone objective-c in-app-purchase storekit

我正在开发一个应用程序并在其中使用应用程序内购买。我在 iTunes Connect 中创建了应用内产品。直到昨天一切正常。但今天。它开始给出这个错误。

“错误:付款请求仅限于通过 Store Kit 的 didRecieveResponse 方法退回的有效产品。”

我不知道是什么问题。请回复

最佳答案

好的,这可能是确凿的证据 --

根据 Store Kit 应用的官方数据流,您应该在尝试购买 (SKPaymentQueue) 之前检索有关可用购买的信息 (SKProductsRequest)。

我添加了代码来做到这一点,即使没有使用本地化数据。我打了电话,验证了该项目存在,然后转储了一个关于它的 NSLOG。

购买成功,没有错误!

然后我删除了调用 SKProductsRequest 的代码,并重新运行它,并收到“付款请求受限...”错误消息。

似乎商店工具包框架已更改为要求您调用 SKProductsRequest,以便在将它们添加到 SKPaymentQueue 时购买行为正确。

在计算机科学方面,他们似乎在两个逻辑上相关但独立的模块之间引入了硬依赖。这是一个非常糟糕的做法。

尝试将此代码添加到您的应用程序中,并在对 SKPaymentQueue 进行“真实”调用之前的某个时刻调用 dumpProductInfo 并查看它是否开始工作——确保使用您的实际产品标识符更新嵌入的字符串文字.

-(void) dumpProductInfo
{
        SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithObject:@"com.company.domain.app.purchase"]];
        request.delegate = self;
        [request start];
}

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
    NSArray *myProduct = response.products;
    // populate UI
    NSLog(@"Products:");
    for (int i = 0; i < [myProduct count]; i++)
    {
        SKProduct *product = [myProduct objectAtIndex:i];
        NSLog(@"Name: %@ - Price: %f   ID: %@" ,
              [product localizedTitle],
              [[product price] doubleValue], 
              [product productIdentifier]);

    }
}

跟进:如下所述,Apple 技术说明 QA1691 证实我认为发生的事情是正确的——在我们弄清楚两周后:p

关于iphone:应用内购买错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3768621/

相关文章:

javascript - DOM 就绪的 iOS UIWebView

c# - Apple Receipt Verifier 返回 JsonException

ios - 当我更改订阅时,沙箱 IAP 返回错误 Domain=SKErrorDomain Code=0 "Cannot connect to iTunes Store"

ios - 编辑期间阻塞的字段。 ( swift - iOS)

objective-c - iMac 可以使用 CLLocationManager 吗?

javascript - 如何检查应用程序是否从 Safari 中的 JS 安装?

ios - 谷歌地图 sdks 集成未在 iOS9 中绘制 map

ios - 取消订阅后,用户仍可以访问应用程序

ios - NSOperationQueue 和传递数据

ios - 如何将初始数据播种到 Core Data + iCloud?