0, "enviro-6ren">
gpt4 book ai didi

ios - Mac App Store 消费品收据在服务器端验证时的 in_app 哈希为空

转载 作者:技术小花猫 更新时间:2023-10-29 10:27:45 27 4
gpt4 key购买 nike

我在服务器端验证 Mac App Store 的应用内购买(所谓的消耗品)的收据。 Apple 服务器的响应通常如下所示:

    { 
"status"=>0,
"environment"=>"Production",
"receipt" =>
{
"receipt_type" => "Production",
"adam_id"=>410628904,
"bundle_id" => "com.company.product",
"application_version"=>"1.0.0",
"download_id"=>002141541230420,
"request_date"=>"2013-10-22 07:53:11 Etc/GMT",
"request_date_ms"=>"1382428391914",
"request_date_pst"=>"2013-10-22 00:53:11 America/Los_Angeles",
"original_purchase_date"=>"2011-08-22 06:05:47 Etc/GMT",
"original_purchase_date_ms"=>"1313993147000",
"original_purchase_date_pst"=>"2011-08-21 23:05:47 America/Los_Angeles",
"original_application_version"=>"1.0.0",
"in_app"=> [
{
"quantity"=>"1",
"product_id"=>"com.company.product.mac_consumable",
"transaction_id"=>"9123912391231",
"original_transaction_id"=>"51881235936908",
"purchase_date"=>"2013-10-22 07:52:06 Etc/GMT",
"purchase_date_ms"=>"1382428326000",
"purchase_date_pst"=>"2013-10-22 00:52:06 America/Los_Angeles",
"original_purchase_date"=>"2013-10-22 07:52:06 Etc/GMT",
"original_purchase_date_ms"=>"1382428326000",
"original_purchase_date_pst"=>"2013-10-22 00:52:06 America/Los_Angeles",
"bundle_id"=>"com.company.product"
}
]
}
}

但有时我们在没有 in_app 哈希集的情况下取回信息:

    { 
"status"=>0,
"environment"=>"Production",
"receipt" =>
{
"receipt_type" => "Production",
"adam_id"=>312621904,
"bundle_id" => "com.company.product",
"application_version"=>"1.0.0",
"download_id"=>002141541230420,
"request_date"=>"2013-10-22 07:53:11 Etc/GMT",
"request_date_ms"=>"1382428391914",
"request_date_pst"=>"2013-10-22 00:53:11 America/Los_Angeles",
"original_purchase_date"=>"2011-08-22 06:05:47 Etc/GMT",
"original_purchase_date_ms"=>"1313993147000",
"original_purchase_date_pst"=>"2011-08-21 23:05:47 America/Los_Angeles",
"original_application_version"=>"1.0.0",
"in_app"=> []
}
}

这是否意味着收据无效? in_app 字段是否应该始终被填充?或者这些收据也应该被认为是有效的,为什么 in_app 信息是空的?

最佳答案

这是否意味着收据无效?

不,status 值为0,根据the docs表示收据有效。它只是不包含任何应用内购买“子收据”。

是否应始终填充 in_app 字段?

不,收据可能不包含任何应用内购买。


显然,您的问题是出于某种原因,您的应用发送到后端的收据不包含应用内购买的信息,即使您希望它包含在内也是如此。

当应用内购买交易进入“已购买”状态时,客户端设备上的收据应该是最新的——您应该确保在此之前不要尝试将收据发送到您的服务器。

要考虑尝试的另一件事是 SKReceiptRefreshRequest(不过仅在 10.9 之后可用)— 在某些边缘条件下,收据可能不是最新的,您需要等待它在将收据兑换请求发送到您的后端之前进行更新。

关于ios - Mac App Store 消费品收据在服务器端验证时的 in_app 哈希为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19518274/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com