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 |
|