我正在开发我的第一个应用内购买应用程序。我想知道是否有一种方法来验证购买您的服务器。
我必须建立整个用户管理,我想知道所有注册用户他们已经在iOS设备上购买了什么,以便他们免费获得Web应用程序,或类似的东西。那么,有没有办法让我检查苹果商店方面,如果这个用户已经购买了一些产品?
编辑:
场景是这样的:
用户A在移动终端上购买app B。在此之后,我想检查我的服务器(在我的网页上,...)是否用户A购买了应用程序B,或者(类似的)用户A购买了哪个应用程序。
我不想从移动终端向我的服务器发送用户A购买应用程序B的消息,因为即使用户没有购买应用程序B,他们也可以在服务器上重现此调用。
如果用户A购买了应用B,我会在whit应用商店的服务器端查看。
7条答案
按热度按时间pdtvr36n1#
获取应用程序的收据(从
[[NSBundle mainBundle] appStoreReceiptURL]
的文件中)并将其发送到您的服务器。那要么...lc8prwob2#
我刚刚发布了一个简单的Python/Django web应用程序(In-App Purchase Receipt Verifier),它可以自动处理这个过程中令人烦恼的部分(即,在保持加密完整性的同时验证服务器上的收据)。代码本身相对简单,但我想其他人会喜欢不必在这里做这些繁琐的工作。
要使用它,只需确保您准备好了应用程序特定的共享密钥,然后转到here并单击“部署到Heroku”。您的应用程序将在一分钟内启动并运行。
我还提供了一些示例代码,说明如何使用这个Web应用程序来验证应用程序中的收据。使用Swift 4:
注意:在StackOverflow上还有其他的解决方案,建议完全在应用程序本身内进行验证,但我强烈建议不要这样做。来自Apple在《接收验证编程指南》中的文档:
使用受信任的服务器与App Store通信。使用自己的服务器可以让您将应用设计为仅识别和信任您的服务器,并确保您的服务器与App Store服务器连接。不可能直接在用户设备和App Store之间建立可信连接,因为您无法控制该连接的任何一端。
可能会做出进一步的改进,在响应头中添加某种加密签名,以便您的应用可以检查响应是否安全,但我可能会在未来的版本中添加。Done:)
kuhbmx9i3#
此
verifyReceipt
https://buy.itunes.apple.com/verifyReceipt
API的最新信息已弃用截至Mon,5 Jun 2023 23:59:59 GMT,根据verifyReceipt
的响应头Deprecation
**。verifyReceipt终结点已弃用。要在服务器上验证收据,请按照在服务器上的设备上验证收据中的步骤操作。若要在您的服务器上验证应用内购买而不使用收据,请调用App Store Server API以获取Apple为您的客户签名的交易和订阅信息,或验证您的应用获取的AppTransaction和Transaction签名数据。您还可以从App Store Server Notifications V2端点获取相同的已签名事务和订阅信息。
verifyReceipt终结点已弃用。HTTP头包括弃用日期,根据RFC 8594。
更多关于服务器端ios回执验证的细节
nwnhqdif4#
服务器可以通过Http Post与App Store验证收货。请参阅https://developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html
jdg4fx2g5#
为此,您可以使用以下内容:1.在服务器上输入用户沿着购买状态。2.您也可以使用苹果提供的支付收据使用商店工具包。
此外,如果您使用的是非消耗品,那么您只需要一个恢复按钮。请浏览一下苹果的文档。https://developer.apple.com/in-app-purchase/
iugsix8n6#
你得打个电话
在post中,你需要发送一个JSON和收据,类似这样
然后你会收到苹果服务器的回复。请记住,当您在进行测试时,您需要切换到生产环境
Apple in app purchase verication
c0vxltue7#
https://developer.apple.com/documentation/appstorereceipts/verifyreceipt
在此页面上,您可以找到有关IOS收据验证的详细信息。这很容易。您应该只发送带有有效负载的HTTP请求。