下記コードの出力が文字化けしてしまってレスポンスのbodyが読めない状態です。
Node.jsのrequestモジュールの使い方になるのかもしれませんが、もし分かる方いたら教えてください。
引数にはbase64でエンコードされた文字列を渡しています。

コード

var request = require('request')
var receipt = process.argv[2]
console.log(receipt)
request.post({url: 'https://sandbox.itunes.apple.com/verifyReceipt',
  json: true,
  headers: {"User-Agent":"MySampleApp/5.3.0 CFNetwork/711.1.12 Darwin/14.0.0",
  "Content-Type":"application/x-www-form-urlencoded",
  "Accept-Encoding":"gzip, deflate",
  "Accept-Language":"ja-jp"},
  form: {"receipt-data":receipt}
}, function(err,httpResponse,body) {
    console.log(httpResponse.statusCode)
    if (err) {
      console.log("ERR")
      console.log(err)
    } else {
      console.log(body)
      console.log(JSON.stringify(body))
      console.log(JSON.parse(body))
    }     
  }     
)     

出力

�V*.I,)-V�22400�΀s�
"\u001f�\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000�V*.I,)-V�22400�\u0005\u0000΀s�\u0010\u0000\u0000\u0000"
undefined:1
�   
^   
SyntaxError: Unexpected token
    at Object.parse (native)
    at Request._callback (/Users/tsuzuki/dvideo/dummyshop/receipt-verify-test/verifyReceipt.js:19:24)
    at Request.self.callback (/Users/tsuzuki/dvideo/dummyshop/receipt-verify-test/node_modules/request/request.js:354:22)
    at Request.emit (events.js:110:17)
    at Request.<anonymous> (/Users/tsuzuki/dvideo/dummyshop/receipt-verify-test/node_modules/request/request.js:1207:14)
    at Request.emit (events.js:129:20)
    at IncomingMessage.<anonymous> (/Users/tsuzuki/dvideo/dummyshop/receipt-verify-test/node_modules/request/request.js:1153:12)
    at IncomingMessage.emit (events.js:129:20)
    at _stream_readable.js:908:16
    at process._tickCallback (node.js:355:11)

サンプルコード
https://github.com/toshi0383/iap-verify-receipt-sample

詳細

In-App Purchaseのレシート検証の試験をしています。

アプリ=>自分のサーバ=>Appleという風にレシートを送って検証したいのですが、21002(The data in the receipt-data property was malformed or missing)のステータスコードで返ってきてしまっていました。
アプリから直接レシートを送る(レシート検証プログラミングガイドに載っているサンプルを使う)とうまく行くのですが、それは非推奨です。
問題を単純化するために、Charlesを使って端末から送られたPOSTリクエストを取得して、再現してみたのが、上記コードです。
(OSXではcurlコマンドでhttpsにPOSTする場合不具合があるため、Node.jsを使っています。)

いろいろ試したところ、なんとか21002のステータスコードではないものが返ってくるようになったのですが、bodyが文字化けしてしまって、結果OKなのかどうかわからない。。という状態です。

よろしくお願いいたします。