/** * 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); } Prezzi servizio crezione sito - Hostamy - strumenti per strutture a tema affitti brevi
Hai una domanda?
Messaggio inviato Chiudi

Prezzi servizio crezione sito

FAI DA TE!

€‎ 109

Sito fai da te fatto con Canva!

Quello che devi fare è solo cliccare sul link per scaricare i modelli, mettere le tue foto e seguire il video istruzione che ti viene dato.

13 MODELLI FACILI DA EDITARE E MODIFICABILI AL 100%!

VIDEO TUTORIAL CHE TI SPIEGA PASSO PASSO COSA FARE

DOMINIO GRATUITO CON CANVA

INFINITI DOWNLOAD!

Homepage: Foto principale struttura, descrizione di te e della tua struttura e servizi, descrizione dove mangiare e bere, descrizioni attrazioni del luogo, mappa interattiva Google, link alle pagine social. Si tratta di un sito Vetrina.

NESSUN ABBONAMENTO ANNUALE PREVISTO! NO COSTI NASCOSTI

ONEPAGE

€‎ 400*

Sitoweb base statico comprendente:

Homepage: Foto principale struttura, descrizione struttura e servizi.

Modulo contatti preventivo, Whatsapp ed email

Link alle pagine social

SEO base

IN OMAGGIO Cartello di Benvenuto WIFI con Codice QR per la tua struttura 

*Il prezzo non include l’acquisto del dominio/hosting

SILVER

€‎ 700*

Sitoweb base comprendente:

Homepage: Foto principale struttura, descrizione struttura e servizi, descrizione dove mangiare e bere, descrizioni attrazioni del luogo, sezione delle offerte e sezione delle recensioni.

Pagina Galleria/struttura: foto di tutta la struttura

Pagina contatti: con modulo preventivo, Whatsapp ed email

Link alle pagine social

SEO base

IN OMAGGIO il Cartello di Benvenuto WIFI con codice QR per la tua struttura

*Il prezzo non include l’acquisto del dominio/hosting

GOLD

€‎ 1100*

Sitoweb dinamico comprendente:

Homepage: Foto principale struttura, descrizione struttura e servizi, descrizione dove mangiare e bere, descrizioni attrazioni del luogo.

Pagina Galleria: foto di tutta la struttura

Pagina contatti: con modulo preventivo, whatsapp ed email

SEO base

Link alle pagine social

IN OMAGGIO il Cartello di Benvenuto WIFI con codice QR per la tua struttura

Apertura pagine Facebook e Instagram professionale con Business Suite

Apertura account Google My Business e presenza mappe Google

*Il prezzo non include l’acquisto del dominio/hosting

PLATINUM

‎Quota personalizzata

Sitoweb dinamico + integrazione channel manager comprendente:

Homepage: Foto principale struttura, descrizione struttura e servizi, descrizione dove mangiare e bere, descrizioni attrazioni del luogo. Link alle pagine social

Pagina Galleria: foto di tutta la struttura

Pagina contatti: con modulo preventivo, whatsapp ed email

Search engine: inserimento da parte del guest delle date di check- in e check-out per cercare la disponibilità

Pagamenti e Carrello: gateway pagamenti con integrazioni a Paypal e altri POS virtuali

Apertura pagine Facebook e Instagram professionale con Business Suite

Apertura account Google My Business e presenza mappe Google

Channel Manager: sincronizzazione dei calendari con aggiornamento automatico delle disponibilità e tariffe, invio schedine AlloggiatiWeb, Moduli ISTAT, rete competitor – tieni sotto controllo il mercato analizzando in tempo reale tariffe dei tuoi concorrenti.

Link alle pagine social

IN OMAGGIO il Cartello di Benvenuto WIFI con codice QR per la tua struttura

it_ITItalian
Select your currency
EUR Euro