Edits history of script submission #12723 for ' Authorize payment for order (paypal)'

  • bun
    One script reply has been approved by the moderators
    Ap­pro­ved
    //native
    type Paypal = {
      clientId: string;
      clientSecret: string;
    };
    
    async function getToken(auth: Paypal): Promise<string> {
      const url = new URL(`https://api-m.paypal.com/v1/oauth2/token`);
      const response = await fetch(url, {
        method: "POST",
        headers: {
          Authorization: `Basic ${btoa(`${auth.clientId}:${auth.clientSecret}`)}`,
        },
        body: new URLSearchParams({
          grant_type: "client_credentials",
        }),
      });
      if (!response.ok) {
        const text = await response.text();
        throw new Error(`Could not get token: ${response.status} ${text}`);
      }
      const json = await response.json();
      return json.access_token;
    }
    /**
     * Authorize payment for order
     * Authorizes payment for an order. To successfully authorize payment for an order, the buyer must first approve the order or a valid payment_source must be provided in the request. A buyer can approve the order upon being redirected to the rel:approve URL that was returned in the HATEOAS links in the create order response.Note: For error handling and troubleshooting, see Orders v2 errors.
     */
    export async function main(
      auth: Paypal,
      id: string,
      PayPal_Request_Id: string,
      Prefer: string,
      PayPal_Client_Metadata_Id: string,
      PayPal_Auth_Assertion: string,
      body: {
        payment_source?: {
          card?: {
            id?: string;
            name?: string;
            number?: string;
            expiry?: string;
            security_code?: string;
            last_digits?: string;
            card_type?:
              | "VISA"
              | "MASTERCARD"
              | "DISCOVER"
              | "AMEX"
              | "SOLO"
              | "JCB"
              | "STAR"
              | "DELTA"
              | "SWITCH"
              | "MAESTRO"
              | "CB_NATIONALE"
              | "CONFIGOGA"
              | "CONFIDIS"
              | "ELECTRON"
              | "CETELEM"
              | "CHINA_UNION_PAY";
            type?: "CREDIT" | "DEBIT" | "PREPAID" | "STORE" | "UNKNOWN";
            brand?:
              | "VISA"
              | "MASTERCARD"
              | "DISCOVER"
              | "AMEX"
              | "SOLO"
              | "JCB"
              | "STAR"
              | "DELTA"
              | "SWITCH"
              | "MAESTRO"
              | "CB_NATIONALE"
              | "CONFIGOGA"
              | "CONFIDIS"
              | "ELECTRON"
              | "CETELEM"
              | "CHINA_UNION_PAY";
            billing_address?: {
              address_line_1?: string;
              address_line_2?: string;
              address_line_3?: string;
              admin_area_4?: string;
              admin_area_3?: string;
              admin_area_2?: string;
              admin_area_1?: string;
              postal_code?: string;
              country_code: string;
              address_details?: {
                street_number?: string;
                street_name?: string;
                street_type?: string;
                delivery_service?: string;
                building_name?: string;
                sub_building?: string;
              };
            };
            attributes?: {
              customer?: {
                id?: string;
                email_address?: string;
                phone?: {
                  phone_type?: "FAX" | "HOME" | "MOBILE" | "OTHER" | "PAGER";
                  phone_number: {
                    country_code: string;
                    national_number: string;
                    extension_number?: string;
                  };
                };
              };
              vault?: { store_in_vault?: "ON_SUCCESS" };
            };
          } & {
            vault_id?: string;
            stored_credential?: {
              payment_initiator: "CUSTOMER" | "MERCHANT";
              payment_type: "ONE_TIME" | "RECURRING" | "UNSCHEDULED";
              usage?: "FIRST" | "SUBSEQUENT" | "DERIVED";
              previous_network_transaction_reference?: {
                id: string;
                date?: string;
                network?:
                  | "VISA"
                  | "MASTERCARD"
                  | "DISCOVER"
                  | "AMEX"
                  | "SOLO"
                  | "JCB"
                  | "STAR"
                  | "DELTA"
                  | "SWITCH"
                  | "MAESTRO"
                  | "CB_NATIONALE"
                  | "CONFIGOGA"
                  | "CONFIDIS"
                  | "ELECTRON"
                  | "CETELEM"
                  | "CHINA_UNION_PAY";
                acquirer_reference_number?: string;
              };
            };
            network_token?: {
              number: string;
              expiry: string;
              cryptogram?: string;
              eci_flag?:
                | "MASTERCARD_NON_3D_SECURE_TRANSACTION"
                | "MASTERCARD_ATTEMPTED_AUTHENTICATION_TRANSACTION"
                | "MASTERCARD_FULLY_AUTHENTICATED_TRANSACTION"
                | "FULLY_AUTHENTICATED_TRANSACTION"
                | "ATTEMPTED_AUTHENTICATION_TRANSACTION"
                | "NON_3D_SECURE_TRANSACTION";
              token_requestor_id?: string;
            };
            experience_context?: { return_url?: string; cancel_url?: string };
          };
          token?: { id: string; type: "BILLING_AGREEMENT" };
          paypal?: {
            vault_id?: string;
            email_address?: string;
            name?: {
              prefix?: string;
              given_name?: string;
              surname?: string;
              middle_name?: string;
              suffix?: string;
              full_name?: string;
            };
            phone?: {
              phone_type?: "FAX" | "HOME" | "MOBILE" | "OTHER" | "PAGER";
              phone_number: {
                country_code: string;
                national_number: string;
                extension_number?: string;
              };
            };
            birth_date?: string;
            tax_info?: { tax_id: string; tax_id_type: "BR_CPF" | "BR_CNPJ" };
            address?: {
              address_line_1?: string;
              address_line_2?: string;
              address_line_3?: string;
              admin_area_4?: string;
              admin_area_3?: string;
              admin_area_2?: string;
              admin_area_1?: string;
              postal_code?: string;
              country_code: string;
              address_details?: {
                street_number?: string;
                street_name?: string;
                street_type?: string;
                delivery_service?: string;
                building_name?: string;
                sub_building?: string;
              };
            };
            attributes?: {
              customer?: {
                id?: string;
                email_address?: string;
                phone?: {
                  phone_type?: "FAX" | "HOME" | "MOBILE" | "OTHER" | "PAGER";
                  phone_number: {
                    country_code: string;
                    national_number: string;
                    extension_number?: string;
                  };
                };
              } & {};
              vault?: { store_in_vault?: "ON_SUCCESS" } & {
                description?: string;
                usage_pattern?:
                  | "IMMEDIATE"
                  | "DEFERRED"
                  | "RECURRING_PREPAID"
                  | "RECURRING_POSTPAID"
                  | "THRESHOLD_PREPAID"
                  | "THRESHOLD_POSTPAID";
                shipping?: {
                  name?: {
                    prefix?: string;
                    given_name?: string;
                    surname?: string;
                    middle_name?: string;
                    suffix?: string;
                    alternate_full_name?: string;
                    full_name?: string;
                  };
                  type?:
                    | "SHIPPING"
                    | "PICKUP_IN_PERSON"
                    | "PICKUP_IN_STORE"
                    | "PICKUP_FROM_PERSON";
                  options?: {
                    id: string;
                    label: string;
                    type?:
                      | "SHIPPING"
                      | "PICKUP_IN_STORE"
                      | "PICKUP_FROM_PERSON"
                      | "PICKUP";
                    amount?: { currency_code: string; value: string };
                    selected: false | true;
                  }[];
                  address?: {
                    address_line_1?: string;
                    address_line_2?: string;
                    address_line_3?: string;
                    admin_area_4?: string;
                    admin_area_3?: string;
                    admin_area_2?: string;
                    admin_area_1?: string;
                    postal_code?: string;
                    country_code: string;
                    address_details?: {
                      street_number?: string;
                      street_name?: string;
                      street_type?: string;
                      delivery_service?: string;
                      building_name?: string;
                      sub_building?: string;
                    };
                  };
                };
                usage_type?: "MERCHANT" | "PLATFORM";
                owner_id?: unknown;
                customer_type?: "CONSUMER" | "BUSINESS";
                permit_multiple_payment_tokens?: false | true;
              };
            };
            experience_context?: {
              brand_name?: string;
              locale?: string;
              shipping_preference?:
                | "GET_FROM_FILE"
                | "NO_SHIPPING"
                | "SET_PROVIDED_ADDRESS";
              return_url?: string;
              cancel_url?: string;
              landing_page?: "LOGIN" | "GUEST_CHECKOUT" | "NO_PREFERENCE";
              user_action?: "CONTINUE" | "PAY_NOW";
              payment_method_preference?:
                | "UNRESTRICTED"
                | "IMMEDIATE_PAYMENT_REQUIRED";
            };
            billing_agreement_id?: string;
          };
          bancontact?: {
            name: string;
            country_code: string;
            experience_context?: {
              brand_name?: string;
              locale?: string;
              shipping_preference?:
                | "GET_FROM_FILE"
                | "NO_SHIPPING"
                | "SET_PROVIDED_ADDRESS";
              return_url?: string;
              cancel_url?: string;
            };
            attributes?: {};
          };
          blik?: {
            name: string;
            country_code: string;
            email?: string;
            experience_context?: {
              brand_name?: string;
              locale?: string;
              shipping_preference?:
                | "GET_FROM_FILE"
                | "NO_SHIPPING"
                | "SET_PROVIDED_ADDRESS";
              return_url?: string;
              cancel_url?: string;
            } & { consumer_ip?: string; consumer_user_agent?: string };
            level_0?: { auth_code: string };
            one_click?: {
              auth_code?: string;
              consumer_reference: string;
              alias_label?: string;
              alias_key?: string;
            };
          };
          eps?: {
            name: string;
            country_code: string;
            experience_context?: {
              brand_name?: string;
              locale?: string;
              shipping_preference?:
                | "GET_FROM_FILE"
                | "NO_SHIPPING"
                | "SET_PROVIDED_ADDRESS";
              return_url?: string;
              cancel_url?: string;
            };
          };
          giropay?: {
            name: string;
            country_code: string;
            experience_context?: {
              brand_name?: string;
              locale?: string;
              shipping_preference?:
                | "GET_FROM_FILE"
                | "NO_SHIPPING"
                | "SET_PROVIDED_ADDRESS";
              return_url?: string;
              cancel_url?: string;
            };
          };
          ideal?: {
            name: string;
            country_code: string;
            bic?: string;
            experience_context?: {
              brand_name?: string;
              locale?: string;
              shipping_preference?:
                | "GET_FROM_FILE"
                | "NO_SHIPPING"
                | "SET_PROVIDED_ADDRESS";
              return_url?: string;
              cancel_url?: string;
            };
            attributes?: {};
          };
          mybank?: {
            name: string;
            country_code: string;
            experience_context?: {
              brand_name?: string;
              locale?: string;
              shipping_preference?:
                | "GET_FROM_FILE"
                | "NO_SHIPPING"
                | "SET_PROVIDED_ADDRESS";
              return_url?: string;
              cancel_url?: string;
            };
          };
          p24?: {
            name: string;
            email: string;
            country_code: string;
            experience_context?: {
              brand_name?: string;
              locale?: string;
              shipping_preference?:
                | "GET_FROM_FILE"
                | "NO_SHIPPING"
                | "SET_PROVIDED_ADDRESS";
              return_url?: string;
              cancel_url?: string;
            };
          };
          sofort?: {
            name: string;
            country_code: string;
            experience_context?: {
              brand_name?: string;
              locale?: string;
              shipping_preference?:
                | "GET_FROM_FILE"
                | "NO_SHIPPING"
                | "SET_PROVIDED_ADDRESS";
              return_url?: string;
              cancel_url?: string;
            };
          };
          trustly?: {
            name: string;
            country_code: string;
            experience_context?: {
              brand_name?: string;
              locale?: string;
              shipping_preference?:
                | "GET_FROM_FILE"
                | "NO_SHIPPING"
                | "SET_PROVIDED_ADDRESS";
              return_url?: string;
              cancel_url?: string;
            };
          };
          apple_pay?: {
            id?: string;
            name?: string;
            email_address?: string;
            phone_number?: {
              country_code: string;
              national_number: string;
              extension_number?: string;
            };
            decrypted_token?: {
              transaction_amount?: { currency_code: string; value: string };
              tokenized_card: {
                id?: string;
                name?: string;
                number?: string;
                expiry?: string;
                security_code?: string;
                last_digits?: string;
                card_type?:
                  | "VISA"
                  | "MASTERCARD"
                  | "DISCOVER"
                  | "AMEX"
                  | "SOLO"
                  | "JCB"
                  | "STAR"
                  | "DELTA"
                  | "SWITCH"
                  | "MAESTRO"
                  | "CB_NATIONALE"
                  | "CONFIGOGA"
                  | "CONFIDIS"
                  | "ELECTRON"
                  | "CETELEM"
                  | "CHINA_UNION_PAY";
                type?: "CREDIT" | "DEBIT" | "PREPAID" | "STORE" | "UNKNOWN";
                brand?:
                  | "VISA"
                  | "MASTERCARD"
                  | "DISCOVER"
                  | "AMEX"
                  | "SOLO"
                  | "JCB"
                  | "STAR"
                  | "DELTA"
                  | "SWITCH"
                  | "MAESTRO"
                  | "CB_NATIONALE"
                  | "CONFIGOGA"
                  | "CONFIDIS"
                  | "ELECTRON"
                  | "CETELEM"
                  | "CHINA_UNION_PAY";
                billing_address?: {
                  address_line_1?: string;
                  address_line_2?: string;
                  address_line_3?: string;
                  admin_area_4?: string;
                  admin_area_3?: string;
                  admin_area_2?: string;
                  admin_area_1?: string;
                  postal_code?: string;
                  country_code: string;
                  address_details?: {
                    street_number?: string;
                    street_name?: string;
                    street_type?: string;
                    delivery_service?: string;
                    building_name?: string;
                    sub_building?: string;
                  };
                };
                attributes?: {
                  customer?: {
                    id?: string;
                    email_address?: string;
                    phone?: {
                      phone_type?: "FAX" | "HOME" | "MOBILE" | "OTHER" | "PAGER";
                      phone_number: {
                        country_code: string;
                        national_number: string;
                        extension_number?: string;
                      };
                    };
                  };
                  vault?: { store_in_vault?: "ON_SUCCESS" };
                };
              };
              device_manufacturer_id?: string;
              payment_data_type?: "3DSECURE" | "EMV";
              payment_data?: {
                cryptogram?: string;
                eci_indicator?: string;
                emv_data?: string;
                pin?: string;
              };
            };
            stored_credential?: {
              payment_initiator: "CUSTOMER" | "MERCHANT";
              payment_type: "ONE_TIME" | "RECURRING" | "UNSCHEDULED";
              usage?: "FIRST" | "SUBSEQUENT" | "DERIVED";
              previous_network_transaction_reference?: {
                id: string;
                date?: string;
                network?:
                  | "VISA"
                  | "MASTERCARD"
                  | "DISCOVER"
                  | "AMEX"
                  | "SOLO"
                  | "JCB"
                  | "STAR"
                  | "DELTA"
                  | "SWITCH"
                  | "MAESTRO"
                  | "CB_NATIONALE"
                  | "CONFIGOGA"
                  | "CONFIDIS"
                  | "ELECTRON"
                  | "CETELEM"
                  | "CHINA_UNION_PAY";
                acquirer_reference_number?: string;
              };
            };
            vault_id?: string;
            attributes?: unknown;
          };
          google_pay?: {};
          venmo?: {
            vault_id?: string;
            email_address?: string;
            experience_context?: {
              brand_name?: string;
              shipping_preference?:
                | "GET_FROM_FILE"
                | "NO_SHIPPING"
                | "SET_PROVIDED_ADDRESS";
            };
            attributes?: {
              customer?: {
                id?: string;
                email_address?: string;
                phone?: {
                  phone_type?: "FAX" | "HOME" | "MOBILE" | "OTHER" | "PAGER";
                  phone_number: {
                    country_code: string;
                    national_number: string;
                    extension_number?: string;
                  };
                };
              };
              vault?: { store_in_vault: "ON_SUCCESS" } & {
                description?: string;
                usage_pattern?:
                  | "IMMEDIATE"
                  | "DEFERRED"
                  | "RECURRING_PREPAID"
                  | "RECURRING_POSTPAID"
                  | "THRESHOLD_PREPAID"
                  | "THRESHOLD_POSTPAID";
                usage_type?: "MERCHANT" | "PLATFORM";
                customer_type?: "CONSUMER" | "BUSINESS";
                permit_multiple_payment_tokens?: false | true;
              };
            };
          };
        };
      },
    ) {
      const token = await getToken(auth);
      const url = new URL(
        `https://api-m.paypal.com/v2/checkout/orders/${id}/authorize`,
      );
    
      const response = await fetch(url, {
        method: "POST",
        headers: {
          "PayPal-Request-Id": PayPal_Request_Id,
          Prefer: Prefer,
          "PayPal-Client-Metadata-Id": PayPal_Client_Metadata_Id,
          "PayPal-Auth-Assertion": PayPal_Auth_Assertion,
          "Content-Type": "application/json",
          Authorization: "Bearer " + token,
        },
        body: JSON.stringify(body),
      });
      if (!response.ok) {
        const text = await response.text();
        throw new Error(`${response.status} ${text}`);
      }
      return await response.json();
    }
    

    Submitted by hugo697 428 days ago

  • bun
    //native
    type Paypal = {
      token: string;
    };
    /**
     * Authorize payment for order
     * Authorizes payment for an order. To successfully authorize payment for an order, the buyer must first approve the order or a valid payment_source must be provided in the request. A buyer can approve the order upon being redirected to the rel:approve URL that was returned in the HATEOAS links in the create order response.Note: For error handling and troubleshooting, see Orders v2 errors.
     */
    export async function main(
      auth: Paypal,
      id: string,
      PayPal_Request_Id: string,
      Prefer: string,
      PayPal_Client_Metadata_Id: string,
      PayPal_Auth_Assertion: string,
      body: {
        payment_source?: {
          card?: {
            id?: string;
            name?: string;
            number?: string;
            expiry?: string;
            security_code?: string;
            last_digits?: string;
            card_type?:
              | "VISA"
              | "MASTERCARD"
              | "DISCOVER"
              | "AMEX"
              | "SOLO"
              | "JCB"
              | "STAR"
              | "DELTA"
              | "SWITCH"
              | "MAESTRO"
              | "CB_NATIONALE"
              | "CONFIGOGA"
              | "CONFIDIS"
              | "ELECTRON"
              | "CETELEM"
              | "CHINA_UNION_PAY";
            type?: "CREDIT" | "DEBIT" | "PREPAID" | "STORE" | "UNKNOWN";
            brand?:
              | "VISA"
              | "MASTERCARD"
              | "DISCOVER"
              | "AMEX"
              | "SOLO"
              | "JCB"
              | "STAR"
              | "DELTA"
              | "SWITCH"
              | "MAESTRO"
              | "CB_NATIONALE"
              | "CONFIGOGA"
              | "CONFIDIS"
              | "ELECTRON"
              | "CETELEM"
              | "CHINA_UNION_PAY";
            billing_address?: {
              address_line_1?: string;
              address_line_2?: string;
              address_line_3?: string;
              admin_area_4?: string;
              admin_area_3?: string;
              admin_area_2?: string;
              admin_area_1?: string;
              postal_code?: string;
              country_code: string;
              address_details?: {
                street_number?: string;
                street_name?: string;
                street_type?: string;
                delivery_service?: string;
                building_name?: string;
                sub_building?: string;
              };
            };
            attributes?: {
              customer?: {
                id?: string;
                email_address?: string;
                phone?: {
                  phone_type?: "FAX" | "HOME" | "MOBILE" | "OTHER" | "PAGER";
                  phone_number: {
                    country_code: string;
                    national_number: string;
                    extension_number?: string;
                  };
                };
              };
              vault?: { store_in_vault?: "ON_SUCCESS" };
            };
          } & {
            vault_id?: string;
            stored_credential?: {
              payment_initiator: "CUSTOMER" | "MERCHANT";
              payment_type: "ONE_TIME" | "RECURRING" | "UNSCHEDULED";
              usage?: "FIRST" | "SUBSEQUENT" | "DERIVED";
              previous_network_transaction_reference?: {
                id: string;
                date?: string;
                network?:
                  | "VISA"
                  | "MASTERCARD"
                  | "DISCOVER"
                  | "AMEX"
                  | "SOLO"
                  | "JCB"
                  | "STAR"
                  | "DELTA"
                  | "SWITCH"
                  | "MAESTRO"
                  | "CB_NATIONALE"
                  | "CONFIGOGA"
                  | "CONFIDIS"
                  | "ELECTRON"
                  | "CETELEM"
                  | "CHINA_UNION_PAY";
                acquirer_reference_number?: string;
              };
            };
            network_token?: {
              number: string;
              expiry: string;
              cryptogram?: string;
              eci_flag?:
                | "MASTERCARD_NON_3D_SECURE_TRANSACTION"
                | "MASTERCARD_ATTEMPTED_AUTHENTICATION_TRANSACTION"
                | "MASTERCARD_FULLY_AUTHENTICATED_TRANSACTION"
                | "FULLY_AUTHENTICATED_TRANSACTION"
                | "ATTEMPTED_AUTHENTICATION_TRANSACTION"
                | "NON_3D_SECURE_TRANSACTION";
              token_requestor_id?: string;
            };
            experience_context?: { return_url?: string; cancel_url?: string };
          };
          token?: { id: string; type: "BILLING_AGREEMENT" };
          paypal?: {
            vault_id?: string;
            email_address?: string;
            name?: {
              prefix?: string;
              given_name?: string;
              surname?: string;
              middle_name?: string;
              suffix?: string;
              full_name?: string;
            };
            phone?: {
              phone_type?: "FAX" | "HOME" | "MOBILE" | "OTHER" | "PAGER";
              phone_number: {
                country_code: string;
                national_number: string;
                extension_number?: string;
              };
            };
            birth_date?: string;
            tax_info?: { tax_id: string; tax_id_type: "BR_CPF" | "BR_CNPJ" };
            address?: {
              address_line_1?: string;
              address_line_2?: string;
              address_line_3?: string;
              admin_area_4?: string;
              admin_area_3?: string;
              admin_area_2?: string;
              admin_area_1?: string;
              postal_code?: string;
              country_code: string;
              address_details?: {
                street_number?: string;
                street_name?: string;
                street_type?: string;
                delivery_service?: string;
                building_name?: string;
                sub_building?: string;
              };
            };
            attributes?: {
              customer?: {
                id?: string;
                email_address?: string;
                phone?: {
                  phone_type?: "FAX" | "HOME" | "MOBILE" | "OTHER" | "PAGER";
                  phone_number: {
                    country_code: string;
                    national_number: string;
                    extension_number?: string;
                  };
                };
              } & {};
              vault?: { store_in_vault?: "ON_SUCCESS" } & {
                description?: string;
                usage_pattern?:
                  | "IMMEDIATE"
                  | "DEFERRED"
                  | "RECURRING_PREPAID"
                  | "RECURRING_POSTPAID"
                  | "THRESHOLD_PREPAID"
                  | "THRESHOLD_POSTPAID";
                shipping?: {
                  name?: {
                    prefix?: string;
                    given_name?: string;
                    surname?: string;
                    middle_name?: string;
                    suffix?: string;
                    alternate_full_name?: string;
                    full_name?: string;
                  };
                  type?:
                    | "SHIPPING"
                    | "PICKUP_IN_PERSON"
                    | "PICKUP_IN_STORE"
                    | "PICKUP_FROM_PERSON";
                  options?: {
                    id: string;
                    label: string;
                    type?:
                      | "SHIPPING"
                      | "PICKUP_IN_STORE"
                      | "PICKUP_FROM_PERSON"
                      | "PICKUP";
                    amount?: { currency_code: string; value: string };
                    selected: false | true;
                  }[];
                  address?: {
                    address_line_1?: string;
                    address_line_2?: string;
                    address_line_3?: string;
                    admin_area_4?: string;
                    admin_area_3?: string;
                    admin_area_2?: string;
                    admin_area_1?: string;
                    postal_code?: string;
                    country_code: string;
                    address_details?: {
                      street_number?: string;
                      street_name?: string;
                      street_type?: string;
                      delivery_service?: string;
                      building_name?: string;
                      sub_building?: string;
                    };
                  };
                };
                usage_type?: "MERCHANT" | "PLATFORM";
                owner_id?: unknown;
                customer_type?: "CONSUMER" | "BUSINESS";
                permit_multiple_payment_tokens?: false | true;
              };
            };
            experience_context?: {
              brand_name?: string;
              locale?: string;
              shipping_preference?:
                | "GET_FROM_FILE"
                | "NO_SHIPPING"
                | "SET_PROVIDED_ADDRESS";
              return_url?: string;
              cancel_url?: string;
              landing_page?: "LOGIN" | "GUEST_CHECKOUT" | "NO_PREFERENCE";
              user_action?: "CONTINUE" | "PAY_NOW";
              payment_method_preference?:
                | "UNRESTRICTED"
                | "IMMEDIATE_PAYMENT_REQUIRED";
            };
            billing_agreement_id?: string;
          };
          bancontact?: {
            name: string;
            country_code: string;
            experience_context?: {
              brand_name?: string;
              locale?: string;
              shipping_preference?:
                | "GET_FROM_FILE"
                | "NO_SHIPPING"
                | "SET_PROVIDED_ADDRESS";
              return_url?: string;
              cancel_url?: string;
            };
            attributes?: {};
          };
          blik?: {
            name: string;
            country_code: string;
            email?: string;
            experience_context?: {
              brand_name?: string;
              locale?: string;
              shipping_preference?:
                | "GET_FROM_FILE"
                | "NO_SHIPPING"
                | "SET_PROVIDED_ADDRESS";
              return_url?: string;
              cancel_url?: string;
            } & { consumer_ip?: string; consumer_user_agent?: string };
            level_0?: { auth_code: string };
            one_click?: {
              auth_code?: string;
              consumer_reference: string;
              alias_label?: string;
              alias_key?: string;
            };
          };
          eps?: {
            name: string;
            country_code: string;
            experience_context?: {
              brand_name?: string;
              locale?: string;
              shipping_preference?:
                | "GET_FROM_FILE"
                | "NO_SHIPPING"
                | "SET_PROVIDED_ADDRESS";
              return_url?: string;
              cancel_url?: string;
            };
          };
          giropay?: {
            name: string;
            country_code: string;
            experience_context?: {
              brand_name?: string;
              locale?: string;
              shipping_preference?:
                | "GET_FROM_FILE"
                | "NO_SHIPPING"
                | "SET_PROVIDED_ADDRESS";
              return_url?: string;
              cancel_url?: string;
            };
          };
          ideal?: {
            name: string;
            country_code: string;
            bic?: string;
            experience_context?: {
              brand_name?: string;
              locale?: string;
              shipping_preference?:
                | "GET_FROM_FILE"
                | "NO_SHIPPING"
                | "SET_PROVIDED_ADDRESS";
              return_url?: string;
              cancel_url?: string;
            };
            attributes?: {};
          };
          mybank?: {
            name: string;
            country_code: string;
            experience_context?: {
              brand_name?: string;
              locale?: string;
              shipping_preference?:
                | "GET_FROM_FILE"
                | "NO_SHIPPING"
                | "SET_PROVIDED_ADDRESS";
              return_url?: string;
              cancel_url?: string;
            };
          };
          p24?: {
            name: string;
            email: string;
            country_code: string;
            experience_context?: {
              brand_name?: string;
              locale?: string;
              shipping_preference?:
                | "GET_FROM_FILE"
                | "NO_SHIPPING"
                | "SET_PROVIDED_ADDRESS";
              return_url?: string;
              cancel_url?: string;
            };
          };
          sofort?: {
            name: string;
            country_code: string;
            experience_context?: {
              brand_name?: string;
              locale?: string;
              shipping_preference?:
                | "GET_FROM_FILE"
                | "NO_SHIPPING"
                | "SET_PROVIDED_ADDRESS";
              return_url?: string;
              cancel_url?: string;
            };
          };
          trustly?: {
            name: string;
            country_code: string;
            experience_context?: {
              brand_name?: string;
              locale?: string;
              shipping_preference?:
                | "GET_FROM_FILE"
                | "NO_SHIPPING"
                | "SET_PROVIDED_ADDRESS";
              return_url?: string;
              cancel_url?: string;
            };
          };
          apple_pay?: {
            id?: string;
            name?: string;
            email_address?: string;
            phone_number?: {
              country_code: string;
              national_number: string;
              extension_number?: string;
            };
            decrypted_token?: {
              transaction_amount?: { currency_code: string; value: string };
              tokenized_card: {
                id?: string;
                name?: string;
                number?: string;
                expiry?: string;
                security_code?: string;
                last_digits?: string;
                card_type?:
                  | "VISA"
                  | "MASTERCARD"
                  | "DISCOVER"
                  | "AMEX"
                  | "SOLO"
                  | "JCB"
                  | "STAR"
                  | "DELTA"
                  | "SWITCH"
                  | "MAESTRO"
                  | "CB_NATIONALE"
                  | "CONFIGOGA"
                  | "CONFIDIS"
                  | "ELECTRON"
                  | "CETELEM"
                  | "CHINA_UNION_PAY";
                type?: "CREDIT" | "DEBIT" | "PREPAID" | "STORE" | "UNKNOWN";
                brand?:
                  | "VISA"
                  | "MASTERCARD"
                  | "DISCOVER"
                  | "AMEX"
                  | "SOLO"
                  | "JCB"
                  | "STAR"
                  | "DELTA"
                  | "SWITCH"
                  | "MAESTRO"
                  | "CB_NATIONALE"
                  | "CONFIGOGA"
                  | "CONFIDIS"
                  | "ELECTRON"
                  | "CETELEM"
                  | "CHINA_UNION_PAY";
                billing_address?: {
                  address_line_1?: string;
                  address_line_2?: string;
                  address_line_3?: string;
                  admin_area_4?: string;
                  admin_area_3?: string;
                  admin_area_2?: string;
                  admin_area_1?: string;
                  postal_code?: string;
                  country_code: string;
                  address_details?: {
                    street_number?: string;
                    street_name?: string;
                    street_type?: string;
                    delivery_service?: string;
                    building_name?: string;
                    sub_building?: string;
                  };
                };
                attributes?: {
                  customer?: {
                    id?: string;
                    email_address?: string;
                    phone?: {
                      phone_type?: "FAX" | "HOME" | "MOBILE" | "OTHER" | "PAGER";
                      phone_number: {
                        country_code: string;
                        national_number: string;
                        extension_number?: string;
                      };
                    };
                  };
                  vault?: { store_in_vault?: "ON_SUCCESS" };
                };
              };
              device_manufacturer_id?: string;
              payment_data_type?: "3DSECURE" | "EMV";
              payment_data?: {
                cryptogram?: string;
                eci_indicator?: string;
                emv_data?: string;
                pin?: string;
              };
            };
            stored_credential?: {
              payment_initiator: "CUSTOMER" | "MERCHANT";
              payment_type: "ONE_TIME" | "RECURRING" | "UNSCHEDULED";
              usage?: "FIRST" | "SUBSEQUENT" | "DERIVED";
              previous_network_transaction_reference?: {
                id: string;
                date?: string;
                network?:
                  | "VISA"
                  | "MASTERCARD"
                  | "DISCOVER"
                  | "AMEX"
                  | "SOLO"
                  | "JCB"
                  | "STAR"
                  | "DELTA"
                  | "SWITCH"
                  | "MAESTRO"
                  | "CB_NATIONALE"
                  | "CONFIGOGA"
                  | "CONFIDIS"
                  | "ELECTRON"
                  | "CETELEM"
                  | "CHINA_UNION_PAY";
                acquirer_reference_number?: string;
              };
            };
            vault_id?: string;
            attributes?: unknown;
          };
          google_pay?: {};
          venmo?: {
            vault_id?: string;
            email_address?: string;
            experience_context?: {
              brand_name?: string;
              shipping_preference?:
                | "GET_FROM_FILE"
                | "NO_SHIPPING"
                | "SET_PROVIDED_ADDRESS";
            };
            attributes?: {
              customer?: {
                id?: string;
                email_address?: string;
                phone?: {
                  phone_type?: "FAX" | "HOME" | "MOBILE" | "OTHER" | "PAGER";
                  phone_number: {
                    country_code: string;
                    national_number: string;
                    extension_number?: string;
                  };
                };
              };
              vault?: { store_in_vault: "ON_SUCCESS" } & {
                description?: string;
                usage_pattern?:
                  | "IMMEDIATE"
                  | "DEFERRED"
                  | "RECURRING_PREPAID"
                  | "RECURRING_POSTPAID"
                  | "THRESHOLD_PREPAID"
                  | "THRESHOLD_POSTPAID";
                usage_type?: "MERCHANT" | "PLATFORM";
                customer_type?: "CONSUMER" | "BUSINESS";
                permit_multiple_payment_tokens?: false | true;
              };
            };
          };
        };
      },
    ) {
      const url = new URL(
        `https://api-m.paypal.com/v2/checkout/orders/${id}/authorize`,
      );
    
      const response = await fetch(url, {
        method: "POST",
        headers: {
          "PayPal-Request-Id": PayPal_Request_Id,
          Prefer: Prefer,
          "PayPal-Client-Metadata-Id": PayPal_Client_Metadata_Id,
          "PayPal-Auth-Assertion": PayPal_Auth_Assertion,
          "Content-Type": "application/json",
          Authorization: "Bearer " + auth.token,
        },
        body: JSON.stringify(body),
      });
      if (!response.ok) {
        const text = await response.text();
        throw new Error(`${response.status} ${text}`);
      }
      return await response.json();
    }
    

    Submitted by hugo697 428 days ago