Plugin Directory

Changeset 3375395


Ignore:
Timestamp:
10/09/2025 01:00:12 AM (6 months ago)
Author:
openpay
Message:

address validation

Location:
openpay-cards/trunk
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • openpay-cards/trunk/Includes/OpenpayErrorHandler.php

    r3367506 r3375395  
    7171        } catch (OpenpayApiTransactionError $e) {
    7272            self::handleOpenpayPluginException($e, $order_id, $customer_id);
    73              $openpayErrorManager = new OpenpayErrorManager();
     73            if($e->getCode() == '3005') return 3005;
     74            $openpayErrorManager = new OpenpayErrorManager();
    7475            $errorMessage = $openpayErrorManager::getErrorMessages($e->getCode());
    7576            throw new Exception($errorMessage['clientError'], $e->getCode());
  • openpay-cards/trunk/Includes/class-wc-openpay-bines-consult.php

    r3351601 r3375395  
    1010
    1111        $logger     = wc_get_logger();
    12         $logger->info("Entra a los bines");
     12        $logger->info("[WC_Openpay_Bines_Consult.getTypeCardOpenpay] start");
    1313        $card_bin   = isset( $_POST['card_bin'] ) ? $_POST['card_bin'] : false;
    1414        $logger->info("Bin: " . $card_bin);
     
    6565
    6666            } catch (Exception $e) {
    67                 $logger->error($e->getMessage());
     67                $logger->error('[WC_Openpay_Bines_Consult.getTypeCardOpenpay => ERROR ]'.$e->getMessage());
    6868            }
    6969        }
     
    7272            'card_type' => "credit card not found"
    7373        ));
     74        $logger->info("[WC_Openpay_Bines_Consult.getTypeCardOpenpay] end");
    7475    }
    7576}
  • openpay-cards/trunk/Services/OpenpayCardService.php

    r3351601 r3375395  
    3232    public function getCreditCardList()
    3333    {
     34        $this->logger->info('[OpenpayCardService.getCreditCardList] start ');
    3435        if (!is_user_logged_in()) {
    3536            return array(array('value' => 'new', 'name' => 'Nueva tarjeta'));
     
    4243            $customer_id = get_user_meta(get_current_user_id(), '_openpay_customer_live_id', true);
    4344        }
    44         $this->logger->info('WC_Openpay_Cards_Service.getCreditCardList - customer_id ' . $customer_id);
     45        $this->logger->info('[OpenpayCardService.getCreditCardList] => customer_id ' . $customer_id);
    4546
    4647
     
    5051
    5152        $list = array(array('value' => 'new', 'name' => 'Nueva tarjeta'));
    52         $this->logger->info('WC_Openpay_Cards_Service.getCreditCardList - cards_list ' . Json_encode($list));
     53        $this->logger->info('[OpenpayCardService.getCreditCardList] => cards_list ' . Json_encode($list));
    5354        // try {
    5455            $customer = OpenpayErrorHandler::catchOpenpayError(function () use ($customer_id) {
     
    5758
    5859            $cards = $this->getCreditCards($customer);
    59             $this->logger->info('WC_Openpay_Cards_Service.getCreditCardList - cards_list_from_api ' . Json_encode($cards));
     60            $this->logger->info('[OpenpayCardService.getCreditCardList] => cards_list_from_api ' . Json_encode($cards));
    6061            foreach ($cards as $card) {
    6162                array_push($list, array('value' => $card->id, 'name' => strtoupper($card->brand) . ' ' . $card->card_number));
    6263            }
     64            $this->logger->info('[OpenpayCardService.getCreditCardList] end ');
    6365            return $list;
    6466       // } catch (Exception $e) {
     
    7072    private function getCreditCards($customer)
    7173    {
     74        $this->logger->info('[OpenpayCardService.getCreditCards] start ');
    7275        try {
    7376            return $customer->cards->getList(array(
     
    7679            ));
    7780        } catch (Exception $e) {
    78             $this->logger->error($e->getMessage());
     81            $this->logger->error("[OpenpayCardService.getCreditCards] => ERROR ".$e->getMessage());
    7982            throw $e;
    8083        }
     84        $this->logger->info('[OpenpayCardService.getCreditCards] end ');
    8185    }
    8286
    8387    public function validateNewCard($openpay_customer, $token, $device_session_id, $card_number, $save_card_mode)
    8488    {
     89        $this->logger->info('[OpenpayCardService.validateNewCard] start');
    8590        global $woocommerce;
    86         $this->logger->info('validateNewCard', array('#INFO validateNewCard() => ' => $card_number));
     91        $this->logger->info('[OpenpayCardService.validateNewCard]', array('#INFO validateNewCard() => ' => $card_number));
    8792        $cards = $this->getCreditCards($openpay_customer);
    8893        $card_number_bin = substr($card_number, 0, 8);
     
    9196            if ($card_number_bin == substr($card->card_number, 0, 8) && $card_number_complement == substr($card->card_number, -4)) {
    9297                $errorMsg = "La tarjeta ya se encuentra registrada, seleccionala de la lista de tarjetas.";
    93                 $this->logger->error('validateNewCard', array('#ERROR validateNewCard() => ' => $errorMsg));
     98                $this->logger->error('[OpenpayCardService.validateNewCard]', array('#ERROR validateNewCard() => ' => $errorMsg));
    9499                if (function_exists('wc_add_notice')) {
    95100                    wc_add_notice($errorMsg, $notice_type = 'error');
     
    113118        $card = $this->createCreditCard($openpay_customer, $card_data);
    114119
     120        $this->logger->info('[OpenpayCardService.validateNewCard] end');
    115121        return $card->id;
    116122    }
     
    118124    private function createCreditCard($customer, $data)
    119125    {
     126        $this->logger->info('[OpenpayCardService.createCreditCard] start ');
    120127        try {
    121128            return $customer->cards->add($data);
    122129        } catch (Exception $e) {
    123             $this->logger->error($e->getMessage());
     130            $this->logger->error('[OpenpayCardService.createCreditCard => ERROR ]'.$e->getMessage());
    124131            throw $e;
    125132        }
     133        $this->logger->info('[OpenpayCardService.createCreditCard] end ');
    126134    }
    127135
  • openpay-cards/trunk/Services/OpenpayChargeService.php

    r3367506 r3375395  
    22namespace OpenpayCards\Services;
    33
     4use Exception;
    45use OpenpayCards\Handlers\OpenpayChargeHandlerCo;
    56use OpenpayCards\Handlers\OpenpayChargeHandlerMx;
    67use OpenpayCards\Handlers\OpenpayChargeHandlerPe;
    78use OpenpayCards\Includes\OpenpayErrorHandler;
     9use OpenpayCards\Services\PaymentSettings\Openpay3dSecure;
    810
    911
     
    1214    exit; // Exit if accessed directly
    1315}
    14 
    15 //require_once ABSPATH . 'wp-load.php';
    16 //require_once ABSPATH . 'wp-Includes/pluggable.php';
    17 //require_once ABSPATH . 'wp-Includes/user.php'; // Ensure user-related functions are loaded
    1816
    1917class OpenpayChargeService
     
    3836    {
    3937
    40         $this->logger->info('processOpenpayCharge');
     38        $this->logger->info('[OpenpayChargeService.processOpenpayCharge start]');
    4139
    4240        $charge_request = $this->collectChargeData($payment_settings);
    43         $this->logger->info('processOpenpayCharge {Charge.TYPE} - ' .$payment_settings['openpay_charge_type']);
     41        $this->logger->info('[OpenpayChargeService.processOpenpayCharge] {Charge.TYPE} - ' .$payment_settings['openpay_charge_type']);
    4442        $charge = $this->create($payment_settings['openpay_customer'], $charge_request,$payment_settings['openpay_charge_type']);
    45         $this->logger->info('processOpenpayCharge {Charge body} - ' . json_encode($charge));
    46         $this->logger->info('processOpenpayCharge {Charge.id} - ' . $charge->id);
    47         $this->logger->info('processOpenpayCharge {Charge.description} - ' . $charge->description);
     43        $this->logger->info('[OpenpayChargeService.processOpenpayCharge] {Charge body} - ' . json_encode($charge));
     44        $this->logger->info('[OpenpayChargeService.processOpenpayCharge] {Charge.id} - ' . $charge->id);
     45        $this->logger->info('[OpenpayChargeService.processOpenpayCharge] {Charge.description} - ' . $charge->description);
    4846        if($charge != false ) {
    4947            $this->order->update_meta_data('_transaction_id', $charge->id);
    50             $this->logger->info('processOpenpayCharge {Charge.id} - ' . $charge->id);
    51             $this->logger->info('processOpenpayCharge {Charge.description} - ' . $charge->description);
     48            $this->logger->info('[OpenpayChargeService.processOpenpayCharge] {Charge.id} - ' . $charge->id);
     49            $this->logger->info('[OpenpayChargeService.processOpenpayCharge] {Charge.description} - ' . $charge->description);
    5250
    5351            if($payment_settings['sandbox'] && is_user_logged_in()){
    5452                $this->order->update_meta_data('_openpay_customer_sandbox_id',$charge->customer_id);
    55                 $this->logger->info('Update metadata customer Sandbox ' . $charge->customer_id);
     53                $this->logger->info('[OpenpayChargeService.processOpenpayCharge] => Update metadata customer Sandbox ' . $charge->customer_id);
    5654            } else if (!$payment_settings['sandbox'] && is_user_logged_in()){
    5755                $this->order->update_meta_data('_openpay_customer_id',$charge->customer_id);
    58                 $this->logger->info('Update metadata customer Live ' . $charge->customer_id);
     56                $this->logger->info('[OpenpayChargeService.processOpenpayCharge] => Update metadata customer Live ' . $charge->customer_id);
    5957            }
    6058
    6159            if($charge_request['capture'] === false && $charge->status == 'in_progress'){
    6260                $captureString = ($this->capture) ? 'true' : 'false';
    63                 $this->logger->info('Order:' . $this->order->get_id() . ' Set as preauthorized');
     61                $this->logger->info('[OpenpayChargeService.processOpenpayCharge] => Order:' . $this->order->get_id() . ' Set as preauthorized');
    6462                $this->order->update_meta_data('_openpay_capture', $captureString);
    6563            }
    6664            $this->order->save();
    6765        }
    68 
     66        $this->logger->info('[OpenpayChargeService.processOpenpayCharge end]');
    6967        return $charge;
    7068    }
     
    7270    public function create($openpay_customer, $charge_request, $charge_type) {
    7371        try {
    74             $this->logger->info('wc-openpay-charge-service.create');
     72            $this->logger->info('[OpenpayChargeService.create] start');
    7573            $this->logger->info("[OpenpayChargeService.create - CHARGE_REQUEST] => " . json_encode($charge_request) );
    7674            $order_id = $this->order->get_id();
     75
    7776            if (is_user_logged_in()) {
    7877                $customer_id = $this->order->get_customer_id();
    79                 $openpay_customer = OpenpayErrorHandler::catchOpenpayError(function () use($openpay_customer, $charge_request, $order_id, $customer_id) {
    80 
     78                $charge = OpenpayErrorHandler::catchOpenpayError(function () use($openpay_customer, $charge_request, $order_id, $customer_id) {
    8179                   return $openpay_customer->charges->create($charge_request);
    8280                }, $order_id, $customer_id);
    83                
    84                 $this->logger->info('[wc-openpay-charge-service.create] => charge result=> ' . $charge->id);
    8581            } else {
    8682                $openpay = $this->openpay;
     
    8884                    return $openpay->charges->create($charge_request);
    8985                }, $order_id);
    90                 $this->logger->info('[wc-openpay-charge-service.create] => charge result=> ' . $charge->id);
    91             }
     86            }
     87
     88            if($charge == 3005) throw new Exception("Fraud risk detected by anti-fraud system --- Found in blacklist", 3005);
     89            $this->logger->info('[OpenpayChargeService.create] => charge result ' . $charge->id);
     90
    9291            if($charge !==false){
    9392                if ($charge->payment_method && $charge->payment_method->type == 'redirect') {
    94                     $this->logger->info('[wc-openpay-charge-service.create] => UPDATE METADATA payment_method->url)');
     93                    $this->logger->info('[OpenpayChargeService.create] => UPDATE METADATA payment_method->url)');
    9594                    $this->order->update_meta_data('_openpay_3d_secure_url', $charge->payment_method->url);
    9695                    $this->order->set_status('on-hold');
     
    9897                    $this->order->delete_meta_data('_openpay_3d_secure_url');
    9998                }
     99                $this->logger->info('[OpenpayChargeService.create] => UpdateStatus on-hold');
    100100                $this->order->save();
    101101            }
     
    103103
    104104        } catch (Exception $e) {
    105             $this->logger->error('[ERROR - wc-openpay-charge-service.create] Order => ' . $this->order->get_id());
    106             $this->logger->error('[ERROR - wc-openpay-charge-service.create] Error => '. $e->getMessage());
     105            $this->logger->error('[ERROR - OpenpayChargeService.create] Order => ' . $this->order->get_id());
     106            $this->logger->error('[ERROR - OpenpayChargeService.create] Error => '. $e->getMessage());
    107107
    108108            $this->logger->error('[Charge type exception => '. $charge_type);
    109109            $this->logger->error('[Code exception => '. $e->getCode());
    110             $this->logger->error('[Redirect url => '. $this->redirect_url_3d());
    111110
    112111            // Si cuenta con autenticación selectiva y hay detección de fraude se envía por 3D Secure
    113112            if ($charge_type == 'auth' && $e->getCode() == '3005') {
     113                $openpay3ds = new Openpay3dSecure();
     114                $redirect_url = $openpay3ds->redirect_url_3d();
    114115                $charge_request['use_3d_secure'] = true;
    115                 $charge_request['redirect_url'] =$this->redirect_url_3d();
    116                 $charge = $openpay_customer->charges->create($charge_request);
     116                $charge_request['redirect_url'] = $redirect_url;
     117
     118                $this->logger->error('[[OpenpayChargeService.create] Redirect url => '. $redirect_url);
     119
     120                $this->logger->error('[[OpenpayChargeService.create] => 3DSecure Selectivo start');
     121                if (is_user_logged_in()) {
     122                    $charge = OpenpayErrorHandler::catchOpenpayError(function () use($openpay_customer, $charge_request, $order_id, $customer_id) {
     123                        return $openpay_customer->charges->create($charge_request);
     124                    }, $order_id, $customer_id);
     125                } else {
     126                    $openpay = $this->openpay;
     127                    $charge = OpenpayErrorHandler::catchOpenpayError(function () use ($openpay, $charge_request, $order_id) {
     128                        return $openpay->charges->create($charge_request);
     129                    }, $order_id);
     130                }
     131                $this->logger->error('[[OpenpayChargeService.create] => 3DSecure Selectivo end');
    117132               
    118 
    119                 $this->logger->info('createOpenpayCharge Auth Order => '.$this->order->get_id());
     133                if ($charge == 3005) return false;
     134                $this->logger->info('[OpenpayChargeService.create] => Auth Order => '.$this->order->get_id());
    120135
    121136                if ($charge->payment_method && $charge->payment_method->type == 'redirect') {
    122                     $this->logger->info('createOpenpayCharge update_order_meta_data => '.$charge->payment_method->url);
     137                    $this->logger->info('[OpenpayChargeService.create] => update_order_meta_data '.$charge->payment_method->url);
    123138                    $this->order->update_meta_data('_openpay_3d_secure_url', $charge->payment_method->url);
    124139                    $this->order->save(); // ¡Importante! Guardar los cambios
    125140                    $redirect_url_meta = $this->order->get_meta('_openpay_3d_secure_url');
    126                     $this->logger->info('get update_order_meta_data => ' . $redirect_url_meta);
     141                    $this->logger->info('[OpenpayChargeService.create] => get update_order_meta_data ' . $redirect_url_meta);
    127142                }else{
    128143                    $this->order->delete_meta_data('_openpay_3d_secure_url');
     
    135150        }
    136151
    137 
    138         /* $this->logger->info('wc-openpay-charge-service.create');
    139          try {
    140              $charge = $openpay_customer->charges->create($charge_request);
    141              return $charge;
    142          }/*catch (OpenpayApiRequestError $e){
    143              $this->logger->error('[ERROR - wc-openpay-charge-service.create] Error => '. $e);
    144          }*/
    145         /*catch (Exception $e){
    146             $this->logger->error('[ERROR - wc-openpay-charge-service.create] Order => '.$this->order->get_id());
    147             // $this->logger->error('[ERROR - wc-openpay-charge-service.create] Error => '. json_encode($e)); is not working.
    148             $this->logger->error('[ERROR - wc-openpay-charge-service.create] Error => '. $e->getMessage());
    149             //throw new Exception('Oopsie');
    150         }
    151         */
     152        $this->logger->info('[OpenpayChargeService.processOpenpayCharge.create] end');
    152153        return $charge;
    153154    }
     
    155156    private function collectChargeData($payment_settings)
    156157    {
    157 
     158        $this->logger->info('[OpenpayChargeService.collectChargeData] start');
    158159        $charge_request = array(
    159160            "method" => "card",
     
    184185
    185186        $this->logger->info('[OpenpayChargeService.collectChargeData]' . json_encode($charge_request));
     187        $this->logger->info('[OpenpayChargeService.collectChargeData] end');
    186188        return $charge_request;
    187189    }
  • openpay-cards/trunk/Services/OpenpayCustomerService.php

    r3351601 r3375395  
    1818
    1919    public function retrieveCustomer($order){
     20        $this->logger->info('[OpenpayCustomerService.retrieveCustomer] start ');
    2021        $customer_id = $this->getCustomerId();
    2122        try {
    2223            if (OpenpayUtils::isNullOrEmptyString($customer_id)) {
    23                 $this->logger->info('(retrieveCustomer) customer_id not exists - ' . $customer_id);
     24                $this->logger->info('[OpenpayCustomerService.retrieveCustomer] => customer_id not exists - ' . $customer_id);
    2425                if (is_user_logged_in()) {
    2526                    return $this->create($order);
    2627                }
    2728            }else{
    28                 $this->logger->info('(retrieveCustomer) customer_id exists - ' . $customer_id);
     29                $this->logger->info('[OpenpayCustomerService.retrieveCustomer] => customer_id exists - ' . $customer_id);
    2930                return $this->openpay->customers->get($customer_id);
    3031            }
     
    3334            return false;
    3435        }
     36        $this->logger->info('[OpenpayCustomerService.retrieveCustomer] end ');
    3537    }
    3638
    3739    public function getCustomerId() {
     40        $this->logger->info('[OpenpayCustomerService.getCustomerId] start ');
    3841        $customer_id = null;
    39         $this->logger->info('(getCustomerId) sandbox? - ' . $this->sandbox);
     42        $this->logger->info('[OpenpayCustomerService.getCustomerId] => sandbox? - ' . $this->sandbox);
    4043        if (is_user_logged_in()) {
    4144            if ($this->sandbox) {
     
    4548            }           
    4649        }
    47         $this->logger->info('(getCustomerId) customer_id_test - ' . get_user_meta(get_current_user_id(), '_openpay_customer_test_id', true) );
    48         $this->logger->info('(getCustomerId) customer_id_live - ' . get_user_meta(get_current_user_id(), '_openpay_customer_live_id', true) );
     50        $this->logger->info('[OpenpayCustomerService.getCustomerId] => customer_id_test - ' . get_user_meta(get_current_user_id(), '_openpay_customer_test_id', true) );
     51        $this->logger->info('[OpenpayCustomerService.getCustomerId] => customer_id_live - ' . get_user_meta(get_current_user_id(), '_openpay_customer_live_id', true) );
     52        $this->logger->info('[OpenpayCustomerService.getCustomerId] end ');
    4953        return $customer_id;
    5054    }
    5155
    5256    public function updateCustomerId($customer_id){
     57        $this->logger->info('[OpenpayCustomerService.updateCustomerId] start ');
    5358        if (is_user_logged_in()) {
     59            $this->logger->info('[OpenpayCustomerService.updateCustomerId] => update_user_meta ');
    5460            if ($this->sandbox) {
    5561                update_user_meta(get_current_user_id(), '_openpay_customer_test_id', $customer_id);
     
    5864            }               
    5965        }
     66        $this->logger->info('[OpenpayCustomerService.updateCustomerId] end ');
    6067    }
    6168
    6269
    6370    public function create($order) {
     71        $this->logger->info('[OpenpayCustomerService.create] start ');
    6472        $customer_data = $this->collectCustomerData($order);
    65         $this->logger->info('(create) customer_data - ' . json_encode($customer_data));
     73        $this->logger->info('[OpenpayCustomerService.create] => customer_data - ' . json_encode($customer_data));
    6674        try {
    6775            $customer = $this->openpay->customers->add($customer_data);
    68             $this->logger->info('customer_id - ' . $customer->id);
     76            $this->logger->info('[OpenpayCustomerService.create] => customer_id - ' . $customer->id);
    6977            $this->updateCustomerId($customer->id);
    7078           
    71             $this->logger->info('customer_data - ' . $customer_data);
    72             $this->logger->info('customer_id - ' . $customer->id);
     79            $this->logger->info('[OpenpayCustomerService.create] => customer_data - ' . $customer_data);
     80            $this->logger->info('[OpenpayCustomerService.create] => customer_id - ' . $customer->id);
    7381
    7482            return $customer;
     
    7886            return false;
    7987        }
     88        $this->logger->info('[OpenpayCustomerService.create] end ');
    8089    }
    8190
     
    8392
    8493    public function collectCustomerData($order) {
    85 
     94        $this->logger->info('[OpenpayCustomerService.collectCustomerData] start ');
    8695        $customer_data = array(           
    8796            'name' => $order->get_billing_first_name(),
     
    92101        );
    93102
     103        if ($this->hasAddress($order)) {
     104            $customer_data = $this->formatAddress($customer_data, $order);
     105        }
     106        $this->logger->info('[OpenpayCustomerService.collectCustomerData] end ');
     107        return $customer_data;
     108    }
     109    private function formatAddress($customer_data, $order) {
     110        $this->logger->info('[OpenpayCustomerService.formatAddress] start ');
    94111        if ($this->country === 'MX' || $this->country === 'PE') {
    95112            $customer_data['address'] = array(
     
    108125            );
    109126        }
    110        
     127        $this->logger->info('[OpenpayCustomerService.formatAddress] => customer_data ' . json_encode($customer_data));
     128        $this->logger->info('[OpenpayCustomerService.formatAddress] end ');
    111129        return $customer_data;
    112130    }
    113 
     131    public function hasAddress($order) {
     132        $this->logger->info('[OpenpayCustomerService.formatAddress] start ');
     133        if($order->get_billing_address_1() && $order->get_billing_state() && $order->get_billing_postcode() && $order->get_billing_country() && $order->get_billing_city()) {
     134            $this->logger->info('[OpenpayCustomerService.formatAddress] validAddress');
     135            $this->logger->info('[OpenpayCustomerService.formatAddress] end ');
     136            return true;
     137        }
     138        $this->logger->info('[OpenpayCustomerService.formatAddress] invalidAddress');
     139        $this->logger->info('[OpenpayCustomerService.formatAddress] end ');
     140        return false;
     141    }
    114142
    115143}
  • openpay-cards/trunk/Services/PaymentSettings/OpenpayInstallments.php

    r3351601 r3375395  
    4141
    4242    public function getInstallments(){
    43        return $this->processInstallments();
     43       if(is_checkout()){
     44           return $this->processInstallments();
     45       }
     46       return false;
    4447    }
    4548
  • openpay-cards/trunk/Services/class-wc-openpay-capture-service.php

    r3351601 r3375395  
    1818    function openpayWoocommerceOrderStatusChangeCustom($order_id, $old_status, $new_status)
    1919    {
     20        $logger = wc_get_logger();
     21        $logger->info('[WC_Openpay_Capture_Service.openpayWoocommerceOrderStatusChangeCustom] start');
    2022        $order = wc_get_order($order_id);
    2123        // Execute only if there are not a partial capture yet
    2224        if ($order->get_meta('_captured_total') == null) {
    23             $logger = wc_get_logger();
    24             $logger->info('openpay_woocommerce_order_status_change_custom');
    25             $logger->info('$old_status: ' . $old_status);
    26             $logger->info('$new_status: ' . $new_status);
     25            $logger->info('[WC_Openpay_Capture_Service.openpayWoocommerceOrderStatusChangeCustom] => openpay_woocommerce_order_status_change_custom');
     26            $logger->info('[WC_Openpay_Capture_Service.openpayWoocommerceOrderStatusChangeCustom] => $old_status: ' . $old_status);
     27            $logger->info('[WC_Openpay_Capture_Service.openpayWoocommerceOrderStatusChangeCustom] => $new_status: ' . $new_status);
    2728
    2829            if ($order->get_payment_method() != 'wc_openpay_gateway') {
    29                 $logger->info('get_payment_method: ' . $order->get_payment_method());
     30                $logger->info('[WC_Openpay_Capture_Service.openpayWoocommerceOrderStatusChangeCustom] => get_payment_method: ' . $order->get_payment_method());
    3031                return;
    3132            }
     
    3435            $transaction_id = $order->get_meta('_transaction_id');
    3536            $capture = $order->get_meta('_openpay_capture');
    36             $logger->info('$capture: ' . $capture);
     37            $logger->info('[WC_Openpay_Capture_Service.openpayWoocommerceOrderStatusChangeCustom] => $capture: ' . $capture);
    3738
    3839            if ($capture == 'false' && $old_status == 'on-hold' && in_array($new_status, $expected_new_status)) {
    39                 $this->logger->info("Entra a la captura de Hook");
     40                $this->logger->info("[WC_Openpay_Capture_Service.openpayWoocommerceOrderStatusChangeCustom] => Entra a la captura de Hook");
    4041
    4142                try {
     
    6667            $order->save();
    6768        }
     69        $logger->info('[WC_Openpay_Capture_Service.openpayWoocommerceOrderStatusChangeCustom] end');
    6870    }
    6971
    7072    function addPartialCaptureToggle($order)
    7173    {
     74        $this->logger->info('[WC_Openpay_Capture_Service.addPartialCaptureToggle] start');
    7275        if ($this->is_preauthorized_order($order)) {
    7376            $this->logger->info("Entra al handler capture toggle is preauthorized order");
     
    7780
    7881            if ($auth_remaining < 1) {
     82                $this->logger->info('[WC_Openpay_Capture_Service.addPartialCaptureToggle] end');
    7983                return;
    8084            }
     
    8286            include(dirname(__DIR__) . '/templates/partial-capture.php');
    8387        }
     88        $this->logger->info('[WC_Openpay_Capture_Service.addPartialCaptureToggle] end');
    8489    }
    8590
     
    8792    public function ajaxCaptureHandler()
    8893    {
     94        $this->logger->info('[WC_Openpay_Capture_Service.ajaxCaptureHandler] start');
    8995        $order_id = $_POST['order_id'];
    9096        $amount = isset($_POST['amount']) ? $_POST['amount'] : 0;
     
    145151            wp_send_json_error(array('error' => $e->getMessage()));
    146152        }
     153        $this->logger->info('[WC_Openpay_Capture_Service.ajaxCaptureHandler] end');
    147154        wp_die();
    148155    }
     
    150157    public function is_preauthorized_order($order)
    151158    {
    152         $this->logger->info("Verifica si es capture " . $order->get_meta('_openpay_capture'));
     159        $this->logger->info('[WC_Openpay_Capture_Service.is_preauthorized_order] start');
     160        $this->logger->info("[WC_Openpay_Capture_Service.is_preauthorized_order] => Verifica si es capture " . $order->get_meta('_openpay_capture'));
     161        $this->logger->info('[WC_Openpay_Capture_Service.is_preauthorized_order] end');
    153162        return $order->get_meta('_openpay_capture') == 'false';
    154163    }
     
    156165    public function get_order_auth_amount($order)
    157166    {
     167        $this->logger->info('[WC_Openpay_Capture_Service.get_order_auth_amount] start');
    158168        $order_id = $order->get_id();
    159169        $amount = $order->get_total();
     170        $this->logger->info('[WC_Openpay_Capture_Service.get_order_auth_amount] end');
    160171        return $amount;
    161172    }
     
    163174    public function get_order_auth_remaining($order)
    164175    {
     176        $this->logger->info('[WC_Openpay_Capture_Service.get_order_auth_remaining] start');
    165177        $order_id = $order->get_id();
    166178        $amount = $this->get_order_auth_amount($order) - $this->get_order_captured_total($order);
     179        $this->logger->info('[WC_Openpay_Capture_Service.get_order_auth_remaining] end');
    167180        return floatval($amount);
    168181    }
     
    170183    public function get_order_captured_total($order)
    171184    {
    172         $this->logger->info("Entra a verificar si tiene valor");
     185        $this->logger->info('[WC_Openpay_Capture_Service.get_order_captured_total] start');
     186        $this->logger->info("[WC_Openpay_Capture_Service.get_order_captured_total] => Entra a verificar si tiene valor");
    173187        $amount = $order->get_meta('_captured_total') ? $order->get_meta('_captured_total') : 0;
     188        $this->logger->info('[WC_Openpay_Capture_Service.get_order_captured_total] end');
    174189        return floatval($amount);
    175190    }
  • openpay-cards/trunk/blocks/checkout-form/build/index.asset.php

    r3367506 r3375395  
    1 <?php return array('dependencies' => array('react', 'react-jsx-runtime', 'wp-html-entities'), 'version' => '6959a13191c9dd373a71');
     1<?php return array('dependencies' => array('react', 'react-jsx-runtime', 'wp-html-entities'), 'version' => 'e4de5a887af26f7401eb');
  • openpay-cards/trunk/blocks/checkout-form/build/index.js

    r3367506 r3375395  
    1 (()=>{"use strict";var e={d:(t,n)=>{for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{hasBrowserEnv:()=>fe,hasStandardBrowserEnv:()=>me,hasStandardBrowserWebWorkerEnv:()=>ye,navigator:()=>he,origin:()=>be});const n=window.wp.htmlEntities,r=window.React;function o(e,t){return function(){return e.apply(t,arguments)}}const{toString:s}=Object.prototype,{getPrototypeOf:a}=Object,i=(c=Object.create(null),e=>{const t=s.call(e);return c[t]||(c[t]=t.slice(8,-1).toLowerCase())});var c;const l=e=>(e=e.toLowerCase(),t=>i(t)===e),u=e=>t=>typeof t===e,{isArray:d}=Array,p=u("undefined"),f=l("ArrayBuffer"),h=u("string"),m=u("function"),y=u("number"),b=e=>null!==e&&"object"==typeof e,g=e=>{if("object"!==i(e))return!1;const t=a(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)},w=l("Date"),E=l("File"),v=l("Blob"),S=l("FileList"),x=l("URLSearchParams"),[R,O,j,C]=["ReadableStream","Request","Response","Headers"].map(l);function _(e,t,{allOwnKeys:n=!1}={}){if(null==e)return;let r,o;if("object"!=typeof e&&(e=[e]),d(e))for(r=0,o=e.length;r<o;r++)t.call(null,e[r],r,e);else{const o=n?Object.getOwnPropertyNames(e):Object.keys(e),s=o.length;let a;for(r=0;r<s;r++)a=o[r],t.call(null,e[a],a,e)}}function T(e,t){t=t.toLowerCase();const n=Object.keys(e);let r,o=n.length;for(;o-- >0;)if(r=n[o],t===r.toLowerCase())return r;return null}const A="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,N=e=>!p(e)&&e!==A,P=(k="undefined"!=typeof Uint8Array&&a(Uint8Array),e=>k&&e instanceof k);var k;const L=l("HTMLFormElement"),U=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),B=l("RegExp"),F=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};_(n,((n,o)=>{let s;!1!==(s=t(n,o,e))&&(r[o]=s||n)})),Object.defineProperties(e,r)},D="abcdefghijklmnopqrstuvwxyz",M="0123456789",q={DIGIT:M,ALPHA:D,ALPHA_DIGIT:D+D.toUpperCase()+M},I=l("AsyncFunction"),z=(H="function"==typeof setImmediate,V=m(A.postMessage),H?setImmediate:V?(J=`axios@${Math.random()}`,W=[],A.addEventListener("message",(({source:e,data:t})=>{e===A&&t===J&&W.length&&W.shift()()}),!1),e=>{W.push(e),A.postMessage(J,"*")}):e=>setTimeout(e));var H,V,J,W;const $="undefined"!=typeof queueMicrotask?queueMicrotask.bind(A):"undefined"!=typeof process&&process.nextTick||z,K={isArray:d,isArrayBuffer:f,isBuffer:function(e){return null!==e&&!p(e)&&null!==e.constructor&&!p(e.constructor)&&m(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:e=>{let t;return e&&("function"==typeof FormData&&e instanceof FormData||m(e.append)&&("formdata"===(t=i(e))||"object"===t&&m(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&f(e.buffer),t},isString:h,isNumber:y,isBoolean:e=>!0===e||!1===e,isObject:b,isPlainObject:g,isReadableStream:R,isRequest:O,isResponse:j,isHeaders:C,isUndefined:p,isDate:w,isFile:E,isBlob:v,isRegExp:B,isFunction:m,isStream:e=>b(e)&&m(e.pipe),isURLSearchParams:x,isTypedArray:P,isFileList:S,forEach:_,merge:function e(){const{caseless:t}=N(this)&&this||{},n={},r=(r,o)=>{const s=t&&T(n,o)||o;g(n[s])&&g(r)?n[s]=e(n[s],r):g(r)?n[s]=e({},r):d(r)?n[s]=r.slice():n[s]=r};for(let e=0,t=arguments.length;e<t;e++)arguments[e]&&_(arguments[e],r);return n},extend:(e,t,n,{allOwnKeys:r}={})=>(_(t,((t,r)=>{n&&m(t)?e[r]=o(t,n):e[r]=t}),{allOwnKeys:r}),e),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},toFlatObject:(e,t,n,r)=>{let o,s,i;const c={};if(t=t||{},null==e)return t;do{for(o=Object.getOwnPropertyNames(e),s=o.length;s-- >0;)i=o[s],r&&!r(i,e,t)||c[i]||(t[i]=e[i],c[i]=!0);e=!1!==n&&a(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},kindOf:i,kindOfTest:l,endsWith:(e,t,n)=>{e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return-1!==r&&r===n},toArray:e=>{if(!e)return null;if(d(e))return e;let t=e.length;if(!y(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},forEachEntry:(e,t)=>{const n=(e&&e[Symbol.iterator]).call(e);let r;for(;(r=n.next())&&!r.done;){const n=r.value;t.call(e,n[0],n[1])}},matchAll:(e,t)=>{let n;const r=[];for(;null!==(n=e.exec(t));)r.push(n);return r},isHTMLForm:L,hasOwnProperty:U,hasOwnProp:U,reduceDescriptors:F,freezeMethods:e=>{F(e,((t,n)=>{if(m(e)&&-1!==["arguments","caller","callee"].indexOf(n))return!1;const r=e[n];m(r)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")}))}))},toObjectSet:(e,t)=>{const n={},r=e=>{e.forEach((e=>{n[e]=!0}))};return d(e)?r(e):r(String(e).split(t)),n},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,n){return t.toUpperCase()+n})),noop:()=>{},toFiniteNumber:(e,t)=>null!=e&&Number.isFinite(e=+e)?e:t,findKey:T,global:A,isContextDefined:N,ALPHABET:q,generateString:(e=16,t=q.ALPHA_DIGIT)=>{let n="";const{length:r}=t;for(;e--;)n+=t[Math.random()*r|0];return n},isSpecCompliantForm:function(e){return!!(e&&m(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:e=>{const t=new Array(10),n=(e,r)=>{if(b(e)){if(t.indexOf(e)>=0)return;if(!("toJSON"in e)){t[r]=e;const o=d(e)?[]:{};return _(e,((e,t)=>{const s=n(e,r+1);!p(s)&&(o[t]=s)})),t[r]=void 0,o}}return e};return n(e,0)},isAsyncFn:I,isThenable:e=>e&&(b(e)||m(e))&&m(e.then)&&m(e.catch),setImmediate:z,asap:$};function X(e,t,n,r,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),o&&(this.response=o,this.status=o.status?o.status:null)}K.inherits(X,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:K.toJSONObject(this.config),code:this.code,status:this.status}}});const G=X.prototype,Q={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((e=>{Q[e]={value:e}})),Object.defineProperties(X,Q),Object.defineProperty(G,"isAxiosError",{value:!0}),X.from=(e,t,n,r,o,s)=>{const a=Object.create(G);return K.toFlatObject(e,a,(function(e){return e!==Error.prototype}),(e=>"isAxiosError"!==e)),X.call(a,e.message,t,n,r,o),a.cause=e,a.name=e.name,s&&Object.assign(a,s),a};const Y=X;function Z(e){return K.isPlainObject(e)||K.isArray(e)}function ee(e){return K.endsWith(e,"[]")?e.slice(0,-2):e}function te(e,t,n){return e?e.concat(t).map((function(e,t){return e=ee(e),!n&&t?"["+e+"]":e})).join(n?".":""):t}const ne=K.toFlatObject(K,{},null,(function(e){return/^is[A-Z]/.test(e)})),re=function(e,t,n){if(!K.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;const r=(n=K.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!K.isUndefined(t[e])}))).metaTokens,o=n.visitor||l,s=n.dots,a=n.indexes,i=(n.Blob||"undefined"!=typeof Blob&&Blob)&&K.isSpecCompliantForm(t);if(!K.isFunction(o))throw new TypeError("visitor must be a function");function c(e){if(null===e)return"";if(K.isDate(e))return e.toISOString();if(!i&&K.isBlob(e))throw new Y("Blob is not supported. Use a Buffer instead.");return K.isArrayBuffer(e)||K.isTypedArray(e)?i&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function l(e,n,o){let i=e;if(e&&!o&&"object"==typeof e)if(K.endsWith(n,"{}"))n=r?n:n.slice(0,-2),e=JSON.stringify(e);else if(K.isArray(e)&&function(e){return K.isArray(e)&&!e.some(Z)}(e)||(K.isFileList(e)||K.endsWith(n,"[]"))&&(i=K.toArray(e)))return n=ee(n),i.forEach((function(e,r){!K.isUndefined(e)&&null!==e&&t.append(!0===a?te([n],r,s):null===a?n:n+"[]",c(e))})),!1;return!!Z(e)||(t.append(te(o,n,s),c(e)),!1)}const u=[],d=Object.assign(ne,{defaultVisitor:l,convertValue:c,isVisitable:Z});if(!K.isObject(e))throw new TypeError("data must be an object");return function e(n,r){if(!K.isUndefined(n)){if(-1!==u.indexOf(n))throw Error("Circular reference detected in "+r.join("."));u.push(n),K.forEach(n,(function(n,s){!0===(!(K.isUndefined(n)||null===n)&&o.call(t,n,K.isString(s)?s.trim():s,r,d))&&e(n,r?r.concat(s):[s])})),u.pop()}}(e),t};function oe(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function se(e,t){this._pairs=[],e&&re(e,this,t)}const ae=se.prototype;ae.append=function(e,t){this._pairs.push([e,t])},ae.toString=function(e){const t=e?function(t){return e.call(this,t,oe)}:oe;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};const ie=se;function ce(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function le(e,t,n){if(!t)return e;const r=n&&n.encode||ce,o=n&&n.serialize;let s;if(s=o?o(t,n):K.isURLSearchParams(t)?t.toString():new ie(t,n).toString(r),s){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+s}return e}const ue=class{constructor(){this.handlers=[]}use(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){K.forEach(this.handlers,(function(t){null!==t&&e(t)}))}},de={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},pe={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:ie,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]},fe="undefined"!=typeof window&&"undefined"!=typeof document,he="object"==typeof navigator&&navigator||void 0,me=fe&&(!he||["ReactNative","NativeScript","NS"].indexOf(he.product)<0),ye="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,be=fe&&window.location.href||"http://localhost",ge={...t,...pe},we=function(e){function t(e,n,r,o){let s=e[o++];if("__proto__"===s)return!0;const a=Number.isFinite(+s),i=o>=e.length;return s=!s&&K.isArray(r)?r.length:s,i?(K.hasOwnProp(r,s)?r[s]=[r[s],n]:r[s]=n,!a):(r[s]&&K.isObject(r[s])||(r[s]=[]),t(e,n,r[s],o)&&K.isArray(r[s])&&(r[s]=function(e){const t={},n=Object.keys(e);let r;const o=n.length;let s;for(r=0;r<o;r++)s=n[r],t[s]=e[s];return t}(r[s])),!a)}if(K.isFormData(e)&&K.isFunction(e.entries)){const n={};return K.forEachEntry(e,((e,r)=>{t(function(e){return K.matchAll(/\w+|\[(\w*)]/g,e).map((e=>"[]"===e[0]?"":e[1]||e[0]))}(e),r,n,0)})),n}return null},Ee={transitional:de,adapter:["xhr","http","fetch"],transformRequest:[function(e,t){const n=t.getContentType()||"",r=n.indexOf("application/json")>-1,o=K.isObject(e);if(o&&K.isHTMLForm(e)&&(e=new FormData(e)),K.isFormData(e))return r?JSON.stringify(we(e)):e;if(K.isArrayBuffer(e)||K.isBuffer(e)||K.isStream(e)||K.isFile(e)||K.isBlob(e)||K.isReadableStream(e))return e;if(K.isArrayBufferView(e))return e.buffer;if(K.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let s;if(o){if(n.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return re(e,new ge.classes.URLSearchParams,Object.assign({visitor:function(e,t,n,r){return ge.isNode&&K.isBuffer(e)?(this.append(t,e.toString("base64")),!1):r.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((s=K.isFileList(e))||n.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return re(s?{"files[]":e}:e,t&&new t,this.formSerializer)}}return o||r?(t.setContentType("application/json",!1),function(e){if(K.isString(e))try{return(0,JSON.parse)(e),K.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(0,JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=this.transitional||Ee.transitional,n=t&&t.forcedJSONParsing,r="json"===this.responseType;if(K.isResponse(e)||K.isReadableStream(e))return e;if(e&&K.isString(e)&&(n&&!this.responseType||r)){const n=!(t&&t.silentJSONParsing)&&r;try{return JSON.parse(e)}catch(e){if(n){if("SyntaxError"===e.name)throw Y.from(e,Y.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:ge.classes.FormData,Blob:ge.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};K.forEach(["delete","get","head","post","put","patch"],(e=>{Ee.headers[e]={}}));const ve=Ee,Se=K.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),xe=Symbol("internals");function Re(e){return e&&String(e).trim().toLowerCase()}function Oe(e){return!1===e||null==e?e:K.isArray(e)?e.map(Oe):String(e)}function je(e,t,n,r,o){return K.isFunction(r)?r.call(this,t,n):(o&&(t=n),K.isString(t)?K.isString(r)?-1!==t.indexOf(r):K.isRegExp(r)?r.test(t):void 0:void 0)}class Ce{constructor(e){e&&this.set(e)}set(e,t,n){const r=this;function o(e,t,n){const o=Re(t);if(!o)throw new Error("header name must be a non-empty string");const s=K.findKey(r,o);(!s||void 0===r[s]||!0===n||void 0===n&&!1!==r[s])&&(r[s||t]=Oe(e))}const s=(e,t)=>K.forEach(e,((e,n)=>o(e,n,t)));if(K.isPlainObject(e)||e instanceof this.constructor)s(e,t);else if(K.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim()))s((e=>{const t={};let n,r,o;return e&&e.split("\n").forEach((function(e){o=e.indexOf(":"),n=e.substring(0,o).trim().toLowerCase(),r=e.substring(o+1).trim(),!n||t[n]&&Se[n]||("set-cookie"===n?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)})),t})(e),t);else if(K.isHeaders(e))for(const[t,r]of e.entries())o(r,t,n);else null!=e&&o(t,e,n);return this}get(e,t){if(e=Re(e)){const n=K.findKey(this,e);if(n){const e=this[n];if(!t)return e;if(!0===t)return function(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}(e);if(K.isFunction(t))return t.call(this,e,n);if(K.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=Re(e)){const n=K.findKey(this,e);return!(!n||void 0===this[n]||t&&!je(0,this[n],n,t))}return!1}delete(e,t){const n=this;let r=!1;function o(e){if(e=Re(e)){const o=K.findKey(n,e);!o||t&&!je(0,n[o],o,t)||(delete n[o],r=!0)}}return K.isArray(e)?e.forEach(o):o(e),r}clear(e){const t=Object.keys(this);let n=t.length,r=!1;for(;n--;){const o=t[n];e&&!je(0,this[o],o,e,!0)||(delete this[o],r=!0)}return r}normalize(e){const t=this,n={};return K.forEach(this,((r,o)=>{const s=K.findKey(n,o);if(s)return t[s]=Oe(r),void delete t[o];const a=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,((e,t,n)=>t.toUpperCase()+n))}(o):String(o).trim();a!==o&&delete t[o],t[a]=Oe(r),n[a]=!0})),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return K.forEach(this,((n,r)=>{null!=n&&!1!==n&&(t[r]=e&&K.isArray(n)?n.join(", "):n)})),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map((([e,t])=>e+": "+t)).join("\n")}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const n=new this(e);return t.forEach((e=>n.set(e))),n}static accessor(e){const t=(this[xe]=this[xe]={accessors:{}}).accessors,n=this.prototype;function r(e){const r=Re(e);t[r]||(function(e,t){const n=K.toCamelCase(" "+t);["get","set","has"].forEach((r=>{Object.defineProperty(e,r+n,{value:function(e,n,o){return this[r].call(this,t,e,n,o)},configurable:!0})}))}(n,e),t[r]=!0)}return K.isArray(e)?e.forEach(r):r(e),this}}Ce.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),K.reduceDescriptors(Ce.prototype,(({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[n]=e}}})),K.freezeMethods(Ce);const _e=Ce;function Te(e,t){const n=this||ve,r=t||n,o=_e.from(r.headers);let s=r.data;return K.forEach(e,(function(e){s=e.call(n,s,o.normalize(),t?t.status:void 0)})),o.normalize(),s}function Ae(e){return!(!e||!e.__CANCEL__)}function Ne(e,t,n){Y.call(this,null==e?"canceled":e,Y.ERR_CANCELED,t,n),this.name="CanceledError"}K.inherits(Ne,Y,{__CANCEL__:!0});const Pe=Ne;function ke(e,t,n){const r=n.config.validateStatus;n.status&&r&&!r(n.status)?t(new Y("Request failed with status code "+n.status,[Y.ERR_BAD_REQUEST,Y.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n)):e(n)}const Le=(e,t,n=3)=>{let r=0;const o=function(e,t){e=e||10;const n=new Array(e),r=new Array(e);let o,s=0,a=0;return t=void 0!==t?t:1e3,function(i){const c=Date.now(),l=r[a];o||(o=c),n[s]=i,r[s]=c;let u=a,d=0;for(;u!==s;)d+=n[u++],u%=e;if(s=(s+1)%e,s===a&&(a=(a+1)%e),c-o<t)return;const p=l&&c-l;return p?Math.round(1e3*d/p):void 0}}(50,250);return function(e,t){let n,r,o=0,s=1e3/t;const a=(t,s=Date.now())=>{o=s,n=null,r&&(clearTimeout(r),r=null),e.apply(null,t)};return[(...e)=>{const t=Date.now(),i=t-o;i>=s?a(e,t):(n=e,r||(r=setTimeout((()=>{r=null,a(n)}),s-i)))},()=>n&&a(n)]}((n=>{const s=n.loaded,a=n.lengthComputable?n.total:void 0,i=s-r,c=o(i);r=s,e({loaded:s,total:a,progress:a?s/a:void 0,bytes:i,rate:c||void 0,estimated:c&&a&&s<=a?(a-s)/c:void 0,event:n,lengthComputable:null!=a,[t?"download":"upload"]:!0})}),n)},Ue=(e,t)=>{const n=null!=e;return[r=>t[0]({lengthComputable:n,total:e,loaded:r}),t[1]]},Be=e=>(...t)=>K.asap((()=>e(...t))),Fe=ge.hasStandardBrowserEnv?function(){const e=ge.navigator&&/(msie|trident)/i.test(ge.navigator.userAgent),t=document.createElement("a");let n;function r(n){let r=n;return e&&(t.setAttribute("href",r),r=t.href),t.setAttribute("href",r),{href:t.href,protocol:t.protocol?t.protocol.replace(/:$/,""):"",host:t.host,search:t.search?t.search.replace(/^\?/,""):"",hash:t.hash?t.hash.replace(/^#/,""):"",hostname:t.hostname,port:t.port,pathname:"/"===t.pathname.charAt(0)?t.pathname:"/"+t.pathname}}return n=r(window.location.href),function(e){const t=K.isString(e)?r(e):e;return t.protocol===n.protocol&&t.host===n.host}}():function(){return!0},De=ge.hasStandardBrowserEnv?{write(e,t,n,r,o,s){const a=[e+"="+encodeURIComponent(t)];K.isNumber(n)&&a.push("expires="+new Date(n).toGMTString()),K.isString(r)&&a.push("path="+r),K.isString(o)&&a.push("domain="+o),!0===s&&a.push("secure"),document.cookie=a.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read:()=>null,remove(){}};function Me(e,t){return e&&!/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)?function(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}const qe=e=>e instanceof _e?{...e}:e;function Ie(e,t){t=t||{};const n={};function r(e,t,n){return K.isPlainObject(e)&&K.isPlainObject(t)?K.merge.call({caseless:n},e,t):K.isPlainObject(t)?K.merge({},t):K.isArray(t)?t.slice():t}function o(e,t,n){return K.isUndefined(t)?K.isUndefined(e)?void 0:r(void 0,e,n):r(e,t,n)}function s(e,t){if(!K.isUndefined(t))return r(void 0,t)}function a(e,t){return K.isUndefined(t)?K.isUndefined(e)?void 0:r(void 0,e):r(void 0,t)}function i(n,o,s){return s in t?r(n,o):s in e?r(void 0,n):void 0}const c={url:s,method:s,data:s,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,withXSRFToken:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:i,headers:(e,t)=>o(qe(e),qe(t),!0)};return K.forEach(Object.keys(Object.assign({},e,t)),(function(r){const s=c[r]||o,a=s(e[r],t[r],r);K.isUndefined(a)&&s!==i||(n[r]=a)})),n}const ze=e=>{const t=Ie({},e);let n,{data:r,withXSRFToken:o,xsrfHeaderName:s,xsrfCookieName:a,headers:i,auth:c}=t;if(t.headers=i=_e.from(i),t.url=le(Me(t.baseURL,t.url),e.params,e.paramsSerializer),c&&i.set("Authorization","Basic "+btoa((c.username||"")+":"+(c.password?unescape(encodeURIComponent(c.password)):""))),K.isFormData(r))if(ge.hasStandardBrowserEnv||ge.hasStandardBrowserWebWorkerEnv)i.setContentType(void 0);else if(!1!==(n=i.getContentType())){const[e,...t]=n?n.split(";").map((e=>e.trim())).filter(Boolean):[];i.setContentType([e||"multipart/form-data",...t].join("; "))}if(ge.hasStandardBrowserEnv&&(o&&K.isFunction(o)&&(o=o(t)),o||!1!==o&&Fe(t.url))){const e=s&&a&&De.read(a);e&&i.set(s,e)}return t},He="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise((function(t,n){const r=ze(e);let o=r.data;const s=_e.from(r.headers).normalize();let a,i,c,l,u,{responseType:d,onUploadProgress:p,onDownloadProgress:f}=r;function h(){l&&l(),u&&u(),r.cancelToken&&r.cancelToken.unsubscribe(a),r.signal&&r.signal.removeEventListener("abort",a)}let m=new XMLHttpRequest;function y(){if(!m)return;const r=_e.from("getAllResponseHeaders"in m&&m.getAllResponseHeaders());ke((function(e){t(e),h()}),(function(e){n(e),h()}),{data:d&&"text"!==d&&"json"!==d?m.response:m.responseText,status:m.status,statusText:m.statusText,headers:r,config:e,request:m}),m=null}m.open(r.method.toUpperCase(),r.url,!0),m.timeout=r.timeout,"onloadend"in m?m.onloadend=y:m.onreadystatechange=function(){m&&4===m.readyState&&(0!==m.status||m.responseURL&&0===m.responseURL.indexOf("file:"))&&setTimeout(y)},m.onabort=function(){m&&(n(new Y("Request aborted",Y.ECONNABORTED,e,m)),m=null)},m.onerror=function(){n(new Y("Network Error",Y.ERR_NETWORK,e,m)),m=null},m.ontimeout=function(){let t=r.timeout?"timeout of "+r.timeout+"ms exceeded":"timeout exceeded";const o=r.transitional||de;r.timeoutErrorMessage&&(t=r.timeoutErrorMessage),n(new Y(t,o.clarifyTimeoutError?Y.ETIMEDOUT:Y.ECONNABORTED,e,m)),m=null},void 0===o&&s.setContentType(null),"setRequestHeader"in m&&K.forEach(s.toJSON(),(function(e,t){m.setRequestHeader(t,e)})),K.isUndefined(r.withCredentials)||(m.withCredentials=!!r.withCredentials),d&&"json"!==d&&(m.responseType=r.responseType),f&&([c,u]=Le(f,!0),m.addEventListener("progress",c)),p&&m.upload&&([i,l]=Le(p),m.upload.addEventListener("progress",i),m.upload.addEventListener("loadend",l)),(r.cancelToken||r.signal)&&(a=t=>{m&&(n(!t||t.type?new Pe(null,e,m):t),m.abort(),m=null)},r.cancelToken&&r.cancelToken.subscribe(a),r.signal&&(r.signal.aborted?a():r.signal.addEventListener("abort",a)));const b=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(r.url);b&&-1===ge.protocols.indexOf(b)?n(new Y("Unsupported protocol "+b+":",Y.ERR_BAD_REQUEST,e)):m.send(o||null)}))},Ve=(e,t)=>{const{length:n}=e=e?e.filter(Boolean):[];if(t||n){let n,r=new AbortController;const o=function(e){if(!n){n=!0,a();const t=e instanceof Error?e:this.reason;r.abort(t instanceof Y?t:new Pe(t instanceof Error?t.message:t))}};let s=t&&setTimeout((()=>{s=null,o(new Y(`timeout ${t} of ms exceeded`,Y.ETIMEDOUT))}),t);const a=()=>{e&&(s&&clearTimeout(s),s=null,e.forEach((e=>{e.unsubscribe?e.unsubscribe(o):e.removeEventListener("abort",o)})),e=null)};e.forEach((e=>e.addEventListener("abort",o)));const{signal:i}=r;return i.unsubscribe=()=>K.asap(a),i}},Je=function*(e,t){let n=e.byteLength;if(!t||n<t)return void(yield e);let r,o=0;for(;o<n;)r=o+t,yield e.slice(o,r),o=r},We=(e,t,n,r)=>{const o=async function*(e,t){for await(const n of async function*(e){if(e[Symbol.asyncIterator])return void(yield*e);const t=e.getReader();try{for(;;){const{done:e,value:n}=await t.read();if(e)break;yield n}}finally{await t.cancel()}}(e))yield*Je(n,t)}(e,t);let s,a=0,i=e=>{s||(s=!0,r&&r(e))};return new ReadableStream({async pull(e){try{const{done:t,value:r}=await o.next();if(t)return i(),void e.close();let s=r.byteLength;if(n){let e=a+=s;n(e)}e.enqueue(new Uint8Array(r))}catch(e){throw i(e),e}},cancel:e=>(i(e),o.return())},{highWaterMark:2})},$e="function"==typeof fetch&&"function"==typeof Request&&"function"==typeof Response,Ke=$e&&"function"==typeof ReadableStream,Xe=$e&&("function"==typeof TextEncoder?(Ge=new TextEncoder,e=>Ge.encode(e)):async e=>new Uint8Array(await new Response(e).arrayBuffer()));var Ge;const Qe=(e,...t)=>{try{return!!e(...t)}catch(e){return!1}},Ye=Ke&&Qe((()=>{let e=!1;const t=new Request(ge.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t})),Ze=Ke&&Qe((()=>K.isReadableStream(new Response("").body))),et={stream:Ze&&(e=>e.body)};var tt;$e&&(tt=new Response,["text","arrayBuffer","blob","formData","stream"].forEach((e=>{!et[e]&&(et[e]=K.isFunction(tt[e])?t=>t[e]():(t,n)=>{throw new Y(`Response type '${e}' is not supported`,Y.ERR_NOT_SUPPORT,n)})})));const nt={http:null,xhr:He,fetch:$e&&(async e=>{let{url:t,method:n,data:r,signal:o,cancelToken:s,timeout:a,onDownloadProgress:i,onUploadProgress:c,responseType:l,headers:u,withCredentials:d="same-origin",fetchOptions:p}=ze(e);l=l?(l+"").toLowerCase():"text";let f,h=Ve([o,s&&s.toAbortSignal()],a);const m=h&&h.unsubscribe&&(()=>{h.unsubscribe()});let y;try{if(c&&Ye&&"get"!==n&&"head"!==n&&0!==(y=await(async(e,t)=>{const n=K.toFiniteNumber(e.getContentLength());return null==n?(async e=>{if(null==e)return 0;if(K.isBlob(e))return e.size;if(K.isSpecCompliantForm(e)){const t=new Request(ge.origin,{method:"POST",body:e});return(await t.arrayBuffer()).byteLength}return K.isArrayBufferView(e)||K.isArrayBuffer(e)?e.byteLength:(K.isURLSearchParams(e)&&(e+=""),K.isString(e)?(await Xe(e)).byteLength:void 0)})(t):n})(u,r))){let e,n=new Request(t,{method:"POST",body:r,duplex:"half"});if(K.isFormData(r)&&(e=n.headers.get("content-type"))&&u.setContentType(e),n.body){const[e,t]=Ue(y,Le(Be(c)));r=We(n.body,65536,e,t)}}K.isString(d)||(d=d?"include":"omit");const o="credentials"in Request.prototype;f=new Request(t,{...p,signal:h,method:n.toUpperCase(),headers:u.normalize().toJSON(),body:r,duplex:"half",credentials:o?d:void 0});let s=await fetch(f);const a=Ze&&("stream"===l||"response"===l);if(Ze&&(i||a&&m)){const e={};["status","statusText","headers"].forEach((t=>{e[t]=s[t]}));const t=K.toFiniteNumber(s.headers.get("content-length")),[n,r]=i&&Ue(t,Le(Be(i),!0))||[];s=new Response(We(s.body,65536,n,(()=>{r&&r(),m&&m()})),e)}l=l||"text";let b=await et[K.findKey(et,l)||"text"](s,e);return!a&&m&&m(),await new Promise(((t,n)=>{ke(t,n,{data:b,headers:_e.from(s.headers),status:s.status,statusText:s.statusText,config:e,request:f})}))}catch(t){if(m&&m(),t&&"TypeError"===t.name&&/fetch/i.test(t.message))throw Object.assign(new Y("Network Error",Y.ERR_NETWORK,e,f),{cause:t.cause||t});throw Y.from(t,t&&t.code,e,f)}})};K.forEach(nt,((e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(e){}Object.defineProperty(e,"adapterName",{value:t})}}));const rt=e=>`- ${e}`,ot=e=>K.isFunction(e)||null===e||!1===e,st=e=>{e=K.isArray(e)?e:[e];const{length:t}=e;let n,r;const o={};for(let s=0;s<t;s++){let t;if(n=e[s],r=n,!ot(n)&&(r=nt[(t=String(n)).toLowerCase()],void 0===r))throw new Y(`Unknown adapter '${t}'`);if(r)break;o[t||"#"+s]=r}if(!r){const e=Object.entries(o).map((([e,t])=>`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build")));let n=t?e.length>1?"since :\n"+e.map(rt).join("\n"):" "+rt(e[0]):"as no adapter specified";throw new Y("There is no suitable adapter to dispatch the request "+n,"ERR_NOT_SUPPORT")}return r};function at(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Pe(null,e)}function it(e){return at(e),e.headers=_e.from(e.headers),e.data=Te.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1),st(e.adapter||ve.adapter)(e).then((function(t){return at(e),t.data=Te.call(e,e.transformResponse,t),t.headers=_e.from(t.headers),t}),(function(t){return Ae(t)||(at(e),t&&t.response&&(t.response.data=Te.call(e,e.transformResponse,t.response),t.response.headers=_e.from(t.response.headers))),Promise.reject(t)}))}const ct={};["object","boolean","number","function","string","symbol"].forEach(((e,t)=>{ct[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}}));const lt={};ct.transitional=function(e,t,n){function r(e,t){return"[Axios v1.7.7] Transitional option '"+e+"'"+t+(n?". "+n:"")}return(n,o,s)=>{if(!1===e)throw new Y(r(o," has been removed"+(t?" in "+t:"")),Y.ERR_DEPRECATED);return t&&!lt[o]&&(lt[o]=!0,console.warn(r(o," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,o,s)}};const ut={assertOptions:function(e,t,n){if("object"!=typeof e)throw new Y("options must be an object",Y.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let o=r.length;for(;o-- >0;){const s=r[o],a=t[s];if(a){const t=e[s],n=void 0===t||a(t,s,e);if(!0!==n)throw new Y("option "+s+" must be "+n,Y.ERR_BAD_OPTION_VALUE)}else if(!0!==n)throw new Y("Unknown option "+s,Y.ERR_BAD_OPTION)}},validators:ct},dt=ut.validators;class pt{constructor(e){this.defaults=e,this.interceptors={request:new ue,response:new ue}}async request(e,t){try{return await this._request(e,t)}catch(e){if(e instanceof Error){let t;Error.captureStackTrace?Error.captureStackTrace(t={}):t=new Error;const n=t.stack?t.stack.replace(/^.+\n/,""):"";try{e.stack?n&&!String(e.stack).endsWith(n.replace(/^.+\n.+\n/,""))&&(e.stack+="\n"+n):e.stack=n}catch(e){}}throw e}}_request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=Ie(this.defaults,t);const{transitional:n,paramsSerializer:r,headers:o}=t;void 0!==n&&ut.assertOptions(n,{silentJSONParsing:dt.transitional(dt.boolean),forcedJSONParsing:dt.transitional(dt.boolean),clarifyTimeoutError:dt.transitional(dt.boolean)},!1),null!=r&&(K.isFunction(r)?t.paramsSerializer={serialize:r}:ut.assertOptions(r,{encode:dt.function,serialize:dt.function},!0)),t.method=(t.method||this.defaults.method||"get").toLowerCase();let s=o&&K.merge(o.common,o[t.method]);o&&K.forEach(["delete","get","head","post","put","patch","common"],(e=>{delete o[e]})),t.headers=_e.concat(s,o);const a=[];let i=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(i=i&&e.synchronous,a.unshift(e.fulfilled,e.rejected))}));const c=[];let l;this.interceptors.response.forEach((function(e){c.push(e.fulfilled,e.rejected)}));let u,d=0;if(!i){const e=[it.bind(this),void 0];for(e.unshift.apply(e,a),e.push.apply(e,c),u=e.length,l=Promise.resolve(t);d<u;)l=l.then(e[d++],e[d++]);return l}u=a.length;let p=t;for(d=0;d<u;){const e=a[d++],t=a[d++];try{p=e(p)}catch(e){t.call(this,e);break}}try{l=it.call(this,p)}catch(e){return Promise.reject(e)}for(d=0,u=c.length;d<u;)l=l.then(c[d++],c[d++]);return l}getUri(e){return le(Me((e=Ie(this.defaults,e)).baseURL,e.url),e.params,e.paramsSerializer)}}K.forEach(["delete","get","head","options"],(function(e){pt.prototype[e]=function(t,n){return this.request(Ie(n||{},{method:e,url:t,data:(n||{}).data}))}})),K.forEach(["post","put","patch"],(function(e){function t(t){return function(n,r,o){return this.request(Ie(o||{},{method:e,headers:t?{"Content-Type":"multipart/form-data"}:{},url:n,data:r}))}}pt.prototype[e]=t(),pt.prototype[e+"Form"]=t(!0)}));const ft=pt;class ht{constructor(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");let t;this.promise=new Promise((function(e){t=e}));const n=this;this.promise.then((e=>{if(!n._listeners)return;let t=n._listeners.length;for(;t-- >0;)n._listeners[t](e);n._listeners=null})),this.promise.then=e=>{let t;const r=new Promise((e=>{n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},e((function(e,r,o){n.reason||(n.reason=new Pe(e,r,o),t(n.reason))}))}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}toAbortSignal(){const e=new AbortController,t=t=>{e.abort(t)};return this.subscribe(t),e.signal.unsubscribe=()=>this.unsubscribe(t),e.signal}static source(){let e;return{token:new ht((function(t){e=t})),cancel:e}}}const mt=ht,yt={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(yt).forEach((([e,t])=>{yt[t]=e}));const bt=yt,gt=function e(t){const n=new ft(t),r=o(ft.prototype.request,n);return K.extend(r,ft.prototype,n,{allOwnKeys:!0}),K.extend(r,n,null,{allOwnKeys:!0}),r.create=function(n){return e(Ie(t,n))},r}(ve);gt.Axios=ft,gt.CanceledError=Pe,gt.CancelToken=mt,gt.isCancel=Ae,gt.VERSION="1.7.7",gt.toFormData=re,gt.AxiosError=Y,gt.Cancel=gt.CanceledError,gt.all=function(e){return Promise.all(e)},gt.spread=function(e){return function(t){return e.apply(null,t)}},gt.isAxiosError=function(e){return K.isObject(e)&&!0===e.isAxiosError},gt.mergeConfig=Ie,gt.AxiosHeaders=_e,gt.formToJSON=e=>we(K.isHTMLForm(e)?new FormData(e):e),gt.getAdapter=st,gt.HttpStatusCode=bt,gt.default=gt;const wt=gt,Et=e=>e.length?e.length<3?"Número de digitos de CVV incorrectos":void/^[0-9]+$/.test(e.trim()):"El campo de CVV se encuentra vacío",vt=window.ReactJSXRuntime,St=e=>(0,vt.jsxs)("div",{className:"wc-block-components-text-input is-active",style:{flex:"0 0 100%"},children:[(0,vt.jsx)("input",{id:"openpay-holder-name",name:"openpayHolderName",value:e.openpayHolderName,onChange:t=>{const n=t.target.value;(/^[a-z ]+$/i.test(n)||""===n)&&e.setOpenpayHolderName(n)},type:"text",autoComplete:"off",placeholder:"Nombre del tarjetahabiente","data-openpay-card":"holder_name"}),(0,vt.jsxs)("label",{htmlFor:"openpay-holder-name",children:["Nombre del títular",(0,vt.jsx)("span",{className:"required",children:"*"})]})]}),xt=e=>{const t=(0,r.useRef)(null);return(0,vt.jsxs)("div",{className:"wc-block-components-text-input is-active",style:{flex:"0 0 100%"},children:[(0,vt.jsxs)("label",{for:"test-openpay-card-number",children:["Número de tarjeta ",(0,vt.jsx)("span",{className:"required",children:"*"})]}),(0,vt.jsx)("input",{id:"openpay-card-number",name:"openpayCardNumber",className:"wc-credit-card-block-form-card-number",value:e.openpayCardNumber,ref:t,onChange:t=>{const n=t.target.value;/^\d{0,16}$/.test(n)&&e.setOpenpayCardNumber(n)},onKeyDown:e=>{const n=t.current,r=n.selectionStart===n.value.length;!r&&["ArrowLeft","ArrowUp","ArrowRight","Backspace","Delete"].includes(e.key)&&e.preventDefault(),r||1!==e.key.length||e.preventDefault()},type:"text",maxLength:"16",autoComplete:"off",placeholder:"•••• •••• •••• ••••","data-openpay-card":"card_number"})]})},Rt=e=>(0,vt.jsxs)("div",{class:"wc-block-components-text-input is-active",style:{flex:"1 0 calc(50% - 12px)"},children:[(0,vt.jsxs)("label",{for:"openpay-card-expiry",children:["Expira (MM/AA) ",(0,vt.jsx)("span",{class:"required",children:"*"})]}),(0,vt.jsx)("input",{id:"openpay-card-expiry",name:"openpayCardExpiry",class:"input-text wc-credit-card-block-form-card-expiry",value:e.openpayCardExpiry,onChange:t=>{jQuery(".wc-credit-card-block-form-card-expiry").payment("formatCardExpiry");const n=t.target.value;e.setOpenpayCardExpiry(n)},type:"text",autocomplete:"off",placeholder:"MM / AA",maxlength:"7","data-openpay-card":"expiration_year"})]}),Ot=e=>(0,vt.jsxs)("div",{class:"wc-block-components-text-input is-active",style:{flex:"1 0 calc(50% - 12px)"},children:[(0,vt.jsxs)("label",{for:"openpay-card-cvc",children:["CVV ",(0,vt.jsx)("span",{class:"required",children:"*"})]}),(0,vt.jsx)("input",{id:"openpay-card-cvc",name:"openpayCardCvc",class:"input-text wc-credit-card-form-card-cvc openpay-card-input-cvc",value:e.openpayCardCvc,onChange:t=>{const n=t.target.value;/^\d{0,4}$/.test(n)&&e.setOpenpayCardCvc(n)},type:"password",autocomplete:"off",placeholder:"CVC",maxlength:"4","data-openpay-card":"cvv2"})]}),jt=e=>(0,vt.jsx)("div",{className:"wc-block-components-checkbox",children:(0,vt.jsxs)("label",{htmlFor:"openpay-save-card-auth",children:[(0,vt.jsx)("input",{id:"openpay-save-card-auth",name:"openpaySaveCardAuth",class:"wc-block-components-checkbox__input",value:e.openpaySaveCardAuth,onChange:t=>{e.setOpenpaySaveCardAuth(!e.openpaySaveCardAuth)},type:"checkbox","aria-invalid":"false"}),(0,vt.jsx)("svg",{class:"wc-block-components-checkbox__mark","aria-hidden":"true",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 20",children:(0,vt.jsx)("path",{d:"M9 16.2L4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4L9 16.2z"})}),(0,vt.jsx)("span",{class:"wc-block-components-checkbox__label",style:{fontSize:"1.25em"},children:"Guardar Tarjeta"})]})}),{getSetting:Ct}=window.wc.wcSettings,_t=Ct("wc_openpay_gateway_data",{}),Tt=((0,n.decodeEntities)(_t.title),e=>{const{eventRegistration:t,emitResponse:n,billing:o}=e,{onPaymentSetup:s}=t,[a,i]=(0,r.useState)(""),[c,l]=(0,r.useState)(""),[u,d]=(0,r.useState)(""),[p,f]=(0,r.useState)(""),[h,m]=(0,r.useState)(null),[y,b]=(0,r.useState)([]),[g,w]=(0,r.useState)(null),[E,v]=(0,r.useState)(""),[S,x]=(0,r.useState)(!1),[R,O]=(0,r.useState)(!0),[j,C]=(0,r.useState)(!1),[_,T]=(0,r.useState)("new"),[A,N]=(0,r.useState)(!1),P=(0,r.useRef)(""),k=(0,r.useRef)(!1);var L="",U="",B=!1;return(0,r.useEffect)((()=>{const e=s((async()=>{if("new"!==_){if(2!==_t.saveCardMode||"PE"!==_t.country){const e=Et(p);if(e)return{type:n.responseTypes.ERROR,message:e}}return{type:n.responseTypes.SUCCESS,meta:{paymentMethodData:{device_session_id:deviceSessionId,openpay_selected_card:_,openpay_card_cvc:p}}}}{const e=((e,t,n,r)=>{const o=(e=>e.length?/^[a-z ]+$/i.test(e.trim())?void 0:"El campo de tarjetahabiente solo debe contener letras o espacios":"El campo de tarjetahabiente se encuentra vacío")(e);if(o)return o;const s=(e=>e.length?e.length<15?"Numero de digitos de tarjeta incorrectos":void/^[0-9]+$/.test(e.trim()):"El campo de número de tarjeta se encuentra vacío")(t);if(s)return s;const a=(e=>e.length?e.length<4?"Número de digitos de fecha de expiración de tarjeta incorrectos":void/^[0-9]+$/.test(e.trim()):"El campo de fecha de expiración de tarjeta se encuentra vacío")(n);if(a)return a;return Et(r)||void 0})(a,c,u,p);if(e)return{type:n.responseTypes.ERROR,message:e};const t=await(async()=>{var e={holder_name:a,card_number:c,cvv2:p,expiration_month:u.substring(0,2),expiration_year:u.substring(u.length-2),address:{line1:o.billingAddress.address_1,line2:o.billingAddress.address_2,state:o.billingAddress.state,city:o.billingAddress.city,postal_code:o.billingAddress.postcode,country_code:o.billingAddress.country}};const t=await(e=>new Promise(((t,n)=>{OpenPay.token.create(e,(e=>{t(e)}),(e=>{t(e)}))})))(e);if(t.data.error_code)return{errorCode:t.data.error_code};if(L=t.data.id,U=t.data.card.card_number,!0===t.data.card.points_card&&_t.cardPoints&&0==E&&"MX"==_t.country){const e=confirm("¿Desea usar los puntos?");B=e}})();if(void 0!==t&&void 0!==t.errorCode){const e=(e=>{var t="";switch(e){case 1e3:case 1004:case 1005:t="Servicio no disponible.";break;case 1001:t="Los campos no tienen el formato correcto, o la petición no tiene campos que son requeridos.";break;case 2004:t="El dígito verificador del número de tarjeta es inválido de acuerdo al algoritmo Luhn.";break;case 2005:t="La fecha de expiración de la tarjeta es anterior a la fecha actual.";break;case 2006:t="El código de seguridad de la tarjeta (CVV2) no fue proporcionado o es incorrecto";break;case 1:t="El nombre del titular de la tarjeta no fue proporcionado o tiene un formato inválido.";break;default:t="La petición no pudo ser procesada."}return t})(t.errorCode);if(e)return{type:n.responseTypes.ERROR,message:e}}if(L.length)return{type:n.responseTypes.SUCCESS,meta:{paymentMethodData:{openpay_token:L,openpay_tokenized_card:U,device_session_id:deviceSessionId,openpay_save_card_auth:j,openpay_selected_card:_,...B&&{openpay_card_points_confirm:"ONLY_POINTS"},...E>0&&{openpay_selected_installment:E},...g&&{openpay_has_interest_pe:g}}}}}return{type:n.responseTypes.ERROR,message:"There was an error"}}));if("new"!==_&&"CO"===_t.country&&b(Array.from({length:36},((e,t)=>t+1))),k.current&&c.length<15&&(N(!0),k.current=!1),c.length>=15){k.current=!0,N(!1);const e=c.slice(0,8);P.current!==e&&(b(null),P.current=e,O(!1),wt.post(_t.ajaxurl,new URLSearchParams({action:"get_type_card_openpay",card_bin:c.slice(0,8)}),{headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then((e=>{m(e.data.card_type),"MX"==_t.country?(b(_t.installments.payments),O(!0)):"PE"==_t.country?(e.data.withInterest&&(x(e.data.withInterest),w(e.data.withInterest)),_t.installments.paymentPlan&&b(e.data.installments)):b(Array.from({length:36},((e,t)=>t+1))),O(!0)})).catch((e=>{console.log(e),O(!0)})))}return()=>{e()}}),[n.responseTypes.ERROR,n.responseTypes.SUCCESS,s,a,c,u,p,j,_,p,E]),(0,vt.jsxs)("div",{id:"payment_form_openpay_cards",style:{marginBottom:"20px",display:"flex",flexWrap:"wrap",gap:"0 16px",justifyContent:"space-between"},children:[!R&&(0,vt.jsxs)("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,background:"rgba(255, 255, 255, 0.7)",display:"flex",justifyContent:"center",alignItems:"center",zIndex:10},children:[" ",(0,vt.jsx)("div",{className:""})]}),1==_t.userLoggedIn?(0,vt.jsx)("div",{class:"wc-blocks-components-select is-active",style:{flex:"0 0 100%"},children:(0,vt.jsxs)("div",{class:"wc-blocks-components-select__container",children:[(0,vt.jsx)("label",{class:"wc-blocks-components-select__label",for:"openpay-selected-card",children:"Selecciona la tarjeta"}),(0,vt.jsx)("select",{class:"wc-blocks-components-select__select",id:"openpay-selected-card",name:"openpaySelectedCard",onChange:e=>T(e.target.value),placeholder:"Selecciona la tarjeta",children:_t.savedCardsList.map(((e,t)=>(0,vt.jsxs)("option",{value:e.value,children:[" ",e.name," "]},t)))})]})}):null,"new"==_?(0,vt.jsx)(St,{openpayHolderName:a,setOpenpayHolderName:i}):null,"new"==_?(0,vt.jsx)(xt,{openpayCardNumber:c,setOpenpayCardNumber:l}):null,A?(0,vt.jsx)("div",{style:{color:"red",fontSize:13,width:"100%"},children:(0,vt.jsx)("p",{style:{marginTop:0},children:"Número de tarjeta invalido"})}):null,"new"==_?(0,vt.jsx)(Rt,{openpayCardExpiry:u,setOpenpayCardExpiry:d}):null,"new"!=_&&2==_t.saveCardMode&&"PE"==_t.country?null:(0,vt.jsx)(Ot,{openpayCardCvc:p,setOpenpayCardCvc:f}),1==_t.userLoggedIn&&0!=_t.saveCardMode&&"new"==_?(0,vt.jsx)(jt,{openpaySaveCardAuth:j,setOpenpaySaveCardAuth:C}):null,y&&y.length>0&&("credit"===h||"CREDIT"===h)&&!1===S||y&&y.length>0&&"CO"===_t.country?(0,vt.jsx)("div",{class:"wc-blocks-components-select is-active",style:{flex:"0 0 100%"},children:(0,vt.jsxs)("div",{class:"wc-blocks-components-select__container",children:[(0,vt.jsx)("label",{class:"wc-blocks-components-select__label",for:"installments",children:"MX"==_t.country?"Meses sin intereses":"Cuotas"}),(0,vt.jsxs)("select",{class:"wc-blocks-components-select__select",name:"installments",id:"installments",placeholder:"Pago de contado",value:E,onChange:e=>v(e.target.value),children:[(0,vt.jsx)("option",{value:"0",selected:"selected",children:" Pago de contado "}),y.map(((e,t)=>(0,vt.jsxs)("option",{value:e,children:[" ",e," ","MX"==_t.country?"Meses":"Cuotas"," "]},t)))]})]})}):null]})}),{registerPaymentMethod:At}=window.wc.wcBlocksRegistry,{getSetting:Nt}=window.wc.wcSettings,Pt=Nt("wc_openpay_gateway_data",{}),kt=(0,n.decodeEntities)("Pago con tarjeta (Openpay)"),Lt=e=>{const{PaymentMethodLabel:t}=e.components;return(0,vt.jsx)(t,{text:kt})};At({name:"wc_openpay_gateway",label:(0,vt.jsx)(Lt,{}),content:(0,vt.jsx)(Tt,{}),edit:(0,vt.jsx)(Tt,{}),canMakePayment:()=>!0,ariaLabel:kt,supports:{features:Pt.supports}})})();
     1(()=>{"use strict";var e={d:(t,n)=>{for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{hasBrowserEnv:()=>fe,hasStandardBrowserEnv:()=>me,hasStandardBrowserWebWorkerEnv:()=>ye,navigator:()=>he,origin:()=>be});const n=window.wp.htmlEntities,r=window.React;function o(e,t){return function(){return e.apply(t,arguments)}}const{toString:s}=Object.prototype,{getPrototypeOf:a}=Object,i=(c=Object.create(null),e=>{const t=s.call(e);return c[t]||(c[t]=t.slice(8,-1).toLowerCase())});var c;const l=e=>(e=e.toLowerCase(),t=>i(t)===e),u=e=>t=>typeof t===e,{isArray:d}=Array,p=u("undefined"),f=l("ArrayBuffer"),h=u("string"),m=u("function"),y=u("number"),b=e=>null!==e&&"object"==typeof e,g=e=>{if("object"!==i(e))return!1;const t=a(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)},w=l("Date"),E=l("File"),v=l("Blob"),S=l("FileList"),x=l("URLSearchParams"),[R,O,j,C]=["ReadableStream","Request","Response","Headers"].map(l);function _(e,t,{allOwnKeys:n=!1}={}){if(null==e)return;let r,o;if("object"!=typeof e&&(e=[e]),d(e))for(r=0,o=e.length;r<o;r++)t.call(null,e[r],r,e);else{const o=n?Object.getOwnPropertyNames(e):Object.keys(e),s=o.length;let a;for(r=0;r<s;r++)a=o[r],t.call(null,e[a],a,e)}}function T(e,t){t=t.toLowerCase();const n=Object.keys(e);let r,o=n.length;for(;o-- >0;)if(r=n[o],t===r.toLowerCase())return r;return null}const A="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,N=e=>!p(e)&&e!==A,P=(k="undefined"!=typeof Uint8Array&&a(Uint8Array),e=>k&&e instanceof k);var k;const L=l("HTMLFormElement"),U=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),B=l("RegExp"),F=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};_(n,((n,o)=>{let s;!1!==(s=t(n,o,e))&&(r[o]=s||n)})),Object.defineProperties(e,r)},D="abcdefghijklmnopqrstuvwxyz",M="0123456789",q={DIGIT:M,ALPHA:D,ALPHA_DIGIT:D+D.toUpperCase()+M},I=l("AsyncFunction"),z=(H="function"==typeof setImmediate,V=m(A.postMessage),H?setImmediate:V?(J=`axios@${Math.random()}`,W=[],A.addEventListener("message",(({source:e,data:t})=>{e===A&&t===J&&W.length&&W.shift()()}),!1),e=>{W.push(e),A.postMessage(J,"*")}):e=>setTimeout(e));var H,V,J,W;const $="undefined"!=typeof queueMicrotask?queueMicrotask.bind(A):"undefined"!=typeof process&&process.nextTick||z,K={isArray:d,isArrayBuffer:f,isBuffer:function(e){return null!==e&&!p(e)&&null!==e.constructor&&!p(e.constructor)&&m(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:e=>{let t;return e&&("function"==typeof FormData&&e instanceof FormData||m(e.append)&&("formdata"===(t=i(e))||"object"===t&&m(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&f(e.buffer),t},isString:h,isNumber:y,isBoolean:e=>!0===e||!1===e,isObject:b,isPlainObject:g,isReadableStream:R,isRequest:O,isResponse:j,isHeaders:C,isUndefined:p,isDate:w,isFile:E,isBlob:v,isRegExp:B,isFunction:m,isStream:e=>b(e)&&m(e.pipe),isURLSearchParams:x,isTypedArray:P,isFileList:S,forEach:_,merge:function e(){const{caseless:t}=N(this)&&this||{},n={},r=(r,o)=>{const s=t&&T(n,o)||o;g(n[s])&&g(r)?n[s]=e(n[s],r):g(r)?n[s]=e({},r):d(r)?n[s]=r.slice():n[s]=r};for(let e=0,t=arguments.length;e<t;e++)arguments[e]&&_(arguments[e],r);return n},extend:(e,t,n,{allOwnKeys:r}={})=>(_(t,((t,r)=>{n&&m(t)?e[r]=o(t,n):e[r]=t}),{allOwnKeys:r}),e),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},toFlatObject:(e,t,n,r)=>{let o,s,i;const c={};if(t=t||{},null==e)return t;do{for(o=Object.getOwnPropertyNames(e),s=o.length;s-- >0;)i=o[s],r&&!r(i,e,t)||c[i]||(t[i]=e[i],c[i]=!0);e=!1!==n&&a(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},kindOf:i,kindOfTest:l,endsWith:(e,t,n)=>{e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return-1!==r&&r===n},toArray:e=>{if(!e)return null;if(d(e))return e;let t=e.length;if(!y(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},forEachEntry:(e,t)=>{const n=(e&&e[Symbol.iterator]).call(e);let r;for(;(r=n.next())&&!r.done;){const n=r.value;t.call(e,n[0],n[1])}},matchAll:(e,t)=>{let n;const r=[];for(;null!==(n=e.exec(t));)r.push(n);return r},isHTMLForm:L,hasOwnProperty:U,hasOwnProp:U,reduceDescriptors:F,freezeMethods:e=>{F(e,((t,n)=>{if(m(e)&&-1!==["arguments","caller","callee"].indexOf(n))return!1;const r=e[n];m(r)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")}))}))},toObjectSet:(e,t)=>{const n={},r=e=>{e.forEach((e=>{n[e]=!0}))};return d(e)?r(e):r(String(e).split(t)),n},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,n){return t.toUpperCase()+n})),noop:()=>{},toFiniteNumber:(e,t)=>null!=e&&Number.isFinite(e=+e)?e:t,findKey:T,global:A,isContextDefined:N,ALPHABET:q,generateString:(e=16,t=q.ALPHA_DIGIT)=>{let n="";const{length:r}=t;for(;e--;)n+=t[Math.random()*r|0];return n},isSpecCompliantForm:function(e){return!!(e&&m(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:e=>{const t=new Array(10),n=(e,r)=>{if(b(e)){if(t.indexOf(e)>=0)return;if(!("toJSON"in e)){t[r]=e;const o=d(e)?[]:{};return _(e,((e,t)=>{const s=n(e,r+1);!p(s)&&(o[t]=s)})),t[r]=void 0,o}}return e};return n(e,0)},isAsyncFn:I,isThenable:e=>e&&(b(e)||m(e))&&m(e.then)&&m(e.catch),setImmediate:z,asap:$};function X(e,t,n,r,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),o&&(this.response=o,this.status=o.status?o.status:null)}K.inherits(X,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:K.toJSONObject(this.config),code:this.code,status:this.status}}});const G=X.prototype,Q={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((e=>{Q[e]={value:e}})),Object.defineProperties(X,Q),Object.defineProperty(G,"isAxiosError",{value:!0}),X.from=(e,t,n,r,o,s)=>{const a=Object.create(G);return K.toFlatObject(e,a,(function(e){return e!==Error.prototype}),(e=>"isAxiosError"!==e)),X.call(a,e.message,t,n,r,o),a.cause=e,a.name=e.name,s&&Object.assign(a,s),a};const Y=X;function Z(e){return K.isPlainObject(e)||K.isArray(e)}function ee(e){return K.endsWith(e,"[]")?e.slice(0,-2):e}function te(e,t,n){return e?e.concat(t).map((function(e,t){return e=ee(e),!n&&t?"["+e+"]":e})).join(n?".":""):t}const ne=K.toFlatObject(K,{},null,(function(e){return/^is[A-Z]/.test(e)})),re=function(e,t,n){if(!K.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;const r=(n=K.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!K.isUndefined(t[e])}))).metaTokens,o=n.visitor||l,s=n.dots,a=n.indexes,i=(n.Blob||"undefined"!=typeof Blob&&Blob)&&K.isSpecCompliantForm(t);if(!K.isFunction(o))throw new TypeError("visitor must be a function");function c(e){if(null===e)return"";if(K.isDate(e))return e.toISOString();if(!i&&K.isBlob(e))throw new Y("Blob is not supported. Use a Buffer instead.");return K.isArrayBuffer(e)||K.isTypedArray(e)?i&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function l(e,n,o){let i=e;if(e&&!o&&"object"==typeof e)if(K.endsWith(n,"{}"))n=r?n:n.slice(0,-2),e=JSON.stringify(e);else if(K.isArray(e)&&function(e){return K.isArray(e)&&!e.some(Z)}(e)||(K.isFileList(e)||K.endsWith(n,"[]"))&&(i=K.toArray(e)))return n=ee(n),i.forEach((function(e,r){!K.isUndefined(e)&&null!==e&&t.append(!0===a?te([n],r,s):null===a?n:n+"[]",c(e))})),!1;return!!Z(e)||(t.append(te(o,n,s),c(e)),!1)}const u=[],d=Object.assign(ne,{defaultVisitor:l,convertValue:c,isVisitable:Z});if(!K.isObject(e))throw new TypeError("data must be an object");return function e(n,r){if(!K.isUndefined(n)){if(-1!==u.indexOf(n))throw Error("Circular reference detected in "+r.join("."));u.push(n),K.forEach(n,(function(n,s){!0===(!(K.isUndefined(n)||null===n)&&o.call(t,n,K.isString(s)?s.trim():s,r,d))&&e(n,r?r.concat(s):[s])})),u.pop()}}(e),t};function oe(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function se(e,t){this._pairs=[],e&&re(e,this,t)}const ae=se.prototype;ae.append=function(e,t){this._pairs.push([e,t])},ae.toString=function(e){const t=e?function(t){return e.call(this,t,oe)}:oe;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};const ie=se;function ce(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function le(e,t,n){if(!t)return e;const r=n&&n.encode||ce,o=n&&n.serialize;let s;if(s=o?o(t,n):K.isURLSearchParams(t)?t.toString():new ie(t,n).toString(r),s){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+s}return e}const ue=class{constructor(){this.handlers=[]}use(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){K.forEach(this.handlers,(function(t){null!==t&&e(t)}))}},de={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},pe={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:ie,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]},fe="undefined"!=typeof window&&"undefined"!=typeof document,he="object"==typeof navigator&&navigator||void 0,me=fe&&(!he||["ReactNative","NativeScript","NS"].indexOf(he.product)<0),ye="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,be=fe&&window.location.href||"http://localhost",ge={...t,...pe},we=function(e){function t(e,n,r,o){let s=e[o++];if("__proto__"===s)return!0;const a=Number.isFinite(+s),i=o>=e.length;return s=!s&&K.isArray(r)?r.length:s,i?(K.hasOwnProp(r,s)?r[s]=[r[s],n]:r[s]=n,!a):(r[s]&&K.isObject(r[s])||(r[s]=[]),t(e,n,r[s],o)&&K.isArray(r[s])&&(r[s]=function(e){const t={},n=Object.keys(e);let r;const o=n.length;let s;for(r=0;r<o;r++)s=n[r],t[s]=e[s];return t}(r[s])),!a)}if(K.isFormData(e)&&K.isFunction(e.entries)){const n={};return K.forEachEntry(e,((e,r)=>{t(function(e){return K.matchAll(/\w+|\[(\w*)]/g,e).map((e=>"[]"===e[0]?"":e[1]||e[0]))}(e),r,n,0)})),n}return null},Ee={transitional:de,adapter:["xhr","http","fetch"],transformRequest:[function(e,t){const n=t.getContentType()||"",r=n.indexOf("application/json")>-1,o=K.isObject(e);if(o&&K.isHTMLForm(e)&&(e=new FormData(e)),K.isFormData(e))return r?JSON.stringify(we(e)):e;if(K.isArrayBuffer(e)||K.isBuffer(e)||K.isStream(e)||K.isFile(e)||K.isBlob(e)||K.isReadableStream(e))return e;if(K.isArrayBufferView(e))return e.buffer;if(K.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let s;if(o){if(n.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return re(e,new ge.classes.URLSearchParams,Object.assign({visitor:function(e,t,n,r){return ge.isNode&&K.isBuffer(e)?(this.append(t,e.toString("base64")),!1):r.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((s=K.isFileList(e))||n.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return re(s?{"files[]":e}:e,t&&new t,this.formSerializer)}}return o||r?(t.setContentType("application/json",!1),function(e){if(K.isString(e))try{return(0,JSON.parse)(e),K.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(0,JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=this.transitional||Ee.transitional,n=t&&t.forcedJSONParsing,r="json"===this.responseType;if(K.isResponse(e)||K.isReadableStream(e))return e;if(e&&K.isString(e)&&(n&&!this.responseType||r)){const n=!(t&&t.silentJSONParsing)&&r;try{return JSON.parse(e)}catch(e){if(n){if("SyntaxError"===e.name)throw Y.from(e,Y.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:ge.classes.FormData,Blob:ge.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};K.forEach(["delete","get","head","post","put","patch"],(e=>{Ee.headers[e]={}}));const ve=Ee,Se=K.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),xe=Symbol("internals");function Re(e){return e&&String(e).trim().toLowerCase()}function Oe(e){return!1===e||null==e?e:K.isArray(e)?e.map(Oe):String(e)}function je(e,t,n,r,o){return K.isFunction(r)?r.call(this,t,n):(o&&(t=n),K.isString(t)?K.isString(r)?-1!==t.indexOf(r):K.isRegExp(r)?r.test(t):void 0:void 0)}class Ce{constructor(e){e&&this.set(e)}set(e,t,n){const r=this;function o(e,t,n){const o=Re(t);if(!o)throw new Error("header name must be a non-empty string");const s=K.findKey(r,o);(!s||void 0===r[s]||!0===n||void 0===n&&!1!==r[s])&&(r[s||t]=Oe(e))}const s=(e,t)=>K.forEach(e,((e,n)=>o(e,n,t)));if(K.isPlainObject(e)||e instanceof this.constructor)s(e,t);else if(K.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim()))s((e=>{const t={};let n,r,o;return e&&e.split("\n").forEach((function(e){o=e.indexOf(":"),n=e.substring(0,o).trim().toLowerCase(),r=e.substring(o+1).trim(),!n||t[n]&&Se[n]||("set-cookie"===n?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)})),t})(e),t);else if(K.isHeaders(e))for(const[t,r]of e.entries())o(r,t,n);else null!=e&&o(t,e,n);return this}get(e,t){if(e=Re(e)){const n=K.findKey(this,e);if(n){const e=this[n];if(!t)return e;if(!0===t)return function(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}(e);if(K.isFunction(t))return t.call(this,e,n);if(K.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=Re(e)){const n=K.findKey(this,e);return!(!n||void 0===this[n]||t&&!je(0,this[n],n,t))}return!1}delete(e,t){const n=this;let r=!1;function o(e){if(e=Re(e)){const o=K.findKey(n,e);!o||t&&!je(0,n[o],o,t)||(delete n[o],r=!0)}}return K.isArray(e)?e.forEach(o):o(e),r}clear(e){const t=Object.keys(this);let n=t.length,r=!1;for(;n--;){const o=t[n];e&&!je(0,this[o],o,e,!0)||(delete this[o],r=!0)}return r}normalize(e){const t=this,n={};return K.forEach(this,((r,o)=>{const s=K.findKey(n,o);if(s)return t[s]=Oe(r),void delete t[o];const a=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,((e,t,n)=>t.toUpperCase()+n))}(o):String(o).trim();a!==o&&delete t[o],t[a]=Oe(r),n[a]=!0})),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return K.forEach(this,((n,r)=>{null!=n&&!1!==n&&(t[r]=e&&K.isArray(n)?n.join(", "):n)})),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map((([e,t])=>e+": "+t)).join("\n")}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const n=new this(e);return t.forEach((e=>n.set(e))),n}static accessor(e){const t=(this[xe]=this[xe]={accessors:{}}).accessors,n=this.prototype;function r(e){const r=Re(e);t[r]||(function(e,t){const n=K.toCamelCase(" "+t);["get","set","has"].forEach((r=>{Object.defineProperty(e,r+n,{value:function(e,n,o){return this[r].call(this,t,e,n,o)},configurable:!0})}))}(n,e),t[r]=!0)}return K.isArray(e)?e.forEach(r):r(e),this}}Ce.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),K.reduceDescriptors(Ce.prototype,(({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[n]=e}}})),K.freezeMethods(Ce);const _e=Ce;function Te(e,t){const n=this||ve,r=t||n,o=_e.from(r.headers);let s=r.data;return K.forEach(e,(function(e){s=e.call(n,s,o.normalize(),t?t.status:void 0)})),o.normalize(),s}function Ae(e){return!(!e||!e.__CANCEL__)}function Ne(e,t,n){Y.call(this,null==e?"canceled":e,Y.ERR_CANCELED,t,n),this.name="CanceledError"}K.inherits(Ne,Y,{__CANCEL__:!0});const Pe=Ne;function ke(e,t,n){const r=n.config.validateStatus;n.status&&r&&!r(n.status)?t(new Y("Request failed with status code "+n.status,[Y.ERR_BAD_REQUEST,Y.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n)):e(n)}const Le=(e,t,n=3)=>{let r=0;const o=function(e,t){e=e||10;const n=new Array(e),r=new Array(e);let o,s=0,a=0;return t=void 0!==t?t:1e3,function(i){const c=Date.now(),l=r[a];o||(o=c),n[s]=i,r[s]=c;let u=a,d=0;for(;u!==s;)d+=n[u++],u%=e;if(s=(s+1)%e,s===a&&(a=(a+1)%e),c-o<t)return;const p=l&&c-l;return p?Math.round(1e3*d/p):void 0}}(50,250);return function(e,t){let n,r,o=0,s=1e3/t;const a=(t,s=Date.now())=>{o=s,n=null,r&&(clearTimeout(r),r=null),e.apply(null,t)};return[(...e)=>{const t=Date.now(),i=t-o;i>=s?a(e,t):(n=e,r||(r=setTimeout((()=>{r=null,a(n)}),s-i)))},()=>n&&a(n)]}((n=>{const s=n.loaded,a=n.lengthComputable?n.total:void 0,i=s-r,c=o(i);r=s,e({loaded:s,total:a,progress:a?s/a:void 0,bytes:i,rate:c||void 0,estimated:c&&a&&s<=a?(a-s)/c:void 0,event:n,lengthComputable:null!=a,[t?"download":"upload"]:!0})}),n)},Ue=(e,t)=>{const n=null!=e;return[r=>t[0]({lengthComputable:n,total:e,loaded:r}),t[1]]},Be=e=>(...t)=>K.asap((()=>e(...t))),Fe=ge.hasStandardBrowserEnv?function(){const e=ge.navigator&&/(msie|trident)/i.test(ge.navigator.userAgent),t=document.createElement("a");let n;function r(n){let r=n;return e&&(t.setAttribute("href",r),r=t.href),t.setAttribute("href",r),{href:t.href,protocol:t.protocol?t.protocol.replace(/:$/,""):"",host:t.host,search:t.search?t.search.replace(/^\?/,""):"",hash:t.hash?t.hash.replace(/^#/,""):"",hostname:t.hostname,port:t.port,pathname:"/"===t.pathname.charAt(0)?t.pathname:"/"+t.pathname}}return n=r(window.location.href),function(e){const t=K.isString(e)?r(e):e;return t.protocol===n.protocol&&t.host===n.host}}():function(){return!0},De=ge.hasStandardBrowserEnv?{write(e,t,n,r,o,s){const a=[e+"="+encodeURIComponent(t)];K.isNumber(n)&&a.push("expires="+new Date(n).toGMTString()),K.isString(r)&&a.push("path="+r),K.isString(o)&&a.push("domain="+o),!0===s&&a.push("secure"),document.cookie=a.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read:()=>null,remove(){}};function Me(e,t){return e&&!/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)?function(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}const qe=e=>e instanceof _e?{...e}:e;function Ie(e,t){t=t||{};const n={};function r(e,t,n){return K.isPlainObject(e)&&K.isPlainObject(t)?K.merge.call({caseless:n},e,t):K.isPlainObject(t)?K.merge({},t):K.isArray(t)?t.slice():t}function o(e,t,n){return K.isUndefined(t)?K.isUndefined(e)?void 0:r(void 0,e,n):r(e,t,n)}function s(e,t){if(!K.isUndefined(t))return r(void 0,t)}function a(e,t){return K.isUndefined(t)?K.isUndefined(e)?void 0:r(void 0,e):r(void 0,t)}function i(n,o,s){return s in t?r(n,o):s in e?r(void 0,n):void 0}const c={url:s,method:s,data:s,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,withXSRFToken:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:i,headers:(e,t)=>o(qe(e),qe(t),!0)};return K.forEach(Object.keys(Object.assign({},e,t)),(function(r){const s=c[r]||o,a=s(e[r],t[r],r);K.isUndefined(a)&&s!==i||(n[r]=a)})),n}const ze=e=>{const t=Ie({},e);let n,{data:r,withXSRFToken:o,xsrfHeaderName:s,xsrfCookieName:a,headers:i,auth:c}=t;if(t.headers=i=_e.from(i),t.url=le(Me(t.baseURL,t.url),e.params,e.paramsSerializer),c&&i.set("Authorization","Basic "+btoa((c.username||"")+":"+(c.password?unescape(encodeURIComponent(c.password)):""))),K.isFormData(r))if(ge.hasStandardBrowserEnv||ge.hasStandardBrowserWebWorkerEnv)i.setContentType(void 0);else if(!1!==(n=i.getContentType())){const[e,...t]=n?n.split(";").map((e=>e.trim())).filter(Boolean):[];i.setContentType([e||"multipart/form-data",...t].join("; "))}if(ge.hasStandardBrowserEnv&&(o&&K.isFunction(o)&&(o=o(t)),o||!1!==o&&Fe(t.url))){const e=s&&a&&De.read(a);e&&i.set(s,e)}return t},He="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise((function(t,n){const r=ze(e);let o=r.data;const s=_e.from(r.headers).normalize();let a,i,c,l,u,{responseType:d,onUploadProgress:p,onDownloadProgress:f}=r;function h(){l&&l(),u&&u(),r.cancelToken&&r.cancelToken.unsubscribe(a),r.signal&&r.signal.removeEventListener("abort",a)}let m=new XMLHttpRequest;function y(){if(!m)return;const r=_e.from("getAllResponseHeaders"in m&&m.getAllResponseHeaders());ke((function(e){t(e),h()}),(function(e){n(e),h()}),{data:d&&"text"!==d&&"json"!==d?m.response:m.responseText,status:m.status,statusText:m.statusText,headers:r,config:e,request:m}),m=null}m.open(r.method.toUpperCase(),r.url,!0),m.timeout=r.timeout,"onloadend"in m?m.onloadend=y:m.onreadystatechange=function(){m&&4===m.readyState&&(0!==m.status||m.responseURL&&0===m.responseURL.indexOf("file:"))&&setTimeout(y)},m.onabort=function(){m&&(n(new Y("Request aborted",Y.ECONNABORTED,e,m)),m=null)},m.onerror=function(){n(new Y("Network Error",Y.ERR_NETWORK,e,m)),m=null},m.ontimeout=function(){let t=r.timeout?"timeout of "+r.timeout+"ms exceeded":"timeout exceeded";const o=r.transitional||de;r.timeoutErrorMessage&&(t=r.timeoutErrorMessage),n(new Y(t,o.clarifyTimeoutError?Y.ETIMEDOUT:Y.ECONNABORTED,e,m)),m=null},void 0===o&&s.setContentType(null),"setRequestHeader"in m&&K.forEach(s.toJSON(),(function(e,t){m.setRequestHeader(t,e)})),K.isUndefined(r.withCredentials)||(m.withCredentials=!!r.withCredentials),d&&"json"!==d&&(m.responseType=r.responseType),f&&([c,u]=Le(f,!0),m.addEventListener("progress",c)),p&&m.upload&&([i,l]=Le(p),m.upload.addEventListener("progress",i),m.upload.addEventListener("loadend",l)),(r.cancelToken||r.signal)&&(a=t=>{m&&(n(!t||t.type?new Pe(null,e,m):t),m.abort(),m=null)},r.cancelToken&&r.cancelToken.subscribe(a),r.signal&&(r.signal.aborted?a():r.signal.addEventListener("abort",a)));const b=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(r.url);b&&-1===ge.protocols.indexOf(b)?n(new Y("Unsupported protocol "+b+":",Y.ERR_BAD_REQUEST,e)):m.send(o||null)}))},Ve=(e,t)=>{const{length:n}=e=e?e.filter(Boolean):[];if(t||n){let n,r=new AbortController;const o=function(e){if(!n){n=!0,a();const t=e instanceof Error?e:this.reason;r.abort(t instanceof Y?t:new Pe(t instanceof Error?t.message:t))}};let s=t&&setTimeout((()=>{s=null,o(new Y(`timeout ${t} of ms exceeded`,Y.ETIMEDOUT))}),t);const a=()=>{e&&(s&&clearTimeout(s),s=null,e.forEach((e=>{e.unsubscribe?e.unsubscribe(o):e.removeEventListener("abort",o)})),e=null)};e.forEach((e=>e.addEventListener("abort",o)));const{signal:i}=r;return i.unsubscribe=()=>K.asap(a),i}},Je=function*(e,t){let n=e.byteLength;if(!t||n<t)return void(yield e);let r,o=0;for(;o<n;)r=o+t,yield e.slice(o,r),o=r},We=(e,t,n,r)=>{const o=async function*(e,t){for await(const n of async function*(e){if(e[Symbol.asyncIterator])return void(yield*e);const t=e.getReader();try{for(;;){const{done:e,value:n}=await t.read();if(e)break;yield n}}finally{await t.cancel()}}(e))yield*Je(n,t)}(e,t);let s,a=0,i=e=>{s||(s=!0,r&&r(e))};return new ReadableStream({async pull(e){try{const{done:t,value:r}=await o.next();if(t)return i(),void e.close();let s=r.byteLength;if(n){let e=a+=s;n(e)}e.enqueue(new Uint8Array(r))}catch(e){throw i(e),e}},cancel:e=>(i(e),o.return())},{highWaterMark:2})},$e="function"==typeof fetch&&"function"==typeof Request&&"function"==typeof Response,Ke=$e&&"function"==typeof ReadableStream,Xe=$e&&("function"==typeof TextEncoder?(Ge=new TextEncoder,e=>Ge.encode(e)):async e=>new Uint8Array(await new Response(e).arrayBuffer()));var Ge;const Qe=(e,...t)=>{try{return!!e(...t)}catch(e){return!1}},Ye=Ke&&Qe((()=>{let e=!1;const t=new Request(ge.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t})),Ze=Ke&&Qe((()=>K.isReadableStream(new Response("").body))),et={stream:Ze&&(e=>e.body)};var tt;$e&&(tt=new Response,["text","arrayBuffer","blob","formData","stream"].forEach((e=>{!et[e]&&(et[e]=K.isFunction(tt[e])?t=>t[e]():(t,n)=>{throw new Y(`Response type '${e}' is not supported`,Y.ERR_NOT_SUPPORT,n)})})));const nt={http:null,xhr:He,fetch:$e&&(async e=>{let{url:t,method:n,data:r,signal:o,cancelToken:s,timeout:a,onDownloadProgress:i,onUploadProgress:c,responseType:l,headers:u,withCredentials:d="same-origin",fetchOptions:p}=ze(e);l=l?(l+"").toLowerCase():"text";let f,h=Ve([o,s&&s.toAbortSignal()],a);const m=h&&h.unsubscribe&&(()=>{h.unsubscribe()});let y;try{if(c&&Ye&&"get"!==n&&"head"!==n&&0!==(y=await(async(e,t)=>{const n=K.toFiniteNumber(e.getContentLength());return null==n?(async e=>{if(null==e)return 0;if(K.isBlob(e))return e.size;if(K.isSpecCompliantForm(e)){const t=new Request(ge.origin,{method:"POST",body:e});return(await t.arrayBuffer()).byteLength}return K.isArrayBufferView(e)||K.isArrayBuffer(e)?e.byteLength:(K.isURLSearchParams(e)&&(e+=""),K.isString(e)?(await Xe(e)).byteLength:void 0)})(t):n})(u,r))){let e,n=new Request(t,{method:"POST",body:r,duplex:"half"});if(K.isFormData(r)&&(e=n.headers.get("content-type"))&&u.setContentType(e),n.body){const[e,t]=Ue(y,Le(Be(c)));r=We(n.body,65536,e,t)}}K.isString(d)||(d=d?"include":"omit");const o="credentials"in Request.prototype;f=new Request(t,{...p,signal:h,method:n.toUpperCase(),headers:u.normalize().toJSON(),body:r,duplex:"half",credentials:o?d:void 0});let s=await fetch(f);const a=Ze&&("stream"===l||"response"===l);if(Ze&&(i||a&&m)){const e={};["status","statusText","headers"].forEach((t=>{e[t]=s[t]}));const t=K.toFiniteNumber(s.headers.get("content-length")),[n,r]=i&&Ue(t,Le(Be(i),!0))||[];s=new Response(We(s.body,65536,n,(()=>{r&&r(),m&&m()})),e)}l=l||"text";let b=await et[K.findKey(et,l)||"text"](s,e);return!a&&m&&m(),await new Promise(((t,n)=>{ke(t,n,{data:b,headers:_e.from(s.headers),status:s.status,statusText:s.statusText,config:e,request:f})}))}catch(t){if(m&&m(),t&&"TypeError"===t.name&&/fetch/i.test(t.message))throw Object.assign(new Y("Network Error",Y.ERR_NETWORK,e,f),{cause:t.cause||t});throw Y.from(t,t&&t.code,e,f)}})};K.forEach(nt,((e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(e){}Object.defineProperty(e,"adapterName",{value:t})}}));const rt=e=>`- ${e}`,ot=e=>K.isFunction(e)||null===e||!1===e,st=e=>{e=K.isArray(e)?e:[e];const{length:t}=e;let n,r;const o={};for(let s=0;s<t;s++){let t;if(n=e[s],r=n,!ot(n)&&(r=nt[(t=String(n)).toLowerCase()],void 0===r))throw new Y(`Unknown adapter '${t}'`);if(r)break;o[t||"#"+s]=r}if(!r){const e=Object.entries(o).map((([e,t])=>`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build")));let n=t?e.length>1?"since :\n"+e.map(rt).join("\n"):" "+rt(e[0]):"as no adapter specified";throw new Y("There is no suitable adapter to dispatch the request "+n,"ERR_NOT_SUPPORT")}return r};function at(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Pe(null,e)}function it(e){return at(e),e.headers=_e.from(e.headers),e.data=Te.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1),st(e.adapter||ve.adapter)(e).then((function(t){return at(e),t.data=Te.call(e,e.transformResponse,t),t.headers=_e.from(t.headers),t}),(function(t){return Ae(t)||(at(e),t&&t.response&&(t.response.data=Te.call(e,e.transformResponse,t.response),t.response.headers=_e.from(t.response.headers))),Promise.reject(t)}))}const ct={};["object","boolean","number","function","string","symbol"].forEach(((e,t)=>{ct[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}}));const lt={};ct.transitional=function(e,t,n){function r(e,t){return"[Axios v1.7.7] Transitional option '"+e+"'"+t+(n?". "+n:"")}return(n,o,s)=>{if(!1===e)throw new Y(r(o," has been removed"+(t?" in "+t:"")),Y.ERR_DEPRECATED);return t&&!lt[o]&&(lt[o]=!0,console.warn(r(o," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,o,s)}};const ut={assertOptions:function(e,t,n){if("object"!=typeof e)throw new Y("options must be an object",Y.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let o=r.length;for(;o-- >0;){const s=r[o],a=t[s];if(a){const t=e[s],n=void 0===t||a(t,s,e);if(!0!==n)throw new Y("option "+s+" must be "+n,Y.ERR_BAD_OPTION_VALUE)}else if(!0!==n)throw new Y("Unknown option "+s,Y.ERR_BAD_OPTION)}},validators:ct},dt=ut.validators;class pt{constructor(e){this.defaults=e,this.interceptors={request:new ue,response:new ue}}async request(e,t){try{return await this._request(e,t)}catch(e){if(e instanceof Error){let t;Error.captureStackTrace?Error.captureStackTrace(t={}):t=new Error;const n=t.stack?t.stack.replace(/^.+\n/,""):"";try{e.stack?n&&!String(e.stack).endsWith(n.replace(/^.+\n.+\n/,""))&&(e.stack+="\n"+n):e.stack=n}catch(e){}}throw e}}_request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=Ie(this.defaults,t);const{transitional:n,paramsSerializer:r,headers:o}=t;void 0!==n&&ut.assertOptions(n,{silentJSONParsing:dt.transitional(dt.boolean),forcedJSONParsing:dt.transitional(dt.boolean),clarifyTimeoutError:dt.transitional(dt.boolean)},!1),null!=r&&(K.isFunction(r)?t.paramsSerializer={serialize:r}:ut.assertOptions(r,{encode:dt.function,serialize:dt.function},!0)),t.method=(t.method||this.defaults.method||"get").toLowerCase();let s=o&&K.merge(o.common,o[t.method]);o&&K.forEach(["delete","get","head","post","put","patch","common"],(e=>{delete o[e]})),t.headers=_e.concat(s,o);const a=[];let i=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(i=i&&e.synchronous,a.unshift(e.fulfilled,e.rejected))}));const c=[];let l;this.interceptors.response.forEach((function(e){c.push(e.fulfilled,e.rejected)}));let u,d=0;if(!i){const e=[it.bind(this),void 0];for(e.unshift.apply(e,a),e.push.apply(e,c),u=e.length,l=Promise.resolve(t);d<u;)l=l.then(e[d++],e[d++]);return l}u=a.length;let p=t;for(d=0;d<u;){const e=a[d++],t=a[d++];try{p=e(p)}catch(e){t.call(this,e);break}}try{l=it.call(this,p)}catch(e){return Promise.reject(e)}for(d=0,u=c.length;d<u;)l=l.then(c[d++],c[d++]);return l}getUri(e){return le(Me((e=Ie(this.defaults,e)).baseURL,e.url),e.params,e.paramsSerializer)}}K.forEach(["delete","get","head","options"],(function(e){pt.prototype[e]=function(t,n){return this.request(Ie(n||{},{method:e,url:t,data:(n||{}).data}))}})),K.forEach(["post","put","patch"],(function(e){function t(t){return function(n,r,o){return this.request(Ie(o||{},{method:e,headers:t?{"Content-Type":"multipart/form-data"}:{},url:n,data:r}))}}pt.prototype[e]=t(),pt.prototype[e+"Form"]=t(!0)}));const ft=pt;class ht{constructor(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");let t;this.promise=new Promise((function(e){t=e}));const n=this;this.promise.then((e=>{if(!n._listeners)return;let t=n._listeners.length;for(;t-- >0;)n._listeners[t](e);n._listeners=null})),this.promise.then=e=>{let t;const r=new Promise((e=>{n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},e((function(e,r,o){n.reason||(n.reason=new Pe(e,r,o),t(n.reason))}))}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}toAbortSignal(){const e=new AbortController,t=t=>{e.abort(t)};return this.subscribe(t),e.signal.unsubscribe=()=>this.unsubscribe(t),e.signal}static source(){let e;return{token:new ht((function(t){e=t})),cancel:e}}}const mt=ht,yt={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(yt).forEach((([e,t])=>{yt[t]=e}));const bt=yt,gt=function e(t){const n=new ft(t),r=o(ft.prototype.request,n);return K.extend(r,ft.prototype,n,{allOwnKeys:!0}),K.extend(r,n,null,{allOwnKeys:!0}),r.create=function(n){return e(Ie(t,n))},r}(ve);gt.Axios=ft,gt.CanceledError=Pe,gt.CancelToken=mt,gt.isCancel=Ae,gt.VERSION="1.7.7",gt.toFormData=re,gt.AxiosError=Y,gt.Cancel=gt.CanceledError,gt.all=function(e){return Promise.all(e)},gt.spread=function(e){return function(t){return e.apply(null,t)}},gt.isAxiosError=function(e){return K.isObject(e)&&!0===e.isAxiosError},gt.mergeConfig=Ie,gt.AxiosHeaders=_e,gt.formToJSON=e=>we(K.isHTMLForm(e)?new FormData(e):e),gt.getAdapter=st,gt.HttpStatusCode=bt,gt.default=gt;const wt=gt,Et=e=>e.length?e.length<3?"Número de digitos de CVV incorrectos":void/^[0-9]+$/.test(e.trim()):"El campo de CVV se encuentra vacío",vt=window.ReactJSXRuntime,St=e=>(0,vt.jsxs)("div",{className:"wc-block-components-text-input is-active",style:{flex:"0 0 100%"},children:[(0,vt.jsx)("input",{id:"openpay-holder-name",name:"openpayHolderName",value:e.openpayHolderName,onChange:t=>{const n=t.target.value;(/^[a-z ]+$/i.test(n)||""===n)&&e.setOpenpayHolderName(n)},type:"text",autoComplete:"off",placeholder:"Nombre del tarjetahabiente","data-openpay-card":"holder_name"}),(0,vt.jsxs)("label",{htmlFor:"openpay-holder-name",children:["Nombre del títular",(0,vt.jsx)("span",{className:"required",children:"*"})]})]}),xt=e=>{const t=(0,r.useRef)(null);return(0,vt.jsxs)("div",{className:"wc-block-components-text-input is-active",style:{flex:"0 0 100%"},children:[(0,vt.jsxs)("label",{for:"test-openpay-card-number",children:["Número de tarjeta ",(0,vt.jsx)("span",{className:"required",children:"*"})]}),(0,vt.jsx)("input",{id:"openpay-card-number",name:"openpayCardNumber",className:"wc-credit-card-block-form-card-number",value:e.openpayCardNumber,ref:t,onChange:t=>{const n=t.target.value;/^\d{0,16}$/.test(n)&&e.setOpenpayCardNumber(n)},onKeyDown:e=>{const n=t.current,r=n.selectionStart===n.value.length;!r&&["ArrowLeft","ArrowUp","ArrowRight","Backspace","Delete"].includes(e.key)&&e.preventDefault(),r||1!==e.key.length||e.preventDefault()},type:"text",maxLength:"16",autoComplete:"off",placeholder:"•••• •••• •••• ••••","data-openpay-card":"card_number"})]})},Rt=e=>(0,vt.jsxs)("div",{class:"wc-block-components-text-input is-active",style:{flex:"1 0 calc(50% - 12px)"},children:[(0,vt.jsxs)("label",{for:"openpay-card-expiry",children:["Expira (MM/AA) ",(0,vt.jsx)("span",{class:"required",children:"*"})]}),(0,vt.jsx)("input",{id:"openpay-card-expiry",name:"openpayCardExpiry",class:"input-text wc-credit-card-block-form-card-expiry",value:e.openpayCardExpiry,onChange:t=>{jQuery(".wc-credit-card-block-form-card-expiry").payment("formatCardExpiry");const n=t.target.value;e.setOpenpayCardExpiry(n)},type:"text",autocomplete:"off",placeholder:"MM / AA",maxlength:"7","data-openpay-card":"expiration_year"})]}),Ot=e=>(0,vt.jsxs)("div",{class:"wc-block-components-text-input is-active",style:{flex:"1 0 calc(50% - 12px)"},children:[(0,vt.jsxs)("label",{for:"openpay-card-cvc",children:["CVV ",(0,vt.jsx)("span",{class:"required",children:"*"})]}),(0,vt.jsx)("input",{id:"openpay-card-cvc",name:"openpayCardCvc",class:"input-text wc-credit-card-form-card-cvc openpay-card-input-cvc",value:e.openpayCardCvc,onChange:t=>{const n=t.target.value;/^\d{0,4}$/.test(n)&&e.setOpenpayCardCvc(n)},type:"password",autocomplete:"off",placeholder:"CVC",maxlength:"4","data-openpay-card":"cvv2"})]}),jt=e=>(0,vt.jsx)("div",{className:"wc-block-components-checkbox",children:(0,vt.jsxs)("label",{htmlFor:"openpay-save-card-auth",children:[(0,vt.jsx)("input",{id:"openpay-save-card-auth",name:"openpaySaveCardAuth",class:"wc-block-components-checkbox__input",value:e.openpaySaveCardAuth,onChange:t=>{e.setOpenpaySaveCardAuth(!e.openpaySaveCardAuth)},type:"checkbox","aria-invalid":"false"}),(0,vt.jsx)("svg",{class:"wc-block-components-checkbox__mark","aria-hidden":"true",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 20",children:(0,vt.jsx)("path",{d:"M9 16.2L4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4L9 16.2z"})}),(0,vt.jsx)("span",{class:"wc-block-components-checkbox__label",style:{fontSize:"1.25em"},children:"Guardar Tarjeta"})]})}),{getSetting:Ct}=window.wc.wcSettings,_t=Ct("wc_openpay_gateway_data",{}),Tt=((0,n.decodeEntities)(_t.title),e=>{const{eventRegistration:t,emitResponse:n,billing:o}=e,{onPaymentSetup:s}=t,[a,i]=(0,r.useState)(""),[c,l]=(0,r.useState)(""),[u,d]=(0,r.useState)(""),[p,f]=(0,r.useState)(""),[h,m]=(0,r.useState)(null),[y,b]=(0,r.useState)([]),[g,w]=(0,r.useState)(null),[E,v]=(0,r.useState)(""),[S,x]=(0,r.useState)(!1),[R,O]=(0,r.useState)(!0),[j,C]=(0,r.useState)(!1),[_,T]=(0,r.useState)("new"),[A,N]=(0,r.useState)(!1),P=(0,r.useRef)(""),k=(0,r.useRef)(!1);var L="",U="",B=!1;const F=e=>new Promise(((t,n)=>{OpenPay.token.create(e,(e=>{t(e)}),(e=>{t(e)}))}));return(0,r.useEffect)((()=>{const e=s((async()=>{if("new"!==_){if(2!==_t.saveCardMode||"PE"!==_t.country){const e=Et(p);if(e)return{type:n.responseTypes.ERROR,message:e}}return{type:n.responseTypes.SUCCESS,meta:{paymentMethodData:{device_session_id:deviceSessionId,openpay_selected_card:_,openpay_card_cvc:p}}}}{const e=((e,t,n,r)=>{const o=(e=>e.length?/^[a-z ]+$/i.test(e.trim())?void 0:"El campo de tarjetahabiente solo debe contener letras o espacios":"El campo de tarjetahabiente se encuentra vacío")(e);if(o)return o;const s=(e=>e.length?e.length<15?"Numero de digitos de tarjeta incorrectos":void/^[0-9]+$/.test(e.trim()):"El campo de número de tarjeta se encuentra vacío")(t);if(s)return s;const a=(e=>e.length?e.length<4?"Número de digitos de fecha de expiración de tarjeta incorrectos":void/^[0-9]+$/.test(e.trim()):"El campo de fecha de expiración de tarjeta se encuentra vacío")(n);if(a)return a;return Et(r)||void 0})(a,c,u,p);if(e)return{type:n.responseTypes.ERROR,message:e};const t=await(async()=>{var e={holder_name:a,card_number:c,cvv2:p,expiration_month:u.substring(0,2),expiration_year:u.substring(u.length-2)};const t={line1:o.billingAddress.address_1,line2:o.billingAddress.address_2,state:o.billingAddress.state,city:o.billingAddress.city,postal_code:o.billingAddress.postcode,country_code:o.billingAddress.country};(e=>Object.values(e).every((e=>null!=e&&""!==e.toString().trim())))(t)&&(e.address=t);const n=await F(e);if(n.data.error_code)return{errorCode:n.data.error_code};if(L=n.data.id,U=n.data.card.card_number,!0===n.data.card.points_card&&_t.cardPoints&&0==E&&"MX"==_t.country){const e=confirm("¿Desea usar los puntos?");B=e}})();if(void 0!==t&&void 0!==t.errorCode){const e=(e=>{var t="";switch(e){case 1e3:case 1004:case 1005:t="Servicio no disponible.";break;case 1001:t="Los campos no tienen el formato correcto, o la petición no tiene campos que son requeridos.";break;case 2004:t="El dígito verificador del número de tarjeta es inválido de acuerdo al algoritmo Luhn.";break;case 2005:t="La fecha de expiración de la tarjeta es anterior a la fecha actual.";break;case 2006:t="El código de seguridad de la tarjeta (CVV2) no fue proporcionado o es incorrecto";break;case 1:t="El nombre del titular de la tarjeta no fue proporcionado o tiene un formato inválido.";break;default:t="La petición no pudo ser procesada."}return t})(t.errorCode);if(e)return{type:n.responseTypes.ERROR,message:e}}if(L.length)return{type:n.responseTypes.SUCCESS,meta:{paymentMethodData:{openpay_token:L,openpay_tokenized_card:U,device_session_id:deviceSessionId,openpay_save_card_auth:j,openpay_selected_card:_,...B&&{openpay_card_points_confirm:"ONLY_POINTS"},...E>0&&{openpay_selected_installment:E},...g&&{openpay_has_interest_pe:g}}}}}return{type:n.responseTypes.ERROR,message:"There was an error"}}));if("new"!==_&&"CO"===_t.country&&b(Array.from({length:36},((e,t)=>t+1))),k.current&&c.length<15&&(N(!0),k.current=!1),c.length>=15){k.current=!0,N(!1);const e=c.slice(0,8);P.current!==e&&(b(null),P.current=e,O(!1),wt.post(_t.ajaxurl,new URLSearchParams({action:"get_type_card_openpay",card_bin:c.slice(0,8)}),{headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then((e=>{m(e.data.card_type),"MX"==_t.country?(b(_t.installments.payments),O(!0)):"PE"==_t.country?(e.data.withInterest&&(x(e.data.withInterest),w(e.data.withInterest)),_t.installments.paymentPlan&&b(e.data.installments)):b(Array.from({length:36},((e,t)=>t+1))),O(!0)})).catch((e=>{console.log(e),O(!0)})))}return()=>{e()}}),[n.responseTypes.ERROR,n.responseTypes.SUCCESS,s,a,c,u,p,j,_,p,E]),(0,vt.jsxs)("div",{id:"payment_form_openpay_cards",style:{marginBottom:"20px",display:"flex",flexWrap:"wrap",gap:"0 16px",justifyContent:"space-between"},children:[!R&&(0,vt.jsxs)("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,background:"rgba(255, 255, 255, 0.7)",display:"flex",justifyContent:"center",alignItems:"center",zIndex:10},children:[" ",(0,vt.jsx)("div",{className:""})]}),1==_t.userLoggedIn?(0,vt.jsx)("div",{class:"wc-blocks-components-select is-active",style:{flex:"0 0 100%"},children:(0,vt.jsxs)("div",{class:"wc-blocks-components-select__container",children:[(0,vt.jsx)("label",{class:"wc-blocks-components-select__label",for:"openpay-selected-card",children:"Selecciona la tarjeta"}),(0,vt.jsx)("select",{class:"wc-blocks-components-select__select",id:"openpay-selected-card",name:"openpaySelectedCard",onChange:e=>T(e.target.value),placeholder:"Selecciona la tarjeta",children:_t.savedCardsList.map(((e,t)=>(0,vt.jsxs)("option",{value:e.value,children:[" ",e.name," "]},t)))})]})}):null,"new"==_?(0,vt.jsx)(St,{openpayHolderName:a,setOpenpayHolderName:i}):null,"new"==_?(0,vt.jsx)(xt,{openpayCardNumber:c,setOpenpayCardNumber:l}):null,A?(0,vt.jsx)("div",{style:{color:"red",fontSize:13,width:"100%"},children:(0,vt.jsx)("p",{style:{marginTop:0},children:"Número de tarjeta invalido"})}):null,"new"==_?(0,vt.jsx)(Rt,{openpayCardExpiry:u,setOpenpayCardExpiry:d}):null,"new"!=_&&2==_t.saveCardMode&&"PE"==_t.country?null:(0,vt.jsx)(Ot,{openpayCardCvc:p,setOpenpayCardCvc:f}),1==_t.userLoggedIn&&0!=_t.saveCardMode&&"new"==_?(0,vt.jsx)(jt,{openpaySaveCardAuth:j,setOpenpaySaveCardAuth:C}):null,y&&y.length>0&&("credit"===h||"CREDIT"===h)&&!1===S||y&&y.length>0&&"CO"===_t.country?(0,vt.jsx)("div",{class:"wc-blocks-components-select is-active",style:{flex:"0 0 100%"},children:(0,vt.jsxs)("div",{class:"wc-blocks-components-select__container",children:[(0,vt.jsx)("label",{class:"wc-blocks-components-select__label",for:"installments",children:"MX"==_t.country?"Meses sin intereses":"Cuotas"}),(0,vt.jsxs)("select",{class:"wc-blocks-components-select__select",name:"installments",id:"installments",placeholder:"Pago de contado",value:E,onChange:e=>v(e.target.value),children:[(0,vt.jsx)("option",{value:"0",selected:"selected",children:" Pago de contado "}),y.map(((e,t)=>(0,vt.jsxs)("option",{value:e,children:[" ",e," ","MX"==_t.country?"Meses":"Cuotas"," "]},t)))]})]})}):null]})}),{registerPaymentMethod:At}=window.wc.wcBlocksRegistry,{getSetting:Nt}=window.wc.wcSettings,Pt=Nt("wc_openpay_gateway_data",{}),kt=(0,n.decodeEntities)("Pago con tarjeta (Openpay)"),Lt=e=>{const{PaymentMethodLabel:t}=e.components;return(0,vt.jsx)(t,{text:kt})};At({name:"wc_openpay_gateway",label:(0,vt.jsx)(Lt,{}),content:(0,vt.jsx)(Tt,{}),edit:(0,vt.jsx)(Tt,{}),canMakePayment:()=>!0,ariaLabel:kt,supports:{features:Pt.supports}})})();
  • openpay-cards/trunk/class-wc-openpay-gateway.php

    r3367506 r3375395  
    368368    public function process_payment($order_id)
    369369    {
    370 
    371         $cvv = $_POST['openpay_card_cvc'] ?: $_POST['openpay-card-cvc'];
     370        $this->logger->info("[WC_Openpay_Gateway.process_payment start]");
     371       
     372        $this->logger->info("[WC_Openpay_Gateway.process_payment => openpay_month_interest_free ]".$_POST['openpay_month_interest_free']);
     373       
     374        $cvv = isset($_POST['openpay_card_cvc']) && $_POST['openpay_card_cvc'] ?: $_POST['openpay-card-cvc'];
     375        $openpay_save_card_auth = isset($_POST['openpay_save_card_auth']) ? $_POST['openpay_save_card_auth'] : null;
     376        $openpay_payment_plan = isset($_POST['openpay_selected_installment']) ? $_POST['openpay_selected_installment'] : null;
     377        $openpay_has_interest_pe = isset($_POST['openpay_has_interest_pe']) ? $_POST['openpay_has_interest_pe'] : null;
     378         
    372379        $openpay_token = $_POST['openpay_token'];
    373380        $device_session_id = $_POST['device_session_id'];
    374381        $openpay_tokenized_card = $_POST['openpay_tokenized_card'];
    375         $openpay_save_card_auth = $_POST['openpay_save_card_auth'];
    376382        $openpay_selected_card = $_POST['openpay_selected_card'];
    377383        $openpay_card_points_confirm = $_POST['openpay_card_points_confirm'];
    378         $openpay_payment_plan = $_POST['openpay_selected_installment'];
    379         $openpay_has_interest_pe = $_POST['openpay_has_interest_pe'];
    380 
    381         if (!$openpay_payment_plan){
     384
     385        if ($openpay_payment_plan != null){
     386            $this->logger->info("[WC_Openpay_Gateway.process_payment] => openpay_payment_plan " . json_encode($_POST['openpay_selected_installment']) );
    382387            switch ($this->country) {
    383388                case 'MX':
     
    393398        }
    394399
    395         $this->logger->info("[openpay_payment_plan] => " . json_encode($_POST['openpay_selected_installment']) );
    396 
    397 
    398 
    399         $this->logger->info('$openpay_tokenized_card ' . json_encode($openpay_tokenized_card));
     400        $this->logger->info('[WC_Openpay_Gateway.process_payment] => openpay_tokenized_card ' . json_encode($openpay_tokenized_card));
    400401
    401402        // we need it to get any order detailes
     
    408409        if (is_user_logged_in()) {
    409410            if ($openpay_selected_card !== 'new' && $this->save_card_mode === '1') {
    410                 $this->logger->info(' cvvValidation: ' . $cvv);
    411411                $this->cvvValidation($openpay_selected_card, $openpay_customer, $cvv);
    412412                $openpay_token = $openpay_selected_card;
     
    418418                $cards_service = new OpenpayCardService($this->openpay, $this->order, $this->country, $this->sandbox);
    419419                $openpay_token = $cards_service->validateNewCard($openpay_customer, $openpay_token, $device_session_id, $openpay_tokenized_card, $this->save_card_mode);
    420                 $this->logger->info(' $openpay_token ' . json_encode($openpay_token));
     420                $this->logger->info('[WC_Openpay_Gateway.process_payment]  => openpay_token ' . json_encode($openpay_token));
    421421                if ($openpay_token) {
    422422                    $this->order->update_meta_data('_openpay_card_saved_flag', true); // Used for notice confirmation
     
    439439        );
    440440
    441         $this->logger->info("[payment_settings] => " . json_encode($payment_settings) );
     441        $this->logger->info("[WC_Openpay_Gateway.process_payment] => Payment Settings " . json_encode($payment_settings) );
    442442
    443443        $charge_service = new OpenpayChargeService($this->openpay, $order, $customer_service, $this->capture);
    444444        $charge = $charge_service->processOpenpayCharge($payment_settings);
    445445
    446         if ($charge !== false) {
     446        if ($charge != null && $charge !== false) {
     447            $this->logger->info("[WC_Openpay_Gateway.process_payment] => Charge Openpay " . json_encode($charge) );
    447448            $redirect_url = $charge->payment_method->url;
    448             $this->logger->info("3DS_REDIRECT_URL GATEWAY = " . $redirect_url);
    449449            // Si el redirect url no existe el cargo es inmediato
    450450            if (!$redirect_url && $this->capture) {
    451                 $this->logger->info("[wc-openpay-gateway] => cargo directo");
     451                $this->logger->info("[WC_Openpay_Gateway.process_payment] => Direct Charge (Payment Complete)");
    452452                $this->order->payment_complete();
    453453                // we received the payment
    454                 $this->logger->info('Completing Payment');
    455454                // some notes to customer (replace true with false to make it private)
    456455                $this->order->add_order_note('Orden Pagada', true);
     
    459458            // Si el cargo es Frictionless y es inmediato, se marca la orden como completada
    460459            if (str_contains($redirect_url, 'frictionless') && $this->capture) {
    461                 $this->logger->info("[wc-openpay-gateway] => frictionless");
    462460                $this->order->payment_complete();
    463461                // we received the payment
    464                 $this->logger->info('Completing Payment');
     462                $this->logger->info("[WC_Openpay_Gateway.process_payment] => 3DS frictionless (Payment Complete)");
    465463                // some notes to customer (replace true with false to make it private)
    466464                $this->order->add_order_note('Orden Pagada', true);
     
    468466                // Si el cargo es Challenge se pone en status on-hold hasta concluir el proceso.
    469467            } else if ($redirect_url && !str_contains($redirect_url, 'frictionless') && $this->capture) {
    470                 $this->logger->info("[wc-openpay-gateway] => challenge");
     468                $this->logger->info("[WC_Openpay_Gateway.process_payment] => 3DS Challenge (Payment on-hold)");
    471469                $this->order->update_status('on-hold');
    472470                $this->order->add_order_note(sprintf("%s - Pago en espera vía 3DS (challenge). ID de transacción: '%s'", $this->method_title, $charge->id));
    473471                // Si el cargo es pre-autorizado, se pone en status on-hold hasta concluir el proceso.
    474472            } else if (!$this->capture) {
    475                 $this->logger->info("[wc-openpay-gateway] => capture");
     473                $this->logger->info("[WC_Openpay_Gateway.process_payment] => Preauthorization Charge (Payment on-hold)");
    476474                $this->order->update_status('on-hold');
    477475                $this->order->add_order_note(sprintf("%s - Pago preautorizado. ID de transacción: '%s'", $this->method_title, $charge->id));
     
    488486
    489487        } else {
     488            $this->logger->info("[WC_Openpay_Gateway.process_payment] => Charge ERROR Openpay (Payment Failed)");
    490489            $this->order->add_order_note(sprintf("%s - Pago fallido. Error: '%s'", $this->method_title, $this->transactionErrorMessage));
    491490            $this->order->set_status('failed');
     
    499498        }
    500499
     500        $this->logger->info("[WC_Openpay_Gateway.process_payment end]");
     501
    501502    }
    502503
     
    511512    private function cvvValidation($openpay_token, $openpay_customer, $cvv)
    512513    {
     514        $this->logger->info("[WC_Openpay_Gateway.cvvValidation start]");
    513515        $cvv = (int)$cvv;
    514         $this->logger->debug($cvv);
    515516        if (is_numeric($cvv) && (strlen($cvv) == 3 || strlen($cvv) == 4)) {
    516517            $path = sprintf('/%s/customers/%s/cards/%s', $this->merchant_id, $openpay_customer->id, $openpay_token);
     
    519520            $cardInfo = OpenpayUtils::requestOpenpay($path, $this->country, $this->sandbox, 'PUT', $params, $auth);
    520521            if (isset($cardInfo->error_code)) {
    521                 $this->logger->error('CVV update has failed.');
     522                $this->logger->error('[WC_Openpay_Gateway.cvvValidation] => CVV update has failed.');
    522523                throw new Exception("Error en la transacción: No se pudo completar tu pago.");
    523524            }
    524525        } elseif (!is_numeric($cvv)) {
    525             $this->logger->error('CVV is not valid: Not numeric value');
     526            $this->logger->error('[WC_Openpay_Gateway.cvvValidation] => CVV is not valid: Not numeric value');
    526527            throw new Exception("Error en la transacción: No se pudo completar tu pago. El cvv es incorrecto");
    527528        } elseif (!(strlen($cvv) == 3 || strlen($cvv) == 4)) {
    528             $this->logger->error('CVV is not valid: Incorrect number of digits');
     529            $this->logger->error('[WC_Openpay_Gateway.cvvValidation] => CVV is not valid: Incorrect number of digits');
    529530            throw new Exception("Error en la transacción: No se pudo completar tu pago. El cvv es incorrecto");
    530531        } else {
    531             $this->logger->error('CVV is not valid');
     532            $this->logger->error('[WC_Openpay_Gateway.cvvValidation] => CVV is not valid');
    532533            throw new Exception("Error en la transacción: No se pudo completar tu pago.");
    533534        }
     535         $this->logger->info("[WC_Openpay_Gateway.cvvValidation end]");
    534536    }
    535537
  • openpay-cards/trunk/openpay_cards.php

    r3367506 r3375395  
    44* Plugin URI: http://www.openpay.mx/docs/plugins/woocommerce.html
    55* Description: Provides a credit card payment method with Openpay for WooCommerce.
    6 * Version: 3.0.2
     6* Version: 3.0.3
    77* Author: Openpay
    88* Author URI: http://www.openpay.mx
     
    7373    global $woocommerce;
    7474    $logger = wc_get_logger();
     75    $logger->info('[WC_Openpay_3d_secure.openpay_woocommerce_confirm] => start');
    7576
    7677    $id = $_GET['id'];
    7778
    78     $logger->info('openpay_woocommerce_confirm => ' . $id);
     79    $logger->info('[WC_Openpay_3d_secure.openpay_woocommerce_confirm] => openpay_woocommerce_confirm => ' . $id);
    7980
    8081    try {
     
    9495                $order->set_status('failed');
    9596                $order->save();
     97                $logger->info('[WC_Openpay_3d_secure.openpay_woocommerce_confirm] => set_status => Failed');
    9698
    9799                if (function_exists('wc_add_notice')) {
     
    105107            $woocommerce->cart->empty_cart();
    106108            $order->add_order_note(sprintf("%s - Pago Completado: Transaction Id: '%s'", 'Openpay_Cards', $charge->id));
     109            $order->save();
     110            $logger->info('[WC_Openpay_3d_secure.openpay_woocommerce_confirm] => set_status => payment_complete');
    107111        }
    108112
     
    115119        die();
    116120    }
     121    $logger->info('[WC_Openpay_3d_secure.openpay_woocommerce_confirm] => end');
    117122}
    118123function wc_custom_redirect_after_purchase() {
    119124    global $wp;
    120125    $logger = wc_get_logger();
     126    $logger->info('[openpay_cards.wc_custom_redirect_after_purchase] => start');
    121127    if (is_checkout() && !empty($wp->query_vars['order-received'])) {
    122128        $order = new WC_Order($wp->query_vars['order-received']);
     
    134140        }
    135141    }
     142    $logger->info('[WC_Openpay_3d_secure.wc_custom_redirect_after_purchase] => end');
    136143}
    137144/*3DS FUNCTION END*/
     
    141148    \OpenpayCards\Includes\OpenpayErrorHandler::init();
    142149});
    143 
    144 //Hooks para llamar servicio 3Dsecure
    145 //add_action('woocommerce_api_openpay_confirm', 'openpay_woocommerce_confirm', 10, 0);
    146 //add_action('template_redirect', 'wc_custom_redirect_after_purchase',0);
    147150
    148151// Agrega un enlace de Ajustes del plugin
     
    232235
    233236function openpay_woocommerce_order_refunded($order_id, $refund_id) {
    234         $openpay_gateway = new WC_Openpay_Gateway();
    235         $openpayInstance = $openpay_gateway->getOpenpayInstance();
    236         $refund_service = new WC_Openpay_Refund_Service($openpay_gateway->settings['sandbox'], $openpay_gateway->settings['country'], $openpayInstance);
    237         $refund_service->refundOrder($order_id, $refund_id);
     237    $logger = wc_get_logger();
     238    $logger->info('[openpay_cards.openpay_woocommerce_order_refunded] => start');
     239    $openpay_gateway = new WC_Openpay_Gateway();
     240    $openpayInstance = $openpay_gateway->getOpenpayInstance();
     241    $refund_service = new WC_Openpay_Refund_Service($openpay_gateway->settings['sandbox'], $openpay_gateway->settings['country'], $openpayInstance);
     242    $refund_service->refundOrder($order_id, $refund_id);
     243    $logger->info('[openpay_cards.openpay_woocommerce_order_refunded] => end');
    238244}
    239245
    240246
    241247function get_type_card_openpay() {
     248    $logger = wc_get_logger();
     249    $logger->info('[openpay_cards.get_type_card_openpay] => start');
    242250    if(!class_exists('WC_Openpay_Bines_Consult')) {
    243251        require_once(dirname(__FILE__) . "/Includes/class-wc-openpay-bines-consult.php");
     
    246254    $openpayBinesConsult = new WC_Openpay_Bines_Consult();
    247255    $openpayBinesConsult->getTypeCardOpenpay();
     256    $logger->info('[openpay_cards.get_type_card_openpay] => end');
    248257}
    249258
    250259function openpay_woocommerce_order_status_change_custom($order_id, $old_status, $new_status) {
     260    $logger = wc_get_logger();
     261    $logger->info('[openpay_cards.openpay_woocommerce_order_status_change_custom] => start');
    251262    $openpay_gateway = new WC_Openpay_Gateway();
    252263    $openpayInstance = $openpay_gateway->getOpenpayInstance();
    253264    $capture_service = new WC_Openpay_Capture_Service($openpay_gateway->settings['sandbox'], $openpay_gateway->settings['country'], $openpayInstance);
    254265    $capture_service->openpayWoocommerceOrderStatusChangeCustom( $order_id, $old_status, $new_status );
     266    $logger->info('[openpay_cards.openpay_woocommerce_order_status_change_custom] => end');
    255267}
    256268
    257269function add_partial_capture_toggle( $order ) {
     270    $logger = wc_get_logger();
     271    $logger->info('[openpay_cards.add_partial_capture_toggle] => start');
    258272    $openpay_gateway = new WC_Openpay_Gateway();
    259273    $openpayInstance = $openpay_gateway->getOpenpayInstance();
    260274    $capture_service = new WC_Openpay_Capture_Service($openpay_gateway->settings['sandbox'], $openpay_gateway->settings['country'], $openpayInstance);
    261275    $capture_service->addPartialCaptureToggle( $order );
     276    $logger->info('[openpay_cards.add_partial_capture_toggle] => end');
    262277}
    263278
    264279function ajax_capture_handler() {
     280    $logger = wc_get_logger();
     281    $logger->info('[openpay_cards.ajax_capture_handler] => start');
    265282    $openpay_gateway = new WC_Openpay_Gateway();
    266283    $openpayInstance = $openpay_gateway->getOpenpayInstance();
    267284    $capture_service = new WC_Openpay_Capture_Service($openpay_gateway->settings['sandbox'], $openpay_gateway->settings['country'], $openpayInstance);
    268285    $capture_service->ajaxCaptureHandler();
    269 }
    270 
    271 /*function openpay_woocommerce_confirm() {
    272     $openpay3dSecure = new Openpay3dSecure();
    273     $openpay3dSecure->openpay_woocommerce_confirm();
    274 }*/
     286    $logger->info('[openpay_cards.ajax_capture_handler] => end');
     287}
  • openpay-cards/trunk/readme.txt

    r3367506 r3375395  
    55Tested up to: 6.8.1
    66Requires PHP: 5.9
    7 Stable tag: 3.0.2
     7Stable tag: 3.0.3
    88License: GNU General Public License v3.0
    99License URI: http://www.gnu.org/licenses/gpl-3.0.html
     
    1717
    1818== Changelog ==
     19= 3.0.3 =
     20* Fix. Validación de dirección al generar el token
    1921= 3.0.2 =
    2022* Enhancement. Ajuste de textos , logos y control de excepciones
Note: See TracChangeset for help on using the changeset viewer.