2013-10-22 11 views
13

サーバー側のMac App Store用のアプリ内購入(いわゆる消耗品)の領収書を確認します。 Appleのサーバからの応答は、通常、次のようになります。Mac App Storeの消耗品の領収書には、サーバー側で空のin_appハッシュがあります。

{ 
     "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情報が空であるのでしょうか?

+0

私は同じ問題があります!私は何が起こったのか知る必要があります!リンゴの取引が拒否されたことはありますか?私はメッセージを表示する必要がありますか?これが発生した場合、私のアカウントはクレジットされていないようです。 – Steeve17

答えて

3

領収書が無効であることを意味しますか?

いいえ、status値はthe docsに係る領収書が有効であることを意味し、0です。アプリ内購入の「サブ領収書」は含まれていません。

in_appフィールドには常に値を設定する必要がありますか?

いいえ、領収書にはアプリ内購入が含まれていない可能性があります。


だから、明らかに、あなたの問題は、何らかの理由で、あなたのアプリがあなたのバックエンドに送信された領収書は、あなたがそれをすることを期待しても、アプリ内購入のための情報が含まれていないということです。

アプリ内購入トランザクションが「購入済み」状態になると、クライアントデバイス上で最新の状態になるはずです。これが起こる前に、領収書をサーバーに送信しないように注意してください。

試してみるべきもう1つの点は、SKReceiptRefreshRequestです(ただし、10.9以降しか使用できません) - 領収書は最新ではない可能性がありますバックエンドにリクエストしてください。

+0

私たちはリンゴからのこれらの空の領収書のための現金を得ていないので、明らかにこれらの注文はリンゴの側を通過しませんでした。私はこのケースを再現できるようにしたいと思っています。私たちが追跡するのは興味深いかもしれません。無効なクレジットカードの詳細または不十分な資金ですか? – Steeve17

+2

@ Steeve17私たちも同じ問題があります。 "in_app \":[]を実行したときに何が起こるかを正確に理解できましたか?どんなヒントにもとても感謝しています。 – tyrex

関連する問題