0

Post issuing disputes dispute submit

by
Published Oct 30, 2023

Submits an Issuing Dispute to the card network. Stripe validates that all evidence fields required for the dispute’s reason are present. For more details, see Dispute reasons and evidence.

Script stripe Verified

The script

Submitted by hugo697 Typescript (fetch-only)
Verified 398 days ago
1
type Stripe = {
2
  token: string;
3
};
4
/**
5
 * Post issuing disputes dispute submit
6
 * Submits an Issuing Dispute to the card network. Stripe validates that all evidence fields required for the dispute’s reason are present. For more details, see Dispute reasons and evidence.
7
 */
8
export async function main(
9
  auth: Stripe,
10
  dispute: string,
11
  body: { expand?: string[]; metadata?: { [k: string]: string } | "" }
12
) {
13
  const url = new URL(
14
    `https://api.stripe.com/v1/issuing/disputes/${dispute}/submit`
15
  );
16

17
  const response = await fetch(url, {
18
    method: "POST",
19
    headers: {
20
      "Content-Type": "application/x-www-form-urlencoded",
21
      Authorization: "Bearer " + auth.token,
22
    },
23
    body: encodeParams(body),
24
  });
25
  if (!response.ok) {
26
    const text = await response.text();
27
    throw new Error(`${response.status} ${text}`);
28
  }
29
  return await response.json();
30
}
31

32
function encodeParams(o: any) {
33
  function iter(o: any, path: string) {
34
    if (Array.isArray(o)) {
35
      o.forEach(function (a) {
36
        iter(a, path + "[]");
37
      });
38
      return;
39
    }
40
    if (o !== null && typeof o === "object") {
41
      Object.keys(o).forEach(function (k) {
42
        iter(o[k], path + "[" + k + "]");
43
      });
44
      return;
45
    }
46
    data.push(path + "=" + o);
47
  }
48
  const data: string[] = [];
49
  Object.keys(o).forEach(function (k) {
50
    if (o[k] !== undefined) {
51
      iter(o[k], k);
52
    }
53
  });
54
  return new URLSearchParams(data.join("&"));
55
}
56