C# Requires Chilkat v11.0.0+
C#
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 C# Downloads
bool 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.
Chilkat.Http http = new Chilkat.Http();
http.AuthToken = "SANDBOX_ACCESS_TOKEN";
Chilkat.HttpResponse resp = new Chilkat.HttpResponse();
http.SetUrlVar("id","DISPUTE_ID");
success = http.HttpNoBody("GET","https://api-m.sandbox.paypal.com/v1/customer/disputes/{$id}",resp);
if (success != true) {
Debug.WriteLine("No HTTP response: " + http.LastErrorText);
return;
}
if ((resp.StatusCode < 200) || (resp.StatusCode >= 300)) {
Chilkat.JsonObject errorInfo = new Chilkat.JsonObject();
errorInfo.Load(resp.BodyStr);
Debug.WriteLine("HTTP " + Convert.ToString(resp.StatusCode) + " " + errorInfo.StringOf("name") + " " + errorInfo.StringOf("details[0].issue"));
Debug.WriteLine("PayPal debug ID: " + errorInfo.StringOf("debug_id"));
return;
}
Chilkat.JsonObject result = new Chilkat.JsonObject();
bool parsedResult = result.Load(resp.BodyStr);
if (parsedResult != true) {
Debug.WriteLine("Expected a JSON response; HTTP " + Convert.ToString(resp.StatusCode));
return;
}
bool canSubmit = false;
int 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;
}
bool requested = false;
int i = 0;
while ((i < result.SizeOfArray("evidences"))) {
result.I = i;
if ((result.StringOfEquals("evidences[i].evidence_type","PROOF_OF_FULFILLMENT",true) == true) && (result.StringOfEquals("evidences[i].source","REQUESTED_FROM_SELLER",true) == true)) {
requested = true;
}
i = i + 1;
}
if ((canSubmit != true) || (requested != true)) {
Debug.WriteLine("PayPal is not requesting seller fulfillment evidence for this case.");
return;
}
Chilkat.JsonObject body = new Chilkat.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.");
Chilkat.HttpRequest upload = new Chilkat.HttpRequest();
upload.HttpVerb = "POST";
upload.ContentType = "multipart/form-data";
success = upload.AddStringForUpload2("input","",body.Emit(),"utf-8","application/json");
if (success != true) {
Debug.WriteLine(upload.LastErrorText);
return;
}
success = upload.AddFileForUpload2("file1","carrier-receipt.pdf","application/pdf");
if (success != true) {
Debug.WriteLine(upload.LastErrorText);
return;
}
success = http.HttpReq("https://api-m.sandbox.paypal.com/v1/customer/disputes/{$id}/provide-evidence",upload,resp);
if (success != true) {
Debug.WriteLine("No HTTP response: " + http.LastErrorText);
return;
}
if ((resp.StatusCode < 200) || (resp.StatusCode >= 300)) {
Chilkat.JsonObject submitError = new Chilkat.JsonObject();
submitError.Load(resp.BodyStr);
Debug.WriteLine("HTTP " + Convert.ToString(resp.StatusCode) + " " + submitError.StringOf("name") + " " + submitError.StringOf("details[0].issue"));
Debug.WriteLine("PayPal debug ID: " + submitError.StringOf("debug_id"));
return;
}
Debug.WriteLine("PayPal accepted the evidence.");