首页 > 解决方案 > 显示 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, headers=headers, data=json.dumps(data))
    return HttpResponse(status=200)


任何有贝宝经验或使用 API 的人看到我的问题?

标签: pythonpaypalpython-requestspaypal-rest-sdk

解决方案


要添加跟踪号(不更新),请使用 HTTP POST 请求,如文档中所述。

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",
      "status": "SHIPPED",
      "carrier": "FEDEX"
    }
  ]
}

请注意,这trackers是一个JSON object(s)数组


推荐阅读