5

我一直在考虑实施新的 VerificationController 来验证应用内购买:http: //developer.apple.com/library/ios/#releasenotes/StoreKit/IAP_ReceiptValidation/_index.html

而且我想知道如何验证交易是否有任何示例,因为这似乎- (BOOL)verifyPurchase:(SKPaymentTransaction *)transaction;还不够,它必须在内部实现以在接收到服务器数据时验证购买。

另一个问题是,如果有人知道 KNOWN_TRANSACTIONS_KEY 是什么以及如何填写它,是否只是购买的产品 ID?

4

4 回答 4

5

在文件“VerificationController.m”中,检查这个函数:

- (void)saveTransactionId:(NSString *)transactionId

我们可以看到,KNOWN_TRANSACTIONS_KEY 是一个要写入 NSUserDefaults 的键。所以我们不需要触摸它。

登录iTunes Connect >管理您的应用程序>(单击您的应用程序)>管理应用程序内购买> 单击链接查看或生成共享密钥(在页面的左下角)它将向我们显示:

共享密钥是您在调用我们的服务器以获取应用内购买收据时应使用的唯一代码。

只需单击生成。

于 2012-07-24T02:34:04.840 回答
5

你可以在这里找到一个完整的实现:https ://github.com/evands/iap_validation

于 2012-07-25T14:41:25.683 回答
3

RayWenderlich.com 教程

RayWenderlich.com网站上的这篇文章,iOS 6 中的应用内购买教程:消耗品和收据验证,提供了 Apple 代码的下载,但充实(包括 Base64 方法)和调整。

于 2014-06-03T03:23:22.980 回答
1

当事务更改为完成状态之一时,您需要对事务执行验证:

SKPaymentTransactionStatePurchased 
SKPaymentTransactionStateRestored

调用函数:

[[VerificationController sharedInstance] verifyPurchase:transaction];

正如您所说,仅查看返回值是不够的。该函数是异步的。您需要向 VerificationController.m 添加一些代码,其中显示:

#warning Validation succeeded. Unlock content here.

VerificationController.m 中还有几行带有#warning 的其他行需要处理错误。

至于 base64,您可能希望使用的另一个库是:

http://www.imthi.com/blog/programming/iphone-sdk-base64-encode-decode.php

到那个时刻

 KNOWN_TRANSACTIONS_KEY 

ITC_CONTENT_PROVIDER_SHARED_SECRET

我也想知道它们的用途以及需要它们的原因和时间。

于 2012-07-23T16:11:15.030 回答