/** * The API for operations with orders. * * @package WooCommerce\PayPalCommerce\Api * * @phpcs:disable Squiz.Commenting.FunctionCommentThrowTag */ declare (strict_types=1); namespace WooCommerce\PayPalCommerce\Api; use Exception; use InvalidArgumentException; use RuntimeException; use WC_Order; use WooCommerce\PayPalCommerce\ApiClient\Endpoint\OrderEndpoint; use WooCommerce\PayPalCommerce\ApiClient\Entity\Order; use WooCommerce\PayPalCommerce\PPCP; use WooCommerce\PayPalCommerce\WcGateway\Gateway\PayPalGateway; use WooCommerce\PayPalCommerce\WcGateway\Helper\RefundFeesUpdater; use WooCommerce\PayPalCommerce\WcGateway\Processor\AuthorizedPaymentsProcessor; use WooCommerce\PayPalCommerce\WcGateway\Processor\OrderProcessor; use WooCommerce\PayPalCommerce\WcGateway\Processor\RefundProcessor; /** * Returns the PayPal order. * * @param string|WC_Order $paypal_id_or_wc_order The ID of PayPal order or a WC order (with the ID in meta). * @throws InvalidArgumentException When the argument cannot be used for retrieving the order. * @throws Exception When the operation fails. */ function ppcp_get_paypal_order($paypal_id_or_wc_order): Order { if ($paypal_id_or_wc_order instanceof WC_Order) { $paypal_id_or_wc_order = $paypal_id_or_wc_order->get_meta(PayPalGateway::ORDER_ID_META_KEY); if (!$paypal_id_or_wc_order) { throw new InvalidArgumentException('PayPal order ID not found in meta.'); } } if (!is_string($paypal_id_or_wc_order)) { throw new InvalidArgumentException('Invalid PayPal order ID, string expected.'); } $order_endpoint = PPCP::container()->get('api.endpoint.order'); assert($order_endpoint instanceof OrderEndpoint); return $order_endpoint->order($paypal_id_or_wc_order); } /** * Creates a PayPal order for the given WC order. * * @param WC_Order $wc_order The WC order. * @throws Exception When the operation fails. */ function ppcp_create_paypal_order_for_wc_order(WC_Order $wc_order): Order { $order_processor = PPCP::container()->get('wcgateway.order-processor'); assert($order_processor instanceof OrderProcessor); return $order_processor->create_order($wc_order); } /** * Captures the PayPal order. * * @param WC_Order $wc_order The WC order. * @throws InvalidArgumentException When the order cannot be captured. * @throws Exception When the operation fails. */ function ppcp_capture_order(WC_Order $wc_order): void { $intent = strtoupper((string) $wc_order->get_meta(PayPalGateway::INTENT_META_KEY)); if ($intent !== 'AUTHORIZE') { throw new InvalidArgumentException('Only orders with "authorize" intent can be captured.'); } $captured = wc_string_to_bool($wc_order->get_meta(AuthorizedPaymentsProcessor::CAPTURED_META_KEY)); if ($captured) { throw new InvalidArgumentException('The order is already captured.'); } $authorized_payment_processor = PPCP::container()->get('wcgateway.processor.authorized-payments'); assert($authorized_payment_processor instanceof AuthorizedPaymentsProcessor); if (!$authorized_payment_processor->capture_authorized_payment($wc_order)) { throw new RuntimeException('Capture failed.'); } } /** * Reauthorizes the PayPal order. * * @param WC_Order $wc_order The WC order. * @throws InvalidArgumentException When the order cannot be captured. * @throws Exception When the operation fails. */ function ppcp_reauthorize_order(WC_Order $wc_order): void { $intent = strtoupper((string) $wc_order->get_meta(PayPalGateway::INTENT_META_KEY)); if ($intent !== 'AUTHORIZE') { throw new InvalidArgumentException('Only orders with "authorize" intent can be reauthorized.'); } $captured = wc_string_to_bool($wc_order->get_meta(AuthorizedPaymentsProcessor::CAPTURED_META_KEY)); if ($captured) { throw new InvalidArgumentException('The order is already captured.'); } $authorized_payment_processor = PPCP::container()->get('wcgateway.processor.authorized-payments'); assert($authorized_payment_processor instanceof AuthorizedPaymentsProcessor); if ($authorized_payment_processor->reauthorize_payment($wc_order) !== AuthorizedPaymentsProcessor::SUCCESSFUL) { throw new RuntimeException($authorized_payment_processor->reauthorization_failure_reason() ?: 'Reauthorization failed.'); } } /** * Refunds the PayPal order. * Note that you can use wc_refund_payment() to trigger the refund in WC and PayPal. * * @param WC_Order $wc_order The WC order. * @param float $amount The refund amount. * @param string $reason The reason for the refund. * @return string The PayPal refund ID. * @throws InvalidArgumentException When the order cannot be refunded. * @throws Exception When the operation fails. */ function ppcp_refund_order(WC_Order $wc_order, float $amount, string $reason = ''): string { $order = ppcp_get_paypal_order($wc_order); $refund_processor = PPCP::container()->get('wcgateway.processor.refunds'); assert($refund_processor instanceof RefundProcessor); return $refund_processor->refund($order, $wc_order, $amount, $reason); } /** * Voids the authorization. * * @param WC_Order $wc_order The WC order. * @throws InvalidArgumentException When the order cannot be voided. * @throws Exception When the operation fails. */ function ppcp_void_order(WC_Order $wc_order): void { $order = ppcp_get_paypal_order($wc_order); $refund_processor = PPCP::container()->get('wcgateway.processor.refunds'); assert($refund_processor instanceof RefundProcessor); $refund_processor->void($order); } /** * Updates the PayPal refund fees totals on an order. * * @param WC_Order $wc_order The WC order. */ function ppcp_update_order_refund_fees(WC_Order $wc_order): void { $updater = PPCP::container()->get('wcgateway.helper.refund-fees-updater'); assert($updater instanceof RefundFeesUpdater); $updater->update($wc_order); } {"id":7269,"date":"2025-08-03T18:45:21","date_gmt":"2025-08-03T18:45:21","guid":{"rendered":"https:\/\/hostamy.com\/?p=7269"},"modified":"2025-08-03T18:45:21","modified_gmt":"2025-08-03T18:45:21","slug":"propionato-de-drostanolona-comentarios-y-consideraciones-2","status":"publish","type":"post","link":"https:\/\/hostamy.com\/en_gb\/propionato-de-drostanolona-comentarios-y-consideraciones-2\/","title":{"rendered":"Propionato de Drostanolona: Comentarios y Consideraciones"},"content":{"rendered":"
El Propionato de drostanolona es un esteroide anab\u00f3lico muy popular entre los culturistas y atletas. Este producto es conocido por su capacidad para aumentar la fuerza y la resistencia, as\u00ed como para mejorar la definici\u00f3n muscular. Muchos usuarios han reportado resultados positivos despu\u00e9s de usar este producto, incluyendo un aumento en la masa muscular magra y una disminuci\u00f3n en la grasa corporal. Sin embargo, como con cualquier esteroide, es importante usarlo con responsabilidad para evitar posibles efectos secundarios.<\/p>\n
Una de las principales ventajas del propionato de drostanolona es su rapidez en actuar. Este esteroide tiene una vida media corta, lo que significa que los resultados pueden notarse m\u00e1s r\u00e1pidamente en comparaci\u00f3n con otros esteroides m\u00e1s lentos. Esto lo convierte en una opci\u00f3n atractiva para aquellos que buscan optimizar su rendimiento durante ciclos de corte.<\/p>\n
Si bien el propionato de drostanolona es generalmente considerado seguro cuando se utiliza de manera adecuada, presenta algunos efectos secundarios potenciales, tales como:<\/p>\n
Los comentarios sobre el propionato de drostanolona var\u00edan entre usuarios. Muchos elogian su capacidad para proporcionar resultados visibles en poco tiempo, especialmente en fases de definici\u00f3n. Sin embargo, otros usuarios advierten sobre la importancia de seguir un ciclo adecuado y realizar un post-ciclo efectivo para minimizar los efectos adversos.<\/p>\n
El propionato de drostanolona puede ser una herramienta eficaz para aquellos que buscan mejorar su rendimiento f\u00edsico y definici\u00f3n muscular. Sin embargo, es crucial tener en cuenta tanto sus beneficios como sus riesgos. La educaci\u00f3n y la responsabilidad son claves para su uso adecuado, y siempre se recomienda consultar a un m\u00e9dico o especialista antes de iniciar cualquier tratamiento con esteroides anab\u00f3licos.<\/p>","protected":false},"excerpt":{"rendered":"
El Propionato de drostanolona es un esteroide anab\u00f3lico muy popular entre los culturistas y atletas. Este producto es conocido por su capacidad para aumentar la fuerza y la resistencia, as\u00ed como para mejorar la definici\u00f3n muscular. Muchos usuarios han reportado resultados positivos despu\u00e9s de usar este producto, incluyendo un aumento en la masa muscular magra […]<\/p>","protected":false},"author":23,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"pmpro_default_level":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-7269","post","type-post","status-publish","format-standard","hentry","category-uncategorized","pmpro-has-access"],"yoast_head":"\n