/** * 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":7039,"date":"2025-06-15T10:21:50","date_gmt":"2025-06-15T10:21:50","guid":{"rendered":"https:\/\/hostamy.com\/?p=7039"},"modified":"2025-06-15T10:21:50","modified_gmt":"2025-06-15T10:21:50","slug":"online-online-casinos-ranked-a-comprehensive-overview-to-discovering-the-very-best-casino-site-sites","status":"publish","type":"post","link":"https:\/\/hostamy.com\/en_gb\/online-online-casinos-ranked-a-comprehensive-overview-to-discovering-the-very-best-casino-site-sites\/","title":{"rendered":"Online Online Casinos Ranked: A Comprehensive Overview to Discovering the very best Casino Site Sites"},"content":{"rendered":"

With the increasing popularity and access of on the internet gambling, it can be overwhelming to select the best online gambling enterprise. There are many options offered, each asserting to use the best video games, rewards, and general experience. However, not all online gambling enterprises are produced equal.<\/p>\n

In this post, we will certainly give you with a detailed overview to finding the most effective online gambling establishments. We will review the factors you ought to take into consideration when choosing an online casino betbigo<\/a>, how to analyze their reliability and safety and security, and offer you with a list of premier on-line gambling enterprises. Whether you are brand-new to on the internet betting or an experienced player, this guide will certainly assist you make a notified choice.<\/p>\n

Elements to Consider when Choosing an Online Online Casino<\/h2>\n

Before diving into the globe of on the internet betting, it is important to examine certain elements to guarantee a risk-free and enjoyable experience. Here are some key considerations:<\/p>\n

Licensing and Regulation:<\/strong> The first step is to make sure that the on the internet gambling establishment is accredited and controlled by a reliable authority. This guarantees that the casino operates within legal limits and undergoes normal audits to make certain justness and openness.<\/p>\n

Video game Choice:<\/strong> A wide and diverse series of games is important for an enjoyable gaming experience. Search for on the internet gambling establishments that supply a variety of slots, table games, live dealership video games, and extra. The even more alternatives h\u0131zl\u0131 casino g\u00fcncel<\/a> available, the better chances you need to find video games that suit your preferences.<\/p>\n

Software application Providers:<\/strong> The high quality of video games mainly depends on the software companies the casino companions with. Leading service providers like NetEnt, Microgaming, and Playtech are known for their innovative and top quality games. Make sure the on-line casino site you choose collaborates with trustworthy software program providers.<\/p>\n

Benefits and Promotions:<\/strong> Online online casinos frequently entice brand-new gamers and reward existing ones with numerous benefits and promos. Look for casinos that offer eye-catching welcome bonus offers, cost-free rotates, commitment programs, and various other benefits that boost your video gaming experience.<\/p>\n

Settlement Methods:<\/strong> Examine the available settlement options and make certain that the online casino sustains protected and hassle-free approaches for deposits and withdrawals. Try to find casinos that accept prominent approaches like bank card, e-wallets, and bank transfers.<\/p>\n

Client Assistance:<\/strong> Reliable and responsive consumer support is crucial in case you experience any concerns or have inquiries. Seek on the internet casinos that provide 24\/7 customer assistance by means of live conversation, e-mail, or phone. Examine their action time and helpfulness before deciding.<\/p>\n

Mobile Compatibility:<\/strong> With the increase of mobile gaming, it is important to select an online casino that works with your mobile phone. Seek casinos that offer an easy to use mobile platform or a committed casino application.<\/p>\n