Python Requires Chilkat v11.0.0+
Python
PayPal: Submit proof of fulfillment for a dispute
See more PayPal Examples
Inspect the actions and evidence requested for a selected dispute. When PayPal requests proof of fulfillment from the seller, attach the matching carrier receipt PDF with tracking details in a multipart request. Replace the file and tracking number with those for this case.
Chilkat Python Downloads
import sys
import chilkat2
success = False
# See Unlock Chilkat before making requests.
# For the merchant's internal backoffice application. Load the sandbox token
# from the merchant's credential store. Keep it out of publicly distributed apps.
# See Get a PayPal access token.
http = chilkat2.Http()
http.AuthToken = "SANDBOX_ACCESS_TOKEN"
resp = chilkat2.HttpResponse()
http.SetUrlVar("id","DISPUTE_ID")
success = http.HttpNoBody("GET","https://api-m.sandbox.paypal.com/v1/customer/disputes/{$id}",resp)
if (success != True):
print("No HTTP response: " + http.LastErrorText)
sys.exit()
if ((resp.StatusCode < 200) or (resp.StatusCode >= 300)):
errorInfo = chilkat2.JsonObject()
errorInfo.Load(resp.BodyStr)
print("HTTP " + str(resp.StatusCode) + " " + errorInfo.StringOf("name") + " " + errorInfo.StringOf("details[0].issue"))
print("PayPal debug ID: " + errorInfo.StringOf("debug_id"))
sys.exit()
result = chilkat2.JsonObject()
parsedResult = result.Load(resp.BodyStr)
if (parsedResult != True):
print("Expected a JSON response; HTTP " + str(resp.StatusCode))
sys.exit()
canSubmit = False
linkIndex = 0
while (linkIndex < result.SizeOfArray("links")) :
result.I = linkIndex
if (result.StringOfEquals("links[i].rel","provide_evidence",True) == True):
canSubmit = True
linkIndex = linkIndex + 1
requested = False
i = 0
while (i < result.SizeOfArray("evidences")) :
result.I = i
if ((result.StringOfEquals("evidences[i].evidence_type","PROOF_OF_FULFILLMENT",True) == True) and (result.StringOfEquals("evidences[i].source","REQUESTED_FROM_SELLER",True) == True)):
requested = True
i = i + 1
if ((canSubmit != True) or (requested != True)):
print("PayPal is not requesting seller fulfillment evidence for this case.")
sys.exit()
body = chilkat2.JsonObject()
body.UpdateString("evidences[0].evidence_type","PROOF_OF_FULFILLMENT")
body.UpdateString("evidences[0].evidence_info.tracking_info[0].carrier_name","FEDEX")
body.UpdateString("evidences[0].evidence_info.tracking_info[0].tracking_number","123456789012")
body.UpdateString("evidences[0].notes","The attached carrier receipt corresponds to this shipment.")
upload = chilkat2.HttpRequest()
upload.HttpVerb = "POST"
upload.ContentType = "multipart/form-data"
success = upload.AddStringForUpload2("input","",body.Emit(),"utf-8","application/json")
if (success != True):
print(upload.LastErrorText)
sys.exit()
success = upload.AddFileForUpload2("file1","carrier-receipt.pdf","application/pdf")
if (success != True):
print(upload.LastErrorText)
sys.exit()
success = http.HttpReq("https://api-m.sandbox.paypal.com/v1/customer/disputes/{$id}/provide-evidence",upload,resp)
if (success != True):
print("No HTTP response: " + http.LastErrorText)
sys.exit()
if ((resp.StatusCode < 200) or (resp.StatusCode >= 300)):
submitError = chilkat2.JsonObject()
submitError.Load(resp.BodyStr)
print("HTTP " + str(resp.StatusCode) + " " + submitError.StringOf("name") + " " + submitError.StringOf("details[0].issue"))
print("PayPal debug ID: " + submitError.StringOf("debug_id"))
sys.exit()
print("PayPal accepted the evidence.")