1 | type Stripe = { |
2 | token: string; |
3 | }; |
4 | |
5 | * Post payment intents |
6 | * Creates a PaymentIntent object. |
7 |
|
8 | After the PaymentIntent is created, attach a payment method and confirm |
9 | to continue the payment. Learn more about the available payment flows |
10 | with the Payment Intents API. |
11 |
|
12 | When you use confirm=true during creation, it’s equivalent to creating |
13 | and confirming the PaymentIntent in the same call. You can use any parameters |
14 | available in the confirm API when you supply |
15 | confirm=true. |
16 | */ |
17 | export async function main( |
18 | auth: Stripe, |
19 | body: { |
20 | amount: number; |
21 | application_fee_amount?: number; |
22 | automatic_payment_methods?: { |
23 | allow_redirects?: "always" | "never"; |
24 | enabled: boolean; |
25 | [k: string]: unknown; |
26 | }; |
27 | capture_method?: "automatic" | "automatic_async" | "manual"; |
28 | confirm?: boolean; |
29 | confirmation_method?: "automatic" | "manual"; |
30 | currency: string; |
31 | customer?: string; |
32 | description?: string; |
33 | error_on_requires_action?: boolean; |
34 | expand?: string[]; |
35 | mandate?: string; |
36 | mandate_data?: |
37 | | { |
38 | customer_acceptance: { |
39 | accepted_at?: number; |
40 | offline?: { [k: string]: unknown }; |
41 | online?: { |
42 | ip_address: string; |
43 | user_agent: string; |
44 | [k: string]: unknown; |
45 | }; |
46 | type: "offline" | "online"; |
47 | [k: string]: unknown; |
48 | }; |
49 | [k: string]: unknown; |
50 | } |
51 | | ""; |
52 | metadata?: { [k: string]: string }; |
53 | off_session?: boolean | ("one_off" | "recurring"); |
54 | on_behalf_of?: string; |
55 | payment_method?: string; |
56 | payment_method_configuration?: string; |
57 | payment_method_data?: { |
58 | acss_debit?: { |
59 | account_number: string; |
60 | institution_number: string; |
61 | transit_number: string; |
62 | [k: string]: unknown; |
63 | }; |
64 | affirm?: { [k: string]: unknown }; |
65 | afterpay_clearpay?: { [k: string]: unknown }; |
66 | alipay?: { [k: string]: unknown }; |
67 | au_becs_debit?: { |
68 | account_number: string; |
69 | bsb_number: string; |
70 | [k: string]: unknown; |
71 | }; |
72 | bacs_debit?: { |
73 | account_number?: string; |
74 | sort_code?: string; |
75 | [k: string]: unknown; |
76 | }; |
77 | bancontact?: { [k: string]: unknown }; |
78 | billing_details?: { |
79 | address?: |
80 | | { |
81 | city?: string; |
82 | country?: string; |
83 | line1?: string; |
84 | line2?: string; |
85 | postal_code?: string; |
86 | state?: string; |
87 | [k: string]: unknown; |
88 | } |
89 | | ""; |
90 | email?: string | ""; |
91 | name?: string | ""; |
92 | phone?: string | ""; |
93 | [k: string]: unknown; |
94 | }; |
95 | blik?: { [k: string]: unknown }; |
96 | boleto?: { tax_id: string; [k: string]: unknown }; |
97 | cashapp?: { [k: string]: unknown }; |
98 | customer_balance?: { [k: string]: unknown }; |
99 | eps?: { |
100 | bank?: |
101 | | "arzte_und_apotheker_bank" |
102 | | "austrian_anadi_bank_ag" |
103 | | "bank_austria" |
104 | | "bankhaus_carl_spangler" |
105 | | "bankhaus_schelhammer_und_schattera_ag" |
106 | | "bawag_psk_ag" |
107 | | "bks_bank_ag" |
108 | | "brull_kallmus_bank_ag" |
109 | | "btv_vier_lander_bank" |
110 | | "capital_bank_grawe_gruppe_ag" |
111 | | "deutsche_bank_ag" |
112 | | "dolomitenbank" |
113 | | "easybank_ag" |
114 | | "erste_bank_und_sparkassen" |
115 | | "hypo_alpeadriabank_international_ag" |
116 | | "hypo_bank_burgenland_aktiengesellschaft" |
117 | | "hypo_noe_lb_fur_niederosterreich_u_wien" |
118 | | "hypo_oberosterreich_salzburg_steiermark" |
119 | | "hypo_tirol_bank_ag" |
120 | | "hypo_vorarlberg_bank_ag" |
121 | | "marchfelder_bank" |
122 | | "oberbank_ag" |
123 | | "raiffeisen_bankengruppe_osterreich" |
124 | | "schoellerbank_ag" |
125 | | "sparda_bank_wien" |
126 | | "volksbank_gruppe" |
127 | | "volkskreditbank_ag" |
128 | | "vr_bank_braunau"; |
129 | [k: string]: unknown; |
130 | }; |
131 | fpx?: { |
132 | bank: |
133 | | "affin_bank" |
134 | | "agrobank" |
135 | | "alliance_bank" |
136 | | "ambank" |
137 | | "bank_islam" |
138 | | "bank_muamalat" |
139 | | "bank_of_china" |
140 | | "bank_rakyat" |
141 | | "bsn" |
142 | | "cimb" |
143 | | "deutsche_bank" |
144 | | "hong_leong_bank" |
145 | | "hsbc" |
146 | | "kfh" |
147 | | "maybank2e" |
148 | | "maybank2u" |
149 | | "ocbc" |
150 | | "pb_enterprise" |
151 | | "public_bank" |
152 | | "rhb" |
153 | | "standard_chartered" |
154 | | "uob"; |
155 | [k: string]: unknown; |
156 | }; |
157 | giropay?: { [k: string]: unknown }; |
158 | grabpay?: { [k: string]: unknown }; |
159 | ideal?: { |
160 | bank?: |
161 | | "abn_amro" |
162 | | "asn_bank" |
163 | | "bunq" |
164 | | "handelsbanken" |
165 | | "ing" |
166 | | "knab" |
167 | | "moneyou" |
168 | | "n26" |
169 | | "nn" |
170 | | "rabobank" |
171 | | "regiobank" |
172 | | "revolut" |
173 | | "sns_bank" |
174 | | "triodos_bank" |
175 | | "van_lanschot" |
176 | | "yoursafe"; |
177 | [k: string]: unknown; |
178 | }; |
179 | interac_present?: { [k: string]: unknown }; |
180 | klarna?: { |
181 | dob?: { |
182 | day: number; |
183 | month: number; |
184 | year: number; |
185 | [k: string]: unknown; |
186 | }; |
187 | [k: string]: unknown; |
188 | }; |
189 | konbini?: { [k: string]: unknown }; |
190 | link?: { [k: string]: unknown }; |
191 | metadata?: { [k: string]: string }; |
192 | oxxo?: { [k: string]: unknown }; |
193 | p24?: { |
194 | bank?: |
195 | | "alior_bank" |
196 | | "bank_millennium" |
197 | | "bank_nowy_bfg_sa" |
198 | | "bank_pekao_sa" |
199 | | "banki_spbdzielcze" |
200 | | "blik" |
201 | | "bnp_paribas" |
202 | | "boz" |
203 | | "citi_handlowy" |
204 | | "credit_agricole" |
205 | | "envelobank" |
206 | | "etransfer_pocztowy24" |
207 | | "getin_bank" |
208 | | "ideabank" |
209 | | "ing" |
210 | | "inteligo" |
211 | | "mbank_mtransfer" |
212 | | "nest_przelew" |
213 | | "noble_pay" |
214 | | "pbac_z_ipko" |
215 | | "plus_bank" |
216 | | "santander_przelew24" |
217 | | "tmobile_usbugi_bankowe" |
218 | | "toyota_bank" |
219 | | "velobank" |
220 | | "volkswagen_bank"; |
221 | [k: string]: unknown; |
222 | }; |
223 | paynow?: { [k: string]: unknown }; |
224 | paypal?: { [k: string]: unknown }; |
225 | pix?: { [k: string]: unknown }; |
226 | promptpay?: { [k: string]: unknown }; |
227 | radar_options?: { session?: string; [k: string]: unknown }; |
228 | revolut_pay?: { [k: string]: unknown }; |
229 | sepa_debit?: { iban: string; [k: string]: unknown }; |
230 | sofort?: { |
231 | country: "AT" | "BE" | "DE" | "ES" | "IT" | "NL"; |
232 | [k: string]: unknown; |
233 | }; |
234 | swish?: { [k: string]: unknown }; |
235 | type: |
236 | | "acss_debit" |
237 | | "affirm" |
238 | | "afterpay_clearpay" |
239 | | "alipay" |
240 | | "au_becs_debit" |
241 | | "bacs_debit" |
242 | | "bancontact" |
243 | | "blik" |
244 | | "boleto" |
245 | | "cashapp" |
246 | | "customer_balance" |
247 | | "eps" |
248 | | "fpx" |
249 | | "giropay" |
250 | | "grabpay" |
251 | | "ideal" |
252 | | "klarna" |
253 | | "konbini" |
254 | | "link" |
255 | | "oxxo" |
256 | | "p24" |
257 | | "paynow" |
258 | | "paypal" |
259 | | "pix" |
260 | | "promptpay" |
261 | | "revolut_pay" |
262 | | "sepa_debit" |
263 | | "sofort" |
264 | | "swish" |
265 | | "us_bank_account" |
266 | | "wechat_pay" |
267 | | "zip"; |
268 | us_bank_account?: { |
269 | account_holder_type?: "company" | "individual"; |
270 | account_number?: string; |
271 | account_type?: "checking" | "savings"; |
272 | financial_connections_account?: string; |
273 | routing_number?: string; |
274 | [k: string]: unknown; |
275 | }; |
276 | wechat_pay?: { [k: string]: unknown }; |
277 | zip?: { [k: string]: unknown }; |
278 | [k: string]: unknown; |
279 | }; |
280 | payment_method_options?: { |
281 | acss_debit?: |
282 | | { |
283 | mandate_options?: { |
284 | custom_mandate_url?: string | ""; |
285 | interval_description?: string; |
286 | payment_schedule?: "combined" | "interval" | "sporadic"; |
287 | transaction_type?: "business" | "personal"; |
288 | [k: string]: unknown; |
289 | }; |
290 | setup_future_usage?: "" | "none" | "off_session" | "on_session"; |
291 | verification_method?: "automatic" | "instant" | "microdeposits"; |
292 | [k: string]: unknown; |
293 | } |
294 | | ""; |
295 | affirm?: |
296 | | { |
297 | capture_method?: "" | "manual"; |
298 | preferred_locale?: string; |
299 | setup_future_usage?: "none"; |
300 | [k: string]: unknown; |
301 | } |
302 | | ""; |
303 | afterpay_clearpay?: |
304 | | { |
305 | capture_method?: "" | "manual"; |
306 | reference?: string; |
307 | setup_future_usage?: "none"; |
308 | [k: string]: unknown; |
309 | } |
310 | | ""; |
311 | alipay?: |
312 | | { |
313 | setup_future_usage?: "" | "none" | "off_session"; |
314 | [k: string]: unknown; |
315 | } |
316 | | ""; |
317 | au_becs_debit?: |
318 | | { |
319 | setup_future_usage?: "" | "none" | "off_session" | "on_session"; |
320 | [k: string]: unknown; |
321 | } |
322 | | ""; |
323 | bacs_debit?: |
324 | | { |
325 | setup_future_usage?: "" | "none" | "off_session" | "on_session"; |
326 | [k: string]: unknown; |
327 | } |
328 | | ""; |
329 | bancontact?: |
330 | | { |
331 | preferred_language?: "de" | "en" | "fr" | "nl"; |
332 | setup_future_usage?: "" | "none" | "off_session"; |
333 | [k: string]: unknown; |
334 | } |
335 | | ""; |
336 | blik?: |
337 | | { |
338 | code?: string; |
339 | setup_future_usage?: "" | "none"; |
340 | [k: string]: unknown; |
341 | } |
342 | | ""; |
343 | boleto?: |
344 | | { |
345 | expires_after_days?: number; |
346 | setup_future_usage?: "" | "none" | "off_session" | "on_session"; |
347 | [k: string]: unknown; |
348 | } |
349 | | ""; |
350 | card?: |
351 | | { |
352 | capture_method?: "" | "manual"; |
353 | cvc_token?: string; |
354 | installments?: { |
355 | enabled?: boolean; |
356 | plan?: |
357 | | { |
358 | count: number; |
359 | interval: "month"; |
360 | type: "fixed_count"; |
361 | [k: string]: unknown; |
362 | } |
363 | | ""; |
364 | [k: string]: unknown; |
365 | }; |
366 | mandate_options?: { |
367 | amount: number; |
368 | amount_type: "fixed" | "maximum"; |
369 | description?: string; |
370 | end_date?: number; |
371 | interval: "day" | "month" | "sporadic" | "week" | "year"; |
372 | interval_count?: number; |
373 | reference: string; |
374 | start_date: number; |
375 | supported_types?: "india"[]; |
376 | [k: string]: unknown; |
377 | }; |
378 | network?: |
379 | | "amex" |
380 | | "cartes_bancaires" |
381 | | "diners" |
382 | | "discover" |
383 | | "eftpos_au" |
384 | | "interac" |
385 | | "jcb" |
386 | | "mastercard" |
387 | | "unionpay" |
388 | | "unknown" |
389 | | "visa"; |
390 | request_extended_authorization?: "if_available" | "never"; |
391 | request_incremental_authorization?: "if_available" | "never"; |
392 | request_multicapture?: "if_available" | "never"; |
393 | request_overcapture?: "if_available" | "never"; |
394 | request_three_d_secure?: "any" | "automatic" | "challenge"; |
395 | require_cvc_recollection?: boolean; |
396 | setup_future_usage?: "" | "none" | "off_session" | "on_session"; |
397 | statement_descriptor_suffix_kana?: string | ""; |
398 | statement_descriptor_suffix_kanji?: string | ""; |
399 | three_d_secure?: { |
400 | ares_trans_status?: "A" | "C" | "I" | "N" | "R" | "U" | "Y"; |
401 | cryptogram: string; |
402 | electronic_commerce_indicator?: "01" | "02" | "05" | "06" | "07"; |
403 | exemption_indicator?: "low_risk" | "none"; |
404 | network_options?: { |
405 | cartes_bancaires?: { |
406 | cb_avalgo: "0" | "1" | "2" | "3" | "4" | "A"; |
407 | cb_exemption?: string; |
408 | cb_score?: number; |
409 | [k: string]: unknown; |
410 | }; |
411 | [k: string]: unknown; |
412 | }; |
413 | requestor_challenge_indicator?: string; |
414 | transaction_id: string; |
415 | version: "1.0.2" | "2.1.0" | "2.2.0"; |
416 | [k: string]: unknown; |
417 | }; |
418 | [k: string]: unknown; |
419 | } |
420 | | ""; |
421 | card_present?: |
422 | | { |
423 | request_extended_authorization?: boolean; |
424 | request_incremental_authorization_support?: boolean; |
425 | [k: string]: unknown; |
426 | } |
427 | | ""; |
428 | cashapp?: |
429 | | { |
430 | capture_method?: "" | "manual"; |
431 | setup_future_usage?: "" | "none" | "off_session" | "on_session"; |
432 | [k: string]: unknown; |
433 | } |
434 | | ""; |
435 | customer_balance?: |
436 | | { |
437 | bank_transfer?: { |
438 | eu_bank_transfer?: { country: string; [k: string]: unknown }; |
439 | requested_address_types?: ( |
440 | | "aba" |
441 | | "iban" |
442 | | "sepa" |
443 | | "sort_code" |
444 | | "spei" |
445 | | "swift" |
446 | | "zengin" |
447 | )[]; |
448 | type: |
449 | | "eu_bank_transfer" |
450 | | "gb_bank_transfer" |
451 | | "jp_bank_transfer" |
452 | | "mx_bank_transfer" |
453 | | "us_bank_transfer"; |
454 | [k: string]: unknown; |
455 | }; |
456 | funding_type?: "bank_transfer"; |
457 | setup_future_usage?: "none"; |
458 | [k: string]: unknown; |
459 | } |
460 | | ""; |
461 | eps?: { setup_future_usage?: "none"; [k: string]: unknown } | ""; |
462 | fpx?: { setup_future_usage?: "none"; [k: string]: unknown } | ""; |
463 | giropay?: { setup_future_usage?: "none"; [k: string]: unknown } | ""; |
464 | grabpay?: { setup_future_usage?: "none"; [k: string]: unknown } | ""; |
465 | ideal?: |
466 | | { |
467 | setup_future_usage?: "" | "none" | "off_session"; |
468 | [k: string]: unknown; |
469 | } |
470 | | ""; |
471 | interac_present?: { [k: string]: unknown } | ""; |
472 | klarna?: |
473 | | { |
474 | capture_method?: "" | "manual"; |
475 | preferred_locale?: |
476 | | "cs-CZ" |
477 | | "da-DK" |
478 | | "de-AT" |
479 | | "de-CH" |
480 | | "de-DE" |
481 | | "el-GR" |
482 | | "en-AT" |
483 | | "en-AU" |
484 | | "en-BE" |
485 | | "en-CA" |
486 | | "en-CH" |
487 | | "en-CZ" |
488 | | "en-DE" |
489 | | "en-DK" |
490 | | "en-ES" |
491 | | "en-FI" |
492 | | "en-FR" |
493 | | "en-GB" |
494 | | "en-GR" |
495 | | "en-IE" |
496 | | "en-IT" |
497 | | "en-NL" |
498 | | "en-NO" |
499 | | "en-NZ" |
500 | | "en-PL" |
501 | | "en-PT" |
502 | | "en-SE" |
503 | | "en-US" |
504 | | "es-ES" |
505 | | "es-US" |
506 | | "fi-FI" |
507 | | "fr-BE" |
508 | | "fr-CA" |
509 | | "fr-CH" |
510 | | "fr-FR" |
511 | | "it-CH" |
512 | | "it-IT" |
513 | | "nb-NO" |
514 | | "nl-BE" |
515 | | "nl-NL" |
516 | | "pl-PL" |
517 | | "pt-PT" |
518 | | "sv-FI" |
519 | | "sv-SE"; |
520 | setup_future_usage?: "none"; |
521 | [k: string]: unknown; |
522 | } |
523 | | ""; |
524 | konbini?: |
525 | | { |
526 | confirmation_number?: string | ""; |
527 | expires_after_days?: number | ""; |
528 | expires_at?: number | ""; |
529 | product_description?: string | ""; |
530 | setup_future_usage?: "none"; |
531 | [k: string]: unknown; |
532 | } |
533 | | ""; |
534 | link?: |
535 | | { |
536 | capture_method?: "" | "manual"; |
537 | setup_future_usage?: "" | "none" | "off_session"; |
538 | [k: string]: unknown; |
539 | } |
540 | | ""; |
541 | oxxo?: |
542 | | { |
543 | expires_after_days?: number; |
544 | setup_future_usage?: "none"; |
545 | [k: string]: unknown; |
546 | } |
547 | | ""; |
548 | p24?: |
549 | | { |
550 | setup_future_usage?: "none"; |
551 | tos_shown_and_accepted?: boolean; |
552 | [k: string]: unknown; |
553 | } |
554 | | ""; |
555 | paynow?: { setup_future_usage?: "none"; [k: string]: unknown } | ""; |
556 | paypal?: |
557 | | { |
558 | capture_method?: "" | "manual"; |
559 | preferred_locale?: |
560 | | "cs-CZ" |
561 | | "da-DK" |
562 | | "de-AT" |
563 | | "de-DE" |
564 | | "de-LU" |
565 | | "el-GR" |
566 | | "en-GB" |
567 | | "en-US" |
568 | | "es-ES" |
569 | | "fi-FI" |
570 | | "fr-BE" |
571 | | "fr-FR" |
572 | | "fr-LU" |
573 | | "hu-HU" |
574 | | "it-IT" |
575 | | "nl-BE" |
576 | | "nl-NL" |
577 | | "pl-PL" |
578 | | "pt-PT" |
579 | | "sk-SK" |
580 | | "sv-SE"; |
581 | reference?: string; |
582 | risk_correlation_id?: string; |
583 | setup_future_usage?: "" | "none" | "off_session"; |
584 | [k: string]: unknown; |
585 | } |
586 | | ""; |
587 | pix?: |
588 | | { |
589 | expires_after_seconds?: number; |
590 | expires_at?: number; |
591 | setup_future_usage?: "none"; |
592 | [k: string]: unknown; |
593 | } |
594 | | ""; |
595 | promptpay?: { setup_future_usage?: "none"; [k: string]: unknown } | ""; |
596 | revolut_pay?: |
597 | | { |
598 | setup_future_usage?: "" | "none" | "off_session"; |
599 | [k: string]: unknown; |
600 | } |
601 | | ""; |
602 | sepa_debit?: |
603 | | { |
604 | mandate_options?: { [k: string]: unknown }; |
605 | setup_future_usage?: "" | "none" | "off_session" | "on_session"; |
606 | [k: string]: unknown; |
607 | } |
608 | | ""; |
609 | sofort?: |
610 | | { |
611 | preferred_language?: |
612 | | "" |
613 | | "de" |
614 | | "en" |
615 | | "es" |
616 | | "fr" |
617 | | "it" |
618 | | "nl" |
619 | | "pl"; |
620 | setup_future_usage?: "" | "none" | "off_session"; |
621 | [k: string]: unknown; |
622 | } |
623 | | ""; |
624 | swish?: |
625 | | { |
626 | reference?: string | ""; |
627 | setup_future_usage?: "none"; |
628 | [k: string]: unknown; |
629 | } |
630 | | ""; |
631 | us_bank_account?: |
632 | | { |
633 | financial_connections?: { |
634 | permissions?: ( |
635 | | "balances" |
636 | | "ownership" |
637 | | "payment_method" |
638 | | "transactions" |
639 | )[]; |
640 | prefetch?: ("balances" | "transactions")[]; |
641 | return_url?: string; |
642 | [k: string]: unknown; |
643 | }; |
644 | mandate_options?: { |
645 | collection_method?: "" | "paper"; |
646 | [k: string]: unknown; |
647 | }; |
648 | networks?: { |
649 | requested?: ("ach" | "us_domestic_wire")[]; |
650 | [k: string]: unknown; |
651 | }; |
652 | preferred_settlement_speed?: "" | "fastest" | "standard"; |
653 | setup_future_usage?: "" | "none" | "off_session" | "on_session"; |
654 | verification_method?: "automatic" | "instant" | "microdeposits"; |
655 | [k: string]: unknown; |
656 | } |
657 | | ""; |
658 | wechat_pay?: |
659 | | { |
660 | app_id?: string; |
661 | client: "android" | "ios" | "web"; |
662 | setup_future_usage?: "none"; |
663 | [k: string]: unknown; |
664 | } |
665 | | ""; |
666 | zip?: { setup_future_usage?: "none"; [k: string]: unknown } | ""; |
667 | [k: string]: unknown; |
668 | }; |
669 | payment_method_types?: string[]; |
670 | radar_options?: { session?: string; [k: string]: unknown }; |
671 | receipt_email?: string; |
672 | return_url?: string; |
673 | setup_future_usage?: "off_session" | "on_session"; |
674 | shipping?: { |
675 | address: { |
676 | city?: string; |
677 | country?: string; |
678 | line1?: string; |
679 | line2?: string; |
680 | postal_code?: string; |
681 | state?: string; |
682 | [k: string]: unknown; |
683 | }; |
684 | carrier?: string; |
685 | name: string; |
686 | phone?: string; |
687 | tracking_number?: string; |
688 | [k: string]: unknown; |
689 | }; |
690 | statement_descriptor?: string; |
691 | statement_descriptor_suffix?: string; |
692 | transfer_data?: { |
693 | amount?: number; |
694 | destination: string; |
695 | [k: string]: unknown; |
696 | }; |
697 | transfer_group?: string; |
698 | use_stripe_sdk?: boolean; |
699 | } |
700 | ) { |
701 | const url = new URL(`https://api.stripe.com/v1/payment_intents`); |
702 |
|
703 | const response = await fetch(url, { |
704 | method: "POST", |
705 | headers: { |
706 | "Content-Type": "application/x-www-form-urlencoded", |
707 | Authorization: "Bearer " + auth.token, |
708 | }, |
709 | body: encodeParams(body), |
710 | }); |
711 | if (!response.ok) { |
712 | const text = await response.text(); |
713 | throw new Error(`${response.status} ${text}`); |
714 | } |
715 | return await response.json(); |
716 | } |
717 |
|
718 | function encodeParams(o: any) { |
719 | function iter(o: any, path: string) { |
720 | if (Array.isArray(o)) { |
721 | o.forEach(function (a) { |
722 | iter(a, path + "[]"); |
723 | }); |
724 | return; |
725 | } |
726 | if (o !== null && typeof o === "object") { |
727 | Object.keys(o).forEach(function (k) { |
728 | iter(o[k], path + "[" + k + "]"); |
729 | }); |
730 | return; |
731 | } |
732 | data.push(path + "=" + o); |
733 | } |
734 | const data: string[] = []; |
735 | Object.keys(o).forEach(function (k) { |
736 | if (o[k] !== undefined) { |
737 | iter(o[k], k); |
738 | } |
739 | }); |
740 | return new URLSearchParams(data.join("&")); |
741 | } |
742 |
|