2016-06-30 11 views
0

私はシンプルなpaypal-ipnリスナーを構築しています。paypalを聞いてhttp POSTを受信し、データを読み込んでpaypalに送り返します。なぜpaypal-ipnは私のPOSTにINVALIDを返すのですか?

私はPayPal IPN-Simulatorを使用してIPNを送信しています。

私は基本的にhereからコードをコピーし、私はいつもINVALIDに戻ります。 stdinからのrawinputのデータを見ると、ここでエンコーディングについて何か不足しているような気がしますが、それを理解するにはあまりにも新しいものです。

#!/usr/bin/python3 
import sys 
import cgi 
import os; import json; import collections;import urllib; from urllib import parse 

PAYPAL_URL = "https://sandbox.paypal.com/cgi-bin/webscr" 

inputraw =sys.stdin.read() 

f = open('test','w') 

print("content-type: text/html\r\n\r\n") 

formData ="cmd=_notify-validate&"+parse.unquote(inputraw) 

f.write(formData+"\n") 

req = urllib.request.Request(PAYPAL_URL, formData.encode()) 

req.add_header("Content-type", "application/x-www-form-urlencoded") 
response = urllib.request.urlopen(req) 
status = str(response.read()) 

f.write(status); f.write("\n") 

if (not status == "b'VERIFIED'"): 
     f.write("OH NO") 
else: 
     f.write("OH YES") 

f.write("\n") 
f.close() 

私はまた、純粋なHTTP 200応答を送信する方法を取得し、それが働いたという理由だけでprint("content-type: text/html\r\n\r\n")ラインを使用していませんでした。

答えて

関連する問題