Plugin Directory

Changeset 3464988


Ignore:
Timestamp:
02/19/2026 10:24:29 AM (5 weeks ago)
Author:
multisafepayplugin
Message:

Update to version 6.11.0 from GitHub

Location:
multisafepay
Files:
14 added
46 edited
1 copied

Legend:

Unmodified
Added
Removed
  • multisafepay/tags/6.11.0/assets/public/js/multisafepay-blocks/build/index.asset.php

    r3393028 r3464988  
    1 <?php return array('dependencies' => array(), 'version' => '4253c5748ae7a4b32641');
     1<?php return array('dependencies' => array(), 'version' => 'bacad67eb9f6508a056e');
  • multisafepay/tags/6.11.0/assets/public/js/multisafepay-blocks/build/index.js

    r3393028 r3464988  
    1 (()=>{const e=e=>({name:e.id,label:e.title,paymentMethodId:e.id,edit:React.createElement("div",null,""),canMakePayment:()=>!0,ariaLabel:e.title,content:React.createElement("div",null,e.description)});document.addEventListener("DOMContentLoaded",()=>{(({wc:t,multisafepay_gateways:a})=>{const{registerPaymentMethod:n}=t.wcBlocksRegistry;a.forEach(t=>{(t.is_admin||"multisafepay_applepay"!==t.id||window.ApplePaySession&&ApplePaySession.canMakePayments())&&n(e(t))})})(window)})})();
     1(()=>{const e=e=>{const t=[];return e.icon&&t.push(React.createElement("img",{src:e.icon,alt:e.title,style:{height:"24px",width:"auto",marginRight:"8px"}})),t.push(e.title),{name:e.id,label:React.createElement("span",{style:{display:"flex",alignItems:"center"}},...t),paymentMethodId:e.id,edit:React.createElement("div",null,""),canMakePayment:()=>!0,ariaLabel:e.title,content:React.createElement("div",null,e.description)}};document.addEventListener("DOMContentLoaded",()=>{(({wc:t,multisafepay_gateways:a})=>{const{registerPaymentMethod:n}=t.wcBlocksRegistry;a.forEach(t=>{(t.is_admin||"multisafepay_applepay"!==t.id||window.ApplePaySession&&ApplePaySession.canMakePayments())&&n(e(t))})})(window)})})();
  • multisafepay/tags/6.11.0/multisafepay.php

    r3393028 r3464988  
    55 * Plugin URI:              https://docs.multisafepay.com/docs/woocommerce
    66 * Description:             MultiSafepay Payment Plugin
    7  * Version:                 6.10.0
     7 * Version:                 6.11.0
    88 * Author:                  MultiSafepay
    99 * Author URI:              https://www.multisafepay.com
     
    1212 * License URI:             http://www.gnu.org/licenses/gpl-3.0.html
    1313 * Requires at least:       6.0
    14  * Tested up to:            6.8.3
     14 * Tested up to:            6.9.1
    1515 * WC requires at least:    6.0.0
    16  * WC tested up to:         10.2.2
     16 * WC tested up to:         10.5.2
    1717 * Requires PHP:            7.3
    1818 * Text Domain:             multisafepay
  • multisafepay/tags/6.11.0/readme.txt

    r3393028 r3464988  
    33Tags: multisafepay, payment gateway, credit cards, ideal, bnpl
    44Requires at least: 6.0
    5 Tested up to: 6.8.3
     5Tested up to: 6.9.1
    66Requires PHP: 7.3
    7 Stable tag: 6.10.0
    8 License: MIT
     7Stable tag: 6.11.0
     8License: GPL-3.0-or-later
    99
    1010MultiSafepay offers the most comprehensive payment solutions. Easily integrate the payment solutions of MultiSafepay into your webshop.
     
    2020
    2121Payment methods:
     22By default, any payment method you activate in your MultiSafepay account will be available to be activated in the plugin, but you can also choose to show only specific payment methods in your checkout.
     23The plugin supports all the payment methods available in your MultiSafepay account, including but not limited to:
     24
    2225* AfterPay
    2326* Alipay
     
    123126= Can I refund orders? =
    124127
    125 Yes, you can fully or partially refund transactions directly from your WooCommerce backend for all payment methods, except for [Buy now pay later](https://docs.multisafepay.com/docs/bnpl) payment methods in which it is only possible to process full refunds.
     128Yes, you can fully or partially refund transactions directly from your WooCommerce backend for all payment methods.
    126129You can also refund from your [MultiSafepay Control](https://merchant.multisafepay.com)
    127130
     
    139142
    140143== Changelog ==
    141 = Release Notes - WooCommerce 6.10.0 (Nov 10th, 2025) =
     144
     145= Release Notes - MultiSafepay 6.11.0 (Feb 19th, 2026) =
     146
     147### Added
     148+ PLGWOOS-1018: Add payment icons to WooCommerce Checkout Blocks
     149
     150### Fixed
     151+ PLGWOOS-1032: Fix WC_Blocks_Utils::has_block_in_page() fails to detect checkout block when nested inside other blocks
     152+ PLGWOOS-1019: Fix the duplicated 'multisafepay_time_unit' setting field argument
     153
     154### Changed
     155+ PLGWOOS-1029: REST Response Cache Control
     156
     157= Release Notes - MultiSafepay 6.10.0 (Nov 10th, 2025) =
    142158
    143159### Added
     
    148164+ PLGWOOS-956: MultiSafepay PostePay is being listed as only one payment method, but it should be two
    149165
    150 = Release Notes - WooCommerce 6.9.0 (Jun 5th, 2025) =
     166= Release Notes - MultiSafepay 6.9.0 (Jun 5th, 2025) =
    151167
    152168### Added
     
    166182+ PLGWOOS-1004: Adding shipping method name in the Order Request, instead of generic label "Shipping"
    167183
    168 = Release Notes - WooCommerce 6.8.3 (Apr 9th, 2025) =
     184= Release Notes - MultiSafepay 6.8.3 (Apr 9th, 2025) =
    169185
    170186### Fixed
    171187+ PLGWOOS-992: Prevent processing a request on the REST QR related endpoints using a security token
    172188
    173 = Release Notes - WooCommerce 6.8.2 (Apr 7th, 2025) =
     189= Release Notes - MultiSafepay 6.8.2 (Apr 7th, 2025) =
    174190
    175191### Fixed
     
    178194+ PLGWOOS-987: Typecast as string the value that will be defined as merchant Item ID within the QR request
    179195
    180 = Release Notes - WooCommerce 6.8.1 (Apr 4th, 2025) =
     196= Release Notes - MultiSafepay 6.8.1 (Apr 4th, 2025) =
    181197
    182198### Fixed
     
    184200+ PLGWOOS-982: Return early when QR webhook request fails
    185201
    186 = Release Notes - WooCommerce 6.8.0 (Apr 1st, 2025) =
     202= Release Notes - MultiSafepay 6.8.0 (Apr 1st, 2025) =
    187203
    188204### Added
     
    192208+ PLGWOOS-957: Fix filter that returns payment methods that supports payment component to return only enabled methods
    193209
    194 = Release Notes - WooCommerce 6.7.3 (Mar 4th, 2025) =
     210= Release Notes - MultiSafepay 6.7.3 (Mar 4th, 2025) =
    195211
    196212### Fixed
    197213+ PLGWOOS-973: Round shopping cart item tax rates in BILLINK gateway
    198214
    199 = Release Notes - WooCommerce 6.7.2 (Feb 14th, 2025) =
     215= Release Notes - MultiSafepay 6.7.2 (Feb 14th, 2025) =
    200216
    201217### Fixed
    202218+ PLGWOOS-971: Fix iDEAL payment method not being shown on WooCommerce Checkout Blocks
    203219
    204 = Release Notes - WooCommerce 6.7.1 (Feb 7th, 2025) =
     220= Release Notes - MultiSafepay 6.7.1 (Feb 7th, 2025) =
    205221
    206222### Added
    207223+ PLGWOOS-968: Add system report values from the payment method's user role setting and enhance logging for filter methods
    208224
    209 = Release Notes - WooCommerce 6.7.0 (Jan 28th, 2025) =
     225= Release Notes - MultiSafepay 6.7.0 (Jan 28th, 2025) =
    210226
    211227### Added
     
    220236+ PLGWOOS-963: Fix redirection after canceling a payment, when the user is using the "order-pay" endpoint
    221237
    222 = Release Notes - WooCommerce 6.6.2 (Nov 5th, 2024) =
     238= Release Notes - MultiSafepay 6.6.2 (Nov 5th, 2024) =
    223239
    224240### Added
     
    228244+ PLGWOOS-953: Change label of the group cards setting field
    229245
    230 = Release Notes - WooCommerce 6.6.1 (Sep 4th, 2024) =
     246= Release Notes - MultiSafepay 6.6.1 (Sep 4th, 2024) =
    231247
    232248### Fixed
     
    236252+ PLGWOOS-950: Remove iDEAL issuers of the payment component
    237253
    238 = Release Notes - WooCommerce 6.6.0 (Jul 8th, 2024) =
     254= Release Notes - MultiSafepay 6.6.0 (Jul 8th, 2024) =
    239255
    240256### Added
     
    245261+ PLGWOOS-948: General improvements to increase unit test coverage
    246262
    247 = Release Notes - WooCommerce 6.5.1 (Jun 7th, 2024) =
     263= Release Notes - MultiSafepay 6.5.1 (Jun 7th, 2024) =
    248264
    249265### Fixed
     
    251267+ PLGWOOS-937: Fix Payment Components, where the amount is wrongly being set
    252268
    253 = Release Notes - WooCommerce 6.5.0 (May 22nd, 2024) =
     269= Release Notes - MultiSafepay 6.5.0 (May 22nd, 2024) =
    254270
    255271### Added
     
    261277+ PLGWOOS-935: Fix Payment Component on order-pay page endpoint, not loading if the shopping cart is empty
    262278
    263 = Release Notes - WooCommerce 6.4.3 (May 17th, 2024) =
     279= Release Notes - MultiSafepay 6.4.3 (May 17th, 2024) =
    264280
    265281### Fixed
    266282+ PLGWOOS-922: Reduce the amount of API request improving general performance of the plugin
    267283
    268 = Release Notes - WooCommerce 6.4.2 (May 6th, 2024) =
     284= Release Notes - MultiSafepay 6.4.2 (May 6th, 2024) =
    269285
    270286### Fixed
    271287+ PLGWOOS-922: Reduce the amount of request done to the payment-methods endpoint, from the admin
    272288
    273 = Release Notes - WooCommerce 6.4.1 (Apr 17th, 2024) =
     289= Release Notes - MultiSafepay 6.4.1 (Apr 17th, 2024) =
    274290
    275291### Fixed
    276292+ PLGWOOS-920: Fix Apple Pay and Google Pay being shown in WooCommerce blocks, when are using direct payment buttons
    277293
    278 = Release Notes - WooCommerce 6.4.0 (Apr 17th, 2024) =
     294= Release Notes - MultiSafepay 6.4.0 (Apr 17th, 2024) =
    279295
    280296### Added
     
    285301+ DAVAMS-747: Fix 'template_id' within the Payment Components
    286302
    287 = Release Notes - WooCommerce 6.3.1 (Mar 13th, 2024) =
     303= Release Notes - MultiSafepay 6.3.1 (Mar 13th, 2024) =
    288304
    289305### Fixed
     
    293309+ PLGWOOS-912: Ignore offline action - notifications related with pretransactions
    294310
    295 = Release Notes - WooCommerce 6.3.0 (Mar 11th, 2024) =
     311= Release Notes - MultiSafepay 6.3.0 (Mar 11th, 2024) =
    296312
    297313### Added
    298314+ PLGWOOS-866: Add Apple Pay and Google Pay direct
    299315
    300 = Release Notes - WooCommerce 6.2.1 (Feb 1st, 2024) =
     316= Release Notes - MultiSafepay 6.2.1 (Feb 1st, 2024) =
    301317
    302318### Fixed
     
    304320+ PLGWOOS-901: Remove duplicated method reinit_payment_component()
    305321
    306 = Release Notes - WooCommerce 6.2.0 (Nov 13th, 2023) =
     322= Release Notes - MultiSafepay 6.2.0 (Nov 13th, 2023) =
    307323
    308324### Added
    309325+ PLGWOOS-872: Add support for [High-Performance Order Storage](https://woo.com/document/high-performance-order-storage/)
    310326
    311 = Release Notes - WooCommerce 6.1.2 (Oct 19th, 2023) =
     327= Release Notes - MultiSafepay 6.1.2 (Oct 19th, 2023) =
    312328
    313329### Fixed
     
    317333+ PLGWOOS-890: Bring back the payment component setting field to allow users to disable it.
    318334
    319 = Release Notes - WooCommerce 6.1.1 (Oct 16th, 2023) =
     335= Release Notes - MultiSafepay 6.1.1 (Oct 16th, 2023) =
    320336
    321337### Fixed
    322338+ PLGWOOS-887: Disable Payment Components for Gift Cards payment methods, even when API is returning Payment Component is allowed
    323339
    324 = Release Notes - WooCommerce 6.1.0 (Oct 11th, 2023) =
     340= Release Notes - MultiSafepay 6.1.0 (Oct 11th, 2023) =
    325341
    326342### Added
     
    330346+ PLGWOOS-882: Enable Payment Components by default in all payment methods where is available
    331347
    332 = Release Notes - WooCommerce 5.4.1 (Sep 27th, 2023) =
    333 
    334 ### Fixed
    335 + PLGWOOS-878: Fix Payment Components not being shown.
    336 
    337 = Release Notes - WooCommerce 5.4.0 (Sep 26th, 2023) =
    338 
    339 ### Added
    340 + PLGWOOS-870: Add support to define completed as a final order status where notification will not change the order status
    341 
    342 ### Fixed
    343 + PLGWOOS-871: Fix the minimum amount filter failing in the order-pay page
    344 
    345 ### Changed
    346 + DAVAMS-665 General refactor for better error handling
    347 
    348 = Release Notes - WooCommerce 5.3.0 (Aug 10th, 2023) =
    349 
    350 ### Added
    351 + DAVAMS-636: Add Zinia payment method
    352 
    353 ### Changed
    354 + DAVAMS-640: Refactor of the Payment Component
    355 
    356 = Release Notes - WooCommerce 5.2.2 (Jun 19th, 2023) =
    357 
    358 ### Fixed
    359 + PLGWOOS-852: Fix typo in description of Pay After Delivery Installments
    360 
    361 ### Changed
    362 + DAVAMS-621: Rename "Credit Card" payment method as "Card payment"
    363 + PLGWOOS-844: Change API Keys settings field to password type
    364 
    365 = Release Notes - WooCommerce 5.2.1 (Feb 22nd, 2023) =
    366 
    367 ### Fixed
    368 + PLGWOOS-850: Fix 'Tested up to' value in readme.txt file to reflect the latest WordPress version tested, instead of the latest WooCommerce set by mistake
    369 
    370 = Release Notes - WooCommerce 5.2.0 (Feb 22nd, 2023) =
    371 
    372 ### Added
    373 + DAVAMS-599: Add new setting field to disable the shopping cart within the order request
    374 + DAVAMS-573: Add Pay After Delivery Installments payment method
    375 
    376 ### Removed
    377 + DAVAMS-571: Remove Google Analytics tracking ID within the OrderRequest object
    378 + PLGWOOS-815: Remove uninstall script
    379 
    380 ### Changed
    381 + DAVAMS-581: Rebrand Pay After Delivery with new logos
    382 
    383 = Release Notes - WooCommerce 5.1.2 (Jan 10th, 2022) =
    384 
    385 ### Fixed
    386 + PLGWOOS-842: Fix Riverty terms and conditions field validation when payment method is set as redirect type
    387 
    388 ### Changed
    389 + PLGWOOS-840: Update Dutch and Belgian translations
    390 
    391 = Release Notes - WooCommerce 5.1.1 (Dec 6th, 2022) =
    392 
    393 ### Changed
    394 + DAVAMS-547: AfterPay -> Riverty rebrand
    395 + PLGWOOS-837: Declare support for WordPress version 6.1 and WooCommerce version 7.1
    396 
    397 = Release Notes - WooCommerce 5.1.0 (Sep 30th, 2022) =
    398 
    399 ### Added
    400 + PLGWOOS-828: Add Google Pay
    401 + PLGWOOS-516: Add Amazon Pay
    402 + PLGWOOS-516: Add support for [WooCommerce Blocks](https://wordpress.org/plugins/woo-gutenberg-products-block/) for redirect payment methods
    403 
    404 ### Fixed
    405 + PLGWOOS-553: Fix deprecated docs links
    406 
    407 = Release Notes - WooCommerce 5.0.0 (Sep 1st, 2022) =
    408 
    409 ### Added
    410 + PLGWOOS-829: Improvement over the error handling in MultiSafepayClient
    411 
    412 ### Changed
    413 + PLGWOOS-827: Drop support for PHP 7.2
    414 
    415 = Release Notes - WooCommerce 4.17.2 (Jul 22nd, 2022) =
    416 
    417 ### Fixed
    418 + PLGWOOS-825: Fix an issue in which some payment methods are not being shown in the checkout, because of the setting field country selector is assuming the wrong value in some cases
    419 
    420 = Release Notes - WooCommerce 4.17.1 (Jul 22nd, 2022) =
    421 
    422 ### Changed
    423 + PLGWOOS-817: Improvement in the escaping of the outputs of the settings page
    424 
    425 = Release Notes - WooCommerce 4.17.0 (Jul 21st, 2022) =
    426 
    427 ### Removed
    428 + PLGWOOS-816: Remove validation to check if a gateway is enabled in the merchant account, before activate the WooCommerce payment method
    429 + PLGWOOS-818: Remove upgrade notice functionality in plugin list page
    430 
    431 ### Changed
    432 + PLGWOOS-817: Improvement in sanitization and validation of the inputs, and escaping the outputs
    433 
    434 = Release Notes - WooCommerce 4.16.0 (Jul 20th, 2022) =
    435 
    436 ### Added
    437 + DAVAMS-490: Add MyBank payment method
    438 
    439 ### Removed
    440 + PLGWOOS-811: Remove download plugin logs button and related methods
    441 
    442 = Release Notes - WooCommerce 4.15.0 (May 25th, 2022) =
    443 
    444 ### Added
    445 + DAVAMS-470: Add terms and conditions checkbox to AfterPay
    446 
    447 ### Changed
    448 + PLGWOOS-805: Declare support for Wordpress 6.0
    449 
    450 = Release Notes - WooCommerce 4.14.0 (May 19th, 2022) =
    451 
    452 ### Added
    453 + DAVAMS-476: Add Alipay+
    454 
    455 ### Changed
    456 + PLGWOOS-804: Use default locale if 'get_locale' returns null to prevent third party plugin errors
    457 + PHPSDK-93: Upgrade the [PHP-SDK](https://github.com/MultiSafepay/php-sdk) dependency to 5.5.0
    458 
    459 = Release Notes - WooCommerce 4.13.1 (Mar 23rd, 2022) =
    460 
    461 ### Added
    462 + PLGWOOS-792: Declare support for WordPress 5.9.2 and WooCommerce 6.3.1
    463 + PLGWOOS-790: Improvement on debug mode, logging the body of the POST notification request
    464 
    465 ### Fixed
    466 + PLGWOOS-791: Fix error when WooCommerce order is not found after receive a valid POST notification
    467 
    468 = Release Notes - WooCommerce 4.13.0 (Feb 1st, 2022) =
    469 
    470 ### Added
    471 + PLGWOOS-770: Add payment component support for payment options: Visa, Mastercard, Maestro and American Express
    472 + PLGWOOS-774: Add support to process 'smart_coupon' coupons from Smart Coupons third party plugin
    473 + PLGWOOS-775: Log shopping cart content when debug mode is enabled
    474 
    475 = Release Notes - WooCommerce 4.12.0 (Jan 13th, 2022) =
    476 
    477 ### Added
    478 + PLGWOOS-769: Add new filter 'multisafepay_merchant_item_id' to allow third party developers overwrite the merchant_item_id property within the ShoppingCart object
    479 
    480 ### Changed
    481 + PLGWOOS-744: Update 'Betaal per Maand' default max_amount value, according with new product rules
    482 + PLGWOOS-759: Rebrand Sofort payment method
    483 
    484 = Release Notes - WooCommerce 4.11.0 (Jan 4th, 2022) =
    485 
    486 ### Added
    487 + PLGWOOS-745: Add Payment Component
    488 
    489 ### Changed
    490 + PLGWOOS-765: Refactor PaymentMethodsController::generate_orders_from_backend() to work only with one argument and avoiding conflicts with third party plugins
    491 + PLGWOOS-745: Tokenization now works through the Payment Component
    492 
    493 ### Fixed
    494 + PLGWOOS-763: Fix error on plugin list when application can not connect with WordPress network
    495 
    496 = Release Notes - WooCommerce 4.10.0 (Dec 13th, 2021) =
    497 
    498 ### Added
    499 + PLGWOOS-748: Add PHP-SDK version to system report
    500 + PLGWOOS-758: Add filter to turn notifications to GET method
    501 
    502 ### Removed
    503 + DAVAMS-460: Remove ING Home’Pay
    504 
    505 ### Changed
    506 + PLGWOOS-695: Replace HTTP Client, use WP_HTTP instead kriswallsmith/buzz
    507 + PLGWOOS-749: Replace logo of Bancontact for new one
    508 
    509 ### Fixed
    510 + PLGWOOS-752: Fix missing placeholder for Test API Key input field in settings page
    511 
    512 = Release Notes - WooCommerce 4.9.0 (Oct 18th, 2021) =
    513 
    514 ### Added
    515 + PLGWOOS-715: Add 2 "Generic Gateways" which include a flexible gateway code that allows any merchant to connect to almost every payment method we offer.
    516 + PLGWOOS-746: Declare support for WordPress 5.8.1 and WooCommerce 5.8.0
    517 
    518 ### Changed
    519 + PLGWOOS-740: Improve the helper text of the Google Analytics ID setting field, adding a link to Documentation Center
    520 + PLGWOOS-747: Upgrade the [PHP-SDK](https://github.com/MultiSafepay/php-sdk) component to 5.3.0
    521 
    522 ### Fixed
    523 + PLGWOOS-739: Fix fatal error related with undefined method when processing orders using iDEAL QR
    524 + PLGWOOS-743: Fix broken links to Documentation Center in settings page
    525 
    526 = Release Notes - WooCommerce 4.8.3 (Sep 6th, 2021) =
    527 
    528 ### Fixed
    529 + PLGWOOS-737: Fix error related with refunds by updating the PHP-SDK to 5.2.1
    530 
    531 = Release Notes - WooCommerce 4.8.2 (Sep 2nd, 2021) =
    532 
    533 ### Added
    534 + PLGWOOS-730: Declare support for WooCommerce 5.6.0
    535 
    536 = Release Notes - WooCommerce 4.8.1 (Aug 9th, 2021) =
    537 
    538 ### Fixed
    539 + PLGWOOS-727: Show error message from the API in the checkout page, when there is an error on direct transactions
    540 
    541 = Release Notes - WooCommerce 4.8.0 (Aug 4th, 2021) =
    542 
    543 ### Added
    544 + PLGWOOS-723: Declare support for WooCommerce 5.5.2 and WordPress 5.8
    545 + PLGWOOS-711: Add missing titles in setting pages
    546 
    547 ### Changed
    548 + PLGWOOS-718: Remove PSP ID string when register the transaction ID in WC_Order->payment_complete()
    549 
    550 = Release Notes - WooCommerce 4.7.0 (Jun 23rd, 2021) =
    551 
    552 ### Added
    553 + PLGWOOS-706: Declare support for WooCommerce 5.4.1
    554 
    555 ### Changed
    556 + PLGWOOS-672: Change notification method from GET to [POST](https://docs.multisafepay.com/faq/api/notification-url/#get-vs-post-notification) by default
    557 
    558 ### Fixed
    559 + PLGWOOS-704: Log errors in the MultiSafepay log file, when processing notifications.
    560 
    561 = Release Notes - WooCommerce 4.6.0 (May 19th, 2021) =
    562 
    563 ### Added
    564 + PLGWOOS-625: Add log section in MultiSafepay settings page
    565 + PLGWOOS-666: Add MultiSafepay system status section in settings page
    566 + PLGWOOS-376: Add support to show upgrade notices in plugin list
    567 + PLGWOOS-657: Add nl_BE language
    568 
    569 ### Fixed
    570 + PLGWOOS-694: Fix notification for orders fully paid with gift cards
    571 + PLGWOOS-692: Fix Second Chance within the orderRequest object
    572 + PLGWOOS-654: Fix the gateway_id assigned to the properties of each token
    573 
    574 = Release Notes - WooCommerce 4.5.1 (Apr 7th, 2021) =
    575 
    576 ### Fixed
    577 + PLGWOOS-661: Fix payment methods ids to match list of gateway lists keys, which was producing an error to process notification for Sofort payments
    578 + PLGWOOS-663: Fix stock decreasing error, in relation with Bank Transfer gateway and notification flows
    579 
    580 = Release Notes - WooCommerce 4.5.0 (Mar 31st, 2021) =
    581 
    582 ### Fixed
    583 + PLGWOOS-659: Fix initialization of the plugin on multisite environments in which WooCommerce has been activated network wide
    584 
    585 ### Added
    586 + PLGWOOS-534: Add generic gateway
    587 
    588 = Release Notes - WooCommerce 4.4.1 (Mar 25th, 2021) =
    589 
    590 ### Fixed
    591 + PLGWOOS-653: Fix overwriting initial order status when transaction is initialized
    592 
    593 = Release Notes - WooCommerce 4.4.0 (Mar 23rd, 2021) =
    594 
    595 ### Fixed
    596 + PLGWOOS-648: Return 0 as tax rate, if WooCommerce taxes are disabled but tax rules are registered
    597 + PLGWOOS-647: Add verification to check if the token used in the transaction belongs to the customer
    598 
    599 ### Added
    600 + PLGWOOS-651: Add setting to select type of transaction in SEPA Direct Debit, E-Invoicing, in3, Santander Consumer Finance, AfterPay and iDEAL
    601 + PLGWOOS-644: Add setting to select type of transaction in Pay After Delivery
    602 + PLGWOOS-640: Add setting to select type of transaction in Bank Transfer
    603 
    604 = Release Notes - WooCommerce 4.3.0 (Mar 18th, 2021) =
    605 
    606 ### Fixed
    607 + PLGWOOS-626: Fix order not being cancelled when customer cancels the order
    608 + PLGWOOS-630: Fix include shipping item in full refund of billing suite payment methods
    609 
    610 ### Added
    611 + PLGWOOS-629: Add shipping item to the order request, even if this one is free
    612 + PLGWOOS-631: Add delivery address in order request even if the shipping amount is 0
    613 + PLGWOOS-634: Add settings field to redirect to check out page or cart page on cancelling the order
    614 + PLGWOOS-635: Add suggestion to set default initial order status for bank transfer to wc-on-hold
    615 + PLGWOOS-636: Add notification endpoint from version 3.8.0 to process deprecated notifications
    616 
    617 ### Changed
    618 + PLGWOOS-622: Change notification url for all payment methods to a single notification url
    619 
    620 = Release Notes - WooCommerce 4.2.2 (Mar 16th, 2021) =
    621 
    622 ### Fixed
    623 + PLGWOOS-632: Fix undefined method get_the_user_ip
    624 + PLGWOOS-621: Fix division by zero when fee price is 0
    625 
    626 = Release Notes - WooCommerce 4.2.1 (Mar 11th, 2021) =
    627 
    628 ### Fixed
    629 + PLGWOOS-613: Fix error related with multiple forwarded IPs by updating the PHP-SDK to 5.0.1
    630 
    631 ### Added
    632 + PLGWOOS-398: Add support to change the data in the OrderRequest using WordPress filters
    633 
    634 ### Changed
    635 + PLGWOOS-614: Avoid changing order status if transaction is partially refunded
    636 
    637 = Release Notes - WooCommerce 4.2.0 (Mar 9th, 2021) =
    638 
    639 ### Changed
    640 + PLGWOOS-602: Move invoice and shipped settings field from order status tab to options tab
    641 + PLGWOOS-602: Remove completed status from order status tab in settings page
    642 + PLGWOOS-601: Change default status for declined transactions from wc-cancelled to wc-failed
    643 
    644 ### Fixed
    645 + PLGWOOS-599: Fix typo in string message when payment method changes
    646 + PLGWOOS-598: Replace hardcoded url using plugins_url function
    647 + PLGWOOS-605: Fix description of country filter field
    648 
    649 ### Added
    650 + PLGWOOS-603: Add setting field for custom order description
    651 + PLGWOOS-604: Add forwarded IP to the CustomerDetails object
    652 + PLGWOOS-597: Support for orders with is_vat_exempt
    653 + PLGWOOS-606: Add chargeback transaction status in plugin settings
    654 
    655 = Release Notes - WooCommerce 4.1.8 (Mar 5th, 2021) =
    656 
    657 ### Changed
    658 + PLGWOOS-593: Register PSP ID in WooCommerce order using order complete payment method
    659 + PLGWOOS-593: Change notification method on completed status to use $order->complete_payment()
    660 
    661 ### Fixed
    662 + PLGWOOS-594: Fix Credit Card payment method form, to show description if customer is not logged in
    663 
    664 = Release Notes - WooCommerce 4.1.7 (Mar 3rd, 2021) =
    665 
    666 ### Changed
    667 + PLGWOOS-579: Remove warning message on validation, when enabling CREDITCARD gateway
    668 
    669 ### Fixed
    670 + PLGWOOS-584: Fix conflict with third party plugins related with Discovery exception
    671 + PLGWOOS-585: Set MultiSafepay transaction as shipped or invoiced using order number instead of order id
    672 
    673 = Release Notes - WooCommerce 4.1.6 (Mar 2nd, 2021) =
    674 
    675 ### Added
    676 + PLGWOOS-574: Add locale support
    677 
    678 ### Changed
    679 + PLGWOOS-575: Change settings page capability requirement from manage_options to manage_woocommerce
    680 
    681 ### Fixed
    682 + PLGWOOS-580: Show credit card payment method description in checkout
    683 + PLGWOOS-569: Remove class that trigger validation styles for ideal select in checkout page
    684 
    685 
    686 = Release Notes - WooCommerce 4.1.5 (Feb 24th, 2021) =
    687 
    688 ### Fixed
    689 + PLGWOOS-552: Fix product item price with discounts introduced by third party plugins (#252)
    690 
    691 
    692 = Release Notes - WooCommerce 4.1.4 (Feb 23rd, 2021) =
    693 
    694 ### Fixed
    695 + PLGWOOS-563: Remove some nonce validations to support custom checkouts forms (#249)
    696 + PLGWOOS-550: Typecast cart item quantity to int to avoid errors in the PHP-SDK (#248)
    697 
    698 ### Changed
    699 + PLGWOOS-556: Change composer dependencies to avoid conflicts with other plugins (#247)
    700 + PLGWOOS-562: Add fallback for in3, in case no fields is filled in checkout, convert the transaction to redirect type (#250)
    701 
    702 
    703 = Release Notes - WooCommerce 4.1.3 (Feb 21st, 2021) =
    704 
    705 ### Fixed
    706 + PLGWOOS-549: Support custom order numbers generated by third party plugins in notification method
    707 + PLGWOOS-551: Resize logo if theme used by merchant do not support WooCommerce
    708 
    709 
    710 = Release Notes - WooCommerce 4.1.2 (Feb 19th, 2021) =
    711 
    712 ### Fixed
    713 + PLGWOOS-548: Fix iDEAL gateway if no issuer selected in checkout
    714 
    715 
    716 = Release Notes - WooCommerce 4.1.1 (Feb 18th, 2021) =
    717 
    718 ### Changed
    719 + PLGWOOS-545: Remove API Key validation
    720 
    721 
    722 = Release Notes - WooCommerce 4.1.0 (Feb 17th, 2021) =
    723 
    724 ### Added
    725 + PLGWOOS-512: Add support for tokenization.
    726 + PLGWOOS-521: Change order status on callback even if merchant did not save the settings, using defaults.
    727 + PLGWOOS-530: Process notification, even when the payment method returned by MultiSafepay is not registered as WooCommerce gateway.
    728 + PLGWOOS-531: Avoid process refund if amount submitted in backend is 0
    729 
    730 ### Fixed
    731 + PLGWOOS-535: Fix bug min_amount filter
    732 + PLGWOOS-536: Fix instructions in multi select country field
    733 + PLGWOOS-518: Fix protocol of notification URL
    734 + PLGWOOS-526: Fix typo error in AfterPay payment method title
    735 + PLGWOOS-523: Fix type of transaction to redirect for Dotpay payment method
    736 
    737 ### Changed
    738 + PLGWOOS-519: Improvement for coupons support in ShoppingCart.
    739 + PLGWOOS-528: Refactor gender and salutation fields to process different validation messages
    740 + PLGWOOS-503: Move debug mode field to options section
    741 
    742 ### Removed
    743 + PLGWOOS-525: Remove validation in backend for MultiSafepay payment method
    744 + PLGWOOS-516: Avoid initialize the plugin if WooCommerce is not active
    745 
    746 
    747 = Release Notes - WooCommerce 4.0.0 (internal release) (Feb 12th, 2021) =
    748 
    749 ### Added
    750 + Complete rewrite of the plugin
    751 + Full and partial refunds for non billing suite payment methods
    752 + Full refunds for billing suite payment methods
    753 + Set MultiSafepay transactions as shipped when order reach the defined status in settings
    754 + Set MultiSafepay transaction as invoiced when order reach the defined status in settings
    755 + Filter payment methods by country
    756 + Filter payment methods by maximum amount of order
    757 + Filter payment methods by minimum amount of order
    758 + Custom initialized status for each payment method
    759 + Validations in backend settings fields
    760 + Support for compound taxes
    761 
    762 ### Changed
    763 + PLGWOOS-410: Refactor plugin using the [PHP-SDK](https://github.com/MultiSafepay/php-sdk)
    764 
    765 ### Removed
    766 + Remove FastCheckout
     348
     349= Release Notes - MultiSafepay 6.0.0 (Oct 4th, 2023) =
     350
     351### Added
     352+ PLGWOOS-803: Add support to register the payment methods dynamically, via API request.
     353+ PLGWOOS-859: Trigger checkout validations of the fields related to the payment component on checkout submission.
     354+ PLGWOOS-857: Add support for partial refunds for [BNPL payment methods](https://docs.multisafepay.com/docs/bnpl)
  • multisafepay/tags/6.11.0/src/PaymentMethods/Base/BasePaymentMethod.php

    r3393028 r3464988  
    465465     */
    466466    private function is_woocommerce_checkout_block_active(): bool {
    467         return WC_Blocks_Utils::has_block_in_page( wc_get_page_id( 'checkout' ), 'woocommerce/checkout' );
     467        $checkout_page_id = wc_get_page_id( 'checkout' );
     468        $checkout_page    = get_post( $checkout_page_id );
     469        $has_block        = WC_Blocks_Utils::has_block_in_page( $checkout_page_id, 'woocommerce/checkout' );
     470
     471        // Fallback: WC_Blocks_Utils::has_block_in_page() doesn't detect nested blocks (e.g., inside columns).
     472        // If not detected, check directly in post content.
     473        if ( ! $has_block && $checkout_page ) {
     474            $has_block = strpos( $checkout_page->post_content, 'wp:woocommerce/checkout' ) !== false;
     475        }
     476
     477        return $has_block;
    468478    }
    469479
  • multisafepay/tags/6.11.0/src/PaymentMethods/Base/BasePaymentMethodBlocks.php

    r3393028 r3464988  
    118118    public function get_payment_method_data(): array {
    119119        $payment_methods_data = array();
     120        $show_icons           = (bool) get_option( 'multisafepay_checkout_block_payment_icons', false );
    120121        foreach ( $this->gateways as $gateway ) {
    121122            $payment_methods_data[] = array(
     
    123124                'title'       => $gateway->get_title(),
    124125                'description' => $gateway->get_description(),
     126                'icon'        => $show_icons ? $gateway->get_payment_method_icon() : '',
    125127                'is_admin'    => is_admin(),
    126128            );
  • multisafepay/tags/6.11.0/src/PaymentMethods/PaymentMethodsController.php

    r3393028 r3464988  
    1616use MultiSafepay\WooCommerce\Utils\Logger;
    1717use MultiSafepay\WooCommerce\Utils\Order as OrderUtil;
     18use MultiSafepay\WooCommerce\Utils\RestResponseBuilder;
    1819use Psr\Http\Client\ClientExceptionInterface;
    1920use WC_Data_Exception;
    2021use WC_Order;
    2122use WP_REST_Request;
     23use WP_REST_Response;
    2224
    2325/**
     
    205207     *
    206208     * @param WP_REST_Request $request
    207      * @return void
     209     * @return WP_REST_Response
    208210     * @throws WC_Data_Exception
    209211     */
    210     public function process_post_notification( WP_REST_Request $request ): void {
     212    public function process_post_notification( WP_REST_Request $request ): WP_REST_Response {
    211213        $transactionid = $request->get_param( 'transactionid' );
    212214
    213215        if ( ! $request->sanitize_params() ) {
    214             $this->logger->log_info( 'Notification for transactionid . ' . $transactionid . ' has been received but could not be sanitized' );
    215             header( 'Content-type: text/plain' );
    216             die( 'OK' );
     216            $this->logger->log_info( 'Notification for transactionid ' . $transactionid . ' has been received but could not be sanitized' );
     217            return RestResponseBuilder::build_response();
    217218        }
    218219
    219220        $payload_type = $request->get_param( 'payload_type' ) ?? '';
    220221        if ( 'pretransaction' === $payload_type ) {
    221             $this->logger->log_info( 'Notification for transactionid . ' . $transactionid . ' has been received but is going to be ignored, because is pretransaction type' );
    222             header( 'Content-type: text/plain' );
    223             die( 'OK' );
    224         }
    225 
    226         $auth                = $request->get_header( 'auth' );
    227         $body                = $request->get_body();
    228         $api_key             = ( new SdkService() )->get_api_key();
     222            $this->logger->log_info( 'Notification for transactionid ' . $transactionid . ' has been received but is going to be ignored, because is pretransaction type' );
     223            return RestResponseBuilder::build_response();
     224        }
     225
     226        $auth    = (string) ( $request->get_header( 'auth' ) ?? '' );
     227        $body    = $request->get_body();
     228        $api_key = ( new SdkService() )->get_api_key();
     229
     230        if ( '' === $auth ) {
     231            $this->logger->log_info( 'Notification for transactionid ' . $transactionid . ' has been received but auth header is missing' );
     232            return RestResponseBuilder::build_response();
     233        }
     234
    229235        $verify_notification = Notification::verifyNotification( $body, $auth, $api_key );
    230236
    231237        if ( ! $verify_notification ) {
    232             $this->logger->log_info( 'Notification for transactionid . ' . $transactionid . ' has been received but is not validated' );
    233             header( 'Content-type: text/plain' );
    234             die( 'OK' );
     238            $this->logger->log_info( 'Notification for transactionid ' . $transactionid . ' has been received but is not validated' );
     239            return RestResponseBuilder::build_response();
    235240        }
    236241
     
    245250        $multisafepay_transaction = new TransactionResponse( $request->get_json_params(), $body );
    246251        ( new PaymentMethodCallback( (string) $transactionid, $multisafepay_transaction ) )->process_callback();
     252
     253        return RestResponseBuilder::build_response();
    247254    }
    248255
  • multisafepay/tags/6.11.0/src/Services/Qr/QrPaymentWebhook.php

    r3269746 r3464988  
    1313use MultiSafepay\WooCommerce\Utils\Logger;
    1414use MultiSafepay\WooCommerce\Utils\Order;
     15use MultiSafepay\WooCommerce\Utils\RestResponseBuilder;
    1516use WC_Data_Exception;
    1617use WC_Order;
    1718use WP_REST_Request;
     19use WP_REST_Response;
    1820
    1921/**
     
    4042     *
    4143     * @param TransactionResponse $multisafepay_transaction
    42      * @return void
    43      */
    44     public function create_woocommerce_order( TransactionResponse $multisafepay_transaction ): void {
     44     * @return WP_REST_Response
     45     */
     46    public function create_woocommerce_order( TransactionResponse $multisafepay_transaction ): WP_REST_Response {
    4547        $multisafepay_order_id = $multisafepay_transaction->getOrderId();
    4648
     
    4951        if ( empty( $checkout_data ) ) {
    5052            $this->logger->log_error( 'Could not create order for order id ' . $multisafepay_order_id . ' because checkout data is empty' );
    51             return;
     53            return RestResponseBuilder::build_response();
    5254        }
    5355
     
    133135            }
    134136
    135             header( 'Content-type: text/plain' );
    136             die( 'OK' );
     137            return RestResponseBuilder::build_response();
    137138
    138139        } catch ( Exception | WC_Data_Exception  $exception ) {
    139140            $this->logger->log_error( 'Something went wrong when creating WooCommerce order for MultiSafepay order id ' . $multisafepay_order_id . ' with message: ' . $exception->getMessage() );
    140141
    141             header( 'Content-type: text/plain' );
    142             die( 'OK' );
     142            return RestResponseBuilder::build_response();
    143143        }
    144144    }
     
    233233    /**
    234234     * @param WP_REST_Request $request
    235      * @return void
    236      */
    237     public function process_webhook( WP_REST_Request $request ): void {
     235     * @return WP_REST_Response
     236     */
     237    public function process_webhook( WP_REST_Request $request ): WP_REST_Response {
    238238        if ( ! ( new PaymentMethodService() )->is_any_woocommerce_payment_gateway_with_payment_component_qr_enabled() ) {
    239239            $this->logger->log_error( 'Payment component QR is not enabled' );
    240             header( 'Content-type: text/plain' );
    241             die( 'OK' );
     240            return RestResponseBuilder::build_response();
    242241        }
    243242
    244243        try {
    245244            $multisafepay_transaction = $this->validate_webhook_request( $request );
    246             $this->create_woocommerce_order( $multisafepay_transaction );
     245            if ( ! $multisafepay_transaction ) {
     246                return RestResponseBuilder::build_response();
     247            }
     248            return $this->create_woocommerce_order( $multisafepay_transaction );
    247249        } catch ( Exception | InvalidArgumentException $exception ) {
    248250            $this->logger->log_error( 'Something went wrong when processing webhook for transaction id ' . ( $request->get_param( 'transactionid' ) ?? 'unknown' ) . ' with message: ' . $exception->getMessage() );
    249             header( 'Content-type: text/plain' );
    250             die( 'OK' );
     251            return RestResponseBuilder::build_response();
    251252        }
    252253    }
     
    263264
    264265        if ( ! $request->sanitize_params() ) {
    265             $this->logger->log_info( 'Notification for transactionid . ' . $transactionid . ' has been received but could not be sanitized' );
    266             header( 'Content-type: text/plain' );
    267             die( 'OK' );
     266            $this->logger->log_info( 'Notification for transactionid ' . $transactionid . ' has been received but could not be sanitized' );
     267            return null;
    268268        }
    269269
     
    271271
    272272        if ( 'pretransaction' === $payload_type ) {
    273             $this->logger->log_info( 'Notification for transactionid . ' . $transactionid . ' has been received but is going to be ignored, because is pretransaction type' );
    274             header( 'Content-type: text/plain' );
    275             die( 'OK' );
    276         }
    277 
    278         $auth                = $request->get_header( 'auth' );
    279         $body                = $request->get_body();
    280         $api_key             = ( new SdkService() )->get_api_key();
     273            $this->logger->log_info( 'Notification for transactionid ' . $transactionid . ' has been received but is going to be ignored, because is pretransaction type' );
     274            return null;
     275        }
     276
     277        $auth    = (string) ( $request->get_header( 'auth' ) ?? '' );
     278        $body    = $request->get_body();
     279        $api_key = ( new SdkService() )->get_api_key();
     280
     281        if ( '' === $auth ) {
     282            $this->logger->log_info( 'Notification for transactionid ' . $transactionid . ' has been received but auth header is missing' );
     283            return null;
     284        }
     285
    281286        $verify_notification = Notification::verifyNotification( $body, $auth, $api_key );
    282287
    283288        if ( ! $verify_notification ) {
    284             $this->logger->log_info( 'Notification for transactionid . ' . $transactionid . ' has been received but is not validated' );
    285             header( 'Content-type: text/plain' );
    286             die( 'OK' );
     289            $this->logger->log_info( 'Notification for transactionid ' . $transactionid . ' has been received but is not validated' );
     290            return null;
    287291        }
    288292
     
    298302
    299303        if ( Transaction::COMPLETED !== $multisafepay_transaction->getStatus() ) {
    300             header( 'Content-type: text/plain' );
    301             die( 'OK' );
     304            return null;
    302305        }
    303306
     
    309312     *
    310313     * @param WP_REST_Request $request
    311      * @return void
    312      */
    313     public function process_balancer( WP_REST_Request $request ): void {
     314     * @return WP_REST_Response
     315     */
     316    public function process_balancer( WP_REST_Request $request ): WP_REST_Response {
    314317        $order_id = sanitize_text_field( wp_unslash( $request->get_param( 'transactionid' ) ?? '' ) );
    315318
    316319        if ( ! $request->sanitize_params() ) {
    317             $this->logger->log_info( 'Notification for transactionid . ' . $order_id . ' has been received but could not be sanitized' );
    318             wp_safe_redirect( wc_get_cart_url(), 302 );
    319             exit;
     320            $this->logger->log_info( 'Notification for transactionid ' . $order_id . ' has been received but could not be sanitized' );
     321            return RestResponseBuilder::build_response( 302, null, array( 'Location' => wc_get_cart_url() ) );
    320322        }
    321323
    322324        if ( empty( $order_id ) ) {
    323325            $this->logger->log_info( 'Request received without transaction ID' );
    324             wp_safe_redirect( wc_get_cart_url(), 302 );
    325             exit;
     326            return RestResponseBuilder::build_response( 302, null, array( 'Location' => wc_get_cart_url() ) );
    326327        }
    327328
    328329        if ( ! ( new PaymentMethodService() )->is_any_woocommerce_payment_gateway_with_payment_component_qr_enabled() ) {
    329330            $this->logger->log_error( 'Payment component QR is not enabled' );
    330             wp_safe_redirect( wc_get_cart_url(), 302 );
    331             exit();
     331            return RestResponseBuilder::build_response( 302, null, array( 'Location' => wc_get_cart_url() ) );
    332332        }
    333333
     
    337337            if ( $token !== $expected_token ) {
    338338                $this->logger->log_warning( 'Invalid token for transaction: ' . $order_id );
    339                 wp_safe_redirect( wc_get_cart_url(), 302 );
    340                 exit;
     339                return RestResponseBuilder::build_response( 302, null, array( 'Location' => wc_get_cart_url() ) );
    341340            }
    342341        }
     
    353352            $woocommerce_order = wc_get_order( $woocommerce_order_id );
    354353
    355             wp_safe_redirect( $woocommerce_order->get_checkout_order_received_url(), 302 );
    356             exit;
     354            return RestResponseBuilder::build_response( 302, null, array( 'Location' => $woocommerce_order->get_checkout_order_received_url() ) );
    357355        }
    358356
     
    361359            wc_get_checkout_url();
    362360
    363         wp_safe_redirect( $redirect_url, 302 );
    364         exit;
     361        return RestResponseBuilder::build_response( 302, null, array( 'Location' => $redirect_url ) );
    365362    }
    366363
  • multisafepay/tags/6.11.0/src/Settings/SettingsFields.php

    r3182242 r3464988  
    8989            'fields' => array(
    9090                array(
     91                    'id'           => 'multisafepay_debugmode',
     92                    'label'        => __( 'Debug Mode', 'multisafepay' ),
     93                    'description'  => 'Is recommended to keep debug mode disabled in live environment',
     94                    'type'         => 'checkbox',
     95                    'default'      => false,
     96                    'placeholder'  => __( 'Debug Mode', 'multisafepay' ),
     97                    'tooltip'      => __( 'Logs additional information to the system log', 'multisafepay' ),
     98                    'callback'     => '',
     99                    'setting_type' => 'boolean',
     100                    'sort_order'   => 1,
     101                ),
     102                array(
    91103                    'id'           => 'multisafepay_group_credit_cards',
    92104                    'label'        => __( 'Group debit and credit cards', 'multisafepay' ),
    93                     'description'  => __( 'If is enabled, payment methods classified as debit and credit cards  (Amex, Maestro, Mastercard, and Visa) will shown grouped as a single payment method', 'multisafepay' ),
     105                    'description'  => __( 'If is enabled, payment methods classified as debit and credit cards  (Amex, Maestro, Mastercard, and Visa) will be shown grouped as a single payment method', 'multisafepay' ),
    94106                    'type'         => 'checkbox',
    95107                    'default'      => (bool) get_option(
     
    102114                    'setting_type' => 'boolean',
    103115                    'sort_order'   => 3,
    104                 ),
    105                 array(
    106                     'id'           => 'multisafepay_debugmode',
    107                     'label'        => __( 'Debug Mode', 'multisafepay' ),
    108                     'description'  => 'Is recommended to keep debug mode disabled in live environment',
    109                     'type'         => 'checkbox',
    110                     'default'      => false,
    111                     'placeholder'  => __( 'Debug Mode', 'multisafepay' ),
    112                     'tooltip'      => __( 'Logs additional information to the system log', 'multisafepay' ),
    113                     'callback'     => '',
    114                     'setting_type' => 'boolean',
    115                     'sort_order'   => 1,
    116                 ),
    117                 array(
    118                     'id'           => 'multisafepay_disable_shopping_cart',
    119                     'label'        => __( 'Disable Shopping Cart on the MultiSafepay payment page', 'multisafepay' ),
    120                     'description'  => 'Enable this option to hide the cart items on the MultiSafepay payment page, leaving only the total order amount. Note: This behavior won\'t be adopted by the the payment methods which require shopping cart like Riverty, E-Invoicing, in3, Klarna and Pay After Delivery.',
    121                     'type'         => 'checkbox',
    122                     'default'      => false,
    123                     'placeholder'  => __( 'Disable Shopping Cart', 'multisafepay' ),
    124                     'tooltip'      => '',
    125                     'callback'     => '',
    126                     'setting_type' => 'boolean',
    127                     'sort_order'   => 100,
    128116                ),
    129117                array(
     
    241229                ),
    242230                array(
    243                     'id'           => 'multisafepay_time_unit',
    244                     'label'        => __( 'Unit lifetime of payment link', 'multisafepay' ),
    245                     'description'  => __( 'The lifetime of a payment link by default is 30 days. This means that the customer has 30 days to complete the transaction using the payment link', 'multisafepay' ),
    246                     'type'         => 'select',
    247                     'options'      => array(
    248                         'days'    => __( 'Days', 'multisafepay' ),
    249                         'hours'   => __( 'Hours', 'multisafepay' ),
    250                         'seconds' => __( 'Seconds', 'multisafepay' ),
    251                     ),
    252                     'default'      => 'days',
    253                     'placeholder'  => __( 'Unit lifetime of payment link', 'multisafepay' ),
    254                     'tooltip'      => '',
    255                     'callback'     => '',
    256                     'setting_type' => 'string',
    257                     'sort_order'   => 40,
    258                 ),
    259                 array(
    260231                    'id'           => 'multisafepay_payment_component_template_id',
    261232                    'label'        => __( 'Payment Component Template ID', 'multisafepay' ),
     
    268239                    'setting_type' => 'string',
    269240                    'sort_order'   => 55,
     241                ),
     242                array(
     243                    'id'           => 'multisafepay_checkout_block_payment_icons',
     244                    'label'        => __( 'Show Payment Icons in WooCommerce Checkout Block', 'multisafepay' ),
     245                    'description'  => __( 'Enable this option to show payment icons on the Checkout Block', 'multisafepay' ),
     246                    'type'         => 'checkbox',
     247                    'default'      => false,
     248                    'placeholder'  => __( 'Show Payment Icons in WooCommerce Checkout Block', 'multisafepay' ),
     249                    'tooltip'      => '',
     250                    'callback'     => '',
     251                    'setting_type' => 'boolean',
     252                    'sort_order'   => 60,
     253                ),
     254                array(
     255                    'id'           => 'multisafepay_disable_shopping_cart',
     256                    'label'        => __( 'Disable Shopping Cart on the MultiSafepay payment page', 'multisafepay' ),
     257                    'description'  => __( 'Enable this option to hide the cart items on the MultiSafepay payment page, leaving only the total order amount. Note: This behavior won\'t be adopted by the the payment methods which require shopping cart like Riverty, E-Invoicing, in3, Klarna and Pay After Delivery.', 'multisafepay' ),
     258                    'type'         => 'checkbox',
     259                    'default'      => false,
     260                    'placeholder'  => __( 'Disable Shopping Cart', 'multisafepay' ),
     261                    'tooltip'      => '',
     262                    'callback'     => '',
     263                    'setting_type' => 'boolean',
     264                    'sort_order'   => 80,
    270265                ),
    271266            ),
  • multisafepay/tags/6.11.0/vendor/autoload.php

    r3393028 r3464988  
    2020require_once __DIR__ . '/composer/autoload_real.php';
    2121
    22 return ComposerAutoloaderInit431ee68f29f658207118bb5cd3435acb::getLoader();
     22return ComposerAutoloaderInit28e45a30c0d551a1bda1a2bce6e79c02::getLoader();
  • multisafepay/tags/6.11.0/vendor/composer/autoload_real.php

    r3393028 r3464988  
    33// autoload_real.php @generated by Composer
    44
    5 class ComposerAutoloaderInit431ee68f29f658207118bb5cd3435acb
     5class ComposerAutoloaderInit28e45a30c0d551a1bda1a2bce6e79c02
    66{
    77    private static $loader;
     
    2525        require __DIR__ . '/platform_check.php';
    2626
    27         spl_autoload_register(array('ComposerAutoloaderInit431ee68f29f658207118bb5cd3435acb', 'loadClassLoader'), true, true);
     27        spl_autoload_register(array('ComposerAutoloaderInit28e45a30c0d551a1bda1a2bce6e79c02', 'loadClassLoader'), true, true);
    2828        self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
    29         spl_autoload_unregister(array('ComposerAutoloaderInit431ee68f29f658207118bb5cd3435acb', 'loadClassLoader'));
     29        spl_autoload_unregister(array('ComposerAutoloaderInit28e45a30c0d551a1bda1a2bce6e79c02', 'loadClassLoader'));
    3030
    3131        require __DIR__ . '/autoload_static.php';
    32         call_user_func(\Composer\Autoload\ComposerStaticInit431ee68f29f658207118bb5cd3435acb::getInitializer($loader));
     32        call_user_func(\Composer\Autoload\ComposerStaticInit28e45a30c0d551a1bda1a2bce6e79c02::getInitializer($loader));
    3333
    3434        $loader->register(true);
  • multisafepay/tags/6.11.0/vendor/composer/autoload_static.php

    r3393028 r3464988  
    55namespace Composer\Autoload;
    66
    7 class ComposerStaticInit431ee68f29f658207118bb5cd3435acb
     7class ComposerStaticInit28e45a30c0d551a1bda1a2bce6e79c02
    88{
    99    public static $prefixLengthsPsr4 = array (
    10         'P' => 
     10        'P' =>
    1111        array (
    1212            'Psr\\Http\\Message\\' => 17,
    1313            'Psr\\Http\\Client\\' => 16,
    1414        ),
    15         'N' => 
     15        'N' =>
    1616        array (
    1717            'Nyholm\\Psr7\\' => 12,
    1818        ),
    19         'M' => 
     19        'M' =>
    2020        array (
    2121            'MultiSafepay\\WooCommerce\\' => 25,
    2222            'MultiSafepay\\' => 13,
    2323        ),
    24         'H' => 
     24        'H' =>
    2525        array (
    2626            'Http\\Discovery\\' => 15,
     
    2929
    3030    public static $prefixDirsPsr4 = array (
    31         'Psr\\Http\\Message\\' => 
     31        'Psr\\Http\\Message\\' =>
    3232        array (
    3333            0 => __DIR__ . '/..' . '/psr/http-factory/src',
    3434            1 => __DIR__ . '/..' . '/psr/http-message/src',
    3535        ),
    36         'Psr\\Http\\Client\\' => 
     36        'Psr\\Http\\Client\\' =>
    3737        array (
    3838            0 => __DIR__ . '/..' . '/psr/http-client/src',
    3939        ),
    40         'Nyholm\\Psr7\\' => 
     40        'Nyholm\\Psr7\\' =>
    4141        array (
    4242            0 => __DIR__ . '/..' . '/nyholm/psr7/src',
    4343        ),
    44         'MultiSafepay\\WooCommerce\\' => 
     44        'MultiSafepay\\WooCommerce\\' =>
    4545        array (
    4646            0 => __DIR__ . '/../..' . '/src',
    4747        ),
    48         'MultiSafepay\\' => 
     48        'MultiSafepay\\' =>
    4949        array (
    5050            0 => __DIR__ . '/..' . '/multisafepay/php-sdk/src',
    5151        ),
    52         'Http\\Discovery\\' => 
     52        'Http\\Discovery\\' =>
    5353        array (
    5454            0 => __DIR__ . '/..' . '/php-http/discovery/src',
     
    6363    {
    6464        return \Closure::bind(function () use ($loader) {
    65             $loader->prefixLengthsPsr4 = ComposerStaticInit431ee68f29f658207118bb5cd3435acb::$prefixLengthsPsr4;
    66             $loader->prefixDirsPsr4 = ComposerStaticInit431ee68f29f658207118bb5cd3435acb::$prefixDirsPsr4;
    67             $loader->classMap = ComposerStaticInit431ee68f29f658207118bb5cd3435acb::$classMap;
     65            $loader->prefixLengthsPsr4 = ComposerStaticInit28e45a30c0d551a1bda1a2bce6e79c02::$prefixLengthsPsr4;
     66            $loader->prefixDirsPsr4 = ComposerStaticInit28e45a30c0d551a1bda1a2bce6e79c02::$prefixDirsPsr4;
     67            $loader->classMap = ComposerStaticInit28e45a30c0d551a1bda1a2bce6e79c02::$classMap;
    6868
    6969        }, null, ClassLoader::class);
  • multisafepay/tags/6.11.0/vendor/composer/installed.json

    r3393028 r3464988  
    33        {
    44            "name": "multisafepay/php-sdk",
    5             "version": "5.18.0",
    6             "version_normalized": "5.18.0.0",
     5            "version": "5.20.0",
     6            "version_normalized": "5.20.0.0",
    77            "source": {
    88                "type": "git",
    99                "url": "https://github.com/MultiSafepay/php-sdk.git",
    10                 "reference": "837555d3d4699761ab34387605b192be5421ed63"
    11             },
    12             "dist": {
    13                 "type": "zip",
    14                 "url": "https://api.github.com/repos/MultiSafepay/php-sdk/zipball/837555d3d4699761ab34387605b192be5421ed63",
    15                 "reference": "837555d3d4699761ab34387605b192be5421ed63",
     10                "reference": "a83adfae608a97f584c8812eb03983d7f8fb2271"
     11            },
     12            "dist": {
     13                "type": "zip",
     14                "url": "https://api.github.com/repos/MultiSafepay/php-sdk/zipball/a83adfae608a97f584c8812eb03983d7f8fb2271",
     15                "reference": "a83adfae608a97f584c8812eb03983d7f8fb2271",
    1616                "shasum": ""
    1717            },
     
    3333                "php-http/mock-client": "^1.3",
    3434                "phpstan/phpstan": "^1.8",
    35                 "phpunit/phpunit": "^9.0 || ^7.5"
     35                "phpunit/phpunit": "^8.5 || ^9.0"
    3636            },
    3737            "suggest": {
    3838                "jschaedl/iban-validation": "Adds additional IBAN validation for \\MultiSafepay\\ValueObject\\IbanNumber"
    3939            },
    40             "time": "2025-10-15T10:31:17+00:00",
     40            "time": "2026-02-18T07:51:14+00:00",
    4141            "type": "library",
    4242            "installation-source": "dist",
     
    5353            "support": {
    5454                "issues": "https://github.com/MultiSafepay/php-sdk/issues",
    55                 "source": "https://github.com/MultiSafepay/php-sdk/tree/5.18.0"
     55                "source": "https://github.com/MultiSafepay/php-sdk/tree/5.20.0"
    5656            },
    5757            "install-path": "../multisafepay/php-sdk"
  • multisafepay/tags/6.11.0/vendor/composer/installed.php

    r3393028 r3464988  
    22    'root' => array(
    33        'name' => 'multisafepay/woocommerce',
    4         'pretty_version' => '6.10.0',
    5         'version' => '6.10.0.0',
     4        'pretty_version' => '6.11.0',
     5        'version' => '6.11.0.0',
    66        'reference' => null,
    77        'type' => 'wordpress-plugin',
     
    1212    'versions' => array(
    1313        'multisafepay/php-sdk' => array(
    14             'pretty_version' => '5.18.0',
    15             'version' => '5.18.0.0',
    16             'reference' => '837555d3d4699761ab34387605b192be5421ed63',
     14            'pretty_version' => '5.20.0',
     15            'version' => '5.20.0.0',
     16            'reference' => 'a83adfae608a97f584c8812eb03983d7f8fb2271',
    1717            'type' => 'library',
    1818            'install_path' => __DIR__ . '/../multisafepay/php-sdk',
     
    2121        ),
    2222        'multisafepay/woocommerce' => array(
    23             'pretty_version' => '6.10.0',
    24             'version' => '6.10.0.0',
     23            'pretty_version' => '6.11.0',
     24            'version' => '6.11.0.0',
    2525            'reference' => null,
    2626            'type' => 'wordpress-plugin',
  • multisafepay/tags/6.11.0/vendor/multisafepay/php-sdk/CHANGELOG.md

    r3393028 r3464988  
    66
    77## [Unreleased]
     8
     9## [5.20.0] - 2026-02-18
     10### Added
     11- PLGWOOS-1025: PHP SDK support for terminal endpoints
     12- PLGMAG2V2-886: Encode parameters
     13 
     14## [5.19.0] - 2026-01-15
     15### Added
     16- PLGMAG2V2-881: Add a method to easily retrieve the payment_options from the OrderRequest
     17- PHPSDK-184: Add the PaymentData object to an OrderRequest, thanks to @firstred
     18- PHPSDK-185: Add all the properties of a CaptureRequest, thanks to @firstred
     19- PHPSDK-186: Add the capture property to an OrderRequest, thanks to @firstred
     20- PHPSDK-68: Add a cleaner function for checking order status completed
     21
     22### Fixed
     23- PHPSDK-69: Fix type error when trying to retrieve shopping cart from TransactionResponse that does not have it
    824
    925## [5.18.0] - 2025-10-15
  • multisafepay/tags/6.11.0/vendor/multisafepay/php-sdk/USAGE.md

    r3230524 r3464988  
    396396```
    397397
     398### List terminals
     399List all POS terminals bound to a MultiSafepay account.
     400
     401Authentication for this endpoint requires a **Merchant Account API Key**. Note: according to the public API documentation, this endpoint is not available in the TEST environment.
     402More information at our [Documentation Center](https://docs.multisafepay.com/reference/listterminals).
     403```php
     404$yourMerchantAccountApiKey = 'your-merchant-account-api-key';
     405$isProduction = true;
     406$multiSafepaySdk = new \MultiSafepay\Sdk($yourMerchantAccountApiKey, $isProduction);
     407
     408$options = [
     409    'page' => 1,
     410    'limit' => 50,
     411];
     412
     413$terminalListing = $multiSafepaySdk->getTerminalManager()->getTerminals($options);
     414$terminals = $terminalListing->getTerminals();
     415
     416$pager = $terminalListing->getPager(); // If pagination is needed, this Pager object can be used
     417```
     418
     419### List terminals by group
     420Filter POS devices bound to a MultiSafepay account using a `terminal_group_id`.
     421
     422Authentication for this endpoint requires a **Merchant Account API Key**. Note: according to the public API documentation, this endpoint is not available in the TEST environment.
     423More information at our [Documentation Center](https://docs.multisafepay.com/reference/listterminalsbygroup).
     424```php
     425$yourMerchantAccountApiKey = 'your-merchant-account-api-key';
     426$isProduction = true;
     427$multiSafepaySdk = new \MultiSafepay\Sdk($yourMerchantAccountApiKey, $isProduction);
     428
     429$terminalGroupId = 'your-terminal-group-id';
     430$options = [
     431    'page' => 1,
     432    'limit' => 50,
     433];
     434
     435$terminalListing = $multiSafepaySdk->getTerminalManager()->getTerminalsByGroup($terminalGroupId, $options);
     436$terminals = $terminalListing->getTerminals();
     437
     438$pager = $terminalListing->getPager(); // If pagination is needed, this Pager object can be used
     439```
     440
    398441### Pushing a payment request to a Smart POS device
    399442```php
  • multisafepay/tags/6.11.0/vendor/multisafepay/php-sdk/composer.json

    r3393028 r3464988  
    44  "type": "library",
    55  "license": "OSL-3.0",
    6   "version": "5.18.0",
     6  "version": "5.20.0",
    77  "require": {
    88    "php": "^7.2|^8.0",
     
    1414  },
    1515  "require-dev": {
    16     "phpunit/phpunit": "^9.0 || ^7.5",
     16    "phpunit/phpunit": "^8.5 || ^9.0",
    1717    "guzzlehttp/guzzle": "^7.0",
    1818    "http-interop/http-factory-guzzle": "^1.0",
  • multisafepay/tags/6.11.0/vendor/multisafepay/php-sdk/src/Api/TransactionManager.php

    r3230524 r3464988  
    1818use MultiSafepay\Exception\ApiException;
    1919use MultiSafepay\Exception\InvalidArgumentException;
     20use MultiSafepay\Util\Encode;
    2021use Psr\Http\Client\ClientExceptionInterface;
    2122
     
    6465    public function get(string $orderId): Transaction
    6566    {
    66         $endpoint = 'json/orders/' . $orderId;
    67         $context = ['order_id' => $orderId];
     67        $encodedOrderId = Encode::encode($orderId);
     68        $endpoint = 'json/orders/' . $encodedOrderId;
     69        $context = ['order_id' => $encodedOrderId];
    6870        $response = $this->client->createGetRequest($endpoint, [], $context);
    6971
     
    9294    public function update(string $orderId, UpdateRequest $updateRequest): Response
    9395    {
     96        $encodedOrderId = Encode::encode($orderId);
     97
    9498        return $this->client->createPatchRequest(
    95             'json/orders/' . $orderId,
     99            'json/orders/' . $encodedOrderId,
    96100            $updateRequest,
    97101            ['request_body' => $updateRequest->getData()]
     
    107111    public function capture(string $orderId, CaptureRequest $captureRequest): Response
    108112    {
     113        $encodedOrderId = Encode::encode($orderId);
     114
    109115        return $this->client->createPostRequest(
    110             'json/orders/' . $orderId . '/capture',
     116            'json/orders/' . $encodedOrderId . '/capture',
    111117            $captureRequest,
    112118            ['request_body' => $captureRequest->getData()]
     
    122128    public function captureReservationCancel(string $orderId, CaptureRequest $captureRequest): Response
    123129    {
     130        $encodedOrderId = Encode::encode($orderId);
     131
    124132        return $this->client->createPatchRequest(
    125             'json/capture/' . $orderId,
     133            'json/capture/' . $encodedOrderId,
    126134            $captureRequest,
    127135            ['request_body' => $captureRequest->getData()]
     
    139147    public function refund(Transaction $transaction, RefundRequest $requestRefund, ?string $orderId = null): Response
    140148    {
     149        $originalOrderId = $orderId ?? $transaction->getOrderId();
     150        $encodedOrderId   = Encode::encode($originalOrderId);
     151
    141152        return $this->client->createPostRequest(
    142             'json/orders/' . ($orderId ?: $transaction->getOrderId()) . '/refunds',
     153            'json/orders/' . $encodedOrderId . '/refunds',
    143154            $requestRefund,
    144155            ['transaction' => $transaction->getData()]
  • multisafepay/tags/6.11.0/vendor/multisafepay/php-sdk/src/Api/Transactions/CaptureRequest.php

    r2927749 r3464988  
    88
    99use MultiSafepay\Api\Base\RequestBody;
    10 use MultiSafepay\Api\Base\RequestBodyInterface;
     10use MultiSafepay\ValueObject\Amount;
    1111
    1212/**
    13  * Class UpdateRequest
     13 * Class CaptureRequest
    1414 * @package MultiSafepay\Api\Transactions
    1515 */
     
    1919
    2020    /**
     21     * @var string
     22     */
     23    private $newOrderId;
     24
     25    /**
     26     * @var Amount
     27     */
     28    private $amount;
     29
     30    /**
     31     * @var string
     32     */
     33    private $newOrderStatus;
     34
     35    /**
     36     * @var string
     37     */
     38    private $invoiceId;
     39
     40    /**
     41     * @var string
     42     */
     43    private $trackTraceCode;
     44
     45    /**
     46     * @var string
     47     */
     48    private $carrier;
     49    /**
     50     * @var string
     51     */
     52    private $reason;
     53
     54    /**
     55     * @var string
     56     */
     57    private $description;
     58
     59    /**
     60     * @var string
     61     */
     62    private $shipDate;
     63
     64    /**
    2165     * @return array
    2266     */
    2367    public function getData(): array
    2468    {
    25         return $this->removeNullRecursive($this->data);
     69        return $this->removeNullRecursive(
     70            array_merge(
     71                [
     72                    'amount' => $this->amount ? $this->amount->get() : null,
     73                    'new_order_id' => $this->newOrderId ?: null,
     74                    'new_order_status' => $this->newOrderStatus ?: 'completed',
     75                    'invoice_id' => $this->invoiceId ?: null,
     76                    'tracktrace_code' => $this->trackTraceCode ?: null,
     77                    'carrier' => $this->carrier ?: null,
     78                    'reason' => $this->reason ?: null,
     79                    'description' => $this->description ?: null,
     80                    'ship_date' => $this->shipDate ?: null,
     81                ],
     82                $this->data
     83            )
     84        );
     85    }
     86
     87    /**
     88     * @param Amount $amount
     89     * @return CaptureRequest
     90     */
     91    public function addAmount(Amount $amount): CaptureRequest
     92    {
     93        $this->amount = $amount;
     94        return $this;
     95    }
     96
     97    /**
     98     * @param string $newOrderId
     99     * @return CaptureRequest
     100     */
     101    public function addNewOrderId(string $newOrderId): CaptureRequest
     102    {
     103        $this->newOrderId = $newOrderId;
     104        return $this;
     105    }
     106
     107    /**
     108     * @param string $newOrderStatus
     109     * @return CaptureRequest
     110     */
     111    public function addNewOrderStatus(string $newOrderStatus): CaptureRequest
     112    {
     113        $this->newOrderStatus = $newOrderStatus;
     114        return $this;
     115    }
     116
     117    /**
     118     * @param string $invoiceId
     119     * @return CaptureRequest
     120     */
     121    public function addInvoiceId(string $invoiceId): CaptureRequest
     122    {
     123        $this->invoiceId = $invoiceId;
     124        return $this;
     125    }
     126
     127    /**
     128     * @param string $trackTraceCode
     129     * @return CaptureRequest
     130     */
     131    public function addTrackTraceCode(string $trackTraceCode): CaptureRequest
     132    {
     133        $this->trackTraceCode = $trackTraceCode;
     134        return $this;
     135    }
     136
     137    /**
     138     * @param string $carrier
     139     * @return CaptureRequest
     140     */
     141    public function addCarrier(string $carrier): CaptureRequest
     142    {
     143        $this->carrier = $carrier;
     144        return $this;
     145    }
     146
     147    /**
     148     * @param string $reason
     149     * @return CaptureRequest
     150     */
     151    public function addReason(string $reason): CaptureRequest
     152    {
     153        $this->reason = $reason;
     154        return $this;
     155    }
     156
     157    /**
     158     * @param string $description
     159     * @return CaptureRequest
     160     */
     161    public function addDescription(string $description): CaptureRequest
     162    {
     163        $this->description = $description;
     164        return $this;
     165    }
     166
     167    /**
     168     * @param string $shipDate
     169     * @return CaptureRequest
     170     */
     171    public function addShipDate(string $shipDate): CaptureRequest
     172    {
     173        $this->shipDate = $shipDate;
     174        return $this;
    26175    }
    27176}
  • multisafepay/tags/6.11.0/vendor/multisafepay/php-sdk/src/Api/Transactions/OrderRequest.php

    r3264984 r3464988  
    1616use MultiSafepay\Api\Transactions\OrderRequest\Arguments\GatewayInfoInterface;
    1717use MultiSafepay\Api\Transactions\OrderRequest\Arguments\GoogleAnalytics;
     18use MultiSafepay\Api\Transactions\OrderRequest\Arguments\PaymentData;
    1819use MultiSafepay\Api\Transactions\OrderRequest\Arguments\PaymentOptions;
    1920use MultiSafepay\Api\Transactions\OrderRequest\Arguments\PluginDetails;
     
    118119
    119120    /**
     121     * @var PaymentData
     122     */
     123    protected $paymentData;
     124
     125    /**
    120126     * @var int
    121127     */
     
    166172     */
    167173    private $currency;
     174
     175    /**
     176     * @var string
     177     */
     178    private $capture;
    168179
    169180    /**
     
    452463
    453464    /**
     465     * Retrieve the payment_options object from the OrderRequest
     466     *
     467     * @return PaymentOptions|null
     468     */
     469    public function getPaymentOptions(): ?PaymentOptions
     470    {
     471        return $this->paymentOptions;
     472    }
     473
     474    /**
    454475     * Retrieve the checkout_options object from the OrderRequest
    455476     *
     
    496517
    497518    /**
     519     * @param PaymentData $paymentData
     520     * @return OrderRequest
     521     */
     522    public function addPaymentData(PaymentData $paymentData): OrderRequest
     523    {
     524        $this->paymentData = $paymentData;
     525        return $this;
     526    }
     527
     528    /**
    498529     * @param int $seconds
    499530     * @return OrderRequest
     
    577608    {
    578609        return $this->var3;
     610    }
     611
     612    /**
     613     * @param string $capture
     614     * @return OrderRequest
     615     */
     616    public function addCapture(string $capture = 'manual'): OrderRequest
     617    {
     618        $this->capture = $capture;
     619        return $this;
    579620    }
    580621
     
    621662            'shopping_cart' => $this->shoppingCart ? $this->shoppingCart->getData() : null,
    622663            'checkout_options' => $this->checkoutOptions ? $this->checkoutOptions->getData() : null,
     664            'payment_data' => $this->paymentData ? $this->paymentData->getData() : null,
    623665            'days_active' => $this->daysActive,
    624666            'seconds_active' => $this->secondsActive,
     
    628670            'var2' => $this->getVar2(),
    629671            'var3' => $this->getVar3(),
     672            'capture' => $this->capture ?? null,
    630673            'affiliate' => $this->affiliate ? $this->affiliate->getData() : null,
    631674        ];
  • multisafepay/tags/6.11.0/vendor/multisafepay/php-sdk/src/Api/Transactions/TransactionResponse.php

    r3230524 r3464988  
    188188
    189189    /**
     190     * @return bool
     191     */
     192    public function isCompleted(): bool
     193    {
     194        return $this->getStatus() === Transaction::COMPLETED;
     195    }
     196
     197    /**
    190198     * @return string
    191199     */
     
    343351
    344352    /**
    345      * @return ShoppingCart
     353     * @return ShoppingCart|null
    346354     * @throws InvalidArgumentException
    347355     */
    348     public function getShoppingCart(): ShoppingCart
    349     {
    350         return ShoppingCart::fromData($this->get('shopping_cart'));
     356    public function getShoppingCart(): ?ShoppingCart
     357    {
     358        $shoppingCartData = $this->get('shopping_cart');
     359
     360        if (empty($shoppingCartData)) {
     361            return null;
     362        }
     363
     364        return ShoppingCart::fromData($shoppingCartData);
    351365    }
    352366
  • multisafepay/tags/6.11.0/vendor/multisafepay/php-sdk/src/Sdk.php

    r3230524 r3464988  
    1313use MultiSafepay\Api\IssuerManager;
    1414use MultiSafepay\Api\PaymentMethodManager;
     15use MultiSafepay\Api\TerminalManager;
    1516use MultiSafepay\Api\TokenManager;
    1617use MultiSafepay\Api\TransactionManager;
     
    145146
    146147    /**
     148     * @return TerminalManager
     149     */
     150    public function getTerminalManager(): TerminalManager
     151    {
     152        return new TerminalManager($this->client);
     153    }
     154
     155    /**
    147156     * @return Client
    148157     */
  • multisafepay/tags/6.11.0/vendor/multisafepay/php-sdk/src/Util/Version.php

    r3393028 r3464988  
    1818class Version
    1919{
    20     public const SDK_VERSION = '5.18.0';
     20    public const SDK_VERSION = '5.20.0';
    2121
    2222    /**
  • multisafepay/trunk/assets/public/js/multisafepay-blocks/build/index.asset.php

    r3393028 r3464988  
    1 <?php return array('dependencies' => array(), 'version' => '4253c5748ae7a4b32641');
     1<?php return array('dependencies' => array(), 'version' => 'bacad67eb9f6508a056e');
  • multisafepay/trunk/assets/public/js/multisafepay-blocks/build/index.js

    r3393028 r3464988  
    1 (()=>{const e=e=>({name:e.id,label:e.title,paymentMethodId:e.id,edit:React.createElement("div",null,""),canMakePayment:()=>!0,ariaLabel:e.title,content:React.createElement("div",null,e.description)});document.addEventListener("DOMContentLoaded",()=>{(({wc:t,multisafepay_gateways:a})=>{const{registerPaymentMethod:n}=t.wcBlocksRegistry;a.forEach(t=>{(t.is_admin||"multisafepay_applepay"!==t.id||window.ApplePaySession&&ApplePaySession.canMakePayments())&&n(e(t))})})(window)})})();
     1(()=>{const e=e=>{const t=[];return e.icon&&t.push(React.createElement("img",{src:e.icon,alt:e.title,style:{height:"24px",width:"auto",marginRight:"8px"}})),t.push(e.title),{name:e.id,label:React.createElement("span",{style:{display:"flex",alignItems:"center"}},...t),paymentMethodId:e.id,edit:React.createElement("div",null,""),canMakePayment:()=>!0,ariaLabel:e.title,content:React.createElement("div",null,e.description)}};document.addEventListener("DOMContentLoaded",()=>{(({wc:t,multisafepay_gateways:a})=>{const{registerPaymentMethod:n}=t.wcBlocksRegistry;a.forEach(t=>{(t.is_admin||"multisafepay_applepay"!==t.id||window.ApplePaySession&&ApplePaySession.canMakePayments())&&n(e(t))})})(window)})})();
  • multisafepay/trunk/multisafepay.php

    r3393028 r3464988  
    55 * Plugin URI:              https://docs.multisafepay.com/docs/woocommerce
    66 * Description:             MultiSafepay Payment Plugin
    7  * Version:                 6.10.0
     7 * Version:                 6.11.0
    88 * Author:                  MultiSafepay
    99 * Author URI:              https://www.multisafepay.com
     
    1212 * License URI:             http://www.gnu.org/licenses/gpl-3.0.html
    1313 * Requires at least:       6.0
    14  * Tested up to:            6.8.3
     14 * Tested up to:            6.9.1
    1515 * WC requires at least:    6.0.0
    16  * WC tested up to:         10.2.2
     16 * WC tested up to:         10.5.2
    1717 * Requires PHP:            7.3
    1818 * Text Domain:             multisafepay
  • multisafepay/trunk/readme.txt

    r3393028 r3464988  
    33Tags: multisafepay, payment gateway, credit cards, ideal, bnpl
    44Requires at least: 6.0
    5 Tested up to: 6.8.3
     5Tested up to: 6.9.1
    66Requires PHP: 7.3
    7 Stable tag: 6.10.0
    8 License: MIT
     7Stable tag: 6.11.0
     8License: GPL-3.0-or-later
    99
    1010MultiSafepay offers the most comprehensive payment solutions. Easily integrate the payment solutions of MultiSafepay into your webshop.
     
    2020
    2121Payment methods:
     22By default, any payment method you activate in your MultiSafepay account will be available to be activated in the plugin, but you can also choose to show only specific payment methods in your checkout.
     23The plugin supports all the payment methods available in your MultiSafepay account, including but not limited to:
     24
    2225* AfterPay
    2326* Alipay
     
    123126= Can I refund orders? =
    124127
    125 Yes, you can fully or partially refund transactions directly from your WooCommerce backend for all payment methods, except for [Buy now pay later](https://docs.multisafepay.com/docs/bnpl) payment methods in which it is only possible to process full refunds.
     128Yes, you can fully or partially refund transactions directly from your WooCommerce backend for all payment methods.
    126129You can also refund from your [MultiSafepay Control](https://merchant.multisafepay.com)
    127130
     
    139142
    140143== Changelog ==
    141 = Release Notes - WooCommerce 6.10.0 (Nov 10th, 2025) =
     144
     145= Release Notes - MultiSafepay 6.11.0 (Feb 19th, 2026) =
     146
     147### Added
     148+ PLGWOOS-1018: Add payment icons to WooCommerce Checkout Blocks
     149
     150### Fixed
     151+ PLGWOOS-1032: Fix WC_Blocks_Utils::has_block_in_page() fails to detect checkout block when nested inside other blocks
     152+ PLGWOOS-1019: Fix the duplicated 'multisafepay_time_unit' setting field argument
     153
     154### Changed
     155+ PLGWOOS-1029: REST Response Cache Control
     156
     157= Release Notes - MultiSafepay 6.10.0 (Nov 10th, 2025) =
    142158
    143159### Added
     
    148164+ PLGWOOS-956: MultiSafepay PostePay is being listed as only one payment method, but it should be two
    149165
    150 = Release Notes - WooCommerce 6.9.0 (Jun 5th, 2025) =
     166= Release Notes - MultiSafepay 6.9.0 (Jun 5th, 2025) =
    151167
    152168### Added
     
    166182+ PLGWOOS-1004: Adding shipping method name in the Order Request, instead of generic label "Shipping"
    167183
    168 = Release Notes - WooCommerce 6.8.3 (Apr 9th, 2025) =
     184= Release Notes - MultiSafepay 6.8.3 (Apr 9th, 2025) =
    169185
    170186### Fixed
    171187+ PLGWOOS-992: Prevent processing a request on the REST QR related endpoints using a security token
    172188
    173 = Release Notes - WooCommerce 6.8.2 (Apr 7th, 2025) =
     189= Release Notes - MultiSafepay 6.8.2 (Apr 7th, 2025) =
    174190
    175191### Fixed
     
    178194+ PLGWOOS-987: Typecast as string the value that will be defined as merchant Item ID within the QR request
    179195
    180 = Release Notes - WooCommerce 6.8.1 (Apr 4th, 2025) =
     196= Release Notes - MultiSafepay 6.8.1 (Apr 4th, 2025) =
    181197
    182198### Fixed
     
    184200+ PLGWOOS-982: Return early when QR webhook request fails
    185201
    186 = Release Notes - WooCommerce 6.8.0 (Apr 1st, 2025) =
     202= Release Notes - MultiSafepay 6.8.0 (Apr 1st, 2025) =
    187203
    188204### Added
     
    192208+ PLGWOOS-957: Fix filter that returns payment methods that supports payment component to return only enabled methods
    193209
    194 = Release Notes - WooCommerce 6.7.3 (Mar 4th, 2025) =
     210= Release Notes - MultiSafepay 6.7.3 (Mar 4th, 2025) =
    195211
    196212### Fixed
    197213+ PLGWOOS-973: Round shopping cart item tax rates in BILLINK gateway
    198214
    199 = Release Notes - WooCommerce 6.7.2 (Feb 14th, 2025) =
     215= Release Notes - MultiSafepay 6.7.2 (Feb 14th, 2025) =
    200216
    201217### Fixed
    202218+ PLGWOOS-971: Fix iDEAL payment method not being shown on WooCommerce Checkout Blocks
    203219
    204 = Release Notes - WooCommerce 6.7.1 (Feb 7th, 2025) =
     220= Release Notes - MultiSafepay 6.7.1 (Feb 7th, 2025) =
    205221
    206222### Added
    207223+ PLGWOOS-968: Add system report values from the payment method's user role setting and enhance logging for filter methods
    208224
    209 = Release Notes - WooCommerce 6.7.0 (Jan 28th, 2025) =
     225= Release Notes - MultiSafepay 6.7.0 (Jan 28th, 2025) =
    210226
    211227### Added
     
    220236+ PLGWOOS-963: Fix redirection after canceling a payment, when the user is using the "order-pay" endpoint
    221237
    222 = Release Notes - WooCommerce 6.6.2 (Nov 5th, 2024) =
     238= Release Notes - MultiSafepay 6.6.2 (Nov 5th, 2024) =
    223239
    224240### Added
     
    228244+ PLGWOOS-953: Change label of the group cards setting field
    229245
    230 = Release Notes - WooCommerce 6.6.1 (Sep 4th, 2024) =
     246= Release Notes - MultiSafepay 6.6.1 (Sep 4th, 2024) =
    231247
    232248### Fixed
     
    236252+ PLGWOOS-950: Remove iDEAL issuers of the payment component
    237253
    238 = Release Notes - WooCommerce 6.6.0 (Jul 8th, 2024) =
     254= Release Notes - MultiSafepay 6.6.0 (Jul 8th, 2024) =
    239255
    240256### Added
     
    245261+ PLGWOOS-948: General improvements to increase unit test coverage
    246262
    247 = Release Notes - WooCommerce 6.5.1 (Jun 7th, 2024) =
     263= Release Notes - MultiSafepay 6.5.1 (Jun 7th, 2024) =
    248264
    249265### Fixed
     
    251267+ PLGWOOS-937: Fix Payment Components, where the amount is wrongly being set
    252268
    253 = Release Notes - WooCommerce 6.5.0 (May 22nd, 2024) =
     269= Release Notes - MultiSafepay 6.5.0 (May 22nd, 2024) =
    254270
    255271### Added
     
    261277+ PLGWOOS-935: Fix Payment Component on order-pay page endpoint, not loading if the shopping cart is empty
    262278
    263 = Release Notes - WooCommerce 6.4.3 (May 17th, 2024) =
     279= Release Notes - MultiSafepay 6.4.3 (May 17th, 2024) =
    264280
    265281### Fixed
    266282+ PLGWOOS-922: Reduce the amount of API request improving general performance of the plugin
    267283
    268 = Release Notes - WooCommerce 6.4.2 (May 6th, 2024) =
     284= Release Notes - MultiSafepay 6.4.2 (May 6th, 2024) =
    269285
    270286### Fixed
    271287+ PLGWOOS-922: Reduce the amount of request done to the payment-methods endpoint, from the admin
    272288
    273 = Release Notes - WooCommerce 6.4.1 (Apr 17th, 2024) =
     289= Release Notes - MultiSafepay 6.4.1 (Apr 17th, 2024) =
    274290
    275291### Fixed
    276292+ PLGWOOS-920: Fix Apple Pay and Google Pay being shown in WooCommerce blocks, when are using direct payment buttons
    277293
    278 = Release Notes - WooCommerce 6.4.0 (Apr 17th, 2024) =
     294= Release Notes - MultiSafepay 6.4.0 (Apr 17th, 2024) =
    279295
    280296### Added
     
    285301+ DAVAMS-747: Fix 'template_id' within the Payment Components
    286302
    287 = Release Notes - WooCommerce 6.3.1 (Mar 13th, 2024) =
     303= Release Notes - MultiSafepay 6.3.1 (Mar 13th, 2024) =
    288304
    289305### Fixed
     
    293309+ PLGWOOS-912: Ignore offline action - notifications related with pretransactions
    294310
    295 = Release Notes - WooCommerce 6.3.0 (Mar 11th, 2024) =
     311= Release Notes - MultiSafepay 6.3.0 (Mar 11th, 2024) =
    296312
    297313### Added
    298314+ PLGWOOS-866: Add Apple Pay and Google Pay direct
    299315
    300 = Release Notes - WooCommerce 6.2.1 (Feb 1st, 2024) =
     316= Release Notes - MultiSafepay 6.2.1 (Feb 1st, 2024) =
    301317
    302318### Fixed
     
    304320+ PLGWOOS-901: Remove duplicated method reinit_payment_component()
    305321
    306 = Release Notes - WooCommerce 6.2.0 (Nov 13th, 2023) =
     322= Release Notes - MultiSafepay 6.2.0 (Nov 13th, 2023) =
    307323
    308324### Added
    309325+ PLGWOOS-872: Add support for [High-Performance Order Storage](https://woo.com/document/high-performance-order-storage/)
    310326
    311 = Release Notes - WooCommerce 6.1.2 (Oct 19th, 2023) =
     327= Release Notes - MultiSafepay 6.1.2 (Oct 19th, 2023) =
    312328
    313329### Fixed
     
    317333+ PLGWOOS-890: Bring back the payment component setting field to allow users to disable it.
    318334
    319 = Release Notes - WooCommerce 6.1.1 (Oct 16th, 2023) =
     335= Release Notes - MultiSafepay 6.1.1 (Oct 16th, 2023) =
    320336
    321337### Fixed
    322338+ PLGWOOS-887: Disable Payment Components for Gift Cards payment methods, even when API is returning Payment Component is allowed
    323339
    324 = Release Notes - WooCommerce 6.1.0 (Oct 11th, 2023) =
     340= Release Notes - MultiSafepay 6.1.0 (Oct 11th, 2023) =
    325341
    326342### Added
     
    330346+ PLGWOOS-882: Enable Payment Components by default in all payment methods where is available
    331347
    332 = Release Notes - WooCommerce 5.4.1 (Sep 27th, 2023) =
    333 
    334 ### Fixed
    335 + PLGWOOS-878: Fix Payment Components not being shown.
    336 
    337 = Release Notes - WooCommerce 5.4.0 (Sep 26th, 2023) =
    338 
    339 ### Added
    340 + PLGWOOS-870: Add support to define completed as a final order status where notification will not change the order status
    341 
    342 ### Fixed
    343 + PLGWOOS-871: Fix the minimum amount filter failing in the order-pay page
    344 
    345 ### Changed
    346 + DAVAMS-665 General refactor for better error handling
    347 
    348 = Release Notes - WooCommerce 5.3.0 (Aug 10th, 2023) =
    349 
    350 ### Added
    351 + DAVAMS-636: Add Zinia payment method
    352 
    353 ### Changed
    354 + DAVAMS-640: Refactor of the Payment Component
    355 
    356 = Release Notes - WooCommerce 5.2.2 (Jun 19th, 2023) =
    357 
    358 ### Fixed
    359 + PLGWOOS-852: Fix typo in description of Pay After Delivery Installments
    360 
    361 ### Changed
    362 + DAVAMS-621: Rename "Credit Card" payment method as "Card payment"
    363 + PLGWOOS-844: Change API Keys settings field to password type
    364 
    365 = Release Notes - WooCommerce 5.2.1 (Feb 22nd, 2023) =
    366 
    367 ### Fixed
    368 + PLGWOOS-850: Fix 'Tested up to' value in readme.txt file to reflect the latest WordPress version tested, instead of the latest WooCommerce set by mistake
    369 
    370 = Release Notes - WooCommerce 5.2.0 (Feb 22nd, 2023) =
    371 
    372 ### Added
    373 + DAVAMS-599: Add new setting field to disable the shopping cart within the order request
    374 + DAVAMS-573: Add Pay After Delivery Installments payment method
    375 
    376 ### Removed
    377 + DAVAMS-571: Remove Google Analytics tracking ID within the OrderRequest object
    378 + PLGWOOS-815: Remove uninstall script
    379 
    380 ### Changed
    381 + DAVAMS-581: Rebrand Pay After Delivery with new logos
    382 
    383 = Release Notes - WooCommerce 5.1.2 (Jan 10th, 2022) =
    384 
    385 ### Fixed
    386 + PLGWOOS-842: Fix Riverty terms and conditions field validation when payment method is set as redirect type
    387 
    388 ### Changed
    389 + PLGWOOS-840: Update Dutch and Belgian translations
    390 
    391 = Release Notes - WooCommerce 5.1.1 (Dec 6th, 2022) =
    392 
    393 ### Changed
    394 + DAVAMS-547: AfterPay -> Riverty rebrand
    395 + PLGWOOS-837: Declare support for WordPress version 6.1 and WooCommerce version 7.1
    396 
    397 = Release Notes - WooCommerce 5.1.0 (Sep 30th, 2022) =
    398 
    399 ### Added
    400 + PLGWOOS-828: Add Google Pay
    401 + PLGWOOS-516: Add Amazon Pay
    402 + PLGWOOS-516: Add support for [WooCommerce Blocks](https://wordpress.org/plugins/woo-gutenberg-products-block/) for redirect payment methods
    403 
    404 ### Fixed
    405 + PLGWOOS-553: Fix deprecated docs links
    406 
    407 = Release Notes - WooCommerce 5.0.0 (Sep 1st, 2022) =
    408 
    409 ### Added
    410 + PLGWOOS-829: Improvement over the error handling in MultiSafepayClient
    411 
    412 ### Changed
    413 + PLGWOOS-827: Drop support for PHP 7.2
    414 
    415 = Release Notes - WooCommerce 4.17.2 (Jul 22nd, 2022) =
    416 
    417 ### Fixed
    418 + PLGWOOS-825: Fix an issue in which some payment methods are not being shown in the checkout, because of the setting field country selector is assuming the wrong value in some cases
    419 
    420 = Release Notes - WooCommerce 4.17.1 (Jul 22nd, 2022) =
    421 
    422 ### Changed
    423 + PLGWOOS-817: Improvement in the escaping of the outputs of the settings page
    424 
    425 = Release Notes - WooCommerce 4.17.0 (Jul 21st, 2022) =
    426 
    427 ### Removed
    428 + PLGWOOS-816: Remove validation to check if a gateway is enabled in the merchant account, before activate the WooCommerce payment method
    429 + PLGWOOS-818: Remove upgrade notice functionality in plugin list page
    430 
    431 ### Changed
    432 + PLGWOOS-817: Improvement in sanitization and validation of the inputs, and escaping the outputs
    433 
    434 = Release Notes - WooCommerce 4.16.0 (Jul 20th, 2022) =
    435 
    436 ### Added
    437 + DAVAMS-490: Add MyBank payment method
    438 
    439 ### Removed
    440 + PLGWOOS-811: Remove download plugin logs button and related methods
    441 
    442 = Release Notes - WooCommerce 4.15.0 (May 25th, 2022) =
    443 
    444 ### Added
    445 + DAVAMS-470: Add terms and conditions checkbox to AfterPay
    446 
    447 ### Changed
    448 + PLGWOOS-805: Declare support for Wordpress 6.0
    449 
    450 = Release Notes - WooCommerce 4.14.0 (May 19th, 2022) =
    451 
    452 ### Added
    453 + DAVAMS-476: Add Alipay+
    454 
    455 ### Changed
    456 + PLGWOOS-804: Use default locale if 'get_locale' returns null to prevent third party plugin errors
    457 + PHPSDK-93: Upgrade the [PHP-SDK](https://github.com/MultiSafepay/php-sdk) dependency to 5.5.0
    458 
    459 = Release Notes - WooCommerce 4.13.1 (Mar 23rd, 2022) =
    460 
    461 ### Added
    462 + PLGWOOS-792: Declare support for WordPress 5.9.2 and WooCommerce 6.3.1
    463 + PLGWOOS-790: Improvement on debug mode, logging the body of the POST notification request
    464 
    465 ### Fixed
    466 + PLGWOOS-791: Fix error when WooCommerce order is not found after receive a valid POST notification
    467 
    468 = Release Notes - WooCommerce 4.13.0 (Feb 1st, 2022) =
    469 
    470 ### Added
    471 + PLGWOOS-770: Add payment component support for payment options: Visa, Mastercard, Maestro and American Express
    472 + PLGWOOS-774: Add support to process 'smart_coupon' coupons from Smart Coupons third party plugin
    473 + PLGWOOS-775: Log shopping cart content when debug mode is enabled
    474 
    475 = Release Notes - WooCommerce 4.12.0 (Jan 13th, 2022) =
    476 
    477 ### Added
    478 + PLGWOOS-769: Add new filter 'multisafepay_merchant_item_id' to allow third party developers overwrite the merchant_item_id property within the ShoppingCart object
    479 
    480 ### Changed
    481 + PLGWOOS-744: Update 'Betaal per Maand' default max_amount value, according with new product rules
    482 + PLGWOOS-759: Rebrand Sofort payment method
    483 
    484 = Release Notes - WooCommerce 4.11.0 (Jan 4th, 2022) =
    485 
    486 ### Added
    487 + PLGWOOS-745: Add Payment Component
    488 
    489 ### Changed
    490 + PLGWOOS-765: Refactor PaymentMethodsController::generate_orders_from_backend() to work only with one argument and avoiding conflicts with third party plugins
    491 + PLGWOOS-745: Tokenization now works through the Payment Component
    492 
    493 ### Fixed
    494 + PLGWOOS-763: Fix error on plugin list when application can not connect with WordPress network
    495 
    496 = Release Notes - WooCommerce 4.10.0 (Dec 13th, 2021) =
    497 
    498 ### Added
    499 + PLGWOOS-748: Add PHP-SDK version to system report
    500 + PLGWOOS-758: Add filter to turn notifications to GET method
    501 
    502 ### Removed
    503 + DAVAMS-460: Remove ING Home’Pay
    504 
    505 ### Changed
    506 + PLGWOOS-695: Replace HTTP Client, use WP_HTTP instead kriswallsmith/buzz
    507 + PLGWOOS-749: Replace logo of Bancontact for new one
    508 
    509 ### Fixed
    510 + PLGWOOS-752: Fix missing placeholder for Test API Key input field in settings page
    511 
    512 = Release Notes - WooCommerce 4.9.0 (Oct 18th, 2021) =
    513 
    514 ### Added
    515 + PLGWOOS-715: Add 2 "Generic Gateways" which include a flexible gateway code that allows any merchant to connect to almost every payment method we offer.
    516 + PLGWOOS-746: Declare support for WordPress 5.8.1 and WooCommerce 5.8.0
    517 
    518 ### Changed
    519 + PLGWOOS-740: Improve the helper text of the Google Analytics ID setting field, adding a link to Documentation Center
    520 + PLGWOOS-747: Upgrade the [PHP-SDK](https://github.com/MultiSafepay/php-sdk) component to 5.3.0
    521 
    522 ### Fixed
    523 + PLGWOOS-739: Fix fatal error related with undefined method when processing orders using iDEAL QR
    524 + PLGWOOS-743: Fix broken links to Documentation Center in settings page
    525 
    526 = Release Notes - WooCommerce 4.8.3 (Sep 6th, 2021) =
    527 
    528 ### Fixed
    529 + PLGWOOS-737: Fix error related with refunds by updating the PHP-SDK to 5.2.1
    530 
    531 = Release Notes - WooCommerce 4.8.2 (Sep 2nd, 2021) =
    532 
    533 ### Added
    534 + PLGWOOS-730: Declare support for WooCommerce 5.6.0
    535 
    536 = Release Notes - WooCommerce 4.8.1 (Aug 9th, 2021) =
    537 
    538 ### Fixed
    539 + PLGWOOS-727: Show error message from the API in the checkout page, when there is an error on direct transactions
    540 
    541 = Release Notes - WooCommerce 4.8.0 (Aug 4th, 2021) =
    542 
    543 ### Added
    544 + PLGWOOS-723: Declare support for WooCommerce 5.5.2 and WordPress 5.8
    545 + PLGWOOS-711: Add missing titles in setting pages
    546 
    547 ### Changed
    548 + PLGWOOS-718: Remove PSP ID string when register the transaction ID in WC_Order->payment_complete()
    549 
    550 = Release Notes - WooCommerce 4.7.0 (Jun 23rd, 2021) =
    551 
    552 ### Added
    553 + PLGWOOS-706: Declare support for WooCommerce 5.4.1
    554 
    555 ### Changed
    556 + PLGWOOS-672: Change notification method from GET to [POST](https://docs.multisafepay.com/faq/api/notification-url/#get-vs-post-notification) by default
    557 
    558 ### Fixed
    559 + PLGWOOS-704: Log errors in the MultiSafepay log file, when processing notifications.
    560 
    561 = Release Notes - WooCommerce 4.6.0 (May 19th, 2021) =
    562 
    563 ### Added
    564 + PLGWOOS-625: Add log section in MultiSafepay settings page
    565 + PLGWOOS-666: Add MultiSafepay system status section in settings page
    566 + PLGWOOS-376: Add support to show upgrade notices in plugin list
    567 + PLGWOOS-657: Add nl_BE language
    568 
    569 ### Fixed
    570 + PLGWOOS-694: Fix notification for orders fully paid with gift cards
    571 + PLGWOOS-692: Fix Second Chance within the orderRequest object
    572 + PLGWOOS-654: Fix the gateway_id assigned to the properties of each token
    573 
    574 = Release Notes - WooCommerce 4.5.1 (Apr 7th, 2021) =
    575 
    576 ### Fixed
    577 + PLGWOOS-661: Fix payment methods ids to match list of gateway lists keys, which was producing an error to process notification for Sofort payments
    578 + PLGWOOS-663: Fix stock decreasing error, in relation with Bank Transfer gateway and notification flows
    579 
    580 = Release Notes - WooCommerce 4.5.0 (Mar 31st, 2021) =
    581 
    582 ### Fixed
    583 + PLGWOOS-659: Fix initialization of the plugin on multisite environments in which WooCommerce has been activated network wide
    584 
    585 ### Added
    586 + PLGWOOS-534: Add generic gateway
    587 
    588 = Release Notes - WooCommerce 4.4.1 (Mar 25th, 2021) =
    589 
    590 ### Fixed
    591 + PLGWOOS-653: Fix overwriting initial order status when transaction is initialized
    592 
    593 = Release Notes - WooCommerce 4.4.0 (Mar 23rd, 2021) =
    594 
    595 ### Fixed
    596 + PLGWOOS-648: Return 0 as tax rate, if WooCommerce taxes are disabled but tax rules are registered
    597 + PLGWOOS-647: Add verification to check if the token used in the transaction belongs to the customer
    598 
    599 ### Added
    600 + PLGWOOS-651: Add setting to select type of transaction in SEPA Direct Debit, E-Invoicing, in3, Santander Consumer Finance, AfterPay and iDEAL
    601 + PLGWOOS-644: Add setting to select type of transaction in Pay After Delivery
    602 + PLGWOOS-640: Add setting to select type of transaction in Bank Transfer
    603 
    604 = Release Notes - WooCommerce 4.3.0 (Mar 18th, 2021) =
    605 
    606 ### Fixed
    607 + PLGWOOS-626: Fix order not being cancelled when customer cancels the order
    608 + PLGWOOS-630: Fix include shipping item in full refund of billing suite payment methods
    609 
    610 ### Added
    611 + PLGWOOS-629: Add shipping item to the order request, even if this one is free
    612 + PLGWOOS-631: Add delivery address in order request even if the shipping amount is 0
    613 + PLGWOOS-634: Add settings field to redirect to check out page or cart page on cancelling the order
    614 + PLGWOOS-635: Add suggestion to set default initial order status for bank transfer to wc-on-hold
    615 + PLGWOOS-636: Add notification endpoint from version 3.8.0 to process deprecated notifications
    616 
    617 ### Changed
    618 + PLGWOOS-622: Change notification url for all payment methods to a single notification url
    619 
    620 = Release Notes - WooCommerce 4.2.2 (Mar 16th, 2021) =
    621 
    622 ### Fixed
    623 + PLGWOOS-632: Fix undefined method get_the_user_ip
    624 + PLGWOOS-621: Fix division by zero when fee price is 0
    625 
    626 = Release Notes - WooCommerce 4.2.1 (Mar 11th, 2021) =
    627 
    628 ### Fixed
    629 + PLGWOOS-613: Fix error related with multiple forwarded IPs by updating the PHP-SDK to 5.0.1
    630 
    631 ### Added
    632 + PLGWOOS-398: Add support to change the data in the OrderRequest using WordPress filters
    633 
    634 ### Changed
    635 + PLGWOOS-614: Avoid changing order status if transaction is partially refunded
    636 
    637 = Release Notes - WooCommerce 4.2.0 (Mar 9th, 2021) =
    638 
    639 ### Changed
    640 + PLGWOOS-602: Move invoice and shipped settings field from order status tab to options tab
    641 + PLGWOOS-602: Remove completed status from order status tab in settings page
    642 + PLGWOOS-601: Change default status for declined transactions from wc-cancelled to wc-failed
    643 
    644 ### Fixed
    645 + PLGWOOS-599: Fix typo in string message when payment method changes
    646 + PLGWOOS-598: Replace hardcoded url using plugins_url function
    647 + PLGWOOS-605: Fix description of country filter field
    648 
    649 ### Added
    650 + PLGWOOS-603: Add setting field for custom order description
    651 + PLGWOOS-604: Add forwarded IP to the CustomerDetails object
    652 + PLGWOOS-597: Support for orders with is_vat_exempt
    653 + PLGWOOS-606: Add chargeback transaction status in plugin settings
    654 
    655 = Release Notes - WooCommerce 4.1.8 (Mar 5th, 2021) =
    656 
    657 ### Changed
    658 + PLGWOOS-593: Register PSP ID in WooCommerce order using order complete payment method
    659 + PLGWOOS-593: Change notification method on completed status to use $order->complete_payment()
    660 
    661 ### Fixed
    662 + PLGWOOS-594: Fix Credit Card payment method form, to show description if customer is not logged in
    663 
    664 = Release Notes - WooCommerce 4.1.7 (Mar 3rd, 2021) =
    665 
    666 ### Changed
    667 + PLGWOOS-579: Remove warning message on validation, when enabling CREDITCARD gateway
    668 
    669 ### Fixed
    670 + PLGWOOS-584: Fix conflict with third party plugins related with Discovery exception
    671 + PLGWOOS-585: Set MultiSafepay transaction as shipped or invoiced using order number instead of order id
    672 
    673 = Release Notes - WooCommerce 4.1.6 (Mar 2nd, 2021) =
    674 
    675 ### Added
    676 + PLGWOOS-574: Add locale support
    677 
    678 ### Changed
    679 + PLGWOOS-575: Change settings page capability requirement from manage_options to manage_woocommerce
    680 
    681 ### Fixed
    682 + PLGWOOS-580: Show credit card payment method description in checkout
    683 + PLGWOOS-569: Remove class that trigger validation styles for ideal select in checkout page
    684 
    685 
    686 = Release Notes - WooCommerce 4.1.5 (Feb 24th, 2021) =
    687 
    688 ### Fixed
    689 + PLGWOOS-552: Fix product item price with discounts introduced by third party plugins (#252)
    690 
    691 
    692 = Release Notes - WooCommerce 4.1.4 (Feb 23rd, 2021) =
    693 
    694 ### Fixed
    695 + PLGWOOS-563: Remove some nonce validations to support custom checkouts forms (#249)
    696 + PLGWOOS-550: Typecast cart item quantity to int to avoid errors in the PHP-SDK (#248)
    697 
    698 ### Changed
    699 + PLGWOOS-556: Change composer dependencies to avoid conflicts with other plugins (#247)
    700 + PLGWOOS-562: Add fallback for in3, in case no fields is filled in checkout, convert the transaction to redirect type (#250)
    701 
    702 
    703 = Release Notes - WooCommerce 4.1.3 (Feb 21st, 2021) =
    704 
    705 ### Fixed
    706 + PLGWOOS-549: Support custom order numbers generated by third party plugins in notification method
    707 + PLGWOOS-551: Resize logo if theme used by merchant do not support WooCommerce
    708 
    709 
    710 = Release Notes - WooCommerce 4.1.2 (Feb 19th, 2021) =
    711 
    712 ### Fixed
    713 + PLGWOOS-548: Fix iDEAL gateway if no issuer selected in checkout
    714 
    715 
    716 = Release Notes - WooCommerce 4.1.1 (Feb 18th, 2021) =
    717 
    718 ### Changed
    719 + PLGWOOS-545: Remove API Key validation
    720 
    721 
    722 = Release Notes - WooCommerce 4.1.0 (Feb 17th, 2021) =
    723 
    724 ### Added
    725 + PLGWOOS-512: Add support for tokenization.
    726 + PLGWOOS-521: Change order status on callback even if merchant did not save the settings, using defaults.
    727 + PLGWOOS-530: Process notification, even when the payment method returned by MultiSafepay is not registered as WooCommerce gateway.
    728 + PLGWOOS-531: Avoid process refund if amount submitted in backend is 0
    729 
    730 ### Fixed
    731 + PLGWOOS-535: Fix bug min_amount filter
    732 + PLGWOOS-536: Fix instructions in multi select country field
    733 + PLGWOOS-518: Fix protocol of notification URL
    734 + PLGWOOS-526: Fix typo error in AfterPay payment method title
    735 + PLGWOOS-523: Fix type of transaction to redirect for Dotpay payment method
    736 
    737 ### Changed
    738 + PLGWOOS-519: Improvement for coupons support in ShoppingCart.
    739 + PLGWOOS-528: Refactor gender and salutation fields to process different validation messages
    740 + PLGWOOS-503: Move debug mode field to options section
    741 
    742 ### Removed
    743 + PLGWOOS-525: Remove validation in backend for MultiSafepay payment method
    744 + PLGWOOS-516: Avoid initialize the plugin if WooCommerce is not active
    745 
    746 
    747 = Release Notes - WooCommerce 4.0.0 (internal release) (Feb 12th, 2021) =
    748 
    749 ### Added
    750 + Complete rewrite of the plugin
    751 + Full and partial refunds for non billing suite payment methods
    752 + Full refunds for billing suite payment methods
    753 + Set MultiSafepay transactions as shipped when order reach the defined status in settings
    754 + Set MultiSafepay transaction as invoiced when order reach the defined status in settings
    755 + Filter payment methods by country
    756 + Filter payment methods by maximum amount of order
    757 + Filter payment methods by minimum amount of order
    758 + Custom initialized status for each payment method
    759 + Validations in backend settings fields
    760 + Support for compound taxes
    761 
    762 ### Changed
    763 + PLGWOOS-410: Refactor plugin using the [PHP-SDK](https://github.com/MultiSafepay/php-sdk)
    764 
    765 ### Removed
    766 + Remove FastCheckout
     348
     349= Release Notes - MultiSafepay 6.0.0 (Oct 4th, 2023) =
     350
     351### Added
     352+ PLGWOOS-803: Add support to register the payment methods dynamically, via API request.
     353+ PLGWOOS-859: Trigger checkout validations of the fields related to the payment component on checkout submission.
     354+ PLGWOOS-857: Add support for partial refunds for [BNPL payment methods](https://docs.multisafepay.com/docs/bnpl)
  • multisafepay/trunk/src/PaymentMethods/Base/BasePaymentMethod.php

    r3393028 r3464988  
    465465     */
    466466    private function is_woocommerce_checkout_block_active(): bool {
    467         return WC_Blocks_Utils::has_block_in_page( wc_get_page_id( 'checkout' ), 'woocommerce/checkout' );
     467        $checkout_page_id = wc_get_page_id( 'checkout' );
     468        $checkout_page    = get_post( $checkout_page_id );
     469        $has_block        = WC_Blocks_Utils::has_block_in_page( $checkout_page_id, 'woocommerce/checkout' );
     470
     471        // Fallback: WC_Blocks_Utils::has_block_in_page() doesn't detect nested blocks (e.g., inside columns).
     472        // If not detected, check directly in post content.
     473        if ( ! $has_block && $checkout_page ) {
     474            $has_block = strpos( $checkout_page->post_content, 'wp:woocommerce/checkout' ) !== false;
     475        }
     476
     477        return $has_block;
    468478    }
    469479
  • multisafepay/trunk/src/PaymentMethods/Base/BasePaymentMethodBlocks.php

    r3393028 r3464988  
    118118    public function get_payment_method_data(): array {
    119119        $payment_methods_data = array();
     120        $show_icons           = (bool) get_option( 'multisafepay_checkout_block_payment_icons', false );
    120121        foreach ( $this->gateways as $gateway ) {
    121122            $payment_methods_data[] = array(
     
    123124                'title'       => $gateway->get_title(),
    124125                'description' => $gateway->get_description(),
     126                'icon'        => $show_icons ? $gateway->get_payment_method_icon() : '',
    125127                'is_admin'    => is_admin(),
    126128            );
  • multisafepay/trunk/src/PaymentMethods/PaymentMethodsController.php

    r3393028 r3464988  
    1616use MultiSafepay\WooCommerce\Utils\Logger;
    1717use MultiSafepay\WooCommerce\Utils\Order as OrderUtil;
     18use MultiSafepay\WooCommerce\Utils\RestResponseBuilder;
    1819use Psr\Http\Client\ClientExceptionInterface;
    1920use WC_Data_Exception;
    2021use WC_Order;
    2122use WP_REST_Request;
     23use WP_REST_Response;
    2224
    2325/**
     
    205207     *
    206208     * @param WP_REST_Request $request
    207      * @return void
     209     * @return WP_REST_Response
    208210     * @throws WC_Data_Exception
    209211     */
    210     public function process_post_notification( WP_REST_Request $request ): void {
     212    public function process_post_notification( WP_REST_Request $request ): WP_REST_Response {
    211213        $transactionid = $request->get_param( 'transactionid' );
    212214
    213215        if ( ! $request->sanitize_params() ) {
    214             $this->logger->log_info( 'Notification for transactionid . ' . $transactionid . ' has been received but could not be sanitized' );
    215             header( 'Content-type: text/plain' );
    216             die( 'OK' );
     216            $this->logger->log_info( 'Notification for transactionid ' . $transactionid . ' has been received but could not be sanitized' );
     217            return RestResponseBuilder::build_response();
    217218        }
    218219
    219220        $payload_type = $request->get_param( 'payload_type' ) ?? '';
    220221        if ( 'pretransaction' === $payload_type ) {
    221             $this->logger->log_info( 'Notification for transactionid . ' . $transactionid . ' has been received but is going to be ignored, because is pretransaction type' );
    222             header( 'Content-type: text/plain' );
    223             die( 'OK' );
    224         }
    225 
    226         $auth                = $request->get_header( 'auth' );
    227         $body                = $request->get_body();
    228         $api_key             = ( new SdkService() )->get_api_key();
     222            $this->logger->log_info( 'Notification for transactionid ' . $transactionid . ' has been received but is going to be ignored, because is pretransaction type' );
     223            return RestResponseBuilder::build_response();
     224        }
     225
     226        $auth    = (string) ( $request->get_header( 'auth' ) ?? '' );
     227        $body    = $request->get_body();
     228        $api_key = ( new SdkService() )->get_api_key();
     229
     230        if ( '' === $auth ) {
     231            $this->logger->log_info( 'Notification for transactionid ' . $transactionid . ' has been received but auth header is missing' );
     232            return RestResponseBuilder::build_response();
     233        }
     234
    229235        $verify_notification = Notification::verifyNotification( $body, $auth, $api_key );
    230236
    231237        if ( ! $verify_notification ) {
    232             $this->logger->log_info( 'Notification for transactionid . ' . $transactionid . ' has been received but is not validated' );
    233             header( 'Content-type: text/plain' );
    234             die( 'OK' );
     238            $this->logger->log_info( 'Notification for transactionid ' . $transactionid . ' has been received but is not validated' );
     239            return RestResponseBuilder::build_response();
    235240        }
    236241
     
    245250        $multisafepay_transaction = new TransactionResponse( $request->get_json_params(), $body );
    246251        ( new PaymentMethodCallback( (string) $transactionid, $multisafepay_transaction ) )->process_callback();
     252
     253        return RestResponseBuilder::build_response();
    247254    }
    248255
  • multisafepay/trunk/src/Services/Qr/QrPaymentWebhook.php

    r3269746 r3464988  
    1313use MultiSafepay\WooCommerce\Utils\Logger;
    1414use MultiSafepay\WooCommerce\Utils\Order;
     15use MultiSafepay\WooCommerce\Utils\RestResponseBuilder;
    1516use WC_Data_Exception;
    1617use WC_Order;
    1718use WP_REST_Request;
     19use WP_REST_Response;
    1820
    1921/**
     
    4042     *
    4143     * @param TransactionResponse $multisafepay_transaction
    42      * @return void
    43      */
    44     public function create_woocommerce_order( TransactionResponse $multisafepay_transaction ): void {
     44     * @return WP_REST_Response
     45     */
     46    public function create_woocommerce_order( TransactionResponse $multisafepay_transaction ): WP_REST_Response {
    4547        $multisafepay_order_id = $multisafepay_transaction->getOrderId();
    4648
     
    4951        if ( empty( $checkout_data ) ) {
    5052            $this->logger->log_error( 'Could not create order for order id ' . $multisafepay_order_id . ' because checkout data is empty' );
    51             return;
     53            return RestResponseBuilder::build_response();
    5254        }
    5355
     
    133135            }
    134136
    135             header( 'Content-type: text/plain' );
    136             die( 'OK' );
     137            return RestResponseBuilder::build_response();
    137138
    138139        } catch ( Exception | WC_Data_Exception  $exception ) {
    139140            $this->logger->log_error( 'Something went wrong when creating WooCommerce order for MultiSafepay order id ' . $multisafepay_order_id . ' with message: ' . $exception->getMessage() );
    140141
    141             header( 'Content-type: text/plain' );
    142             die( 'OK' );
     142            return RestResponseBuilder::build_response();
    143143        }
    144144    }
     
    233233    /**
    234234     * @param WP_REST_Request $request
    235      * @return void
    236      */
    237     public function process_webhook( WP_REST_Request $request ): void {
     235     * @return WP_REST_Response
     236     */
     237    public function process_webhook( WP_REST_Request $request ): WP_REST_Response {
    238238        if ( ! ( new PaymentMethodService() )->is_any_woocommerce_payment_gateway_with_payment_component_qr_enabled() ) {
    239239            $this->logger->log_error( 'Payment component QR is not enabled' );
    240             header( 'Content-type: text/plain' );
    241             die( 'OK' );
     240            return RestResponseBuilder::build_response();
    242241        }
    243242
    244243        try {
    245244            $multisafepay_transaction = $this->validate_webhook_request( $request );
    246             $this->create_woocommerce_order( $multisafepay_transaction );
     245            if ( ! $multisafepay_transaction ) {
     246                return RestResponseBuilder::build_response();
     247            }
     248            return $this->create_woocommerce_order( $multisafepay_transaction );
    247249        } catch ( Exception | InvalidArgumentException $exception ) {
    248250            $this->logger->log_error( 'Something went wrong when processing webhook for transaction id ' . ( $request->get_param( 'transactionid' ) ?? 'unknown' ) . ' with message: ' . $exception->getMessage() );
    249             header( 'Content-type: text/plain' );
    250             die( 'OK' );
     251            return RestResponseBuilder::build_response();
    251252        }
    252253    }
     
    263264
    264265        if ( ! $request->sanitize_params() ) {
    265             $this->logger->log_info( 'Notification for transactionid . ' . $transactionid . ' has been received but could not be sanitized' );
    266             header( 'Content-type: text/plain' );
    267             die( 'OK' );
     266            $this->logger->log_info( 'Notification for transactionid ' . $transactionid . ' has been received but could not be sanitized' );
     267            return null;
    268268        }
    269269
     
    271271
    272272        if ( 'pretransaction' === $payload_type ) {
    273             $this->logger->log_info( 'Notification for transactionid . ' . $transactionid . ' has been received but is going to be ignored, because is pretransaction type' );
    274             header( 'Content-type: text/plain' );
    275             die( 'OK' );
    276         }
    277 
    278         $auth                = $request->get_header( 'auth' );
    279         $body                = $request->get_body();
    280         $api_key             = ( new SdkService() )->get_api_key();
     273            $this->logger->log_info( 'Notification for transactionid ' . $transactionid . ' has been received but is going to be ignored, because is pretransaction type' );
     274            return null;
     275        }
     276
     277        $auth    = (string) ( $request->get_header( 'auth' ) ?? '' );
     278        $body    = $request->get_body();
     279        $api_key = ( new SdkService() )->get_api_key();
     280
     281        if ( '' === $auth ) {
     282            $this->logger->log_info( 'Notification for transactionid ' . $transactionid . ' has been received but auth header is missing' );
     283            return null;
     284        }
     285
    281286        $verify_notification = Notification::verifyNotification( $body, $auth, $api_key );
    282287
    283288        if ( ! $verify_notification ) {
    284             $this->logger->log_info( 'Notification for transactionid . ' . $transactionid . ' has been received but is not validated' );
    285             header( 'Content-type: text/plain' );
    286             die( 'OK' );
     289            $this->logger->log_info( 'Notification for transactionid ' . $transactionid . ' has been received but is not validated' );
     290            return null;
    287291        }
    288292
     
    298302
    299303        if ( Transaction::COMPLETED !== $multisafepay_transaction->getStatus() ) {
    300             header( 'Content-type: text/plain' );
    301             die( 'OK' );
     304            return null;
    302305        }
    303306
     
    309312     *
    310313     * @param WP_REST_Request $request
    311      * @return void
    312      */
    313     public function process_balancer( WP_REST_Request $request ): void {
     314     * @return WP_REST_Response
     315     */
     316    public function process_balancer( WP_REST_Request $request ): WP_REST_Response {
    314317        $order_id = sanitize_text_field( wp_unslash( $request->get_param( 'transactionid' ) ?? '' ) );
    315318
    316319        if ( ! $request->sanitize_params() ) {
    317             $this->logger->log_info( 'Notification for transactionid . ' . $order_id . ' has been received but could not be sanitized' );
    318             wp_safe_redirect( wc_get_cart_url(), 302 );
    319             exit;
     320            $this->logger->log_info( 'Notification for transactionid ' . $order_id . ' has been received but could not be sanitized' );
     321            return RestResponseBuilder::build_response( 302, null, array( 'Location' => wc_get_cart_url() ) );
    320322        }
    321323
    322324        if ( empty( $order_id ) ) {
    323325            $this->logger->log_info( 'Request received without transaction ID' );
    324             wp_safe_redirect( wc_get_cart_url(), 302 );
    325             exit;
     326            return RestResponseBuilder::build_response( 302, null, array( 'Location' => wc_get_cart_url() ) );
    326327        }
    327328
    328329        if ( ! ( new PaymentMethodService() )->is_any_woocommerce_payment_gateway_with_payment_component_qr_enabled() ) {
    329330            $this->logger->log_error( 'Payment component QR is not enabled' );
    330             wp_safe_redirect( wc_get_cart_url(), 302 );
    331             exit();
     331            return RestResponseBuilder::build_response( 302, null, array( 'Location' => wc_get_cart_url() ) );
    332332        }
    333333
     
    337337            if ( $token !== $expected_token ) {
    338338                $this->logger->log_warning( 'Invalid token for transaction: ' . $order_id );
    339                 wp_safe_redirect( wc_get_cart_url(), 302 );
    340                 exit;
     339                return RestResponseBuilder::build_response( 302, null, array( 'Location' => wc_get_cart_url() ) );
    341340            }
    342341        }
     
    353352            $woocommerce_order = wc_get_order( $woocommerce_order_id );
    354353
    355             wp_safe_redirect( $woocommerce_order->get_checkout_order_received_url(), 302 );
    356             exit;
     354            return RestResponseBuilder::build_response( 302, null, array( 'Location' => $woocommerce_order->get_checkout_order_received_url() ) );
    357355        }
    358356
     
    361359            wc_get_checkout_url();
    362360
    363         wp_safe_redirect( $redirect_url, 302 );
    364         exit;
     361        return RestResponseBuilder::build_response( 302, null, array( 'Location' => $redirect_url ) );
    365362    }
    366363
  • multisafepay/trunk/src/Settings/SettingsFields.php

    r3182242 r3464988  
    8989            'fields' => array(
    9090                array(
     91                    'id'           => 'multisafepay_debugmode',
     92                    'label'        => __( 'Debug Mode', 'multisafepay' ),
     93                    'description'  => 'Is recommended to keep debug mode disabled in live environment',
     94                    'type'         => 'checkbox',
     95                    'default'      => false,
     96                    'placeholder'  => __( 'Debug Mode', 'multisafepay' ),
     97                    'tooltip'      => __( 'Logs additional information to the system log', 'multisafepay' ),
     98                    'callback'     => '',
     99                    'setting_type' => 'boolean',
     100                    'sort_order'   => 1,
     101                ),
     102                array(
    91103                    'id'           => 'multisafepay_group_credit_cards',
    92104                    'label'        => __( 'Group debit and credit cards', 'multisafepay' ),
    93                     'description'  => __( 'If is enabled, payment methods classified as debit and credit cards  (Amex, Maestro, Mastercard, and Visa) will shown grouped as a single payment method', 'multisafepay' ),
     105                    'description'  => __( 'If is enabled, payment methods classified as debit and credit cards  (Amex, Maestro, Mastercard, and Visa) will be shown grouped as a single payment method', 'multisafepay' ),
    94106                    'type'         => 'checkbox',
    95107                    'default'      => (bool) get_option(
     
    102114                    'setting_type' => 'boolean',
    103115                    'sort_order'   => 3,
    104                 ),
    105                 array(
    106                     'id'           => 'multisafepay_debugmode',
    107                     'label'        => __( 'Debug Mode', 'multisafepay' ),
    108                     'description'  => 'Is recommended to keep debug mode disabled in live environment',
    109                     'type'         => 'checkbox',
    110                     'default'      => false,
    111                     'placeholder'  => __( 'Debug Mode', 'multisafepay' ),
    112                     'tooltip'      => __( 'Logs additional information to the system log', 'multisafepay' ),
    113                     'callback'     => '',
    114                     'setting_type' => 'boolean',
    115                     'sort_order'   => 1,
    116                 ),
    117                 array(
    118                     'id'           => 'multisafepay_disable_shopping_cart',
    119                     'label'        => __( 'Disable Shopping Cart on the MultiSafepay payment page', 'multisafepay' ),
    120                     'description'  => 'Enable this option to hide the cart items on the MultiSafepay payment page, leaving only the total order amount. Note: This behavior won\'t be adopted by the the payment methods which require shopping cart like Riverty, E-Invoicing, in3, Klarna and Pay After Delivery.',
    121                     'type'         => 'checkbox',
    122                     'default'      => false,
    123                     'placeholder'  => __( 'Disable Shopping Cart', 'multisafepay' ),
    124                     'tooltip'      => '',
    125                     'callback'     => '',
    126                     'setting_type' => 'boolean',
    127                     'sort_order'   => 100,
    128116                ),
    129117                array(
     
    241229                ),
    242230                array(
    243                     'id'           => 'multisafepay_time_unit',
    244                     'label'        => __( 'Unit lifetime of payment link', 'multisafepay' ),
    245                     'description'  => __( 'The lifetime of a payment link by default is 30 days. This means that the customer has 30 days to complete the transaction using the payment link', 'multisafepay' ),
    246                     'type'         => 'select',
    247                     'options'      => array(
    248                         'days'    => __( 'Days', 'multisafepay' ),
    249                         'hours'   => __( 'Hours', 'multisafepay' ),
    250                         'seconds' => __( 'Seconds', 'multisafepay' ),
    251                     ),
    252                     'default'      => 'days',
    253                     'placeholder'  => __( 'Unit lifetime of payment link', 'multisafepay' ),
    254                     'tooltip'      => '',
    255                     'callback'     => '',
    256                     'setting_type' => 'string',
    257                     'sort_order'   => 40,
    258                 ),
    259                 array(
    260231                    'id'           => 'multisafepay_payment_component_template_id',
    261232                    'label'        => __( 'Payment Component Template ID', 'multisafepay' ),
     
    268239                    'setting_type' => 'string',
    269240                    'sort_order'   => 55,
     241                ),
     242                array(
     243                    'id'           => 'multisafepay_checkout_block_payment_icons',
     244                    'label'        => __( 'Show Payment Icons in WooCommerce Checkout Block', 'multisafepay' ),
     245                    'description'  => __( 'Enable this option to show payment icons on the Checkout Block', 'multisafepay' ),
     246                    'type'         => 'checkbox',
     247                    'default'      => false,
     248                    'placeholder'  => __( 'Show Payment Icons in WooCommerce Checkout Block', 'multisafepay' ),
     249                    'tooltip'      => '',
     250                    'callback'     => '',
     251                    'setting_type' => 'boolean',
     252                    'sort_order'   => 60,
     253                ),
     254                array(
     255                    'id'           => 'multisafepay_disable_shopping_cart',
     256                    'label'        => __( 'Disable Shopping Cart on the MultiSafepay payment page', 'multisafepay' ),
     257                    'description'  => __( 'Enable this option to hide the cart items on the MultiSafepay payment page, leaving only the total order amount. Note: This behavior won\'t be adopted by the the payment methods which require shopping cart like Riverty, E-Invoicing, in3, Klarna and Pay After Delivery.', 'multisafepay' ),
     258                    'type'         => 'checkbox',
     259                    'default'      => false,
     260                    'placeholder'  => __( 'Disable Shopping Cart', 'multisafepay' ),
     261                    'tooltip'      => '',
     262                    'callback'     => '',
     263                    'setting_type' => 'boolean',
     264                    'sort_order'   => 80,
    270265                ),
    271266            ),
  • multisafepay/trunk/vendor/autoload.php

    r3393028 r3464988  
    2020require_once __DIR__ . '/composer/autoload_real.php';
    2121
    22 return ComposerAutoloaderInit431ee68f29f658207118bb5cd3435acb::getLoader();
     22return ComposerAutoloaderInit28e45a30c0d551a1bda1a2bce6e79c02::getLoader();
  • multisafepay/trunk/vendor/composer/autoload_real.php

    r3393028 r3464988  
    33// autoload_real.php @generated by Composer
    44
    5 class ComposerAutoloaderInit431ee68f29f658207118bb5cd3435acb
     5class ComposerAutoloaderInit28e45a30c0d551a1bda1a2bce6e79c02
    66{
    77    private static $loader;
     
    2525        require __DIR__ . '/platform_check.php';
    2626
    27         spl_autoload_register(array('ComposerAutoloaderInit431ee68f29f658207118bb5cd3435acb', 'loadClassLoader'), true, true);
     27        spl_autoload_register(array('ComposerAutoloaderInit28e45a30c0d551a1bda1a2bce6e79c02', 'loadClassLoader'), true, true);
    2828        self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
    29         spl_autoload_unregister(array('ComposerAutoloaderInit431ee68f29f658207118bb5cd3435acb', 'loadClassLoader'));
     29        spl_autoload_unregister(array('ComposerAutoloaderInit28e45a30c0d551a1bda1a2bce6e79c02', 'loadClassLoader'));
    3030
    3131        require __DIR__ . '/autoload_static.php';
    32         call_user_func(\Composer\Autoload\ComposerStaticInit431ee68f29f658207118bb5cd3435acb::getInitializer($loader));
     32        call_user_func(\Composer\Autoload\ComposerStaticInit28e45a30c0d551a1bda1a2bce6e79c02::getInitializer($loader));
    3333
    3434        $loader->register(true);
  • multisafepay/trunk/vendor/composer/autoload_static.php

    r3393028 r3464988  
    55namespace Composer\Autoload;
    66
    7 class ComposerStaticInit431ee68f29f658207118bb5cd3435acb
     7class ComposerStaticInit28e45a30c0d551a1bda1a2bce6e79c02
    88{
    99    public static $prefixLengthsPsr4 = array (
    10         'P' => 
     10        'P' =>
    1111        array (
    1212            'Psr\\Http\\Message\\' => 17,
    1313            'Psr\\Http\\Client\\' => 16,
    1414        ),
    15         'N' => 
     15        'N' =>
    1616        array (
    1717            'Nyholm\\Psr7\\' => 12,
    1818        ),
    19         'M' => 
     19        'M' =>
    2020        array (
    2121            'MultiSafepay\\WooCommerce\\' => 25,
    2222            'MultiSafepay\\' => 13,
    2323        ),
    24         'H' => 
     24        'H' =>
    2525        array (
    2626            'Http\\Discovery\\' => 15,
     
    2929
    3030    public static $prefixDirsPsr4 = array (
    31         'Psr\\Http\\Message\\' => 
     31        'Psr\\Http\\Message\\' =>
    3232        array (
    3333            0 => __DIR__ . '/..' . '/psr/http-factory/src',
    3434            1 => __DIR__ . '/..' . '/psr/http-message/src',
    3535        ),
    36         'Psr\\Http\\Client\\' => 
     36        'Psr\\Http\\Client\\' =>
    3737        array (
    3838            0 => __DIR__ . '/..' . '/psr/http-client/src',
    3939        ),
    40         'Nyholm\\Psr7\\' => 
     40        'Nyholm\\Psr7\\' =>
    4141        array (
    4242            0 => __DIR__ . '/..' . '/nyholm/psr7/src',
    4343        ),
    44         'MultiSafepay\\WooCommerce\\' => 
     44        'MultiSafepay\\WooCommerce\\' =>
    4545        array (
    4646            0 => __DIR__ . '/../..' . '/src',
    4747        ),
    48         'MultiSafepay\\' => 
     48        'MultiSafepay\\' =>
    4949        array (
    5050            0 => __DIR__ . '/..' . '/multisafepay/php-sdk/src',
    5151        ),
    52         'Http\\Discovery\\' => 
     52        'Http\\Discovery\\' =>
    5353        array (
    5454            0 => __DIR__ . '/..' . '/php-http/discovery/src',
     
    6363    {
    6464        return \Closure::bind(function () use ($loader) {
    65             $loader->prefixLengthsPsr4 = ComposerStaticInit431ee68f29f658207118bb5cd3435acb::$prefixLengthsPsr4;
    66             $loader->prefixDirsPsr4 = ComposerStaticInit431ee68f29f658207118bb5cd3435acb::$prefixDirsPsr4;
    67             $loader->classMap = ComposerStaticInit431ee68f29f658207118bb5cd3435acb::$classMap;
     65            $loader->prefixLengthsPsr4 = ComposerStaticInit28e45a30c0d551a1bda1a2bce6e79c02::$prefixLengthsPsr4;
     66            $loader->prefixDirsPsr4 = ComposerStaticInit28e45a30c0d551a1bda1a2bce6e79c02::$prefixDirsPsr4;
     67            $loader->classMap = ComposerStaticInit28e45a30c0d551a1bda1a2bce6e79c02::$classMap;
    6868
    6969        }, null, ClassLoader::class);
  • multisafepay/trunk/vendor/composer/installed.json

    r3393028 r3464988  
    33        {
    44            "name": "multisafepay/php-sdk",
    5             "version": "5.18.0",
    6             "version_normalized": "5.18.0.0",
     5            "version": "5.20.0",
     6            "version_normalized": "5.20.0.0",
    77            "source": {
    88                "type": "git",
    99                "url": "https://github.com/MultiSafepay/php-sdk.git",
    10                 "reference": "837555d3d4699761ab34387605b192be5421ed63"
    11             },
    12             "dist": {
    13                 "type": "zip",
    14                 "url": "https://api.github.com/repos/MultiSafepay/php-sdk/zipball/837555d3d4699761ab34387605b192be5421ed63",
    15                 "reference": "837555d3d4699761ab34387605b192be5421ed63",
     10                "reference": "a83adfae608a97f584c8812eb03983d7f8fb2271"
     11            },
     12            "dist": {
     13                "type": "zip",
     14                "url": "https://api.github.com/repos/MultiSafepay/php-sdk/zipball/a83adfae608a97f584c8812eb03983d7f8fb2271",
     15                "reference": "a83adfae608a97f584c8812eb03983d7f8fb2271",
    1616                "shasum": ""
    1717            },
     
    3333                "php-http/mock-client": "^1.3",
    3434                "phpstan/phpstan": "^1.8",
    35                 "phpunit/phpunit": "^9.0 || ^7.5"
     35                "phpunit/phpunit": "^8.5 || ^9.0"
    3636            },
    3737            "suggest": {
    3838                "jschaedl/iban-validation": "Adds additional IBAN validation for \\MultiSafepay\\ValueObject\\IbanNumber"
    3939            },
    40             "time": "2025-10-15T10:31:17+00:00",
     40            "time": "2026-02-18T07:51:14+00:00",
    4141            "type": "library",
    4242            "installation-source": "dist",
     
    5353            "support": {
    5454                "issues": "https://github.com/MultiSafepay/php-sdk/issues",
    55                 "source": "https://github.com/MultiSafepay/php-sdk/tree/5.18.0"
     55                "source": "https://github.com/MultiSafepay/php-sdk/tree/5.20.0"
    5656            },
    5757            "install-path": "../multisafepay/php-sdk"
  • multisafepay/trunk/vendor/composer/installed.php

    r3393028 r3464988  
    22    'root' => array(
    33        'name' => 'multisafepay/woocommerce',
    4         'pretty_version' => '6.10.0',
    5         'version' => '6.10.0.0',
     4        'pretty_version' => '6.11.0',
     5        'version' => '6.11.0.0',
    66        'reference' => null,
    77        'type' => 'wordpress-plugin',
     
    1212    'versions' => array(
    1313        'multisafepay/php-sdk' => array(
    14             'pretty_version' => '5.18.0',
    15             'version' => '5.18.0.0',
    16             'reference' => '837555d3d4699761ab34387605b192be5421ed63',
     14            'pretty_version' => '5.20.0',
     15            'version' => '5.20.0.0',
     16            'reference' => 'a83adfae608a97f584c8812eb03983d7f8fb2271',
    1717            'type' => 'library',
    1818            'install_path' => __DIR__ . '/../multisafepay/php-sdk',
     
    2121        ),
    2222        'multisafepay/woocommerce' => array(
    23             'pretty_version' => '6.10.0',
    24             'version' => '6.10.0.0',
     23            'pretty_version' => '6.11.0',
     24            'version' => '6.11.0.0',
    2525            'reference' => null,
    2626            'type' => 'wordpress-plugin',
  • multisafepay/trunk/vendor/multisafepay/php-sdk/CHANGELOG.md

    r3393028 r3464988  
    66
    77## [Unreleased]
     8
     9## [5.20.0] - 2026-02-18
     10### Added
     11- PLGWOOS-1025: PHP SDK support for terminal endpoints
     12- PLGMAG2V2-886: Encode parameters
     13 
     14## [5.19.0] - 2026-01-15
     15### Added
     16- PLGMAG2V2-881: Add a method to easily retrieve the payment_options from the OrderRequest
     17- PHPSDK-184: Add the PaymentData object to an OrderRequest, thanks to @firstred
     18- PHPSDK-185: Add all the properties of a CaptureRequest, thanks to @firstred
     19- PHPSDK-186: Add the capture property to an OrderRequest, thanks to @firstred
     20- PHPSDK-68: Add a cleaner function for checking order status completed
     21
     22### Fixed
     23- PHPSDK-69: Fix type error when trying to retrieve shopping cart from TransactionResponse that does not have it
    824
    925## [5.18.0] - 2025-10-15
  • multisafepay/trunk/vendor/multisafepay/php-sdk/USAGE.md

    r3230524 r3464988  
    396396```
    397397
     398### List terminals
     399List all POS terminals bound to a MultiSafepay account.
     400
     401Authentication for this endpoint requires a **Merchant Account API Key**. Note: according to the public API documentation, this endpoint is not available in the TEST environment.
     402More information at our [Documentation Center](https://docs.multisafepay.com/reference/listterminals).
     403```php
     404$yourMerchantAccountApiKey = 'your-merchant-account-api-key';
     405$isProduction = true;
     406$multiSafepaySdk = new \MultiSafepay\Sdk($yourMerchantAccountApiKey, $isProduction);
     407
     408$options = [
     409    'page' => 1,
     410    'limit' => 50,
     411];
     412
     413$terminalListing = $multiSafepaySdk->getTerminalManager()->getTerminals($options);
     414$terminals = $terminalListing->getTerminals();
     415
     416$pager = $terminalListing->getPager(); // If pagination is needed, this Pager object can be used
     417```
     418
     419### List terminals by group
     420Filter POS devices bound to a MultiSafepay account using a `terminal_group_id`.
     421
     422Authentication for this endpoint requires a **Merchant Account API Key**. Note: according to the public API documentation, this endpoint is not available in the TEST environment.
     423More information at our [Documentation Center](https://docs.multisafepay.com/reference/listterminalsbygroup).
     424```php
     425$yourMerchantAccountApiKey = 'your-merchant-account-api-key';
     426$isProduction = true;
     427$multiSafepaySdk = new \MultiSafepay\Sdk($yourMerchantAccountApiKey, $isProduction);
     428
     429$terminalGroupId = 'your-terminal-group-id';
     430$options = [
     431    'page' => 1,
     432    'limit' => 50,
     433];
     434
     435$terminalListing = $multiSafepaySdk->getTerminalManager()->getTerminalsByGroup($terminalGroupId, $options);
     436$terminals = $terminalListing->getTerminals();
     437
     438$pager = $terminalListing->getPager(); // If pagination is needed, this Pager object can be used
     439```
     440
    398441### Pushing a payment request to a Smart POS device
    399442```php
  • multisafepay/trunk/vendor/multisafepay/php-sdk/composer.json

    r3393028 r3464988  
    44  "type": "library",
    55  "license": "OSL-3.0",
    6   "version": "5.18.0",
     6  "version": "5.20.0",
    77  "require": {
    88    "php": "^7.2|^8.0",
     
    1414  },
    1515  "require-dev": {
    16     "phpunit/phpunit": "^9.0 || ^7.5",
     16    "phpunit/phpunit": "^8.5 || ^9.0",
    1717    "guzzlehttp/guzzle": "^7.0",
    1818    "http-interop/http-factory-guzzle": "^1.0",
  • multisafepay/trunk/vendor/multisafepay/php-sdk/src/Api/TransactionManager.php

    r3230524 r3464988  
    1818use MultiSafepay\Exception\ApiException;
    1919use MultiSafepay\Exception\InvalidArgumentException;
     20use MultiSafepay\Util\Encode;
    2021use Psr\Http\Client\ClientExceptionInterface;
    2122
     
    6465    public function get(string $orderId): Transaction
    6566    {
    66         $endpoint = 'json/orders/' . $orderId;
    67         $context = ['order_id' => $orderId];
     67        $encodedOrderId = Encode::encode($orderId);
     68        $endpoint = 'json/orders/' . $encodedOrderId;
     69        $context = ['order_id' => $encodedOrderId];
    6870        $response = $this->client->createGetRequest($endpoint, [], $context);
    6971
     
    9294    public function update(string $orderId, UpdateRequest $updateRequest): Response
    9395    {
     96        $encodedOrderId = Encode::encode($orderId);
     97
    9498        return $this->client->createPatchRequest(
    95             'json/orders/' . $orderId,
     99            'json/orders/' . $encodedOrderId,
    96100            $updateRequest,
    97101            ['request_body' => $updateRequest->getData()]
     
    107111    public function capture(string $orderId, CaptureRequest $captureRequest): Response
    108112    {
     113        $encodedOrderId = Encode::encode($orderId);
     114
    109115        return $this->client->createPostRequest(
    110             'json/orders/' . $orderId . '/capture',
     116            'json/orders/' . $encodedOrderId . '/capture',
    111117            $captureRequest,
    112118            ['request_body' => $captureRequest->getData()]
     
    122128    public function captureReservationCancel(string $orderId, CaptureRequest $captureRequest): Response
    123129    {
     130        $encodedOrderId = Encode::encode($orderId);
     131
    124132        return $this->client->createPatchRequest(
    125             'json/capture/' . $orderId,
     133            'json/capture/' . $encodedOrderId,
    126134            $captureRequest,
    127135            ['request_body' => $captureRequest->getData()]
     
    139147    public function refund(Transaction $transaction, RefundRequest $requestRefund, ?string $orderId = null): Response
    140148    {
     149        $originalOrderId = $orderId ?? $transaction->getOrderId();
     150        $encodedOrderId   = Encode::encode($originalOrderId);
     151
    141152        return $this->client->createPostRequest(
    142             'json/orders/' . ($orderId ?: $transaction->getOrderId()) . '/refunds',
     153            'json/orders/' . $encodedOrderId . '/refunds',
    143154            $requestRefund,
    144155            ['transaction' => $transaction->getData()]
  • multisafepay/trunk/vendor/multisafepay/php-sdk/src/Api/Transactions/CaptureRequest.php

    r2927749 r3464988  
    88
    99use MultiSafepay\Api\Base\RequestBody;
    10 use MultiSafepay\Api\Base\RequestBodyInterface;
     10use MultiSafepay\ValueObject\Amount;
    1111
    1212/**
    13  * Class UpdateRequest
     13 * Class CaptureRequest
    1414 * @package MultiSafepay\Api\Transactions
    1515 */
     
    1919
    2020    /**
     21     * @var string
     22     */
     23    private $newOrderId;
     24
     25    /**
     26     * @var Amount
     27     */
     28    private $amount;
     29
     30    /**
     31     * @var string
     32     */
     33    private $newOrderStatus;
     34
     35    /**
     36     * @var string
     37     */
     38    private $invoiceId;
     39
     40    /**
     41     * @var string
     42     */
     43    private $trackTraceCode;
     44
     45    /**
     46     * @var string
     47     */
     48    private $carrier;
     49    /**
     50     * @var string
     51     */
     52    private $reason;
     53
     54    /**
     55     * @var string
     56     */
     57    private $description;
     58
     59    /**
     60     * @var string
     61     */
     62    private $shipDate;
     63
     64    /**
    2165     * @return array
    2266     */
    2367    public function getData(): array
    2468    {
    25         return $this->removeNullRecursive($this->data);
     69        return $this->removeNullRecursive(
     70            array_merge(
     71                [
     72                    'amount' => $this->amount ? $this->amount->get() : null,
     73                    'new_order_id' => $this->newOrderId ?: null,
     74                    'new_order_status' => $this->newOrderStatus ?: 'completed',
     75                    'invoice_id' => $this->invoiceId ?: null,
     76                    'tracktrace_code' => $this->trackTraceCode ?: null,
     77                    'carrier' => $this->carrier ?: null,
     78                    'reason' => $this->reason ?: null,
     79                    'description' => $this->description ?: null,
     80                    'ship_date' => $this->shipDate ?: null,
     81                ],
     82                $this->data
     83            )
     84        );
     85    }
     86
     87    /**
     88     * @param Amount $amount
     89     * @return CaptureRequest
     90     */
     91    public function addAmount(Amount $amount): CaptureRequest
     92    {
     93        $this->amount = $amount;
     94        return $this;
     95    }
     96
     97    /**
     98     * @param string $newOrderId
     99     * @return CaptureRequest
     100     */
     101    public function addNewOrderId(string $newOrderId): CaptureRequest
     102    {
     103        $this->newOrderId = $newOrderId;
     104        return $this;
     105    }
     106
     107    /**
     108     * @param string $newOrderStatus
     109     * @return CaptureRequest
     110     */
     111    public function addNewOrderStatus(string $newOrderStatus): CaptureRequest
     112    {
     113        $this->newOrderStatus = $newOrderStatus;
     114        return $this;
     115    }
     116
     117    /**
     118     * @param string $invoiceId
     119     * @return CaptureRequest
     120     */
     121    public function addInvoiceId(string $invoiceId): CaptureRequest
     122    {
     123        $this->invoiceId = $invoiceId;
     124        return $this;
     125    }
     126
     127    /**
     128     * @param string $trackTraceCode
     129     * @return CaptureRequest
     130     */
     131    public function addTrackTraceCode(string $trackTraceCode): CaptureRequest
     132    {
     133        $this->trackTraceCode = $trackTraceCode;
     134        return $this;
     135    }
     136
     137    /**
     138     * @param string $carrier
     139     * @return CaptureRequest
     140     */
     141    public function addCarrier(string $carrier): CaptureRequest
     142    {
     143        $this->carrier = $carrier;
     144        return $this;
     145    }
     146
     147    /**
     148     * @param string $reason
     149     * @return CaptureRequest
     150     */
     151    public function addReason(string $reason): CaptureRequest
     152    {
     153        $this->reason = $reason;
     154        return $this;
     155    }
     156
     157    /**
     158     * @param string $description
     159     * @return CaptureRequest
     160     */
     161    public function addDescription(string $description): CaptureRequest
     162    {
     163        $this->description = $description;
     164        return $this;
     165    }
     166
     167    /**
     168     * @param string $shipDate
     169     * @return CaptureRequest
     170     */
     171    public function addShipDate(string $shipDate): CaptureRequest
     172    {
     173        $this->shipDate = $shipDate;
     174        return $this;
    26175    }
    27176}
  • multisafepay/trunk/vendor/multisafepay/php-sdk/src/Api/Transactions/OrderRequest.php

    r3264984 r3464988  
    1616use MultiSafepay\Api\Transactions\OrderRequest\Arguments\GatewayInfoInterface;
    1717use MultiSafepay\Api\Transactions\OrderRequest\Arguments\GoogleAnalytics;
     18use MultiSafepay\Api\Transactions\OrderRequest\Arguments\PaymentData;
    1819use MultiSafepay\Api\Transactions\OrderRequest\Arguments\PaymentOptions;
    1920use MultiSafepay\Api\Transactions\OrderRequest\Arguments\PluginDetails;
     
    118119
    119120    /**
     121     * @var PaymentData
     122     */
     123    protected $paymentData;
     124
     125    /**
    120126     * @var int
    121127     */
     
    166172     */
    167173    private $currency;
     174
     175    /**
     176     * @var string
     177     */
     178    private $capture;
    168179
    169180    /**
     
    452463
    453464    /**
     465     * Retrieve the payment_options object from the OrderRequest
     466     *
     467     * @return PaymentOptions|null
     468     */
     469    public function getPaymentOptions(): ?PaymentOptions
     470    {
     471        return $this->paymentOptions;
     472    }
     473
     474    /**
    454475     * Retrieve the checkout_options object from the OrderRequest
    455476     *
     
    496517
    497518    /**
     519     * @param PaymentData $paymentData
     520     * @return OrderRequest
     521     */
     522    public function addPaymentData(PaymentData $paymentData): OrderRequest
     523    {
     524        $this->paymentData = $paymentData;
     525        return $this;
     526    }
     527
     528    /**
    498529     * @param int $seconds
    499530     * @return OrderRequest
     
    577608    {
    578609        return $this->var3;
     610    }
     611
     612    /**
     613     * @param string $capture
     614     * @return OrderRequest
     615     */
     616    public function addCapture(string $capture = 'manual'): OrderRequest
     617    {
     618        $this->capture = $capture;
     619        return $this;
    579620    }
    580621
     
    621662            'shopping_cart' => $this->shoppingCart ? $this->shoppingCart->getData() : null,
    622663            'checkout_options' => $this->checkoutOptions ? $this->checkoutOptions->getData() : null,
     664            'payment_data' => $this->paymentData ? $this->paymentData->getData() : null,
    623665            'days_active' => $this->daysActive,
    624666            'seconds_active' => $this->secondsActive,
     
    628670            'var2' => $this->getVar2(),
    629671            'var3' => $this->getVar3(),
     672            'capture' => $this->capture ?? null,
    630673            'affiliate' => $this->affiliate ? $this->affiliate->getData() : null,
    631674        ];
  • multisafepay/trunk/vendor/multisafepay/php-sdk/src/Api/Transactions/TransactionResponse.php

    r3230524 r3464988  
    188188
    189189    /**
     190     * @return bool
     191     */
     192    public function isCompleted(): bool
     193    {
     194        return $this->getStatus() === Transaction::COMPLETED;
     195    }
     196
     197    /**
    190198     * @return string
    191199     */
     
    343351
    344352    /**
    345      * @return ShoppingCart
     353     * @return ShoppingCart|null
    346354     * @throws InvalidArgumentException
    347355     */
    348     public function getShoppingCart(): ShoppingCart
    349     {
    350         return ShoppingCart::fromData($this->get('shopping_cart'));
     356    public function getShoppingCart(): ?ShoppingCart
     357    {
     358        $shoppingCartData = $this->get('shopping_cart');
     359
     360        if (empty($shoppingCartData)) {
     361            return null;
     362        }
     363
     364        return ShoppingCart::fromData($shoppingCartData);
    351365    }
    352366
  • multisafepay/trunk/vendor/multisafepay/php-sdk/src/Sdk.php

    r3230524 r3464988  
    1313use MultiSafepay\Api\IssuerManager;
    1414use MultiSafepay\Api\PaymentMethodManager;
     15use MultiSafepay\Api\TerminalManager;
    1516use MultiSafepay\Api\TokenManager;
    1617use MultiSafepay\Api\TransactionManager;
     
    145146
    146147    /**
     148     * @return TerminalManager
     149     */
     150    public function getTerminalManager(): TerminalManager
     151    {
     152        return new TerminalManager($this->client);
     153    }
     154
     155    /**
    147156     * @return Client
    148157     */
  • multisafepay/trunk/vendor/multisafepay/php-sdk/src/Util/Version.php

    r3393028 r3464988  
    1818class Version
    1919{
    20     public const SDK_VERSION = '5.18.0';
     20    public const SDK_VERSION = '5.20.0';
    2121
    2222    /**
Note: See TracChangeset for help on using the changeset viewer.