Changeset 3375395
- Timestamp:
- 10/09/2025 01:00:12 AM (6 months ago)
- Location:
- openpay-cards/trunk
- Files:
-
- 12 edited
-
Includes/OpenpayErrorHandler.php (modified) (1 diff)
-
Includes/class-wc-openpay-bines-consult.php (modified) (3 diffs)
-
Services/OpenpayCardService.php (modified) (9 diffs)
-
Services/OpenpayChargeService.php (modified) (10 diffs)
-
Services/OpenpayCustomerService.php (modified) (8 diffs)
-
Services/PaymentSettings/OpenpayInstallments.php (modified) (1 diff)
-
Services/class-wc-openpay-capture-service.php (modified) (11 diffs)
-
blocks/checkout-form/build/index.asset.php (modified) (1 diff)
-
blocks/checkout-form/build/index.js (modified) (1 diff)
-
class-wc-openpay-gateway.php (modified) (11 diffs)
-
openpay_cards.php (modified) (9 diffs)
-
readme.txt (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
openpay-cards/trunk/Includes/OpenpayErrorHandler.php
r3367506 r3375395 71 71 } catch (OpenpayApiTransactionError $e) { 72 72 self::handleOpenpayPluginException($e, $order_id, $customer_id); 73 $openpayErrorManager = new OpenpayErrorManager(); 73 if($e->getCode() == '3005') return 3005; 74 $openpayErrorManager = new OpenpayErrorManager(); 74 75 $errorMessage = $openpayErrorManager::getErrorMessages($e->getCode()); 75 76 throw new Exception($errorMessage['clientError'], $e->getCode()); -
openpay-cards/trunk/Includes/class-wc-openpay-bines-consult.php
r3351601 r3375395 10 10 11 11 $logger = wc_get_logger(); 12 $logger->info(" Entra a los bines");12 $logger->info("[WC_Openpay_Bines_Consult.getTypeCardOpenpay] start"); 13 13 $card_bin = isset( $_POST['card_bin'] ) ? $_POST['card_bin'] : false; 14 14 $logger->info("Bin: " . $card_bin); … … 65 65 66 66 } catch (Exception $e) { 67 $logger->error( $e->getMessage());67 $logger->error('[WC_Openpay_Bines_Consult.getTypeCardOpenpay => ERROR ]'.$e->getMessage()); 68 68 } 69 69 } … … 72 72 'card_type' => "credit card not found" 73 73 )); 74 $logger->info("[WC_Openpay_Bines_Consult.getTypeCardOpenpay] end"); 74 75 } 75 76 } -
openpay-cards/trunk/Services/OpenpayCardService.php
r3351601 r3375395 32 32 public function getCreditCardList() 33 33 { 34 $this->logger->info('[OpenpayCardService.getCreditCardList] start '); 34 35 if (!is_user_logged_in()) { 35 36 return array(array('value' => 'new', 'name' => 'Nueva tarjeta')); … … 42 43 $customer_id = get_user_meta(get_current_user_id(), '_openpay_customer_live_id', true); 43 44 } 44 $this->logger->info(' WC_Openpay_Cards_Service.getCreditCardList -customer_id ' . $customer_id);45 $this->logger->info('[OpenpayCardService.getCreditCardList] => customer_id ' . $customer_id); 45 46 46 47 … … 50 51 51 52 $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)); 53 54 // try { 54 55 $customer = OpenpayErrorHandler::catchOpenpayError(function () use ($customer_id) { … … 57 58 58 59 $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)); 60 61 foreach ($cards as $card) { 61 62 array_push($list, array('value' => $card->id, 'name' => strtoupper($card->brand) . ' ' . $card->card_number)); 62 63 } 64 $this->logger->info('[OpenpayCardService.getCreditCardList] end '); 63 65 return $list; 64 66 // } catch (Exception $e) { … … 70 72 private function getCreditCards($customer) 71 73 { 74 $this->logger->info('[OpenpayCardService.getCreditCards] start '); 72 75 try { 73 76 return $customer->cards->getList(array( … … 76 79 )); 77 80 } catch (Exception $e) { 78 $this->logger->error( $e->getMessage());81 $this->logger->error("[OpenpayCardService.getCreditCards] => ERROR ".$e->getMessage()); 79 82 throw $e; 80 83 } 84 $this->logger->info('[OpenpayCardService.getCreditCards] end '); 81 85 } 82 86 83 87 public function validateNewCard($openpay_customer, $token, $device_session_id, $card_number, $save_card_mode) 84 88 { 89 $this->logger->info('[OpenpayCardService.validateNewCard] start'); 85 90 global $woocommerce; 86 $this->logger->info(' validateNewCard', array('#INFO validateNewCard() => ' => $card_number));91 $this->logger->info('[OpenpayCardService.validateNewCard]', array('#INFO validateNewCard() => ' => $card_number)); 87 92 $cards = $this->getCreditCards($openpay_customer); 88 93 $card_number_bin = substr($card_number, 0, 8); … … 91 96 if ($card_number_bin == substr($card->card_number, 0, 8) && $card_number_complement == substr($card->card_number, -4)) { 92 97 $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)); 94 99 if (function_exists('wc_add_notice')) { 95 100 wc_add_notice($errorMsg, $notice_type = 'error'); … … 113 118 $card = $this->createCreditCard($openpay_customer, $card_data); 114 119 120 $this->logger->info('[OpenpayCardService.validateNewCard] end'); 115 121 return $card->id; 116 122 } … … 118 124 private function createCreditCard($customer, $data) 119 125 { 126 $this->logger->info('[OpenpayCardService.createCreditCard] start '); 120 127 try { 121 128 return $customer->cards->add($data); 122 129 } catch (Exception $e) { 123 $this->logger->error( $e->getMessage());130 $this->logger->error('[OpenpayCardService.createCreditCard => ERROR ]'.$e->getMessage()); 124 131 throw $e; 125 132 } 133 $this->logger->info('[OpenpayCardService.createCreditCard] end '); 126 134 } 127 135 -
openpay-cards/trunk/Services/OpenpayChargeService.php
r3367506 r3375395 2 2 namespace OpenpayCards\Services; 3 3 4 use Exception; 4 5 use OpenpayCards\Handlers\OpenpayChargeHandlerCo; 5 6 use OpenpayCards\Handlers\OpenpayChargeHandlerMx; 6 7 use OpenpayCards\Handlers\OpenpayChargeHandlerPe; 7 8 use OpenpayCards\Includes\OpenpayErrorHandler; 9 use OpenpayCards\Services\PaymentSettings\Openpay3dSecure; 8 10 9 11 … … 12 14 exit; // Exit if accessed directly 13 15 } 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 loaded18 16 19 17 class OpenpayChargeService … … 38 36 { 39 37 40 $this->logger->info(' processOpenpayCharge');38 $this->logger->info('[OpenpayChargeService.processOpenpayCharge start]'); 41 39 42 40 $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']); 44 42 $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); 48 46 if($charge != false ) { 49 47 $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); 52 50 53 51 if($payment_settings['sandbox'] && is_user_logged_in()){ 54 52 $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); 56 54 } else if (!$payment_settings['sandbox'] && is_user_logged_in()){ 57 55 $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); 59 57 } 60 58 61 59 if($charge_request['capture'] === false && $charge->status == 'in_progress'){ 62 60 $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'); 64 62 $this->order->update_meta_data('_openpay_capture', $captureString); 65 63 } 66 64 $this->order->save(); 67 65 } 68 66 $this->logger->info('[OpenpayChargeService.processOpenpayCharge end]'); 69 67 return $charge; 70 68 } … … 72 70 public function create($openpay_customer, $charge_request, $charge_type) { 73 71 try { 74 $this->logger->info(' wc-openpay-charge-service.create');72 $this->logger->info('[OpenpayChargeService.create] start'); 75 73 $this->logger->info("[OpenpayChargeService.create - CHARGE_REQUEST] => " . json_encode($charge_request) ); 76 74 $order_id = $this->order->get_id(); 75 77 76 if (is_user_logged_in()) { 78 77 $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) { 81 79 return $openpay_customer->charges->create($charge_request); 82 80 }, $order_id, $customer_id); 83 84 $this->logger->info('[wc-openpay-charge-service.create] => charge result=> ' . $charge->id);85 81 } else { 86 82 $openpay = $this->openpay; … … 88 84 return $openpay->charges->create($charge_request); 89 85 }, $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 92 91 if($charge !==false){ 93 92 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)'); 95 94 $this->order->update_meta_data('_openpay_3d_secure_url', $charge->payment_method->url); 96 95 $this->order->set_status('on-hold'); … … 98 97 $this->order->delete_meta_data('_openpay_3d_secure_url'); 99 98 } 99 $this->logger->info('[OpenpayChargeService.create] => UpdateStatus on-hold'); 100 100 $this->order->save(); 101 101 } … … 103 103 104 104 } 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()); 107 107 108 108 $this->logger->error('[Charge type exception => '. $charge_type); 109 109 $this->logger->error('[Code exception => '. $e->getCode()); 110 $this->logger->error('[Redirect url => '. $this->redirect_url_3d());111 110 112 111 // Si cuenta con autenticación selectiva y hay detección de fraude se envía por 3D Secure 113 112 if ($charge_type == 'auth' && $e->getCode() == '3005') { 113 $openpay3ds = new Openpay3dSecure(); 114 $redirect_url = $openpay3ds->redirect_url_3d(); 114 115 $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'); 117 132 118 119 $this->logger->info(' createOpenpayChargeAuth Order => '.$this->order->get_id());133 if ($charge == 3005) return false; 134 $this->logger->info('[OpenpayChargeService.create] => Auth Order => '.$this->order->get_id()); 120 135 121 136 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); 123 138 $this->order->update_meta_data('_openpay_3d_secure_url', $charge->payment_method->url); 124 139 $this->order->save(); // ¡Importante! Guardar los cambios 125 140 $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); 127 142 }else{ 128 143 $this->order->delete_meta_data('_openpay_3d_secure_url'); … … 135 150 } 136 151 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'); 152 153 return $charge; 153 154 } … … 155 156 private function collectChargeData($payment_settings) 156 157 { 157 158 $this->logger->info('[OpenpayChargeService.collectChargeData] start'); 158 159 $charge_request = array( 159 160 "method" => "card", … … 184 185 185 186 $this->logger->info('[OpenpayChargeService.collectChargeData]' . json_encode($charge_request)); 187 $this->logger->info('[OpenpayChargeService.collectChargeData] end'); 186 188 return $charge_request; 187 189 } -
openpay-cards/trunk/Services/OpenpayCustomerService.php
r3351601 r3375395 18 18 19 19 public function retrieveCustomer($order){ 20 $this->logger->info('[OpenpayCustomerService.retrieveCustomer] start '); 20 21 $customer_id = $this->getCustomerId(); 21 22 try { 22 23 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); 24 25 if (is_user_logged_in()) { 25 26 return $this->create($order); 26 27 } 27 28 }else{ 28 $this->logger->info(' (retrieveCustomer)customer_id exists - ' . $customer_id);29 $this->logger->info('[OpenpayCustomerService.retrieveCustomer] => customer_id exists - ' . $customer_id); 29 30 return $this->openpay->customers->get($customer_id); 30 31 } … … 33 34 return false; 34 35 } 36 $this->logger->info('[OpenpayCustomerService.retrieveCustomer] end '); 35 37 } 36 38 37 39 public function getCustomerId() { 40 $this->logger->info('[OpenpayCustomerService.getCustomerId] start '); 38 41 $customer_id = null; 39 $this->logger->info(' (getCustomerId)sandbox? - ' . $this->sandbox);42 $this->logger->info('[OpenpayCustomerService.getCustomerId] => sandbox? - ' . $this->sandbox); 40 43 if (is_user_logged_in()) { 41 44 if ($this->sandbox) { … … 45 48 } 46 49 } 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 '); 49 53 return $customer_id; 50 54 } 51 55 52 56 public function updateCustomerId($customer_id){ 57 $this->logger->info('[OpenpayCustomerService.updateCustomerId] start '); 53 58 if (is_user_logged_in()) { 59 $this->logger->info('[OpenpayCustomerService.updateCustomerId] => update_user_meta '); 54 60 if ($this->sandbox) { 55 61 update_user_meta(get_current_user_id(), '_openpay_customer_test_id', $customer_id); … … 58 64 } 59 65 } 66 $this->logger->info('[OpenpayCustomerService.updateCustomerId] end '); 60 67 } 61 68 62 69 63 70 public function create($order) { 71 $this->logger->info('[OpenpayCustomerService.create] start '); 64 72 $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)); 66 74 try { 67 75 $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); 69 77 $this->updateCustomerId($customer->id); 70 78 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); 73 81 74 82 return $customer; … … 78 86 return false; 79 87 } 88 $this->logger->info('[OpenpayCustomerService.create] end '); 80 89 } 81 90 … … 83 92 84 93 public function collectCustomerData($order) { 85 94 $this->logger->info('[OpenpayCustomerService.collectCustomerData] start '); 86 95 $customer_data = array( 87 96 'name' => $order->get_billing_first_name(), … … 92 101 ); 93 102 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 '); 94 111 if ($this->country === 'MX' || $this->country === 'PE') { 95 112 $customer_data['address'] = array( … … 108 125 ); 109 126 } 110 127 $this->logger->info('[OpenpayCustomerService.formatAddress] => customer_data ' . json_encode($customer_data)); 128 $this->logger->info('[OpenpayCustomerService.formatAddress] end '); 111 129 return $customer_data; 112 130 } 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 } 114 142 115 143 } -
openpay-cards/trunk/Services/PaymentSettings/OpenpayInstallments.php
r3351601 r3375395 41 41 42 42 public function getInstallments(){ 43 return $this->processInstallments(); 43 if(is_checkout()){ 44 return $this->processInstallments(); 45 } 46 return false; 44 47 } 45 48 -
openpay-cards/trunk/Services/class-wc-openpay-capture-service.php
r3351601 r3375395 18 18 function openpayWoocommerceOrderStatusChangeCustom($order_id, $old_status, $new_status) 19 19 { 20 $logger = wc_get_logger(); 21 $logger->info('[WC_Openpay_Capture_Service.openpayWoocommerceOrderStatusChangeCustom] start'); 20 22 $order = wc_get_order($order_id); 21 23 // Execute only if there are not a partial capture yet 22 24 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); 27 28 28 29 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()); 30 31 return; 31 32 } … … 34 35 $transaction_id = $order->get_meta('_transaction_id'); 35 36 $capture = $order->get_meta('_openpay_capture'); 36 $logger->info(' $capture: ' . $capture);37 $logger->info('[WC_Openpay_Capture_Service.openpayWoocommerceOrderStatusChangeCustom] => $capture: ' . $capture); 37 38 38 39 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"); 40 41 41 42 try { … … 66 67 $order->save(); 67 68 } 69 $logger->info('[WC_Openpay_Capture_Service.openpayWoocommerceOrderStatusChangeCustom] end'); 68 70 } 69 71 70 72 function addPartialCaptureToggle($order) 71 73 { 74 $this->logger->info('[WC_Openpay_Capture_Service.addPartialCaptureToggle] start'); 72 75 if ($this->is_preauthorized_order($order)) { 73 76 $this->logger->info("Entra al handler capture toggle is preauthorized order"); … … 77 80 78 81 if ($auth_remaining < 1) { 82 $this->logger->info('[WC_Openpay_Capture_Service.addPartialCaptureToggle] end'); 79 83 return; 80 84 } … … 82 86 include(dirname(__DIR__) . '/templates/partial-capture.php'); 83 87 } 88 $this->logger->info('[WC_Openpay_Capture_Service.addPartialCaptureToggle] end'); 84 89 } 85 90 … … 87 92 public function ajaxCaptureHandler() 88 93 { 94 $this->logger->info('[WC_Openpay_Capture_Service.ajaxCaptureHandler] start'); 89 95 $order_id = $_POST['order_id']; 90 96 $amount = isset($_POST['amount']) ? $_POST['amount'] : 0; … … 145 151 wp_send_json_error(array('error' => $e->getMessage())); 146 152 } 153 $this->logger->info('[WC_Openpay_Capture_Service.ajaxCaptureHandler] end'); 147 154 wp_die(); 148 155 } … … 150 157 public function is_preauthorized_order($order) 151 158 { 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'); 153 162 return $order->get_meta('_openpay_capture') == 'false'; 154 163 } … … 156 165 public function get_order_auth_amount($order) 157 166 { 167 $this->logger->info('[WC_Openpay_Capture_Service.get_order_auth_amount] start'); 158 168 $order_id = $order->get_id(); 159 169 $amount = $order->get_total(); 170 $this->logger->info('[WC_Openpay_Capture_Service.get_order_auth_amount] end'); 160 171 return $amount; 161 172 } … … 163 174 public function get_order_auth_remaining($order) 164 175 { 176 $this->logger->info('[WC_Openpay_Capture_Service.get_order_auth_remaining] start'); 165 177 $order_id = $order->get_id(); 166 178 $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'); 167 180 return floatval($amount); 168 181 } … … 170 183 public function get_order_captured_total($order) 171 184 { 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"); 173 187 $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'); 174 189 return floatval($amount); 175 190 } -
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 368 368 public function process_payment($order_id) 369 369 { 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 372 379 $openpay_token = $_POST['openpay_token']; 373 380 $device_session_id = $_POST['device_session_id']; 374 381 $openpay_tokenized_card = $_POST['openpay_tokenized_card']; 375 $openpay_save_card_auth = $_POST['openpay_save_card_auth'];376 382 $openpay_selected_card = $_POST['openpay_selected_card']; 377 383 $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']) ); 382 387 switch ($this->country) { 383 388 case 'MX': … … 393 398 } 394 399 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)); 400 401 401 402 // we need it to get any order detailes … … 408 409 if (is_user_logged_in()) { 409 410 if ($openpay_selected_card !== 'new' && $this->save_card_mode === '1') { 410 $this->logger->info(' cvvValidation: ' . $cvv);411 411 $this->cvvValidation($openpay_selected_card, $openpay_customer, $cvv); 412 412 $openpay_token = $openpay_selected_card; … … 418 418 $cards_service = new OpenpayCardService($this->openpay, $this->order, $this->country, $this->sandbox); 419 419 $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)); 421 421 if ($openpay_token) { 422 422 $this->order->update_meta_data('_openpay_card_saved_flag', true); // Used for notice confirmation … … 439 439 ); 440 440 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) ); 442 442 443 443 $charge_service = new OpenpayChargeService($this->openpay, $order, $customer_service, $this->capture); 444 444 $charge = $charge_service->processOpenpayCharge($payment_settings); 445 445 446 if ($charge !== false) { 446 if ($charge != null && $charge !== false) { 447 $this->logger->info("[WC_Openpay_Gateway.process_payment] => Charge Openpay " . json_encode($charge) ); 447 448 $redirect_url = $charge->payment_method->url; 448 $this->logger->info("3DS_REDIRECT_URL GATEWAY = " . $redirect_url);449 449 // Si el redirect url no existe el cargo es inmediato 450 450 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)"); 452 452 $this->order->payment_complete(); 453 453 // we received the payment 454 $this->logger->info('Completing Payment');455 454 // some notes to customer (replace true with false to make it private) 456 455 $this->order->add_order_note('Orden Pagada', true); … … 459 458 // Si el cargo es Frictionless y es inmediato, se marca la orden como completada 460 459 if (str_contains($redirect_url, 'frictionless') && $this->capture) { 461 $this->logger->info("[wc-openpay-gateway] => frictionless");462 460 $this->order->payment_complete(); 463 461 // we received the payment 464 $this->logger->info( 'Completing Payment');462 $this->logger->info("[WC_Openpay_Gateway.process_payment] => 3DS frictionless (Payment Complete)"); 465 463 // some notes to customer (replace true with false to make it private) 466 464 $this->order->add_order_note('Orden Pagada', true); … … 468 466 // Si el cargo es Challenge se pone en status on-hold hasta concluir el proceso. 469 467 } 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)"); 471 469 $this->order->update_status('on-hold'); 472 470 $this->order->add_order_note(sprintf("%s - Pago en espera vía 3DS (challenge). ID de transacción: '%s'", $this->method_title, $charge->id)); 473 471 // Si el cargo es pre-autorizado, se pone en status on-hold hasta concluir el proceso. 474 472 } 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)"); 476 474 $this->order->update_status('on-hold'); 477 475 $this->order->add_order_note(sprintf("%s - Pago preautorizado. ID de transacción: '%s'", $this->method_title, $charge->id)); … … 488 486 489 487 } else { 488 $this->logger->info("[WC_Openpay_Gateway.process_payment] => Charge ERROR Openpay (Payment Failed)"); 490 489 $this->order->add_order_note(sprintf("%s - Pago fallido. Error: '%s'", $this->method_title, $this->transactionErrorMessage)); 491 490 $this->order->set_status('failed'); … … 499 498 } 500 499 500 $this->logger->info("[WC_Openpay_Gateway.process_payment end]"); 501 501 502 } 502 503 … … 511 512 private function cvvValidation($openpay_token, $openpay_customer, $cvv) 512 513 { 514 $this->logger->info("[WC_Openpay_Gateway.cvvValidation start]"); 513 515 $cvv = (int)$cvv; 514 $this->logger->debug($cvv);515 516 if (is_numeric($cvv) && (strlen($cvv) == 3 || strlen($cvv) == 4)) { 516 517 $path = sprintf('/%s/customers/%s/cards/%s', $this->merchant_id, $openpay_customer->id, $openpay_token); … … 519 520 $cardInfo = OpenpayUtils::requestOpenpay($path, $this->country, $this->sandbox, 'PUT', $params, $auth); 520 521 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.'); 522 523 throw new Exception("Error en la transacción: No se pudo completar tu pago."); 523 524 } 524 525 } 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'); 526 527 throw new Exception("Error en la transacción: No se pudo completar tu pago. El cvv es incorrecto"); 527 528 } 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'); 529 530 throw new Exception("Error en la transacción: No se pudo completar tu pago. El cvv es incorrecto"); 530 531 } else { 531 $this->logger->error(' CVV is not valid');532 $this->logger->error('[WC_Openpay_Gateway.cvvValidation] => CVV is not valid'); 532 533 throw new Exception("Error en la transacción: No se pudo completar tu pago."); 533 534 } 535 $this->logger->info("[WC_Openpay_Gateway.cvvValidation end]"); 534 536 } 535 537 -
openpay-cards/trunk/openpay_cards.php
r3367506 r3375395 4 4 * Plugin URI: http://www.openpay.mx/docs/plugins/woocommerce.html 5 5 * Description: Provides a credit card payment method with Openpay for WooCommerce. 6 * Version: 3.0. 26 * Version: 3.0.3 7 7 * Author: Openpay 8 8 * Author URI: http://www.openpay.mx … … 73 73 global $woocommerce; 74 74 $logger = wc_get_logger(); 75 $logger->info('[WC_Openpay_3d_secure.openpay_woocommerce_confirm] => start'); 75 76 76 77 $id = $_GET['id']; 77 78 78 $logger->info(' openpay_woocommerce_confirm => ' . $id);79 $logger->info('[WC_Openpay_3d_secure.openpay_woocommerce_confirm] => openpay_woocommerce_confirm => ' . $id); 79 80 80 81 try { … … 94 95 $order->set_status('failed'); 95 96 $order->save(); 97 $logger->info('[WC_Openpay_3d_secure.openpay_woocommerce_confirm] => set_status => Failed'); 96 98 97 99 if (function_exists('wc_add_notice')) { … … 105 107 $woocommerce->cart->empty_cart(); 106 108 $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'); 107 111 } 108 112 … … 115 119 die(); 116 120 } 121 $logger->info('[WC_Openpay_3d_secure.openpay_woocommerce_confirm] => end'); 117 122 } 118 123 function wc_custom_redirect_after_purchase() { 119 124 global $wp; 120 125 $logger = wc_get_logger(); 126 $logger->info('[openpay_cards.wc_custom_redirect_after_purchase] => start'); 121 127 if (is_checkout() && !empty($wp->query_vars['order-received'])) { 122 128 $order = new WC_Order($wp->query_vars['order-received']); … … 134 140 } 135 141 } 142 $logger->info('[WC_Openpay_3d_secure.wc_custom_redirect_after_purchase] => end'); 136 143 } 137 144 /*3DS FUNCTION END*/ … … 141 148 \OpenpayCards\Includes\OpenpayErrorHandler::init(); 142 149 }); 143 144 //Hooks para llamar servicio 3Dsecure145 //add_action('woocommerce_api_openpay_confirm', 'openpay_woocommerce_confirm', 10, 0);146 //add_action('template_redirect', 'wc_custom_redirect_after_purchase',0);147 150 148 151 // Agrega un enlace de Ajustes del plugin … … 232 235 233 236 function 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'); 238 244 } 239 245 240 246 241 247 function get_type_card_openpay() { 248 $logger = wc_get_logger(); 249 $logger->info('[openpay_cards.get_type_card_openpay] => start'); 242 250 if(!class_exists('WC_Openpay_Bines_Consult')) { 243 251 require_once(dirname(__FILE__) . "/Includes/class-wc-openpay-bines-consult.php"); … … 246 254 $openpayBinesConsult = new WC_Openpay_Bines_Consult(); 247 255 $openpayBinesConsult->getTypeCardOpenpay(); 256 $logger->info('[openpay_cards.get_type_card_openpay] => end'); 248 257 } 249 258 250 259 function 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'); 251 262 $openpay_gateway = new WC_Openpay_Gateway(); 252 263 $openpayInstance = $openpay_gateway->getOpenpayInstance(); 253 264 $capture_service = new WC_Openpay_Capture_Service($openpay_gateway->settings['sandbox'], $openpay_gateway->settings['country'], $openpayInstance); 254 265 $capture_service->openpayWoocommerceOrderStatusChangeCustom( $order_id, $old_status, $new_status ); 266 $logger->info('[openpay_cards.openpay_woocommerce_order_status_change_custom] => end'); 255 267 } 256 268 257 269 function add_partial_capture_toggle( $order ) { 270 $logger = wc_get_logger(); 271 $logger->info('[openpay_cards.add_partial_capture_toggle] => start'); 258 272 $openpay_gateway = new WC_Openpay_Gateway(); 259 273 $openpayInstance = $openpay_gateway->getOpenpayInstance(); 260 274 $capture_service = new WC_Openpay_Capture_Service($openpay_gateway->settings['sandbox'], $openpay_gateway->settings['country'], $openpayInstance); 261 275 $capture_service->addPartialCaptureToggle( $order ); 276 $logger->info('[openpay_cards.add_partial_capture_toggle] => end'); 262 277 } 263 278 264 279 function ajax_capture_handler() { 280 $logger = wc_get_logger(); 281 $logger->info('[openpay_cards.ajax_capture_handler] => start'); 265 282 $openpay_gateway = new WC_Openpay_Gateway(); 266 283 $openpayInstance = $openpay_gateway->getOpenpayInstance(); 267 284 $capture_service = new WC_Openpay_Capture_Service($openpay_gateway->settings['sandbox'], $openpay_gateway->settings['country'], $openpayInstance); 268 285 $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 5 5 Tested up to: 6.8.1 6 6 Requires PHP: 5.9 7 Stable tag: 3.0. 27 Stable tag: 3.0.3 8 8 License: GNU General Public License v3.0 9 9 License URI: http://www.gnu.org/licenses/gpl-3.0.html … … 17 17 18 18 == Changelog == 19 = 3.0.3 = 20 * Fix. Validación de dirección al generar el token 19 21 = 3.0.2 = 20 22 * Enhancement. Ajuste de textos , logos y control de excepciones
Note: See TracChangeset
for help on using the changeset viewer.