【问题标题】:Paypal Transactionsearch using Python使用 Python 的 Paypal 交易搜索
【发布时间】:2013-09-11 17:13:47
【问题描述】:

我有必要的身份验证详细信息,并且正在尝试执行 TransactionSearch。我不断收到错误消息: 的 TIMESTAMP = 2013%2d09%2d07T19%3a06%3a35Z&的correlationID = b7af040415e92&ACK =失败&VERSION = 0%2e000000&BUILD = 7507921&L_ERRORCODE0 = 10002&L_SHORTMESSAGE0 =认证%2fAuthorization%20Failed&L_LONGMESSAGE0 =你%20do%20not%20have%20permissions%20to%20make%20this%20API %20call&L_SEVERITYCODE0=错误

这是我的代码:

(timestamp, signature) = signaturegen.getAuthHeader(apiUser=settings.USERNAME, apiPass=settings.PASSWORD, accessTok=res2["token"], secTok=res2["tokenSecret"], httpMethod="POST", scriptURI="https://api-3t.sandbox.paypal.com/nvp")    
#the above operation is used to generate the timestamp and signature

headers = {"X-PAYPAL-AUTHORIZATION": "timestamp="+<timestamp>+",token="+<token>+",signature="+<signature>, "SUBJECT": settings.<API_USERNAME>}

data = {
"METHOD": "TransactionSearch",
"STARTDATE": "2012-01-01T05:38:48Z",
}
req= urllib2.Request("https://api-3t.sandbox.paypal.com/nvp", simplejson.dumps(data), headers)
res = urllib2.urlopen(req).read()

【问题讨论】:

  • 这段代码由于存在几个语法错误而无法运行;它甚至不会导致您的声明收到的错误。
  • 哪些语法错误??它运行并产生我在上面发布的错误。
  • &lt;timestamp&gt; 不是有效的 Python。 &lt;token&gt;&lt;signature&gt;&lt;API_USERNAME&gt; 都不是。
  • 那些只是占位符...我不想在这里发布我的沙盒凭据。

标签: python python-2.7 paypal paypal-sandbox


【解决方案1】:

我终于设法修复了代码,这是完整的版本:

import ast
import signaturegen
headers = {
    "X-PAYPAL-SECURITY-USERID": "xxxxxxxxx.xxxx.com",
    "X-PAYPAL-SECURITY-PASSWORD": "xxxxxxxx",
    "X-PAYPAL-SECURITY-SIGNATURE":  "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "X-PAYPAL-REQUEST-DATA-FORMAT": "JSON",
    "X-PAYPAL-RESPONSE-DATA-FORMAT": "JSON",
    "X-PAYPAL-APPLICATION-ID": "APP-80W284485P519543T", #APP ID for sandbox

}


    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":"TRANSACTION_SEARCH", "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 = ast.literal_eval(urllib2.urlopen(req).read())
    token = res['token']
    red_url = "https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_grant-permission&request_token=%s" % token
   if red_url:
        return HttpResponseRedirect(red_url)
    token = "xxxxxxxxxxxxxxxxxx"
    verification = "xxxxxxxxxxxxxxxxxx"
    headers2 = {
    "X-PAYPAL-SECURITY-USERID": "xxxxxxxxxxxx",
    "X-PAYPAL-SECURITY-PASSWORD": "xxxxxxxxxxxxxxxx",
    "X-PAYPAL-SECURITY-SIGNATURE": "xxxxxxxxxxxxx",
    "X-PAYPAL-REQUEST-DATA-FORMAT": "JSON",
    "X-PAYPAL-RESPONSE-DATA-FORMAT": "JSON",
    "X-PAYPAL-APPLICATION-ID": "APP-80W284485P519543T",
}
    url = "https://svcs.sandbox.paypal.com/Permissions/GetAccessToken/"


    dat2 = {
        "requestEnvelope": {"errorLanguage":"en_US"}, 
        "token": "AAAAAAAYcambja9iJfUw", 
        "verifier": "iVUJ6c-6ZNk8M6Q9hkC12A"}
    req2 = urllib2.Request("https://svcs.sandbox.paypal.com/Permissions/GetAccessToken/", simplejson.dumps(dat2), headers2)
    res2 = ast.literal_eval(urllib2.urlopen(req2).read())


    (timestamp, signature) = signaturegen.getAuthHeader(apiUser="xxxxxxxxxxxx", apiPass="xxxxxxxxxxxxxxxx", accessTok=res2["token"], secTok=res2["tokenSecret"], httpMethod="POST", scriptURI="https://api-3t.sandbox.paypal.com/nvp")    

    ultimate = {"X-PAYPAL-AUTHORIZATION": "timestamp="+timestamp+",token="+res2["token"]+",signature="+signature, "SUBJECT": settings.USERNAME}

    da = {
        "METHOD": "TransactionSearch",
        "STARTDATE": "2012-01-01T05:38:48Z",
    }
    req3 = urllib2.Request("https://api-3t.sandbox.paypal.com/nvp", urllib.urlencode(da), ultimate)
    res3 = urllib2.urlopen(req3).read()

【讨论】:

    猜你喜欢
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-27
    • 2013-02-19
    • 2021-02-08
    • 2018-12-20
    • 2020-07-05
    相关资源
    最近更新 更多