Post payment method configurations configuration

Update payment method configuration

Script stripe Verified

by hugo697 ยท 10/30/2023

The script

Submitted by hugo697 Typescript (fetch-only)
Verified 368 days ago
1
type Stripe = {
2
  token: string;
3
};
4
/**
5
 * Post payment method configurations configuration
6
 * Update payment method configuration
7
 */
8
export async function main(
9
  auth: Stripe,
10
  configuration: string,
11
  body: {
12
    acss_debit?: {
13
      display_preference?: {
14
        preference?: "none" | "off" | "on";
15
        [k: string]: unknown;
16
      };
17
      [k: string]: unknown;
18
    };
19
    active?: boolean;
20
    affirm?: {
21
      display_preference?: {
22
        preference?: "none" | "off" | "on";
23
        [k: string]: unknown;
24
      };
25
      [k: string]: unknown;
26
    };
27
    afterpay_clearpay?: {
28
      display_preference?: {
29
        preference?: "none" | "off" | "on";
30
        [k: string]: unknown;
31
      };
32
      [k: string]: unknown;
33
    };
34
    alipay?: {
35
      display_preference?: {
36
        preference?: "none" | "off" | "on";
37
        [k: string]: unknown;
38
      };
39
      [k: string]: unknown;
40
    };
41
    apple_pay?: {
42
      display_preference?: {
43
        preference?: "none" | "off" | "on";
44
        [k: string]: unknown;
45
      };
46
      [k: string]: unknown;
47
    };
48
    apple_pay_later?: {
49
      display_preference?: {
50
        preference?: "none" | "off" | "on";
51
        [k: string]: unknown;
52
      };
53
      [k: string]: unknown;
54
    };
55
    au_becs_debit?: {
56
      display_preference?: {
57
        preference?: "none" | "off" | "on";
58
        [k: string]: unknown;
59
      };
60
      [k: string]: unknown;
61
    };
62
    bacs_debit?: {
63
      display_preference?: {
64
        preference?: "none" | "off" | "on";
65
        [k: string]: unknown;
66
      };
67
      [k: string]: unknown;
68
    };
69
    bancontact?: {
70
      display_preference?: {
71
        preference?: "none" | "off" | "on";
72
        [k: string]: unknown;
73
      };
74
      [k: string]: unknown;
75
    };
76
    blik?: {
77
      display_preference?: {
78
        preference?: "none" | "off" | "on";
79
        [k: string]: unknown;
80
      };
81
      [k: string]: unknown;
82
    };
83
    boleto?: {
84
      display_preference?: {
85
        preference?: "none" | "off" | "on";
86
        [k: string]: unknown;
87
      };
88
      [k: string]: unknown;
89
    };
90
    card?: {
91
      display_preference?: {
92
        preference?: "none" | "off" | "on";
93
        [k: string]: unknown;
94
      };
95
      [k: string]: unknown;
96
    };
97
    cartes_bancaires?: {
98
      display_preference?: {
99
        preference?: "none" | "off" | "on";
100
        [k: string]: unknown;
101
      };
102
      [k: string]: unknown;
103
    };
104
    cashapp?: {
105
      display_preference?: {
106
        preference?: "none" | "off" | "on";
107
        [k: string]: unknown;
108
      };
109
      [k: string]: unknown;
110
    };
111
    customer_balance?: {
112
      display_preference?: {
113
        preference?: "none" | "off" | "on";
114
        [k: string]: unknown;
115
      };
116
      [k: string]: unknown;
117
    };
118
    eps?: {
119
      display_preference?: {
120
        preference?: "none" | "off" | "on";
121
        [k: string]: unknown;
122
      };
123
      [k: string]: unknown;
124
    };
125
    expand?: string[];
126
    fpx?: {
127
      display_preference?: {
128
        preference?: "none" | "off" | "on";
129
        [k: string]: unknown;
130
      };
131
      [k: string]: unknown;
132
    };
133
    giropay?: {
134
      display_preference?: {
135
        preference?: "none" | "off" | "on";
136
        [k: string]: unknown;
137
      };
138
      [k: string]: unknown;
139
    };
140
    google_pay?: {
141
      display_preference?: {
142
        preference?: "none" | "off" | "on";
143
        [k: string]: unknown;
144
      };
145
      [k: string]: unknown;
146
    };
147
    grabpay?: {
148
      display_preference?: {
149
        preference?: "none" | "off" | "on";
150
        [k: string]: unknown;
151
      };
152
      [k: string]: unknown;
153
    };
154
    ideal?: {
155
      display_preference?: {
156
        preference?: "none" | "off" | "on";
157
        [k: string]: unknown;
158
      };
159
      [k: string]: unknown;
160
    };
161
    jcb?: {
162
      display_preference?: {
163
        preference?: "none" | "off" | "on";
164
        [k: string]: unknown;
165
      };
166
      [k: string]: unknown;
167
    };
168
    klarna?: {
169
      display_preference?: {
170
        preference?: "none" | "off" | "on";
171
        [k: string]: unknown;
172
      };
173
      [k: string]: unknown;
174
    };
175
    konbini?: {
176
      display_preference?: {
177
        preference?: "none" | "off" | "on";
178
        [k: string]: unknown;
179
      };
180
      [k: string]: unknown;
181
    };
182
    link?: {
183
      display_preference?: {
184
        preference?: "none" | "off" | "on";
185
        [k: string]: unknown;
186
      };
187
      [k: string]: unknown;
188
    };
189
    name?: string;
190
    oxxo?: {
191
      display_preference?: {
192
        preference?: "none" | "off" | "on";
193
        [k: string]: unknown;
194
      };
195
      [k: string]: unknown;
196
    };
197
    p24?: {
198
      display_preference?: {
199
        preference?: "none" | "off" | "on";
200
        [k: string]: unknown;
201
      };
202
      [k: string]: unknown;
203
    };
204
    paynow?: {
205
      display_preference?: {
206
        preference?: "none" | "off" | "on";
207
        [k: string]: unknown;
208
      };
209
      [k: string]: unknown;
210
    };
211
    paypal?: {
212
      display_preference?: {
213
        preference?: "none" | "off" | "on";
214
        [k: string]: unknown;
215
      };
216
      [k: string]: unknown;
217
    };
218
    promptpay?: {
219
      display_preference?: {
220
        preference?: "none" | "off" | "on";
221
        [k: string]: unknown;
222
      };
223
      [k: string]: unknown;
224
    };
225
    revolut_pay?: {
226
      display_preference?: {
227
        preference?: "none" | "off" | "on";
228
        [k: string]: unknown;
229
      };
230
      [k: string]: unknown;
231
    };
232
    sepa_debit?: {
233
      display_preference?: {
234
        preference?: "none" | "off" | "on";
235
        [k: string]: unknown;
236
      };
237
      [k: string]: unknown;
238
    };
239
    sofort?: {
240
      display_preference?: {
241
        preference?: "none" | "off" | "on";
242
        [k: string]: unknown;
243
      };
244
      [k: string]: unknown;
245
    };
246
    us_bank_account?: {
247
      display_preference?: {
248
        preference?: "none" | "off" | "on";
249
        [k: string]: unknown;
250
      };
251
      [k: string]: unknown;
252
    };
253
    wechat_pay?: {
254
      display_preference?: {
255
        preference?: "none" | "off" | "on";
256
        [k: string]: unknown;
257
      };
258
      [k: string]: unknown;
259
    };
260
  }
261
) {
262
  const url = new URL(
263
    `https://api.stripe.com/v1/payment_method_configurations/${configuration}`
264
  );
265

266
  const response = await fetch(url, {
267
    method: "POST",
268
    headers: {
269
      "Content-Type": "application/x-www-form-urlencoded",
270
      Authorization: "Bearer " + auth.token,
271
    },
272
    body: encodeParams(body),
273
  });
274
  if (!response.ok) {
275
    const text = await response.text();
276
    throw new Error(`${response.status} ${text}`);
277
  }
278
  return await response.json();
279
}
280

281
function encodeParams(o: any) {
282
  function iter(o: any, path: string) {
283
    if (Array.isArray(o)) {
284
      o.forEach(function (a) {
285
        iter(a, path + "[]");
286
      });
287
      return;
288
    }
289
    if (o !== null && typeof o === "object") {
290
      Object.keys(o).forEach(function (k) {
291
        iter(o[k], path + "[" + k + "]");
292
      });
293
      return;
294
    }
295
    data.push(path + "=" + o);
296
  }
297
  const data: string[] = [];
298
  Object.keys(o).forEach(function (k) {
299
    if (o[k] !== undefined) {
300
      iter(o[k], k);
301
    }
302
  });
303
  return new URLSearchParams(data.join("&"));
304
}
305