我已经在我的 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/