/** * 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":7031,"date":"2025-06-14T09:34:12","date_gmt":"2025-06-14T09:34:12","guid":{"rendered":"https:\/\/hostamy.com\/?p=7031"},"modified":"2025-06-14T09:34:12","modified_gmt":"2025-06-14T09:34:12","slug":"7031-2","status":"publish","type":"post","link":"https:\/\/hostamy.com\/en_gb\/7031-2\/","title":{"rendered":""},"content":{"rendered":"

Play at a Casino Online for Free
\n<\/h1>\n

Playing at a casino online for fun, but it’s important to understand the rules and regulations of uv\u00edtac\u00ed bonus Rebuy Stars Casino<\/a> the games. It is important to read the rules and follow guidelines to avoid falling into traps. It is a good idea that you play at the website of someone you know. This will keep you from losing your money. It is also essential to check the license of the site.\n<\/p>\n

As long as you adhere to some basic rules, finding a licensed casino should not be difficult. Always read the rules before you play. A good casino will let you know if a specific amount of money has to be deposited prior to you being able to play. After you’ve done this, you’re now able to begin playing! Once you’ve perfected your skills and are able to beat the games and earn the most lucrative payouts.\n<\/p>\n

Free casino games allow you to play without spending a cent. Because they’re hosted on a mobile device, they’re more portable than ever. You can play games on your smartphone or tablet without the need to sign up for an account. You can play for enjoyment, and then move on to the more popular games. Make sure you check the in-app purchases, too.\n<\/p>\n

Another great thing about playing games at no cost is that you could win real cash! The greatest thing about casino games for free is that you don’t need to pay a penny. You can even earn real money without having to deposit any money! The most appealing aspect is that you can try out different games to discover the one you like best. You can also find free blackjack and slots sites to play for enjoyment. You could win big if you choose to play with real money.\n<\/p>\n

Many websites offer free casino games to players to try out. It is recommended that you play these games on a reputable casino website. These games are intended to be enjoyable, not to earn real money. You will need to be able to meet wagering requirements prior to when you can withdraw your money. The RTP of an online game is the percentage of it that you are able to win. It is also important to pay attention to the payouts. The more a game wins, the more the chances that it will win you real money.\n<\/p>\n

Apart from slots, you can play blackjack in no-cost games. You can also play the game on your computer or mobile device if you aren’t confident with playing it. These games do not require registration, and you don’t need to give any personal information to the casino. This is a great benefit. You can test it free of charge if you wish. There are some casinos that offer a few different versions of their games, so you can play different variations and see which one is the best for you.\n<\/p>\n

Reputable casinos are crucial. To ensure safe and fair gambling, the casino you choose should be regulated by a gaming agency. If you want to play with real money, choose a casino online site that has a high RTP. Some games can be unfair, so be sure to check the RTP percentage before you withdraw your winnings. Other casinos offer bonus offers for players who play their free games.\n<\/p>\n

It is crucial to remember that a game at no cost might be worth the cost. You should only play games that are not too difficult to play. These games are a lot of fun to play and can be enjoyed by all age groups. Certain games can be played with no real money, but it’s still an excellent idea to have some money available to win some cash. You can play a variety games, including blackjack and video poker by playing these video games.\n<\/p>\n

Online casinos are convenient and offers many advantages. You can try out different games and even win cash. Bonus rounds are an added bonus for every game. You may even get a million dollars. You can also play for free online slots and test out various features. This way, you’ll get to experience the real casino environment without spending any money. It’s more rewarding to play for fun.<\/p>","protected":false},"excerpt":{"rendered":"

Play at a Casino Online for Free Playing at a casino online for fun, but it’s important to understand the rules and regulations of uv\u00edtac\u00ed bonus Rebuy Stars Casino the games. It is important to read the rules and follow guidelines to avoid falling into traps. It is a good idea that you play at […]<\/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-7031","post","type-post","status-publish","format-standard","hentry","category-uncategorized","pmpro-has-access"],"yoast_head":"\n- Hostamy - strumenti per strutture a tema affitti brevi<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/hostamy.com\/en_gb\/7031-2\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"- Hostamy - strumenti per strutture a tema affitti brevi\" \/>\n<meta property=\"og:description\" content=\"Play at a Casino Online for Free Playing at a casino online for fun, but it’s important to understand the rules and regulations of uv\u00edtac\u00ed bonus Rebuy Stars Casino the games. It is important to read the rules and follow guidelines to avoid falling into traps. It is a good idea that you play at […]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/hostamy.com\/en_gb\/7031-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Hostamy - strumenti per strutture a tema affitti brevi\" \/>\n<meta property=\"article:published_time\" content=\"2025-06-14T09:34:12+00:00\" \/>\n<meta name=\"author\" content=\"fc45efdc\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"fc45efdc\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/hostamy.com\/7031-2\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/hostamy.com\/7031-2\/\"},\"author\":{\"name\":\"fc45efdc\",\"@id\":\"https:\/\/hostamy.com\/#\/schema\/person\/83061f65a1dc7f40d3fb40246f6ac56d\"},\"headline\":\"No title\",\"datePublished\":\"2025-06-14T09:34:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/hostamy.com\/7031-2\/\"},\"wordCount\":718,\"publisher\":{\"@id\":\"https:\/\/hostamy.com\/#organization\"},\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"en-GB\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/hostamy.com\/7031-2\/\",\"url\":\"https:\/\/hostamy.com\/7031-2\/\",\"name\":\"- Hostamy - strumenti per strutture a tema affitti brevi\",\"isPartOf\":{\"@id\":\"https:\/\/hostamy.com\/#website\"},\"datePublished\":\"2025-06-14T09:34:12+00:00\",\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/hostamy.com\/7031-2\/\"]}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/hostamy.com\/#website\",\"url\":\"https:\/\/hostamy.com\/\",\"name\":\"Hostamy - strumenti per strutture a tema affitti brevi\",\"description\":\"Blog e prodotti per host di case vacanze, LT e B&B a diventare più digitali. Cartelli per la casa, contratto di affitto, Libro degli Ospiti etc.\",\"publisher\":{\"@id\":\"https:\/\/hostamy.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/hostamy.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/hostamy.com\/#organization\",\"name\":\"Hostamy - strumenti per strutture a tema affitti brevi\",\"url\":\"https:\/\/hostamy.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/hostamy.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/hostamy.com\/wp-content\/uploads\/2021\/07\/cropped-1-4-e1627541980492.png\",\"contentUrl\":\"https:\/\/hostamy.com\/wp-content\/uploads\/2021\/07\/cropped-1-4-e1627541980492.png\",\"width\":200,\"height\":200,\"caption\":\"Hostamy - strumenti per strutture a tema affitti brevi\"},\"image\":{\"@id\":\"https:\/\/hostamy.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/hostamy.com\/#\/schema\/person\/83061f65a1dc7f40d3fb40246f6ac56d\",\"name\":\"fc45efdc\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/hostamy.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/3c10615e078dc1972debbe53841fc088400a752a60576387b5ea492a08a811e2?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/3c10615e078dc1972debbe53841fc088400a752a60576387b5ea492a08a811e2?s=96&d=mm&r=g\",\"caption\":\"fc45efdc\"},\"url\":\"https:\/\/hostamy.com\/en_gb\/author\/fc45efdc\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"- Hostamy - strumenti per strutture a tema affitti brevi","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/hostamy.com\/en_gb\/7031-2\/","og_locale":"en_GB","og_type":"article","og_title":"- Hostamy - strumenti per strutture a tema affitti brevi","og_description":"Play at a Casino Online for Free Playing at a casino online for fun, but it’s important to understand the rules and regulations of uv\u00edtac\u00ed bonus Rebuy Stars Casino the games. It is important to read the rules and follow guidelines to avoid falling into traps. It is a good idea that you play at […]","og_url":"https:\/\/hostamy.com\/en_gb\/7031-2\/","og_site_name":"Hostamy - strumenti per strutture a tema affitti brevi","article_published_time":"2025-06-14T09:34:12+00:00","author":"fc45efdc","twitter_card":"summary_large_image","twitter_misc":{"Written by":"fc45efdc","Estimated reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/hostamy.com\/7031-2\/#article","isPartOf":{"@id":"https:\/\/hostamy.com\/7031-2\/"},"author":{"name":"fc45efdc","@id":"https:\/\/hostamy.com\/#\/schema\/person\/83061f65a1dc7f40d3fb40246f6ac56d"},"headline":"No title","datePublished":"2025-06-14T09:34:12+00:00","mainEntityOfPage":{"@id":"https:\/\/hostamy.com\/7031-2\/"},"wordCount":718,"publisher":{"@id":"https:\/\/hostamy.com\/#organization"},"articleSection":["Uncategorized"],"inLanguage":"en-GB"},{"@type":"WebPage","@id":"https:\/\/hostamy.com\/7031-2\/","url":"https:\/\/hostamy.com\/7031-2\/","name":"- Hostamy - strumenti per strutture a tema affitti brevi","isPartOf":{"@id":"https:\/\/hostamy.com\/#website"},"datePublished":"2025-06-14T09:34:12+00:00","inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/hostamy.com\/7031-2\/"]}]},{"@type":"WebSite","@id":"https:\/\/hostamy.com\/#website","url":"https:\/\/hostamy.com\/","name":"Hostamy - strumenti per strutture a tema affitti brevi","description":"Blog e prodotti per host di case vacanze, LT e B&B a diventare più digitali. Cartelli per la casa, contratto di affitto, Libro degli Ospiti etc.","publisher":{"@id":"https:\/\/hostamy.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/hostamy.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/hostamy.com\/#organization","name":"Hostamy - strumenti per strutture a tema affitti brevi","url":"https:\/\/hostamy.com\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/hostamy.com\/#\/schema\/logo\/image\/","url":"https:\/\/hostamy.com\/wp-content\/uploads\/2021\/07\/cropped-1-4-e1627541980492.png","contentUrl":"https:\/\/hostamy.com\/wp-content\/uploads\/2021\/07\/cropped-1-4-e1627541980492.png","width":200,"height":200,"caption":"Hostamy - strumenti per strutture a tema affitti brevi"},"image":{"@id":"https:\/\/hostamy.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/hostamy.com\/#\/schema\/person\/83061f65a1dc7f40d3fb40246f6ac56d","name":"fc45efdc","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/hostamy.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/3c10615e078dc1972debbe53841fc088400a752a60576387b5ea492a08a811e2?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3c10615e078dc1972debbe53841fc088400a752a60576387b5ea492a08a811e2?s=96&d=mm&r=g","caption":"fc45efdc"},"url":"https:\/\/hostamy.com\/en_gb\/author\/fc45efdc\/"}]}},"_links":{"self":[{"href":"https:\/\/hostamy.com\/en_gb\/wp-json\/wp\/v2\/posts\/7031","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hostamy.com\/en_gb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hostamy.com\/en_gb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hostamy.com\/en_gb\/wp-json\/wp\/v2\/users\/23"}],"replies":[{"embeddable":true,"href":"https:\/\/hostamy.com\/en_gb\/wp-json\/wp\/v2\/comments?post=7031"}],"version-history":[{"count":1,"href":"https:\/\/hostamy.com\/en_gb\/wp-json\/wp\/v2\/posts\/7031\/revisions"}],"predecessor-version":[{"id":7032,"href":"https:\/\/hostamy.com\/en_gb\/wp-json\/wp\/v2\/posts\/7031\/revisions\/7032"}],"wp:attachment":[{"href":"https:\/\/hostamy.com\/en_gb\/wp-json\/wp\/v2\/media?parent=7031"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hostamy.com\/en_gb\/wp-json\/wp\/v2\/categories?post=7031"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hostamy.com\/en_gb\/wp-json\/wp\/v2\/tags?post=7031"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}