我在服务器端验证苹果收据时遇到了问题。我尝试在互联网上找到解决方案,但没有成功。
首先,该应用程序是为iOS7设计的。其次,我有几个项目(类型=非续订订阅)。因此,用户可以购买一个或多个项目,然后他应该手动续订它们(再次购买)。
应用程序向服务器端发送收据,我向Apple发送请求,并获得具有很多in_app收据的结果。类似于:
因此,“in_app”中的每个“receipt”都有一个transaction_id。但是我该如何识别当前购买的transactionId?我还想验证它,并确保它是唯一的。
我的担忧是:如果有人获得了一个有效的收据,他将能够入侵我们的服务器端API,并使用相同有效的收据进行无限次应用内购买。
我是否应该解密并检查“原始”收据的transaction_id,即我发送给苹果进行验证的那个收据?
非常感谢您的帮助/建议。 提前致谢。
敬礼, Maksim
首先,该应用程序是为iOS7设计的。其次,我有几个项目(类型=非续订订阅)。因此,用户可以购买一个或多个项目,然后他应该手动续订它们(再次购买)。
应用程序向服务器端发送收据,我向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”中的每个“receipt”都有一个transaction_id。但是我该如何识别当前购买的transactionId?我还想验证它,并确保它是唯一的。
我的担忧是:如果有人获得了一个有效的收据,他将能够入侵我们的服务器端API,并使用相同有效的收据进行无限次应用内购买。
我是否应该解密并检查“原始”收据的transaction_id,即我发送给苹果进行验证的那个收据?
非常感谢您的帮助/建议。 提前致谢。
敬礼, Maksim