Post payment method configurations

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

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

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