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

\n What is a No Deposit Bonus Casino Bonus?
\n<\/h1>\n

\n Online casinos often offer no deposit bonuses to new players to try to lure them to their site over their competitors. Prospective players must first sign on the casino’s website to be eligible to receive any no deposit bonus. A customer service representative is usually able to assist you with this process. After registration deposits, wagering, and withdrawal are usually permitted.\n<\/p>\n<\/p>\n

\n In order to cash out any casino bonuses, you must adhere to the wagering requirements. There are some requirements that must be fulfilled before you can cash out any casino bonuses. The requirements vary based on the type of bet that the player wants to place. Some require that players sign up for an account, while others only require that the player sign up and create a password and user name. Certain online casinos may require specific types of deposits. In casino bonuses that are free players are typically required to use certain banks to meet wagering requirements.\n<\/p>\n<\/p>\n

\n Many websites offer bonus without deposit. However, there is often an element of risk. Some casinos require that players meet certain requirements before they can cash out winnings. In most instances, these requirements are fairly straightforward, although it is helpful to go over the fine print on every promotion to ensure all conditions are fulfilled.\n<\/p>\n<\/p>\n

\n The Tropicana casino located in Las Vegas offers a no deposit bonus code that can be used to withdraw cash. Instead, the code is intended to allow players to “play” at the casino until they enter the mandatory clearance requirement. A player who does casinoclubonline<\/a> not satisfy the clearance requirement cannot withdraw winnings. This is a simple requirement.\n<\/p>\n<\/p>\n

\n Casinos can offer promotions that do not require you to have an account at a bank. For instance, the promo code for the Golden Nugget Hotel in Las Vegas requires deposits of a certain minimum amount. After the minimum amount has been reached, the guests can transfer their deposit to the virtual credit card. This is processed the same way as a regular credit card. Once this has been done and they’re free to withdraw funds from the credit card as they like.\n<\/p>\n<\/p>\n

\n Online casinos provide promotions that do not require deposits. However, midas casino espa\u00f1a<\/a> these bonuses are different from traditional casinos in a variety of ways. For instance, although casinos online might require new players to download an application or a set number of e-wallet code before they are able to begin playing however, they usually allow players to play without completing these downloads and e-wallets. This means that any money that remains in their accounts after a player wins does not have to be deposited into a bank account, it can be simply withdrawn. This is usually viewed as a good feature by online casinos that offer no deposit bonuses, because it allows them to keep an excellent poker room rating while still attracted by new players.\n<\/p>\n<\/p>\n

\n Casinos online differ from traditional casinos in that they do not require players to use a promo code. This means that the first winnings of a player won’t be added to their balance and will not impact any deposit bonuses or reload bonuses. The players should be aware that there are no deposit bonuses or reload bonuses are offered at casinos. These bonuses only apply to games that are played in the Cash System section. All losses and winnings are subject to the same taxes. This means that such bonuses, like free roulette spins cannot be used to buy tickets for an event in the VIP slot section on the site, or to purchase tickets for baccarat.\n<\/p>\n<\/p>\n

\n Online casinos can also vary dramatically when it comes to bonus requirements and the structure of bonuses. For instance, some casinos offer special drafts of poker software that come with free or low cost spins with separate drafts for Blackjack, Slots, and Omaha. A majority of sites allow draft entries to their loyalty programs, in addition to the free and free spins. These drafts can come with no cost or require deposit funds to play. In addition, some casinos welcome bonus participants with various free entries into their loyalty program and others require certain amounts of credit or debit card information in order to receive an offer of welcome bonus.<\/p>","protected":false},"excerpt":{"rendered":"

What is a No Deposit Bonus Casino Bonus? Online casinos often offer no deposit bonuses to new players to try to lure them to their site over their competitors. Prospective players must first sign on the casino’s website to be eligible to receive any no deposit bonus. A customer service representative is usually able to […]<\/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-7175","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\/7175-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=\"What is a No Deposit Bonus Casino Bonus? Online casinos often offer no deposit bonuses to new players to try to lure them to their site over their competitors. Prospective players must first sign on the casino’s website to be eligible to receive any no deposit bonus. A customer service representative is usually able to […]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/hostamy.com\/en_gb\/7175-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Hostamy - strumenti per strutture a tema affitti brevi\" \/>\n<meta property=\"article:published_time\" content=\"2025-07-29T11:44: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\/7175-2\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/hostamy.com\/7175-2\/\"},\"author\":{\"name\":\"fc45efdc\",\"@id\":\"https:\/\/hostamy.com\/#\/schema\/person\/83061f65a1dc7f40d3fb40246f6ac56d\"},\"headline\":\"No title\",\"datePublished\":\"2025-07-29T11:44:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/hostamy.com\/7175-2\/\"},\"wordCount\":718,\"publisher\":{\"@id\":\"https:\/\/hostamy.com\/#organization\"},\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"en-GB\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/hostamy.com\/7175-2\/\",\"url\":\"https:\/\/hostamy.com\/7175-2\/\",\"name\":\"- Hostamy - strumenti per strutture a tema affitti brevi\",\"isPartOf\":{\"@id\":\"https:\/\/hostamy.com\/#website\"},\"datePublished\":\"2025-07-29T11:44:12+00:00\",\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/hostamy.com\/7175-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\/7175-2\/","og_locale":"en_GB","og_type":"article","og_title":"- Hostamy - strumenti per strutture a tema affitti brevi","og_description":"What is a No Deposit Bonus Casino Bonus? Online casinos often offer no deposit bonuses to new players to try to lure them to their site over their competitors. Prospective players must first sign on the casino’s website to be eligible to receive any no deposit bonus. A customer service representative is usually able to […]","og_url":"https:\/\/hostamy.com\/en_gb\/7175-2\/","og_site_name":"Hostamy - strumenti per strutture a tema affitti brevi","article_published_time":"2025-07-29T11:44: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\/7175-2\/#article","isPartOf":{"@id":"https:\/\/hostamy.com\/7175-2\/"},"author":{"name":"fc45efdc","@id":"https:\/\/hostamy.com\/#\/schema\/person\/83061f65a1dc7f40d3fb40246f6ac56d"},"headline":"No title","datePublished":"2025-07-29T11:44:12+00:00","mainEntityOfPage":{"@id":"https:\/\/hostamy.com\/7175-2\/"},"wordCount":718,"publisher":{"@id":"https:\/\/hostamy.com\/#organization"},"articleSection":["Uncategorized"],"inLanguage":"en-GB"},{"@type":"WebPage","@id":"https:\/\/hostamy.com\/7175-2\/","url":"https:\/\/hostamy.com\/7175-2\/","name":"- Hostamy - strumenti per strutture a tema affitti brevi","isPartOf":{"@id":"https:\/\/hostamy.com\/#website"},"datePublished":"2025-07-29T11:44:12+00:00","inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/hostamy.com\/7175-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\/7175","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=7175"}],"version-history":[{"count":1,"href":"https:\/\/hostamy.com\/en_gb\/wp-json\/wp\/v2\/posts\/7175\/revisions"}],"predecessor-version":[{"id":7176,"href":"https:\/\/hostamy.com\/en_gb\/wp-json\/wp\/v2\/posts\/7175\/revisions\/7176"}],"wp:attachment":[{"href":"https:\/\/hostamy.com\/en_gb\/wp-json\/wp\/v2\/media?parent=7175"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hostamy.com\/en_gb\/wp-json\/wp\/v2\/categories?post=7175"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hostamy.com\/en_gb\/wp-json\/wp\/v2\/tags?post=7175"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}