0

Create order

by
Published Apr 8, 2025

Creates an order. Merchants and partners can add Level 2 and 3 data to payments to reduce risk and payment processing costs. For more information about processing payments, see checkout or multiparty checkout.Note: For error handling and troubleshooting, see Orders v2 errors.

Script paypal Verified

The script

Submitted by hugo697 Bun
Verified 428 days ago
1
//native
2
type Paypal = {
3
  clientId: string;
4
  clientSecret: string;
5
};
6

7
async function getToken(auth: Paypal): Promise<string> {
8
  const url = new URL(`https://api-m.paypal.com/v1/oauth2/token`);
9
  const response = await fetch(url, {
10
    method: "POST",
11
    headers: {
12
      Authorization: `Basic ${btoa(`${auth.clientId}:${auth.clientSecret}`)}`,
13
    },
14
    body: new URLSearchParams({
15
      grant_type: "client_credentials",
16
    }),
17
  });
18
  if (!response.ok) {
19
    const text = await response.text();
20
    throw new Error(`Could not get token: ${response.status} ${text}`);
21
  }
22
  const json = await response.json();
23
  return json.access_token;
24
}
25
/**
26
 * Create order
27
 * Creates an order. Merchants and partners can add Level 2 and 3 data to payments to reduce risk and payment processing costs. For more information about processing payments, see checkout or multiparty checkout.Note: For error handling and troubleshooting, see Orders v2 errors.
28
 */
29
export async function main(
30
  auth: Paypal,
31
  PayPal_Request_Id: string,
32
  PayPal_Partner_Attribution_Id: string,
33
  PayPal_Client_Metadata_Id: string,
34
  Prefer: string,
35
  body: {
36
    intent: "CAPTURE" | "AUTHORIZE";
37
    payer?: { email_address?: string; payer_id?: string } & {
38
      name?: {
39
        prefix?: string;
40
        given_name?: string;
41
        surname?: string;
42
        middle_name?: string;
43
        suffix?: string;
44
        alternate_full_name?: string;
45
        full_name?: string;
46
      };
47
      phone?: {
48
        phone_type?: "FAX" | "HOME" | "MOBILE" | "OTHER" | "PAGER";
49
        phone_number: {
50
          country_code: string;
51
          national_number: string;
52
          extension_number?: string;
53
        };
54
      };
55
      birth_date?: string;
56
      tax_info?: { tax_id: string; tax_id_type: "BR_CPF" | "BR_CNPJ" };
57
      address?: {
58
        address_line_1?: string;
59
        address_line_2?: string;
60
        address_line_3?: string;
61
        admin_area_4?: string;
62
        admin_area_3?: string;
63
        admin_area_2?: string;
64
        admin_area_1?: string;
65
        postal_code?: string;
66
        country_code: string;
67
        address_details?: {
68
          street_number?: string;
69
          street_name?: string;
70
          street_type?: string;
71
          delivery_service?: string;
72
          building_name?: string;
73
          sub_building?: string;
74
        };
75
      };
76
    };
77
    purchase_units: {
78
      reference_id?: string;
79
      amount: { currency_code: string; value: string } & {
80
        breakdown?: {
81
          item_total?: { currency_code: string; value: string };
82
          shipping?: { currency_code: string; value: string };
83
          handling?: { currency_code: string; value: string };
84
          tax_total?: { currency_code: string; value: string };
85
          insurance?: { currency_code: string; value: string };
86
          shipping_discount?: { currency_code: string; value: string };
87
          discount?: { currency_code: string; value: string };
88
        };
89
      };
90
      payee?: { email_address?: string; merchant_id?: string } & {};
91
      payment_instruction?: {
92
        platform_fees?: {
93
          amount: { currency_code: string; value: string };
94
          payee?: { email_address?: string; merchant_id?: string };
95
        }[];
96
        disbursement_mode?: "INSTANT" | "DELAYED";
97
        payee_pricing_tier_id?: string;
98
        payee_receivable_fx_rate_id?: string;
99
      };
100
      description?: string;
101
      custom_id?: string;
102
      invoice_id?: string;
103
      soft_descriptor?: string;
104
      items?: {
105
        name: string;
106
        unit_amount: { currency_code: string; value: string };
107
        tax?: { currency_code: string; value: string };
108
        quantity: string;
109
        description?: string;
110
        sku?: string;
111
        category?: "DIGITAL_GOODS" | "PHYSICAL_GOODS" | "DONATION";
112
      }[];
113
      shipping?: {
114
        name?: {
115
          prefix?: string;
116
          given_name?: string;
117
          surname?: string;
118
          middle_name?: string;
119
          suffix?: string;
120
          alternate_full_name?: string;
121
          full_name?: string;
122
        };
123
        type?:
124
          | "SHIPPING"
125
          | "PICKUP_IN_PERSON"
126
          | "PICKUP_IN_STORE"
127
          | "PICKUP_FROM_PERSON";
128
        options?: {
129
          id: string;
130
          label: string;
131
          type?:
132
            | "SHIPPING"
133
            | "PICKUP_IN_STORE"
134
            | "PICKUP_FROM_PERSON"
135
            | "PICKUP";
136
          amount?: { currency_code: string; value: string };
137
          selected: false | true;
138
        }[];
139
        address?: {
140
          address_line_1?: string;
141
          address_line_2?: string;
142
          address_line_3?: string;
143
          admin_area_4?: string;
144
          admin_area_3?: string;
145
          admin_area_2?: string;
146
          admin_area_1?: string;
147
          postal_code?: string;
148
          country_code: string;
149
          address_details?: {
150
            street_number?: string;
151
            street_name?: string;
152
            street_type?: string;
153
            delivery_service?: string;
154
            building_name?: string;
155
            sub_building?: string;
156
          };
157
        };
158
      };
159
      supplementary_data?: {
160
        card?: {
161
          level_2?: {
162
            invoice_id?: string;
163
            tax_total?: { currency_code: string; value: string };
164
          };
165
          level_3?: {
166
            shipping_amount?: { currency_code: string; value: string };
167
            duty_amount?: { currency_code: string; value: string };
168
            discount_amount?: { currency_code: string; value: string };
169
            shipping_address?: {
170
              address_line_1?: string;
171
              address_line_2?: string;
172
              address_line_3?: string;
173
              admin_area_4?: string;
174
              admin_area_3?: string;
175
              admin_area_2?: string;
176
              admin_area_1?: string;
177
              postal_code?: string;
178
              country_code: string;
179
              address_details?: {
180
                street_number?: string;
181
                street_name?: string;
182
                street_type?: string;
183
                delivery_service?: string;
184
                building_name?: string;
185
                sub_building?: string;
186
              };
187
            };
188
            ships_from_postal_code?: string;
189
            line_items?: {
190
              name: string;
191
              unit_amount: { currency_code: string; value: string };
192
              tax?: { currency_code: string; value: string };
193
              quantity: string;
194
              description?: string;
195
              sku?: string;
196
              category?: "DIGITAL_GOODS" | "PHYSICAL_GOODS" | "DONATION";
197
            } & {
198
              commodity_code?: string;
199
              discount_amount?: { currency_code: string; value: string };
200
              total_amount?: { currency_code: string; value: string };
201
              unit_of_measure?: string;
202
            }[];
203
          };
204
        };
205
      };
206
    }[];
207
    payment_source?: {
208
      card?: {
209
        id?: string;
210
        name?: string;
211
        number?: string;
212
        expiry?: string;
213
        security_code?: string;
214
        last_digits?: string;
215
        card_type?:
216
          | "VISA"
217
          | "MASTERCARD"
218
          | "DISCOVER"
219
          | "AMEX"
220
          | "SOLO"
221
          | "JCB"
222
          | "STAR"
223
          | "DELTA"
224
          | "SWITCH"
225
          | "MAESTRO"
226
          | "CB_NATIONALE"
227
          | "CONFIGOGA"
228
          | "CONFIDIS"
229
          | "ELECTRON"
230
          | "CETELEM"
231
          | "CHINA_UNION_PAY";
232
        type?: "CREDIT" | "DEBIT" | "PREPAID" | "STORE" | "UNKNOWN";
233
        brand?:
234
          | "VISA"
235
          | "MASTERCARD"
236
          | "DISCOVER"
237
          | "AMEX"
238
          | "SOLO"
239
          | "JCB"
240
          | "STAR"
241
          | "DELTA"
242
          | "SWITCH"
243
          | "MAESTRO"
244
          | "CB_NATIONALE"
245
          | "CONFIGOGA"
246
          | "CONFIDIS"
247
          | "ELECTRON"
248
          | "CETELEM"
249
          | "CHINA_UNION_PAY";
250
        billing_address?: {
251
          address_line_1?: string;
252
          address_line_2?: string;
253
          address_line_3?: string;
254
          admin_area_4?: string;
255
          admin_area_3?: string;
256
          admin_area_2?: string;
257
          admin_area_1?: string;
258
          postal_code?: string;
259
          country_code: string;
260
          address_details?: {
261
            street_number?: string;
262
            street_name?: string;
263
            street_type?: string;
264
            delivery_service?: string;
265
            building_name?: string;
266
            sub_building?: string;
267
          };
268
        };
269
        attributes?: {
270
          customer?: {
271
            id?: string;
272
            email_address?: string;
273
            phone?: {
274
              phone_type?: "FAX" | "HOME" | "MOBILE" | "OTHER" | "PAGER";
275
              phone_number: {
276
                country_code: string;
277
                national_number: string;
278
                extension_number?: string;
279
              };
280
            };
281
          };
282
          vault?: { store_in_vault?: "ON_SUCCESS" };
283
        };
284
      } & {
285
        vault_id?: string;
286
        stored_credential?: {
287
          payment_initiator: "CUSTOMER" | "MERCHANT";
288
          payment_type: "ONE_TIME" | "RECURRING" | "UNSCHEDULED";
289
          usage?: "FIRST" | "SUBSEQUENT" | "DERIVED";
290
          previous_network_transaction_reference?: {
291
            id: string;
292
            date?: string;
293
            network?:
294
              | "VISA"
295
              | "MASTERCARD"
296
              | "DISCOVER"
297
              | "AMEX"
298
              | "SOLO"
299
              | "JCB"
300
              | "STAR"
301
              | "DELTA"
302
              | "SWITCH"
303
              | "MAESTRO"
304
              | "CB_NATIONALE"
305
              | "CONFIGOGA"
306
              | "CONFIDIS"
307
              | "ELECTRON"
308
              | "CETELEM"
309
              | "CHINA_UNION_PAY";
310
            acquirer_reference_number?: string;
311
          };
312
        };
313
        network_token?: {
314
          number: string;
315
          expiry: string;
316
          cryptogram?: string;
317
          eci_flag?:
318
            | "MASTERCARD_NON_3D_SECURE_TRANSACTION"
319
            | "MASTERCARD_ATTEMPTED_AUTHENTICATION_TRANSACTION"
320
            | "MASTERCARD_FULLY_AUTHENTICATED_TRANSACTION"
321
            | "FULLY_AUTHENTICATED_TRANSACTION"
322
            | "ATTEMPTED_AUTHENTICATION_TRANSACTION"
323
            | "NON_3D_SECURE_TRANSACTION";
324
          token_requestor_id?: string;
325
        };
326
        experience_context?: { return_url?: string; cancel_url?: string };
327
      };
328
      token?: { id: string; type: "BILLING_AGREEMENT" };
329
      paypal?: {
330
        vault_id?: string;
331
        email_address?: string;
332
        name?: {
333
          prefix?: string;
334
          given_name?: string;
335
          surname?: string;
336
          middle_name?: string;
337
          suffix?: string;
338
          full_name?: string;
339
        };
340
        phone?: {
341
          phone_type?: "FAX" | "HOME" | "MOBILE" | "OTHER" | "PAGER";
342
          phone_number: {
343
            country_code: string;
344
            national_number: string;
345
            extension_number?: string;
346
          };
347
        };
348
        birth_date?: string;
349
        tax_info?: { tax_id: string; tax_id_type: "BR_CPF" | "BR_CNPJ" };
350
        address?: {
351
          address_line_1?: string;
352
          address_line_2?: string;
353
          address_line_3?: string;
354
          admin_area_4?: string;
355
          admin_area_3?: string;
356
          admin_area_2?: string;
357
          admin_area_1?: string;
358
          postal_code?: string;
359
          country_code: string;
360
          address_details?: {
361
            street_number?: string;
362
            street_name?: string;
363
            street_type?: string;
364
            delivery_service?: string;
365
            building_name?: string;
366
            sub_building?: string;
367
          };
368
        };
369
        attributes?: {
370
          customer?: {
371
            id?: string;
372
            email_address?: string;
373
            phone?: {
374
              phone_type?: "FAX" | "HOME" | "MOBILE" | "OTHER" | "PAGER";
375
              phone_number: {
376
                country_code: string;
377
                national_number: string;
378
                extension_number?: string;
379
              };
380
            };
381
          } & {};
382
          vault?: { store_in_vault?: "ON_SUCCESS" } & {
383
            description?: string;
384
            usage_pattern?:
385
              | "IMMEDIATE"
386
              | "DEFERRED"
387
              | "RECURRING_PREPAID"
388
              | "RECURRING_POSTPAID"
389
              | "THRESHOLD_PREPAID"
390
              | "THRESHOLD_POSTPAID";
391
            shipping?: {
392
              name?: {
393
                prefix?: string;
394
                given_name?: string;
395
                surname?: string;
396
                middle_name?: string;
397
                suffix?: string;
398
                alternate_full_name?: string;
399
                full_name?: string;
400
              };
401
              type?:
402
                | "SHIPPING"
403
                | "PICKUP_IN_PERSON"
404
                | "PICKUP_IN_STORE"
405
                | "PICKUP_FROM_PERSON";
406
              options?: {
407
                id: string;
408
                label: string;
409
                type?:
410
                  | "SHIPPING"
411
                  | "PICKUP_IN_STORE"
412
                  | "PICKUP_FROM_PERSON"
413
                  | "PICKUP";
414
                amount?: { currency_code: string; value: string };
415
                selected: false | true;
416
              }[];
417
              address?: {
418
                address_line_1?: string;
419
                address_line_2?: string;
420
                address_line_3?: string;
421
                admin_area_4?: string;
422
                admin_area_3?: string;
423
                admin_area_2?: string;
424
                admin_area_1?: string;
425
                postal_code?: string;
426
                country_code: string;
427
                address_details?: {
428
                  street_number?: string;
429
                  street_name?: string;
430
                  street_type?: string;
431
                  delivery_service?: string;
432
                  building_name?: string;
433
                  sub_building?: string;
434
                };
435
              };
436
            };
437
            usage_type?: "MERCHANT" | "PLATFORM";
438
            owner_id?: unknown;
439
            customer_type?: "CONSUMER" | "BUSINESS";
440
            permit_multiple_payment_tokens?: false | true;
441
          };
442
        };
443
        experience_context?: {
444
          brand_name?: string;
445
          locale?: string;
446
          shipping_preference?:
447
            | "GET_FROM_FILE"
448
            | "NO_SHIPPING"
449
            | "SET_PROVIDED_ADDRESS";
450
          return_url?: string;
451
          cancel_url?: string;
452
          landing_page?: "LOGIN" | "GUEST_CHECKOUT" | "NO_PREFERENCE";
453
          user_action?: "CONTINUE" | "PAY_NOW";
454
          payment_method_preference?:
455
            | "UNRESTRICTED"
456
            | "IMMEDIATE_PAYMENT_REQUIRED";
457
        };
458
        billing_agreement_id?: string;
459
      };
460
      bancontact?: {
461
        name: string;
462
        country_code: string;
463
        experience_context?: {
464
          brand_name?: string;
465
          locale?: string;
466
          shipping_preference?:
467
            | "GET_FROM_FILE"
468
            | "NO_SHIPPING"
469
            | "SET_PROVIDED_ADDRESS";
470
          return_url?: string;
471
          cancel_url?: string;
472
        };
473
        attributes?: {};
474
      };
475
      blik?: {
476
        name: string;
477
        country_code: string;
478
        email?: string;
479
        experience_context?: {
480
          brand_name?: string;
481
          locale?: string;
482
          shipping_preference?:
483
            | "GET_FROM_FILE"
484
            | "NO_SHIPPING"
485
            | "SET_PROVIDED_ADDRESS";
486
          return_url?: string;
487
          cancel_url?: string;
488
        } & { consumer_ip?: string; consumer_user_agent?: string };
489
        level_0?: { auth_code: string };
490
        one_click?: {
491
          auth_code?: string;
492
          consumer_reference: string;
493
          alias_label?: string;
494
          alias_key?: string;
495
        };
496
      };
497
      eps?: {
498
        name: string;
499
        country_code: string;
500
        experience_context?: {
501
          brand_name?: string;
502
          locale?: string;
503
          shipping_preference?:
504
            | "GET_FROM_FILE"
505
            | "NO_SHIPPING"
506
            | "SET_PROVIDED_ADDRESS";
507
          return_url?: string;
508
          cancel_url?: string;
509
        };
510
      };
511
      giropay?: {
512
        name: string;
513
        country_code: string;
514
        experience_context?: {
515
          brand_name?: string;
516
          locale?: string;
517
          shipping_preference?:
518
            | "GET_FROM_FILE"
519
            | "NO_SHIPPING"
520
            | "SET_PROVIDED_ADDRESS";
521
          return_url?: string;
522
          cancel_url?: string;
523
        };
524
      };
525
      ideal?: {
526
        name: string;
527
        country_code: string;
528
        bic?: string;
529
        experience_context?: {
530
          brand_name?: string;
531
          locale?: string;
532
          shipping_preference?:
533
            | "GET_FROM_FILE"
534
            | "NO_SHIPPING"
535
            | "SET_PROVIDED_ADDRESS";
536
          return_url?: string;
537
          cancel_url?: string;
538
        };
539
        attributes?: {};
540
      };
541
      mybank?: {
542
        name: string;
543
        country_code: string;
544
        experience_context?: {
545
          brand_name?: string;
546
          locale?: string;
547
          shipping_preference?:
548
            | "GET_FROM_FILE"
549
            | "NO_SHIPPING"
550
            | "SET_PROVIDED_ADDRESS";
551
          return_url?: string;
552
          cancel_url?: string;
553
        };
554
      };
555
      p24?: {
556
        name: string;
557
        email: string;
558
        country_code: string;
559
        experience_context?: {
560
          brand_name?: string;
561
          locale?: string;
562
          shipping_preference?:
563
            | "GET_FROM_FILE"
564
            | "NO_SHIPPING"
565
            | "SET_PROVIDED_ADDRESS";
566
          return_url?: string;
567
          cancel_url?: string;
568
        };
569
      };
570
      sofort?: {
571
        name: string;
572
        country_code: string;
573
        experience_context?: {
574
          brand_name?: string;
575
          locale?: string;
576
          shipping_preference?:
577
            | "GET_FROM_FILE"
578
            | "NO_SHIPPING"
579
            | "SET_PROVIDED_ADDRESS";
580
          return_url?: string;
581
          cancel_url?: string;
582
        };
583
      };
584
      trustly?: {
585
        name: string;
586
        country_code: string;
587
        experience_context?: {
588
          brand_name?: string;
589
          locale?: string;
590
          shipping_preference?:
591
            | "GET_FROM_FILE"
592
            | "NO_SHIPPING"
593
            | "SET_PROVIDED_ADDRESS";
594
          return_url?: string;
595
          cancel_url?: string;
596
        };
597
      };
598
      apple_pay?: {
599
        id?: string;
600
        name?: string;
601
        email_address?: string;
602
        phone_number?: {
603
          country_code: string;
604
          national_number: string;
605
          extension_number?: string;
606
        };
607
        decrypted_token?: {
608
          transaction_amount?: { currency_code: string; value: string };
609
          tokenized_card: {
610
            id?: string;
611
            name?: string;
612
            number?: string;
613
            expiry?: string;
614
            security_code?: string;
615
            last_digits?: string;
616
            card_type?:
617
              | "VISA"
618
              | "MASTERCARD"
619
              | "DISCOVER"
620
              | "AMEX"
621
              | "SOLO"
622
              | "JCB"
623
              | "STAR"
624
              | "DELTA"
625
              | "SWITCH"
626
              | "MAESTRO"
627
              | "CB_NATIONALE"
628
              | "CONFIGOGA"
629
              | "CONFIDIS"
630
              | "ELECTRON"
631
              | "CETELEM"
632
              | "CHINA_UNION_PAY";
633
            type?: "CREDIT" | "DEBIT" | "PREPAID" | "STORE" | "UNKNOWN";
634
            brand?:
635
              | "VISA"
636
              | "MASTERCARD"
637
              | "DISCOVER"
638
              | "AMEX"
639
              | "SOLO"
640
              | "JCB"
641
              | "STAR"
642
              | "DELTA"
643
              | "SWITCH"
644
              | "MAESTRO"
645
              | "CB_NATIONALE"
646
              | "CONFIGOGA"
647
              | "CONFIDIS"
648
              | "ELECTRON"
649
              | "CETELEM"
650
              | "CHINA_UNION_PAY";
651
            billing_address?: {
652
              address_line_1?: string;
653
              address_line_2?: string;
654
              address_line_3?: string;
655
              admin_area_4?: string;
656
              admin_area_3?: string;
657
              admin_area_2?: string;
658
              admin_area_1?: string;
659
              postal_code?: string;
660
              country_code: string;
661
              address_details?: {
662
                street_number?: string;
663
                street_name?: string;
664
                street_type?: string;
665
                delivery_service?: string;
666
                building_name?: string;
667
                sub_building?: string;
668
              };
669
            };
670
            attributes?: {
671
              customer?: {
672
                id?: string;
673
                email_address?: string;
674
                phone?: {
675
                  phone_type?: "FAX" | "HOME" | "MOBILE" | "OTHER" | "PAGER";
676
                  phone_number: {
677
                    country_code: string;
678
                    national_number: string;
679
                    extension_number?: string;
680
                  };
681
                };
682
              };
683
              vault?: { store_in_vault?: "ON_SUCCESS" };
684
            };
685
          };
686
          device_manufacturer_id?: string;
687
          payment_data_type?: "3DSECURE" | "EMV";
688
          payment_data?: {
689
            cryptogram?: string;
690
            eci_indicator?: string;
691
            emv_data?: string;
692
            pin?: string;
693
          };
694
        };
695
        stored_credential?: {
696
          payment_initiator: "CUSTOMER" | "MERCHANT";
697
          payment_type: "ONE_TIME" | "RECURRING" | "UNSCHEDULED";
698
          usage?: "FIRST" | "SUBSEQUENT" | "DERIVED";
699
          previous_network_transaction_reference?: {
700
            id: string;
701
            date?: string;
702
            network?:
703
              | "VISA"
704
              | "MASTERCARD"
705
              | "DISCOVER"
706
              | "AMEX"
707
              | "SOLO"
708
              | "JCB"
709
              | "STAR"
710
              | "DELTA"
711
              | "SWITCH"
712
              | "MAESTRO"
713
              | "CB_NATIONALE"
714
              | "CONFIGOGA"
715
              | "CONFIDIS"
716
              | "ELECTRON"
717
              | "CETELEM"
718
              | "CHINA_UNION_PAY";
719
            acquirer_reference_number?: string;
720
          };
721
        };
722
        vault_id?: string;
723
        attributes?: unknown;
724
      };
725
      google_pay?: {};
726
      venmo?: {
727
        vault_id?: string;
728
        email_address?: string;
729
        experience_context?: {
730
          brand_name?: string;
731
          shipping_preference?:
732
            | "GET_FROM_FILE"
733
            | "NO_SHIPPING"
734
            | "SET_PROVIDED_ADDRESS";
735
        };
736
        attributes?: {
737
          customer?: {
738
            id?: string;
739
            email_address?: string;
740
            phone?: {
741
              phone_type?: "FAX" | "HOME" | "MOBILE" | "OTHER" | "PAGER";
742
              phone_number: {
743
                country_code: string;
744
                national_number: string;
745
                extension_number?: string;
746
              };
747
            };
748
          };
749
          vault?: { store_in_vault: "ON_SUCCESS" } & {
750
            description?: string;
751
            usage_pattern?:
752
              | "IMMEDIATE"
753
              | "DEFERRED"
754
              | "RECURRING_PREPAID"
755
              | "RECURRING_POSTPAID"
756
              | "THRESHOLD_PREPAID"
757
              | "THRESHOLD_POSTPAID";
758
            usage_type?: "MERCHANT" | "PLATFORM";
759
            customer_type?: "CONSUMER" | "BUSINESS";
760
            permit_multiple_payment_tokens?: false | true;
761
          };
762
        };
763
      };
764
    };
765
    application_context?: {
766
      brand_name?: string;
767
      locale?: string;
768
      landing_page?: "LOGIN" | "NO_PREFERENCE" | "BILLING";
769
      shipping_preference?:
770
        | "GET_FROM_FILE"
771
        | "NO_SHIPPING"
772
        | "SET_PROVIDED_ADDRESS";
773
      user_action?: "CONTINUE" | "PAY_NOW";
774
      payment_method?: {
775
        payee_preferred?: "UNRESTRICTED" | "IMMEDIATE_PAYMENT_REQUIRED";
776
        standard_entry_class_code?: "TEL" | "WEB" | "CCD" | "PPD";
777
      };
778
      return_url?: string;
779
      cancel_url?: string;
780
      stored_payment_source?: {
781
        payment_initiator: "CUSTOMER" | "MERCHANT";
782
        payment_type: "ONE_TIME" | "RECURRING" | "UNSCHEDULED";
783
        usage?: "FIRST" | "SUBSEQUENT" | "DERIVED";
784
        previous_network_transaction_reference?: {
785
          id: string;
786
          date?: string;
787
          network?:
788
            | "VISA"
789
            | "MASTERCARD"
790
            | "DISCOVER"
791
            | "AMEX"
792
            | "SOLO"
793
            | "JCB"
794
            | "STAR"
795
            | "DELTA"
796
            | "SWITCH"
797
            | "MAESTRO"
798
            | "CB_NATIONALE"
799
            | "CONFIGOGA"
800
            | "CONFIDIS"
801
            | "ELECTRON"
802
            | "CETELEM"
803
            | "CHINA_UNION_PAY";
804
          acquirer_reference_number?: string;
805
        };
806
      };
807
    };
808
  },
809
) {
810
  const token = await getToken(auth);
811
  const url = new URL(`https://api-m.paypal.com/v2/checkout/orders`);
812

813
  const response = await fetch(url, {
814
    method: "POST",
815
    headers: {
816
      "PayPal-Request-Id": PayPal_Request_Id,
817
      "PayPal-Partner-Attribution-Id": PayPal_Partner_Attribution_Id,
818
      "PayPal-Client-Metadata-Id": PayPal_Client_Metadata_Id,
819
      Prefer: Prefer,
820
      "Content-Type": "application/json",
821
      Authorization: "Bearer " + token,
822
    },
823
    body: JSON.stringify(body),
824
  });
825
  if (!response.ok) {
826
    const text = await response.text();
827
    throw new Error(`${response.status} ${text}`);
828
  }
829
  return await response.json();
830
}
831