You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用PayPal Disputes API提交文件时返回INVALID_EVIDENCE_FILE错误

问题分析与修复方案

你的代码核心问题在于MultipartFormDataContent的字段命名和结构不符合PayPal API要求,导致返回INVALID_EVIDENCE_FILE错误,具体问题和修复如下:

1. JSON元数据缺少指定name="input"

PayPal要求multipart请求中的JSON数据部分必须以input作为表单字段名,你的代码未设置该属性,导致API无法识别请求元数据。

2. 文件部分缺少name="file"和filename属性

文件内容的表单字段名必须固定为file,同时需要明确指定filename参数,否则PayPal无法正确解析文件的基本信息。

3. 空evidences列表不符合API规则

evidences数组不能为空,必须至少包含一个证据对象,指定evidence_type(如INVOICE、PROOF_OF_DELIVERY等)和必要的notes说明。


修复后的完整代码

using (var httpClient = new HttpClient())
{
    httpClient.DefaultRequestHeaders.Authorization = AuthenticationHeaderValue.Parse($"Bearer {auth.access_token}");

    var form = new MultipartFormDataContent();

    // 构造符合API要求的证据元数据
    var evidenceData = new
    {
        evidences = new List<object>
        {
            new
            {
                evidence_type = "INVOICE", // 根据实际证据类型选择对应枚举值
                notes = "上传的发票作为争议举证材料"
            }
        }
    };
    string strData = JsonConvert.SerializeObject(evidenceData);

    // 设置JSON部分的表单字段名和内容类型
    var jsonPart = new StringContent(strData, Encoding.UTF8, "application/json");
    jsonPart.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")
    {
        Name = "input" // 必须指定该字段名
    };
    form.Add(jsonPart);

    // 设置文件部分的表单字段名、文件名和内容类型
    var byteContent = new ByteArrayContent(fileBytes);
    byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");
    byteContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")
    {
        Name = "file", // 必须指定该字段名
        FileName = fileNameWithExtension // 明确传入文件名
    };
    form.Add(byteContent);

    using (var response = await httpClient.PostAsync($"{BaseUrl()}{path}", form))
    {
        strResponse = await response.Content.ReadAsStringAsync();
        var statusCode = (int)response.StatusCode;
        if (statusCode is < 200 or >= 300)
        {
            throw new PaypalClientException(strResponse);
        }
    }
}

额外注意事项

  • evidence_type必须使用PayPal允许的枚举值,比如PROOF_OF_SERVICE、TRACKING_INFO等,需根据实际举证类型选择。
  • 文件大小不能超过10MB,支持的格式包括PDF、JPG、PNG等。
  • 确认沙箱环境的token令牌和端点地址配置正确,避免混淆生产环境参数。

内容的提问来源于stack exchange,提问作者Tom Gullen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 07:22:11