/** * 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":7047,"date":"2025-06-19T01:53:18","date_gmt":"2025-06-19T01:53:18","guid":{"rendered":"https:\/\/hostamy.com\/?p=7047"},"modified":"2025-06-19T01:53:18","modified_gmt":"2025-06-19T01:53:18","slug":"casino-settlement-approaches-in-canada-everything-you-required-to-know","status":"publish","type":"post","link":"https:\/\/hostamy.com\/en_gb\/casino-settlement-approaches-in-canada-everything-you-required-to-know\/","title":{"rendered":"Casino Settlement Approaches in Canada: Everything You Required to Know"},"content":{"rendered":"

When it involves on the internet gambling establishments in Canada, among the most crucial as nuovi giochi casino online<\/a>pects to consider is the repayment approaches offered for down payments and withdrawals. An effective and safe and secure repayment system is essential for a smooth and delightful gambling experience.<\/p>\n

In this write-up, we will certainly check out the different casino payment techniques in Canada, their benefits and drawbacks, in addition to supply you with some beneficial tips to make sure a smooth transaction procedure.<\/p>\n

The Value of Picking the Right Casino Site Settlement Approach<\/h2>\n

Picking the right repayment technique is critical for numerous reasons. Most importantly, it figures out the convenience and rate of your transactions. A trusted settlement technique need to allow for quick deposits and speedy withdrawals, making certain that you can access your profits without unneeded delays.<\/p>\n

Second of all, safety is of utmost relevance when it concerns on-line gambling. Gamers need to make certain that their financial information and individual data are shielded from any type of potential hazards. As a result, it is necessary to choose a repayment technique that offers durable safety procedures and file encryption innovation.<\/p>\n

Lastly, the availability of various payment alternatives caters to the varied needs and choices of gamers. Some might choose conventional techniques, such as credit cards or financial institution transfers, while others may go with more modern options like e-wallets or cryptocurrencies. Having a large range of selections ensures that every player can find a settlement method that fits their requirements.<\/p>\n

Popular Online Casino Repayment Approaches in Canada<\/h2>\n

1. Credit and Debit Cards: Credit and debit cards are extensively accepted in online casino sites across Canada. Visa and Mastercard are the most commonly used brand names. They supply ease and familiarity to players, allowing for quick and easy purchases. However, some players might be reluctant to provide their card information online as a result of safety issues.<\/p>\n

2. Bank Transfers: Financial institution transfers are a trustworthy but lengthy settlement method. Players can transfer funds straight from their bank account to the casino. While this approach may take longer than others, it is thought about one of the most safe options as it involves the financial institutions’ safety systems. However, the handling time and possible fees may be a disadvantage for some players.<\/p>\n

3. E-Wallets: E-wallets have obtained popularity recently due to their convenience and boosted security steps. Carriers like PayPal, Neteller, and Skrill enable players to develop an on-line account where they can save and handle their funds. E-wallets offer fast deposits and withdrawals, as well as an extra layer of security by keeping the gamer’s monetary details different from the gambling establishment.<\/p>\n