2013-09-02 1 views
1

PayPal 인증을 요청하는 요청이 있습니다. 그것은 컬 (Curl)로 쓰여 있으며 완벽하게 작동합니다. 파이썬으로 다시 작성하려고하면 오류 응답 (500000 내부 오류)이 발생합니다. 누구든지 나를 다시 작성하거나 기존 코드를 수정하는 방법을 직접 알려주실 수 있습니까?Django에서이 호출을 사용하여 Paypal에서 '내부 오류'가 발생하는 이유는 무엇입니까?

CURL

curl -s --insecure -H "X-PAYPAL-SECURITY-USERID: <user_id>" -H "X-PAYPAL-SECURITY-PASSWORD: <user_password>" -H "X-PAYPAL-SECURITY-SIGNATURE: <user_signature>" -H "X-PAYPAL-REQUEST-DATA-FORMAT: JSON" -H "X-PAYPAL-RESPONSE-DATA-FORMAT: JSON" -H "X-PAYPAL-APPLICATION-ID: APP-80W284485P519543T" https://svcs.sandbox.paypal.com/Permissions/RequestPermissions -d "{\"scope\":\"EXPRESS_CHECKOUT\", \"callback\":\"<callback_url>", \"requestEnvelope\": {\"errorLanguage\":\"en_US\"}}" 

PYTHON urllib2.Request위한

import settings 
import urllib 
import urllib2 
from django.utils import simplejson 

def home(request): 
    headers = { 
    "X-PAYPAL-SECURITY-USERID": settings.USERNAME, 
    "X-PAYPAL-SECURITY-PASSWORD": settings.PASSWORD, 
    "X-PAYPAL-SECURITY-SIGNATURE": settings.SIGNATURE, 
    "X-PAYPAL-REQUEST-DATA-FORMAT": "JSON", 
    "X-PAYPAL-RESPONSE-DATA-FORMAT": "JSON", 
    "X-PAYPAL-APPLICATION-ID": "APP-80W284485P519543T" 
    } 

    data = {"scope":"EXPRESS_CKECKOUT", callback":"http://www.example.com/success.html", "requestEnvelope": {"errorLanguage":"en_US"}} 
    req = urllib2.Request("https://svcs.sandbox.paypal.com/Permissions/RequestPermissions/", simplejson.dumps(data), urllib.urlencode(data), headers)  
    res = urllib2.urlopen(req).read() 

답변

3

오타 인수 urllib.urlencode(data)"EXPRESS_CKECKOUT" 대신 "EXPRESS_CHECKOUT" 및 셋째는 필요하지 않다.

data = {"scope":"EXPRESS_CHECKOUT", "callback":"http://www.example.com/success.html", "requestEnvelope": {"errorLanguage":"en_US"}} 
req = urllib2.Request("https://svcs.sandbox.paypal.com/Permissions/RequestPermissions/", simplejson.dumps(data), headers) 
res = urllib2.urlopen(req).read() 
+0

나는 매우 무모하다! 시디크 고마워. 이제는 완벽하게 작동합니다. – Wedava

관련 문제