如何为应用内购买开发付款验证?

时间:2011-07-01 06:02:44

标签: iphone algorithm security in-app-purchase

我开发了一个被拒绝的iPhone应用程序。通过这个应用程序,我提供短信传输服务。在我的网站上,每个用户都有一个帐户,他可以在网站上购买积分,以便能够发送短信。

拒绝的原因是我的应用程序使用外部服务,我的网站。他们说我必须使用应用程序内购买积分。

所以现在我要扩展我的api。因此,如果在应用程序中进行购买,则Web服务器需要知道有购买和购买类型。这是使用HTTP-POST完成的。

我可以构建一个简单的网址并在用户帐户中注册购买,因为我可以验证在应用商店中是否正确执行了购买。但是为了防止黑客入侵,出于安全原因,我认为必须进行某种加密。

E.g。如果应用程序中的付款流程成功,我会向我的网络服务器发送HTTP-POST。它包含一些可由Web服务器加密的加密密钥。

你怎么看待这一切?如何在应用程序内购买以及我可以使用哪种安全算法时使api安全?

还有其他建议或想法吗?

4 个答案:

答案 0 :(得分:6)

您应该查看Server Product Model,而不是尝试在设备上为您的应用创建一些方法,告诉服务器信用是在事后购买的。关于Verifying Store Receipts的部分将派上用场;简而言之,您的应用会将transactionReceipt的内容传输到您的服务器(最好通过HTTPS)。您的服务器对其进行64位编码,将其嵌入到简单的JSON对象中,并将其发布到Apple以获取状态和验证的购买信息。

答案 1 :(得分:2)

我有一个完整的storekit实现,包括服务器代码。

http://blog.mugunthkumar.com/coding/mkstorekit-4-0-supporting-auto-renewable-subscriptions/

试试这个

答案 2 :(得分:1)

您应该在public key encryption上查看此Wiki文章。这就是你可能正在使用的东西。

CommonCrypto是一个可用于iOS的模块,用于处理此类加密。以下是使用此模块的iOS开发人员库中的sample project

答案 3 :(得分:-1)

是的你是对的。这是最好的方法。当用户使用应用程序内购买(IAP)购买信用卡时,您将获得购买成功的委托方法。因此,您可以在此委托方法中调用Server API,并在服务器数据库的用户表中放置一些带有信用卡号的标志。您可以加密此信息,您的服务器将对其进行解密并插入您的数据库。