use*_*965 13 objective-c app-store in-app-purchase ios mac-app-store
我验证了服务器端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"
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
但有时我们会在没有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"=> []
}
}
Run Code Online (Sandbox Code Playgroud)
这是否意味着收据无效?是否应始终填充in_app字段?或者这些收据是否也应被视为有效,为什么in_app信息为空?
这是否意味着收据无效?
\n\n不,status
该值为0
,根据文档,这意味着收据有效。它只是不包含任何应用内购买 \xe2\x80\x9csub-receipts\xe2\x80\x9d。
in_app 字段是否应该始终被填充?
\n\n不,收据可能不包含任何应用内购买。
\n\n因此,显然您的问题是,由于某种原因,您的应用程序发送到后端的收据不包含应用程序内购买的信息,即使您期望它包含。
\n\n当应用内购买交易进入“已购买”状态时,客户端设备上的收据应该是最新的\xe2\x80\x94,您应该确保在此之前不要尝试将收据发送到您的服务器上发生。
\n\n另一件需要考虑尝试的事情是SKReceiptRefreshRequest
(不过,仅自 10.9 起可用) \xe2\x80\x94 在某些边缘条件下,收据可能不是最新的,并且您需要等待它更新才能发送收据向您的后端发出兑换请求。
归档时间: |
|
查看次数: |
1615 次 |
最近记录: |