显示 INVALID_TRACKING_CODE 的 PayPal 跟踪

问题描述

看起来我所做的一切都是正确的,但我一直收到这个错误......

响应文本错误

response .text {"name":"INVALID_TRACKING_NUMBER","message":"The requested resource ID was not found","debug_id":"12345","details":[{"field":"tracker_id","value":"1234-567890","location":"path","issue":"INVALID_TRACKING_INFO"}],"links":[]}

响应状态:<Response [404]>

我使用的是真实交易和真实跟踪号。

我通过 python 来做这件事,这是我的代码

def paypal_oauth():
    url = 'https://api-m.paypal.com/v1/oauth2/token'
    headers = {
        "Content-Type": "application/json","Accept-Language": "en_US",}
    auth = "1234-1234","0987"
    data = {"grant_type":"client_credentials"}
    response = requests.post(url,headers=headers,data=data,auth=(auth))
    return response

def paypal_tracking(paypal_transaction_token,tracking_number,status,carrier):
    try:
        _paypal_oauth = paypal_oauth()
        _paypal_oauth_response = _paypal_oauth.json()
    except Exception as e:
        print(e)
        pass

    access_token = _paypal_oauth_response['access_token']
    url = 'https://api-m.paypal.com/v1/shipping/trackers/%s-%s/' % (paypal_transaction_token,tracking_number)
    # https://api-m.paypal.com/v1/shipping/trackers/1234-567890/
    carrier = carrier_code(carrier)
    # This grabs carrier from a method and gets back:  'dhl'

    headers = {
        'Content-Type' : 'application/json','Authorization' : 'Bearer %s' % access_token,}
    # {'Content-Type': 'application/json','Authorization': 'Bearer 1234'}

    data = {
        "transaction_id":"%s" % paypal_transaction_token,"tracking_number":"%s" % tracking_number,"status": "%s" % status,"carrier": "%s" % carrier
    }
    # {'transaction_id': '1234','tracking_number': '567890','status': 'SHIPPED','carrier': 'dhl'}

    response = requests.put(url,data=json.dumps(data))
    return HttpResponse(status=200)


任何有 paypal 经验或使用 API 的人都能看到我的问题吗?

解决方法

要添加跟踪号(不是更新),请使用 HTTP POST 请求 as documented

POST 的 URL 是 https://api-m.sandbox.paypal.com/v1/shipping/trackers-batch ,没有额外的 URL 参数。

正文格式为

{
  "trackers": [
    {
      "transaction_id": "8MC585209K746392H","tracking_number": "443844607820","status": "SHIPPED","carrier": "FEDEX"
    },{
      "transaction_id": "53Y56775AE587553X","tracking_number": "443844607821","carrier": "FEDEX"
    }
  ]
}

请注意,trackers 是一个 array JSON 对象