/** * 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":7281,"date":"2025-08-04T17:08:23","date_gmt":"2025-08-04T17:08:23","guid":{"rendered":"https:\/\/hostamy.com\/?p=7281"},"modified":"2025-08-04T17:08:23","modified_gmt":"2025-08-04T17:08:23","slug":"penny-slot-machine-online-a-novices-overview-to-playing-and-winning","status":"publish","type":"post","link":"https:\/\/hostamy.com\/en_gb\/penny-slot-machine-online-a-novices-overview-to-playing-and-winning\/","title":{"rendered":"Penny Slot Machine Online: A Novice’s Overview to Playing and Winning"},"content":{"rendered":"
When it comes to online slot video games, dime slots have gained tremendous appeal amongst gamers. These video games supply an affordable way to take pleasure in the thrill of rotating the reels and possibly winning huge. In this write-up, we will explore the globe of penny slots online, supplying you with all the details you need to begin playing and increase your chances of winning.<\/p>\n
Whether you are an amateur player or a seasoned bettor trying to find an economical alternative, penny ports can be the excellent selection. These video games enable you to bet just one cent per spin, making them obtainable to players with any kind of spending plan. Regardless of the inexpensive per spin, penny ports provide exciting gameplay and the capacity for significant profits.<\/p>\n
Cent slots work likewise to other on the internet port games, with the main distinction being the minimal bet amount. While standard port video games may require a minimal bet of numerous dollars per spin, cent ports allow you to bet as reduced elitcasino bonus kodu<\/a> as one cent. This price element makes dime slots a prominent option for several players.<\/p>\n Despite the reduced betting amount, penny slots use a vast array of features and styles. You can locate cent ports with different paylines, bonus offer rounds, and also modern prizes. This diversity ensures that there is a penny port game to fit every player’s choices and gaming style.<\/p>\n When playing penny slots, it is essential to recognize the paytable and the guidelines of the video game. The paytable offers beneficial details on the winning combinations, unique icons, and reward attributes offered in the game. Familiarizing yourself with the paytable will help you make notified decisions while playing and raise your opportunities of winning.<\/p>\n While winning at dime slots is mostly based upon good luck, there are a couple of strategies you can use to raise your chances of hitting a winning mix:<\/p>\n Penny ports online offer a superb possibility for gamers to enjoy the excitement of spinning the reels without breaking the bank. With their reduced minimum bets and a wide range of attributes, cent slots provide enjoyment for gamers of all degrees. By complying with the tips and methods described in this article, you can boost your opportunities of winning and make one of the most out of your penny slot experience. Bear in mind to gamble sensibly and enjoy!<\/p>","protected":false},"excerpt":{"rendered":" When it comes to online slot video games, dime slots have gained tremendous appeal amongst gamers. These video games supply an affordable way to take pleasure in the thrill of rotating the reels and possibly winning huge. In this write-up, we will explore the globe of penny slots online, supplying you with all the details […]<\/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-7281","post","type-post","status-publish","format-standard","hentry","category-uncategorized","pmpro-has-access"],"yoast_head":"\n\n
Tips and Techniques for Winning at Penny Slot Machine<\/h2>\n
\n
Final thought<\/h2>\n