私のTwistedサーバーのアップルストアサーバーで、inAppの購入からトランザクションの領収書を検証しようとしています。私は(SKPaymentTransaction *)transaction.transactionReceipt
を私のアプリから私のサーバーに送ってきました。Twistedサーバーによるアップルストアのレシート検証
しかし、AppleサーバーにJSONオブジェクトを送信すると、Agent.request()
からDeferredで未処理のエラーが発生します。私はApple Storeからの応答のためにポート443でリッスンしていないのでこれが疑わしいですが、私のアプリケーションがポート443でTwistedサーバーと通信することも望ましくありません。ここに私のコードです:
from twisted.application import internet, service
from twisted.internet import protocol, reactor
from zope.interface import implements
from twisted.web.iweb import IBodyProducer
from twisted.internet import defer
from twisted.web.client import Agent
from twisted.web.http_headers import Headers
import json
import base64
class StringProducer(object):
implements(IBodyProducer)
def __init__(self, body):
self.body = body
self.length = len(body)
def startProducing(self, consumer):
consumer.write(self.body)
return succeed(None)
def pauseProducing(self):
pass
def stopProducing(self):
pass
def printResponse(response):
print response # just testing to see what I have
def httpRequest(url, values, headers={}, method='POST'):
agent = Agent(reactor)
d = agent.request(method,
url,
Headers(headers),
StringProducer(values)
)
d.addCallback(printResponse)
class storeServer(protocol.Protocol):
def dataReceived(self, data):
receiptBase64 = base64.standard_b64encode(data)
jsonReceipt = json.dumps({'receipt-data':receiptBase64})
print jsonReceipt # verified that my data is correct
d = httpRequest(
"https://buy.itunes.apple.com/verifyReceipt",
jsonReceipt,
{'Content-Type': ['application/x-www-form-urlencoded']}
)
factory = protocol.Factory()
factory.protocol = storeServer
tcpServer = internet.TCPServer(30000, factory)
tcpServer.setServiceParent(application)
どうすればこのエラーを修正できますか?ポート443でリッスンする別のサービスを作成する必要がありますか?もしそうなら、私のアプリに接続しているサービスを、https経由で接続しているサービスとどのように通信させることができますか?
あなたは何を得るのか、あなたはそれを得るだけではありません。完全なエラーテキスト(トレースバックと例外)を常に含める必要があります。 –
ここでエラーが発生します: '2011-10-22 17:09:32-0400 [ - ]遅延の未処理エラー: 2011-10-22 17:09:32-0400 [ - ]未処理のエラー \tトレースバック最後の最後のコール): \t失敗:twisted.web._newclient.RequestGenerationFailed:[>] ' –
richard