【发布时间】:2015-03-12 12:31:22
【问题描述】:
我在服务器端验证苹果收据时遇到问题。 我试图在互联网上找到解决方案,但没有成功。
所以,描述: 首先,应用程序是为iOS7制作的。其次,我有一些项目( type = Non-Renewing Subscription )。所以用户可以购买一件或多件商品,然后他应该手动更新它们(再次购买)。
应用程序向服务器端发送收据,我向 Apple 发出请求并获得 很多 in_app 收据的结果。比如:
"in_app":[
{
"quantity":"1", "product_id":"...", "transaction_id":"...",
"original_transaction_id":"...", "purchase_date":"...",
"purchase_date_ms":"...", "purchase_date_pst":"...",
"original_purchase_date":"...",
"original_purchase_date_ms":"...", "original_purchase_date_pst":"...",
"is_trial_period":"..."},
{
"quantity":"1", "product_id":"...",
"transaction_id":"...","original_transaction_id":"...",
"purchase_date":"...", "purchase_date_ms":"...",
"purchase_date_pst":"...", "original_purchase_date":"...",
"original_purchase_date_ms":"...", "original_purchase_date_pst":"...",
"is_trial_period":"..."}
]
因此,“in_app”中的每个“收据”都有 transaction_id。但是如何识别当前购买的 transactionId 呢?我也想验证它并确保它是唯一的。
我担心的是:如果有人获得一张有效收据,他将能够破解我们的服务器端 API,并使用同一张有效收据进行无限数量的应用内购买。
我是否应该以某种方式解密并检查“原始”收据的 transaction_id,即我发送给 Apple 进行验证的那张?
任何帮助/建议将不胜感激。 提前谢谢你。
问候, 马克西姆
【问题讨论】:
-
大声笑我只是想问同样的问题。我偶然发现了这个,看到你在 8 小时前问过这个......这只是 sux,我也不知道要做什么处理所有这些收据...
-
我想在这里做同样的检查。我希望有人看到并回答它! :\
-
我认为关键是在 app 端获取当前购买的交易 id,并将其与收据一起发送到服务器。你可以从事务对象中获取应用端的事务id。
-
感谢您的评论。但这是该方法的缺点:无法理解此收据与此交易 id 相关。
标签: ios in-app-purchase