【问题标题】:Get INVALID_REQUEST-MISSING_OR_INVALID_REQUEST_BODY when trying to upload file evidence via PayPal API尝试通过 PayPal API 上传文件证据时获取 INVALID_REQUEST-MISSING_OR_INVALID_REQUEST_BODY
【发布时间】:2021-08-07 14:28:56
【问题描述】:

我正在尝试通过 PayPal API (https://developer.paypal.com/docs/api/customer-disputes/v1/) 的文档上传证据文件

但我收到错误 400 - INVALID_REQUEST, MISSING_OR_INVALID_REQUEST_BODY。

我不明白我做错了什么。这是生成表单数据的代码的一部分:

const str = {
evidences: [
{
evidence_type: "PROOF_OF_FULFILLMENT",
evidence_info: {
tracking_info: [
{
carrier_name: "FEDEX",
tracking_number: "122533485"
}
]
},
notes: "Test"
}
]
}
const data = JSON.stringify(str);

const formData = new FormData();
formData.append('input', data);
formData.append('type', "application/json");
formData.append('file1', fileBuffer, {
filename: "@maor.pdf"
});

这是请求的日志:

{
method: 'post',
headers: {
'Content-Type': 'multipart/related; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW',
Authorization: 'Bearer XXXXXXXXXXX'
},
body: FormData {
_overheadLength: 364,
_valueLength: 75083,
_valuesToMeasure: [],
writable: false,
readable: true,
dataSize: 0,
maxDataSize: 2097152,
pauseStreams: true,
_released: false,
_streams: [
'----------------------------736530077015435126960318\r\n' +
'Content-Disposition: form-data; name="input"\r\n' +
'\r\n',
'{"evidences":[{"evidence_type":"PROOF_OF_FULFILLMENT","evidence_info":{"tracking_info":[{"carrier_name":"FEDEX","tracking_number":"122533485"}]},"notes":"Test"}]}',
[Function: bound ],
'----------------------------736530077015435126960318\r\n' +
'Content-Disposition: form-data; name="type"\r\n' +
'\r\n',
'application/json',
[Function: bound ],
'----------------------------736530077015435126960318\r\n' +
'Content-Disposition: form-data; name="file1"; filename="@maor.pdf"\r\n' +
'Content-Type: application/pdf\r\n' +
'\r\n',
<Buffer 25 50 44 46 30 20 6f 62 6a 0a 3c 3c 2f 50 61 67 65 0a 2f 50 61 72 65 6e 74 20 31 20 30 20 52 0a 2f 4d 65 64 69 ... 74855 more bytes>,
[Function: bound ]
],
_currentStream: null,
_insideLoop: false,
_pendingNext: false,
_boundary: '--------------------------736530077015435126960318'
}
}

我做错了什么?

【问题讨论】:

    标签: javascript node.js express paypal paypal-sandbox


    【解决方案1】:

    我做错了什么?

    您正在发布表单数据。 PayPal REST API 不接受表单数据,仅接受 JSON 字符串,对于此特定调用,该字符串必须是多类型内容字符串的一部分。请参阅您链接到的文档以了解该字符串的外观;从您的日志中可以清楚地看出,您没有发布这样的字符串。

    【讨论】:

    • 好的,谢谢。那么,您可以告诉我如何将此 cURL 转换为常规发布请求吗?
    • 这很简单,您需要为“多部分/相关”MIME 消息(特别是)构建一个具有适当格式的字符串,并将该字符串作为您的数据发布。下面是一个例子:stackoverflow.com/questions/34905363/…,你可以搜索其他人。确保它们用于“多部分/相关”,在搜索时将其放在引号中。
    猜你喜欢
    • 2021-07-26
    • 2021-05-01
    • 2021-08-09
    • 1970-01-01
    • 1970-01-01
    • 2020-06-09
    • 1970-01-01
    • 2017-04-27
    • 2021-07-22
    相关资源
    最近更新 更多