[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fz5NcQFy6-a-c3J2H7wQF0ZYVsvZbcBatFwDMtsauUyI":3},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":13,"num_ratings":14,"last_updated":15,"tested_up_to":16,"requires_at_least":17,"requires_php":18,"tags":19,"homepage":25,"download_link":26,"security_score":27,"vuln_count":28,"unpatched_count":29,"last_vuln_date":30,"fetched_at":31,"vulnerabilities":32,"developer":49,"crawl_stats":38,"alternatives":56,"analysis":143,"fingerprints":1812},"woo-vipps","Pay with Vipps and MobilePay for WooCommerce","5.2.2","WP Hosting AS","https:\u002F\u002Fprofiles.wordpress.org\u002Fwphostingdev\u002F","\u003Cp>\u003Cem>Official Vipps MobilePay payment plugin for WooCommerce. Let your Norwegian, Danish, and Finnish customers pay with Vipps and MobilePay for an easy, fast, and familiar shopping experience\u003C\u002Fem>\u003C\u002Fp>\n\u003Cp>Vipps is used by more than 93 % of Norway’s population (4.2 million users).\u003C\u002Fp>\n\u003Cp>MobilePay is used by more than 92 % of Denmark’s population (4.4 million users), and approximately 59 % of Finland’s population (2.8 million users).\u003C\u002Fp>\n\u003Cp>Vipps and MobilePay are payment methods offered by Vipps MobilePay.\u003C\u002Fp>\n\u003Cp>When you enable this plugin, you will choose between offering either Vipps or MobilePay as a payment method for your customers – hence “Vipps\u002FMobilePay” going forward.\u003C\u002Fp>\n\u003Cp>This is the official plugin for Vipps\u002FMobilePay Checkout, Vipps\u002FMobilePay ePayments (\u003Cem>Vipps Nettbetaling\u003C\u002Fem>), Vipps MobilePay Express (\u003Cem>Vipps MobilePay Hurtigkasse\u003C\u002Fem>) and Vipps\u002FMobilePay recurring payments. Increase your conversion rate by letting your customers choose Vipps\u002FMobilePay directly in the checkout or even do an Express Checkout (Vipps only) from the cart or a product page directly.\u003C\u002Fp>\n\u003Cp>You can also do important back office tasks such as capture and refund directly from WooCommerce. Easy for your customer and easy for you.\u003C\u002Fp>\n\u003Cp>Read \u003Ca href=\"https:\u002F\u002Fdeveloper.vippsmobilepay.com\u002Fdocs\u002Fplugins\u002Fwoocommerce\u002F\" rel=\"nofollow ugc\">information from Vipps MobilePay\u003C\u002Fa> about the plugin.\u003C\u002Fp>\n\u003Ch3>Vipps\u002FMobilePay Checkout\u003C\u002Fh3>\n\u003Cp>With Vipps\u002FMobilePay Checkout enabled in the plugin, you will get a complete checkout in your webshop, designed by Vipps MobilePay. It contains regular Vipps\u002FMobilePay payments, a card payment option for those that can’t or won’t use Vipps\u002FMobilePay, as well as the ability to get the shipping address of the customer in an easy way. Read more about \u003Ca href=\"https:\u002F\u002Fvippsmobilepay.com\u002Fen\u002Fonline\u002Fcheckout\" rel=\"nofollow ugc\">Vipps MobilePay Checkout here\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>Vipps\u002FMobilePay ePayment\u003C\u002Fh3>\n\u003Cp>When you enable this plugin, your customers will be able to choose Vipps\u002FMobilePay as a payment method in the checkout. There is no need to go via a third party payment method. If your customer choose Vipps\u002FMobilePay, they fill in their name and address and is then asked to enter their phone number in the Vipps\u002FMobilePay dialogue. They then confirms the payment in the Vipps\u002FMobilePay app. Customer info like name and address is sent to the store from Vipps MobilePay.\u003C\u002Fp>\n\u003Ch3>Vipps\u002FMobilePay recurring payments\u003C\u002Fh3>\n\u003Cp>Vipps\u002FMobilePay recurring payments is perfect for you if you run a web shop with subscription based services or other products that would benefit from subscriptions.\u003C\u002Fp>\n\u003Cp>With Vipps\u002FMobilePay recurring payments you can:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Sell recurring products (virtual and physical)\u003C\u002Fli>\n\u003Cli>Offer subscription services\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>See \u003Ca href=\"https:\u002F\u002Fdeveloper.vippsmobilepay.com\u002Fdocs\u002FAPIs\u002Frecurring-api\u002Fhow-it-works\u002F\" rel=\"nofollow ugc\">How it works\u003C\u002Fa> for an overview.\u003C\u002Fp>\n\u003Cp>Recurring payments requires \u003Ca href=\"https:\u002F\u002Fwoocommerce.com\u002Fproducts\u002Fwoocommerce-subscriptions\u002F\" rel=\"nofollow ugc\">WooCommerce Subscriptions\u003C\u002Fa> and a Vipps MobilePay MSN with recurring payments added.\u003C\u002Fp>\n\u003Ch3>MobilePay Reservations are currently for 14 days\u003C\u002Fh3>\n\u003Cp>When a payment is completed with Vipps MobilePay, the money will be reserved, but only transferred to the merchant when the order is set to “Complete” or the money is captured manually. \u003Cem>For MobilePay, this reservation period is 14 days\u003C\u002Fem>, so you will need to ship and fulfill orders before this; or to make an agreement with the customer to capture the money before this period is over. For Vipps, the period is 180 days. For payments made by credit card in Vipps\u002FMobilePay Checkout, the period can again be as short as 7 days.\u003Cbr \u002F>\nFor details, please read the \u003Ca href=\"https:\u002F\u002Fdeveloper.vippsmobilepay.com\u002Fdocs\u002Fknowledge-base\u002Freserve-and-capture\u002F#reserve-and-capture-faq\" rel=\"nofollow ugc\">developer FAQ\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>If the order only contains virtual and downloadable products, the plugin will capture the order automatically and set the order to “Completed” as is the standard WooCommerce rule.\u003C\u002Fp>\n\u003Ch3>Vipps MobilePay Express\u003C\u002Fh3>\n\u003Cp>When you enable Vipps MobilePay Express, your customers can choose between the regular checkout or to go directly to Vipps or MobilePay. If they choose Vipps or MobilePay, they just submit their phone number, and the rest of the checkout process is done in the Vipps or MobilePay app.\u003C\u002Fp>\n\u003Cp>Since Vipps MobilePay knows who the customers are, they don’t have to enter all their personal information. The customer just choose the shipping method and accepts the payment. Vipps MobilePay will send all the necessary info back to the store. Easy, fast and secure.\u003C\u002Fp>\n\u003Cp>The express checkout can be done in the following ways:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>From the cart\u003C\u002Fli>\n\u003Cli>From the category pages\u003C\u002Fli>\n\u003Cli>From the product page\u003C\u002Fli>\n\u003Cli>From shareable links distributed by email, banners, etc.\u003C\u002Fli>\n\u003Cli>From QR codes distributed digitally or in print\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Settings for the cart, category and product pages can be found in the WooCommerce settings for the Vipps MobilePay payment gateway.\u003C\u002Fp>\n\u003Cp>Shareable links and QR codes can be generated from the Vipps\u002FMobilePay tab on the product page.\u003C\u002Fp>\n\u003Ch3>How to get started\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Sign up in the \u003Ca href=\"https:\u002F\u002Fportal.vippsmobilepay.com\" rel=\"nofollow ugc\">Vipps MobilePay portal\u003C\u002Fa> and choose your product.\u003C\u002Fli>\n\u003Cli>After 1-2 days you will get an email with login details to Vipps MobilePay Business Portal, where you can get the API credentials\u003C\u002Fli>\n\u003Cli>Download and install the plugin\u003C\u002Fli>\n\u003Cli>Configure the plugin\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>How to install the plugin\u003C\u002Fh3>\n\u003Col>\n\u003Cli>Install the plugin using WordPress’ \u003Ca href=\"https:\u002F\u002Fcodex.wordpress.org\u002FManaging_Plugins#Installing_Plugins\" rel=\"nofollow ugc\">built-in installer\u003C\u002Fa>. The plugin can also be installed manually by upload the plugin files to the \u002Fwp-content\u002Fplugins\u002F directory.\u003C\u002Fli>\n\u003Cli>Activate the plugin through the ‘Plugins’ screen in WordPress.\u003C\u002Fli>\n\u003Cli>Go to the WooCommerce Settings page and choose Payment Gateways (Betalinger) and enable Vipps\u002FMobilePay.\u003C\u002Fli>\n\u003Cli>Go the settings page for the Vipps MobilePay plugin and enter your Vipps MobilePay account keys. Your account keys are available in the Vipps Business Portal (detailed info in the section below)\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>How to get Vipps MobilePay account keys from Vipps MobilePay Business Portal\u003C\u002Fh3>\n\u003Col>\n\u003Cli>Sign in to the Vipps MobilePay Portal at \u003Ca href=\"https:\u002F\u002Fportal.vippsmobilepay.com\u002F\" rel=\"nofollow ugc\">https:\u002F\u002Fportal.vippsmobilepay.com\u002F\u003C\u002Fa> using Bank ID\u003C\u002Fli>\n\u003Cli>Select the “Utvikler” (“Developer”) tab and choose Production Keys. Here you can find the merchant serial number (6 figures)\u003C\u002Fli>\n\u003Cli>Click on “Show keys” under the API keys column to see “Client ID”, “Client Secret” and “Vipps MobilePay Subscription Key”\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>Contributing on Github\u003C\u002Fh3>\n\u003Cp>This project is hosted on Github at: https:\u002F\u002Fgithub.com\u002Fvippsas\u002Fvipps-woocommerce\u003C\u002Fp>\n\u003Ch3>Extending the Order Management API integration\u003C\u002Fh3>\n\u003Cp>From version 1.10.0, this plugin implements the Vipps MobilePay Order Management API, sending a receipt to the customers’ app, and sending the order confirmation link as the Order Confirmation link category.  You can, using this api, send over an image and a link for the categories receipt (RECEIPT), ticket (TICKET), shipping (DELIVERY), booking (BOOKING) and a general category (GENERAL).\u003C\u002Fp>\n\u003Cp>For instance, if you have a page or url for tracking shipping, you can add this to the customers’ app by extending the ‘woo_vipps_add_order_categories’ filter like so:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>   add_filter('woo_vipps_add_order_categories', function ($categories, $order, $gateway) {\n          $shippingpagedata = array(\n            'link' => \u003Cyour shipping URL here>, \n            'image' => \u003Cfilename or attachment ID of your illustration for shipping here, if required>,\n            'imagesize' => \u003Cfor attachments, the image size to use>);\n          $categories['DELIVERY'] = $shippingpagedata;\n          return $categories;\n      }, 10, 3);\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>You can similarily send ticket information (with e.g. a QR code) for the TICKET or BOOKING category and so forth.\u003C\u002Fp>\n\u003Ch4>Javascript filters and actions\u003C\u002Fh4>\n\u003Cp>From version 1.1.13 you can also modify the javascript using the new WP hooks library for javascript:\u003Cbr \u002F>\n * ‘vippsBuySingleProduct’ – action which is run whenever a customer tries to buy a single product using express checkout\u003Cbr \u002F>\n * ‘vippsBuySingleProductCompatMode’ – filter which should return true or false, if true, the compatibility mode action will be run instead of the standard ajax.\u003Cbr \u002F>\n * ‘vippsBuySingleProductCompatModeAction’ – filter which should return a javascript function to run when buying a product and compatibility mode is on. Will normally press the “Buy” button for you.\u003Cbr \u002F>\n * ‘vippsRemoveErrorMessages’ – runs when Vipps MobilePay error messages are to be removed.\u003Cbr \u002F>\n * ‘vippsErrorMessage’ – runs for every Vipps MobilePay error message added with Javascript. Takes the message as an argument\u003Cbr \u002F>\n * ‘vippsAddErrorMessage’ – runs when an error message is about to be added. Takes the message as an argument\u003Cbr \u002F>\n * ‘vippsInit’  – runs when a page with a Vipps MobilePay button is initialzed\u003Cbr \u002F>\n * ‘vippsStatusCheckErrorHandler’ – A filter that should return function taking a statustext and an error object. It receives the default error handler, and is called when checking the order status with ajax for some reason ends up in an error.\u003C\u002Fp>\n","Official Vipps MobilePay payment plugin for WooCommerce.",5000,451197,96,13,"2026-03-11T09:06:00.000Z","6.9.4","6.3","8.0",[20,21,22,23,24],"mobilepay","recurring-payments","subscriptions","vipps","woocommerce","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwoo-vipps\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwoo-vipps.5.2.2.zip",100,1,0,"2023-12-27 00:00:00","2026-03-15T15:16:48.613Z",[33],{"id":34,"url_slug":35,"title":36,"description":37,"plugin_slug":4,"theme_slug":38,"affected_versions":39,"patched_in_version":40,"severity":41,"cvss_score":42,"cvss_vector":43,"vuln_type":44,"published_date":30,"updated_date":45,"references":46,"days_to_patch":48},"CVE-2023-51485","pay-with-vipps-for-woocommerce-authenticated-contributor-stored-cross-site-scripting","Pay with Vipps for WooCommerce \u003C= 1.14.13 - Authenticated (Contributor+) Stored Cross-Site Scripting","The Pay with Vipps for WooCommerce plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the buy now button in versions up to, and including, 1.14.13 due to insufficient input sanitization and output escaping. This makes it possible for authenticated attackers, with contributor-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page.",null,"\u003C=1.14.13","1.14.14","medium",6.4,"CVSS:3.1\u002FAV:N\u002FAC:L\u002FPR:L\u002FUI:N\u002FS:C\u002FC:L\u002FI:L\u002FA:N","Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')","2024-01-22 19:56:02",[47],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002F2950a264-b60c-48ad-b8e0-6d0e1a230982?source=api-prod",27,{"slug":50,"display_name":7,"profile_url":8,"plugin_count":51,"total_installs":52,"avg_security_score":27,"avg_patch_time_days":53,"trust_score":54,"computed_at":55},"wphostingdev",2,5900,14,94,"2026-04-03T19:22:06.977Z",[57,76,94,113,129],{"slug":58,"name":59,"version":60,"author":23,"author_profile":61,"description":62,"short_description":63,"active_installs":64,"downloaded":65,"rating":66,"num_ratings":67,"last_updated":68,"tested_up_to":69,"requires_at_least":70,"requires_php":71,"tags":72,"homepage":74,"download_link":75,"security_score":27,"vuln_count":29,"unpatched_count":29,"last_vuln_date":38,"fetched_at":31},"vipps-recurring-payments-gateway-for-woocommerce","Vipps\u002FMobilePay recurring payments for WooCommerce","2.1.3.1","https:\u002F\u002Fprofiles.wordpress.org\u002Fvipps\u002F","\u003Cp>Vipps\u002FMobilePay recurring payments is perfect if you run a shop with subscription based services or products that would benefit from subscriptions.\u003C\u002Fp>\n\u003Ch3>Deprecation notice\u003C\u002Fh3>\n\u003Cp>This plugin has been deprecated and merged into \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwoo-vipps\u002F\" rel=\"ugc\">Pay with Vipps and MobilePay for WooCommerce\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>This plugin will no longer receive updates.\u003C\u002Fp>\n\u003Ch3>Vipps\u002FMobilePay recurring payments\u003C\u002Fh3>\n\u003Cp>\u003Cem>Official Vipps\u002FMobilePay recurring payments plugin for WooCommerce. Branded locally as MobilePay in Denmark and Finland, and as Vipps in Norway. One platform gathering more than 11 million users and more than 400.000 merchants across the Nordics. Give your users an easy, fast and familiar shopping experience.\u003C\u002Fem>\u003C\u002Fp>\n\u003Cp>This is the official Vipps\u002FMobilePay recurring payments plugin for WooCommerce. It is owned by \u003Ca href=\"https:\u002F\u002Fvippsmobilepay.com\" rel=\"nofollow ugc\">Vipps MobilePay\u003C\u002Fa> and maintained by \u003Ca href=\"https:\u002F\u002Feveryday.no\" rel=\"nofollow ugc\">Everyday AS\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>We encourage you to create an issue here or on the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fvippsas\u002Fvipps-recurring-woocommerce\u002Fissues\" rel=\"nofollow ugc\">GitHub page\u003C\u002Fa> if you require assistance or run in to a problem.\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Vipps\u002FMobilePay recurring payments is perfect for you if you run a web shop with subscription based services or other products that would benefit from subscriptions.\u003C\u002Fp>\n\u003Cp>With Vipps\u002FMobilePay recurring payments you can:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Sell recurring products (virtual and physical)\u003C\u002Fli>\n\u003Cli>Offer subscription services\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>See \u003Ca href=\"https:\u002F\u002Fdeveloper.vippsmobilepay.com\u002Fdocs\u002FAPIs\u002Frecurring-api\u002Fhow-it-works\u002Frecurring-api-howitworks\u002F\" rel=\"nofollow ugc\">How it works\u003C\u002Fa> for an overview.\u003C\u002Fp>\n\u003C\u002Fp>\n\u003Ch3>Requirements\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>WooCommerce 3.3.4 or newer\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwoocommerce.com\u002Fproducts\u002Fwoocommerce-subscriptions\u002F\" rel=\"nofollow ugc\">WooCommerce Subscriptions\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>PHP 7.4 or higher\u003C\u002Fli>\n\u003Cli>An SSL certificate must be installed and configured\u003C\u002Fli>\n\u003Cli>Port 443 must not be blocked for outgoing traffic\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Getting started\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Sign up for a merchant agreement and product order from Vipps MobilePay merchant portal.\u003C\u002Fli>\n\u003Cli>After 1-2 days, you will get an email with login details to \u003Ca href=\"https:\u002F\u002Fportal.vippsmobilepay.com\" rel=\"nofollow ugc\">portal.vippsmobilepay.com\u003C\u002Fa>, where you can get the API credentials.\u003C\u002Fli>\n\u003Cli>Download and install the plugin.\u003C\u002Fli>\n\u003Cli>Configure the plugin.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Known bugs\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Synchronized products can not be paid via Vipps MobilePay when using KCO if the price at this moment in time is 0.\u003C\u002Fli>\n\u003C\u002Ful>\n","Vipps\u002FMobilePay recurring payments is perfect if you run a shop with subscription based services or products that would benefit from subscriptions.",90,17583,46,3,"2025-10-14T12:08:00.000Z","6.7.5","6.1","7.4",[20,21,22,23,73],"woocommerce-subscriptions","","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fvipps-recurring-payments-gateway-for-woocommerce.2.1.3.1.zip",{"slug":77,"name":78,"version":79,"author":7,"author_profile":8,"description":80,"short_description":81,"active_installs":82,"downloaded":83,"rating":27,"num_ratings":84,"last_updated":85,"tested_up_to":16,"requires_at_least":86,"requires_php":87,"tags":88,"homepage":90,"download_link":91,"security_score":92,"vuln_count":28,"unpatched_count":29,"last_vuln_date":93,"fetched_at":31},"login-with-vipps","Login with Vipps and MobilePay","1.4.0","\u003Cp>Login with Vipps and MobilePay offers super-easy registration and login from the leading smart-payment app in Norway with more than 4.2 million users. MobilePay is used by more than 75 % of Denmark’s population (4.4 million users), and more than 36 % of Finland’s population (2.6 million users). There is no easier login. No more usernames or passwords.\u003C\u002Fp>\n\u003Cp>The users need only remember their phone number. They are also able to provide information that websites often require, like e-mail, phone numbers and addresses, from their Vipps MobilePay profile with no tedious data entry.\u003C\u002Fp>\n\u003Cp>The plugin is easy to modify for your own applications.\u003C\u002Fp>\n\u003Cp>This solution is great for all websites that wants to:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Get more logged-in users\u003C\u002Fli>\n\u003Cli>All Vipps and MobilePay-users can create a profile on your website with just one click, and can be logged in directly on the next visit\u003C\u002Fli>\n\u003Cli>You can modify content, messaging and retrieve stored shopping carts for the user\u003C\u002Fli>\n\u003Cli>Your customers can see order histories and potentially register product returns\u003C\u002Fli>\n\u003Cli>More logged-in users gives you better overview and better conversion rates\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Get started\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>If you are a user of Vipps and MobilePay for E-Commerce, you can add Login with Vipps and MobilePay to your account on https:\u002F\u002Fportal.vippsmobilepay.com and find your API-keys there – see “Installation” for more details.\u003C\u002Fli>\n\u003Cli>If you do not have an account with Vipps Mobilepay, you can order this here: https:\u002F\u002Fvippsmobilepay.com\u002Fno\u002Fpriser\u002Flogg-inn . When the order has been processed, you will be notified and you will be able to retrieve the API-keys on https:\u002F\u002Fportal.vippsmobilepay.com . Then see “Installation” for the next steps.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Requirements\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>WordPress version 4.9 or above\u003C\u002Fli>\n\u003Cli>PHP version 7.0 or above\u003C\u002Fli>\n\u003Cli>Your website must have an SSL certificate and be available through HTTPS\u003C\u002Fli>\n\u003Cli>OpenSSL must be configured for your PHP installation\u003C\u002Fli>\n\u003Cli>For WooCommerce, the version requirement is 3.3.4 or above\u003C\u002Fli>\n\u003Cli>The port 443 must be open for outward traffic on your servers firewall\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Feature Highlights\u003C\u002Fh3>\n\u003Ch4>Fully integrated with WooCommerce\u003C\u002Fh4>\n\u003Cp>Allows login and registration on your account pages, cart, checkout and via shortcodes. Addresses automatically synchronized with Vipps MobilePay on login.\u003C\u002Fp>\n\u003Ch4>User can register with one click\u003C\u002Fh4>\n\u003Cp>Login with Vipps and MobilePay is the easiest way to create a new account. The user can easily share high-quality data from the user’s Vipps profile with the site owner. Available information includes name, email, address, phone number, and birth date. The identity of all Vipps users is verified using BankID, Norway’s leading electronic ID, so rest assured that these are real people with correct name and information. (Please note: Standard WordPress does not register information other than name and email, so apart from WooCommerce, you will need to write code to use this information for your particular application.)\u003C\u002Fp>\n\u003Ch4>Link existing account\u003C\u002Fh4>\n\u003Cp>Already registered users can link their current accounts when signing in with Vipps or from their account page. Users can choose to update their address information from Vipps MobilePay.\u003C\u002Fp>\n\u003Ch4>Customizable for your application\u003C\u002Fh4>\n\u003Cp>You can use the framework of this plugin to implement other solutions that require verified users, without actually requiring login. For example, you might create a system for having users sign their comments with Vipps MobilePay so as to avoid spam issues.\u003C\u002Fp>\n\u003Ch3>Shortcodes\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Ccode>[login-with-vipps text=\"Log in with Vipps (or MobilePay)\" application=\"wordpress\"]\u003C\u002Fcode> – This will print out a Login with Vipps button that will log you into the given application, which by default can be either WordPress or WooCommerce.\u003C\u002Fli>\n\u003Cli>\u003Ccode>[continue-with-vipps text=\"Continue with Vipps\" application=\"wordpress\"]\u003C\u002Fcode> – This is the same, except for a different default text\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Customizing the Plugin\u003C\u002Fh3>\n\u003Cp>To use ‘Continue with Vipps\u002FMobilePay’ in your application, there are two levels of customizations available, except for a mass of filters and hooks.\u003C\u002Fp>\n\u003Ch4>Adding another ‘application’ to log into\u003C\u002Fh4>\n\u003Cp>Logging into basic WordPress and into an application like WooCommerce is different in the details, especially with regards to\u003Cbr \u002F>\n  * what page to redirect to (the profile page, or your account page, or maybe the checkout page),\u003Cbr \u002F>\n  * handling of user data (for WooCommerce you want to update the users’ address)\u003Cbr \u002F>\n  * and for error handling.\u003C\u002Fp>\n\u003Cp>For your own application, you may well have other actions you want done after new user registration, logins etc. We aim to provide support for as many applications as possible in time, but to create your own, these are the main steps:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Define your application with a name. It should be a simple slug, like ‘wordpress’ or ‘woocommerce’\u003C\u002Fli>\n\u003Cli>Create your login button, and make it call the supplied Javascript function “login_with_vipps” with your application name as argument.\u003C\u002Fli>\n\u003Cli>To customize, you can now modify several filters and hooks, the most important of which would be:\u003C\u002Fli>\n\u003Cli>‘continue_with_vipps_error_\u003Cem>your application\u003C\u002Fem>_login_redirect’. This takes and returns an error-page redirect, the error string, and the login session data as an array. You can here return your own error page.\u003C\u002Fli>\n\u003Cli>‘continue_with_vipps_before_\u003Cem>your application\u003C\u002Fem>_login_redirect’. This takes your logged-in user and a session (which can be called as an array) and is called right before the user is redirected. This would be a good place to add a filter to ‘login_redirect’ for instance.\u003C\u002Fli>\n\u003Cli>Filter ‘continue_with_vipps_\u003Cem>your application\u003C\u002Fem>_users_can_register’. Takes a truth value, an array of userinfo from Vipps MobilePay and a session, and should return true only if you allow the user to register\u003C\u002Fli>\n\u003Cli>Filter ‘continue_with_vipps_\u003Cem>your application\u003C\u002Fem>_create_userdata’. For newly registered users, takes an array to be passed to wp_update_user, an array of userinfo from Vipps MobilePay, and a session. You can here add your extra meta fields\u003C\u002Fli>\n\u003Cli>Filter ‘continue_with_vipps_\u003Cem>your application\u003C\u002Fem>_allow_login’. Takes a truth value, a user object, userinfo from Vipps MobilePay and a session, and returns true only if the user is allowed to log in\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Adding another ‘action’ apart from logging in\u003C\u002Fh4>\n\u003Cp>You may want to do other things than logging in with the users’ confirmed Vipps MobilePay identity, and this plugin absolutely allows this. This might be submisssions of comments, reviews and so forth without requiring logins, or even just as a convenient way of letting users input their address.\u003C\u002Fp>\n\u003Cp>These are the main steps:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Define your own action, like ‘submitaddress’.\u003C\u002Fli>\n\u003Cli>Create your button. The handler should call the static method \u003Ccode>ContinueWithVipps::getAuthRedirect($action)\u003C\u002Fcode> (you can also provide an array of sessiondata which will be available in your handlers, and restrict the scope of the data to retrieve from Vipps MobilePay. The return value is an URL to which you should redirect your user.\u003C\u002Fli>\n\u003Cli>Create your error handler. This should be hooked to ‘continue_with_vipps_error_\u003Cem>your action\u003C\u002Fem>‘. It will receive an error string, a description of the error, sometimes an error hint, and the contents of your session (which will no longer be active). You will need to redirect to your error page here, and show your user the error. The redirect is important, you should not output content in this action.\u003C\u002Fli>\n\u003Cli>Create your succes handler. This should be hooked to ‘continue_with_vipps_\u003Cem>your action\u003C\u002Fem>‘. It will receive an array of user information from Vipps MobilePay, and a live session. This handler too should end with a redirect to your success page. \u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>The rest is a simple matter of programming.\u003C\u002Fp>\n","Login with Vipps and MobilePay is the easiest way to sign in and create an account. No need to worry about usernames and passwords.",900,31236,4,"2026-03-02T08:58:00.000Z","6.1.0","7.2",[89,20,23,24],"login","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Flogin-with-vipps\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Flogin-with-vipps.1.4.0.zip",99,"2024-11-27 00:00:00",{"slug":95,"name":96,"version":97,"author":98,"author_profile":99,"description":100,"short_description":101,"active_installs":102,"downloaded":103,"rating":104,"num_ratings":28,"last_updated":105,"tested_up_to":106,"requires_at_least":107,"requires_php":71,"tags":108,"homepage":111,"download_link":112,"security_score":27,"vuln_count":29,"unpatched_count":29,"last_vuln_date":38,"fetched_at":31},"recurio","Recurio – Ultimate Subscription Plugin for WooCommerce","1.0.1","DevItems","https:\u002F\u002Fprofiles.wordpress.org\u002Fdevitemsllc\u002F","\u003Cp>\u003Cstrong>Recurio\u003C\u002Fstrong> is a complete subscription management solution for WooCommerce that helps you create, manage, and grow your recurring revenue business. With a modern Vue.js dashboard, automated billing, and comprehensive analytics, Recurio makes subscription management effortless.\u003C\u002Fp>\n\u003Cp>\u003Cspan class=\"embed-youtube\" style=\"text-align:center; display: block;\">\u003Ciframe loading=\"lazy\" class=\"youtube-player\" width=\"750\" height=\"422\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FsylqtuZx-TA?version=3&rel=1&showsearch=0&showinfo=1&iv_load_policy=1&fs=1&hl=en-US&autohide=2&wmode=transparent\" allowfullscreen=\"true\" style=\"border:0;\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox\">\u003C\u002Fiframe>\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch4>Key Features\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>📊 Advanced Analytics Dashboard\u003C\u002Fstrong>\u003Cbr \u002F>\n* Real-time subscription metrics and KPIs\u003Cbr \u002F>\n* Revenue tracking and forecasting\u003Cbr \u002F>\n* Cohort analysis and retention rates\u003Cbr \u002F>\n* Customer lifetime value calculations\u003Cbr \u002F>\n* Churn rate monitoring\u003C\u002Fp>\n\u003Cp>\u003Cstrong>💳 Automated Billing & Payments\u003C\u002Fstrong>\u003Cbr \u002F>\n* Automatic recurring payment processing\u003Cbr \u002F>\n* Support for multiple payment gateways (Stripe, PayPal, etc.)\u003Cbr \u002F>\n* Smart retry logic for failed payments\u003Cbr \u002F>\n* Dunning management\u003Cbr \u002F>\n* Customizable billing cycles\u003C\u002Fp>\n\u003Cp>\u003Cstrong>👥 Customer Portal\u003C\u002Fstrong>\u003Cbr \u002F>\n* Self-service subscription management\u003Cbr \u002F>\n* Pause, resume, and cancel subscriptions\u003Cbr \u002F>\n* Payment method updates\u003Cbr \u002F>\n* Billing history and invoices\u003Cbr \u002F>\n* WooCommerce My Account integration\u003C\u002Fp>\n\u003Cp>\u003Cstrong>🎯 Subscription Management\u003C\u002Fstrong>\u003Cbr \u002F>\n* Flexible billing periods (daily, weekly, monthly, yearly)\u003Cbr \u002F>\n* Free trial periods\u003Cbr \u002F>\n* Sign-up fees\u003Cbr \u002F>\n* Subscription length limits\u003Cbr \u002F>\n* Pause and resume functionality\u003Cbr \u002F>\n* Split payments \u002F Installments\u003Cbr \u002F>\n* Early renewal option\u003C\u002Fp>\n\u003Cp>\u003Cstrong>📧 Email Notifications\u003C\u002Fstrong>\u003Cbr \u002F>\n* Automated email triggers for subscription events\u003Cbr \u002F>\n* Renewal reminders\u003Cbr \u002F>\n* Payment failure notifications\u003Cbr \u002F>\n* Subscription status updates\u003Cbr \u002F>\n* Customizable email templates\u003C\u002Fp>\n\u003Cp>\u003Cstrong>🔧 Developer Friendly\u003C\u002Fstrong>\u003Cbr \u002F>\n* REST API for external integrations\u003Cbr \u002F>\n* Extensive hooks and filters\u003Cbr \u002F>\n* Clean, documented code\u003Cbr \u002F>\n* Translation ready\u003C\u002Fp>\n\u003Ch4>Pro Features\u003C\u002Fh4>\n\u003Cp>Unlock the full potential of Recurio with Pro features designed for growing subscription businesses.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>🛒 Subscribe & Save\u003C\u002Fstrong>\u003Cbr \u002F>\nOffer customers the choice between one-time purchase or subscription with automatic discounts. Boost recurring revenue by showing savings and encouraging subscription purchases.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>📦 Variable Product Subscriptions\u003C\u002Fstrong>\u003Cbr \u002F>\nSet different subscription settings for each product variation. Configure unique pricing, trial periods, billing cycles, and sign-up fees per variation – perfect for tiered subscription plans.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>⏱️ Custom Billing Periods\u003C\u002Fstrong>\u003Cbr \u002F>\nCreate flexible billing intervals like “every 2 weeks” or “every 3 months”. Go beyond standard periods with fully customizable day, week, month, or year intervals.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>📅 Extended Billing Periods\u003C\u002Fstrong>\u003Cbr \u002F>\nAccess Daily, Weekly, and Quarterly billing periods. Ideal for premium content subscriptions, weekly meal kits, or quarterly membership plans.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>🔄 Subscription Switching\u003C\u002Fstrong>\u003Cbr \u002F>\nLet customers upgrade or downgrade their subscriptions seamlessly. Automatic prorated billing ensures fair pricing during plan changes.\u003C\u002Fp>\n\u003Ch4>Why Choose Recurio?\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Modern Interface\u003C\u002Fstrong>: Built with Vue.js for a fast, responsive experience\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Performance Optimized\u003C\u002Fstrong>: Efficient database queries and caching\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Secure\u003C\u002Fstrong>: Follows WordPress coding standards and security best practices\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Regular Updates\u003C\u002Fstrong>: Actively maintained with new features and improvements\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Great Support\u003C\u002Fstrong>: Responsive support team ready to help\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Perfect For\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>SaaS businesses\u003C\u002Fli>\n\u003Cli>Membership sites\u003C\u002Fli>\n\u003Cli>Digital product subscriptions\u003C\u002Fli>\n\u003Cli>Box subscriptions\u003C\u002Fli>\n\u003Cli>Service subscriptions\u003C\u002Fli>\n\u003Cli>Content subscriptions\u003C\u002Fli>\n\u003Cli>Any recurring billing needs\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Video created by the community\u003C\u002Fh4>\n\u003Cp>\u003Cspan class=\"embed-youtube\" style=\"text-align:center; display: block;\">\u003Ciframe loading=\"lazy\" class=\"youtube-player\" width=\"750\" height=\"422\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FVrdG_gYP7gQ?version=3&rel=1&showsearch=0&showinfo=1&iv_load_policy=1&fs=1&hl=en-US&autohide=2&wmode=transparent\" allowfullscreen=\"true\" style=\"border:0;\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox\">\u003C\u002Fiframe>\u003C\u002Fspan>\u003C\u002Fp>\n","A powerful and comprehensive WooCommerce subscription management plugin with advanced analytics, automated billing, and customer portal.",400,1961,60,"2026-02-08T03:30:00.000Z","6.8.5","5.8",[109,21,110,22,73],"recurring-billing","subscription-management","https:\u002F\u002Fwprecurio.com","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Frecurio.1.0.1.zip",{"slug":114,"name":115,"version":116,"author":117,"author_profile":118,"description":119,"short_description":120,"active_installs":121,"downloaded":122,"rating":27,"num_ratings":28,"last_updated":123,"tested_up_to":106,"requires_at_least":124,"requires_php":71,"tags":125,"homepage":127,"download_link":128,"security_score":27,"vuln_count":29,"unpatched_count":29,"last_vuln_date":38,"fetched_at":31},"scanpay-for-woocommerce","Scanpay for WooCommerce","2.9.2","scanpay","https:\u002F\u002Fprofiles.wordpress.org\u002Fscanpay\u002F","\u003Cp>Easily accept payments in WooCommerce with \u003Ca href=\"https:\u002F\u002Fscanpay.dk\" rel=\"nofollow ugc\">Scanpay\u003C\u002Fa>, a secure and reliable Scandinavian payment gateway.\u003C\u002Fp>\n\u003Cp>This official payment plugin is developed, maintained, and supported by Scanpay. Follow or contribute to its development on \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fscanpay\u002Fwoocommerce-scanpay\" rel=\"nofollow ugc\">GitHub\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch3>Features\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Accepts Dankort, Visa, Mastercard, JCB, Amex, Diners, and more\u003C\u002Fli>\n\u003Cli>Supports MobilePay and Apple Pay\u003C\u002Fli>\n\u003Cli>Full compatibility with WooCommerce Subscriptions\u003C\u002Fli>\n\u003Cli>Option for automatic payment capture\u003C\u002Fli>\n\u003Cli>Option to auto-complete orders\u003C\u002Fli>\n\u003Cli>Supports HPOS and WooCommerce Blocks\u003C\u002Fli>\n\u003Cli>Optimized, lightweight, and thoroughly tested\u003C\u002Fli>\n\u003Cli>Dedicated support via email, phone, and \u003Ca href=\"https:\u002F\u002Fchat.scanpay.dev\u002F\" rel=\"nofollow ugc\">IRC\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Why Choose Scanpay?\u003C\u002Fh3>\n\u003Ch4>Acquirer-Agnostic Flexibility\u003C\u002Fh4>\n\u003Cp>Scanpay is a neutral, acquirer-agnostic payment gateway that connects to multiple acquiring banks — meaning you’re never locked into a single acquirer. This flexibility allows you to optimize your acquiring costs and set up a multi-acquirer configuration with automatic failover, ensuring uninterrupted payment processing and greater reliability.\u003C\u002Fp>\n\u003Ch4>Transparent, Low-Cost Pricing\u003C\u002Fh4>\n\u003Cp>No setup fees, no monthly fees, and no hidden charges. You only pay 0.25 DKK (~€0.034) per transaction.\u003C\u002Fp>\n\u003Ch4>Security by Design\u003C\u002Fh4>\n\u003Cp>Our platform is built in C with a security-first approach, prioritizing a small, auditable codebase for maximum security, efficiency, and stability.\u003C\u002Fp>\n\u003Ch4>Performance\u003C\u002Fh4>\n\u003Cp>Scanpay is engineered for speed and scalability, handling millions of transactions with ease. We take pride in delivering one of the most performant payment platforms available today.\u003C\u002Fp>\n","Accept payments in WooCommerce with a reliable and secure Scandinavian payment gateway.",200,11856,"2025-09-30T08:56:00.000Z","4.7",[20,126,117,22,24],"payments","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fscanpay-for-woocommerce\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fscanpay-for-woocommerce.2.9.2.zip",{"slug":130,"name":131,"version":132,"author":133,"author_profile":134,"description":135,"short_description":136,"active_installs":29,"downloaded":137,"rating":29,"num_ratings":29,"last_updated":138,"tested_up_to":16,"requires_at_least":139,"requires_php":74,"tags":140,"homepage":74,"download_link":142,"security_score":27,"vuln_count":29,"unpatched_count":29,"last_vuln_date":38,"fetched_at":31},"appalify-subscriptions-for-woocommerce","Appalify Subscriptions for WooCommerce","1.0.3","Appalify","https:\u002F\u002Fprofiles.wordpress.org\u002Fappalify\u002F","\u003Cp>Create and manage automatic recurring payments for all products. \u003Cspan class=\"embed-youtube\" style=\"text-align:center; display: block;\">\u003Ciframe loading=\"lazy\" class=\"youtube-player\" width=\"750\" height=\"422\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002F8VqnLx0Nw-A?version=3&rel=1&showsearch=0&showinfo=1&iv_load_policy=1&fs=1&hl=en-US&autohide=2&wmode=transparent\" allowfullscreen=\"true\" style=\"border:0;\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox\">\u003C\u002Fiframe>\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch3>Features\u003C\u002Fh3>\n\u003Cp>User and admin management\u003Cbr \u002F>\nSubscriptions can be managed from both the My Account page and a dedicated admin page.\u003C\u002Fp>\n\u003Cp>Automatic recurring payments\u003Cbr \u002F>\nPayment methods are securely saved at checkout and automatically billed each interval.\u003C\u002Fp>\n\u003Cp>Sign-up fees\u003Cbr \u002F>\nAdd additional fees on sign-up.\u003C\u002Fp>\n\u003Cp>Retry on failed payments\u003Cbr \u002F>\nSet the interval and duration for retries on a failed payment.\u003C\u002Fp>\n\u003Cp>Separate shipping cycles\u003Cbr \u002F>\nSet the free and sell quantity for each offer.\u003C\u002Fp>\n\u003Cp>Free trials\u003Cbr \u002F>\nOffer free trials for your subscriptions.\u003C\u002Fp>\n\u003Cp>Cancel limits\u003Cbr \u002F>\nSet how long after creation or how long before renewal a user can cancel.\u003C\u002Fp>\n\u003Ch3>Gateways\u003C\u002Fh3>\n\u003Cp>Appalify Subscriptions for WooCommerce uses the standard WooCommerce payment gateway systems, ensuring compatibility with all gateways that support recurring payments.\u003Cbr \u002F>\nHere’s how it works:\u003Cbr \u002F>\n    1.  Gateway Integration\u003Cbr \u002F>\nThe plugin does not introduce a new payment method. Instead, it connects directly to WooCommerce’s existing gateways through the built-in gateway’s API. This means any payment provider that supports tokenization and recurring billing (such as Stripe, PayPal, or Authorize.net) will work seamlessly.\u003Cbr \u002F>\n    2.  Saving Payment Methods\u003Cbr \u002F>\nWhen a customer checks out, their payment method is securely saved by the gateway using WooCommerce’s token system. This token is then used to charge the customer automatically at each renewal interval — without requiring manual re-entry of payment details.\u003Cbr \u002F>\n    3.  Automatic Billing and Retries\u003Cbr \u002F>\nOn each billing cycle, WooCommerce triggers a renewal event. Appalify Subscriptions for WooCommerce uses the stored token to attempt payment. If a payment fails, the plugin’s retry system can automatically try again based on your configured retry intervals and limits.\u003Cbr \u002F>\n    4.  Gateway Requirements\u003Cbr \u002F>\n    •   The selected gateway must support automatic recurring payments.\u003Cbr \u002F>\n    •   The gateway must support tokenization (saving payment methods).\u003Cbr \u002F>\n    •   Gateways that only support one-time payments will process the initial charge but cannot renew automatically.\u003Cbr \u002F>\n    5.  Admin and User Transparency\u003Cbr \u002F>\nAll renewal transactions, payment retries, and gateway responses are logged in both the admin order view and the user’s “My Account” subscriptions list for full transparency.\u003C\u002Fp>\n\u003Cp>Current supported gateways:\u003Cbr \u002F>\n– PayPal\u003Cbr \u002F>\n– Woopayments\u003Cbr \u002F>\n– Stripe\u003Cbr \u002F>\n– more gateways are being added on 11\u002F25\u003C\u002Fp>\n\u003Cp>If you have another gateway that you would like to add, please email us at team@appalify.com and we will take a look.\u003C\u002Fp>\n\u003Cp>Requirements:\u003Cbr \u002F>\n– WordPress\u003Cbr \u002F>\n– Woocommerce\u003C\u002Fp>\n\u003Ch3>External services\u003C\u002Fh3>\n\u003Cp>This plugin connects to the API of both Paypal and Stripe via the token saved in the Paypal and Stripe Plugins.\u003C\u002Fp>\n\u003Cp>Paypal:\u003Cbr \u002F>\nThe API is used to create a subscription. This token is then saved, so it can be checked periodically, if it is still active.\u003Cbr \u002F>\nThe API is also used to cancel the subscription.\u003Cbr \u002F>\nThis service is provided by \u003Cstrong>PayPal Holdings, Inc.\u003C\u002Fstrong>: \u003Ca href=\"https:\u002F\u002Fwww.paypal.com\u002Fus\u002Flegalhub\u002Fpaypal\u002Fuseragreement-full\" rel=\"nofollow ugc\">Terms of Use\u003C\u002Fa> | \u003Ca href=\"https:\u002F\u002Fwww.paypal.com\u002Fus\u002Flegalhub\u002Fpaypal\u002Fprivacy-full\" rel=\"nofollow ugc\">Privacy Policy\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>Stripe:\u003Cbr \u002F>\nThe API is used to recharge the users payment method each billing cycle. First the payment_id is saved and then it is charged each billing cycle.\u003Cbr \u002F>\nThe API is also used to cancel the subscription.\u003Cbr \u002F>\nThis service is provided by \u003Cstrong>Stripe, Inc.\u003C\u002Fstrong>: \u003Ca href=\"https:\u002F\u002Fstripe.com\u002Flegal\u002Fssa\" rel=\"nofollow ugc\">Terms of Use\u003C\u002Fa> | \u003Ca href=\"https:\u002F\u002Fstripe.com\u002Flegal\u002Fprivacy\" rel=\"nofollow ugc\">Privacy Policy\u003C\u002Fa>\u003C\u002Fp>\n","Create and manage automatic recurring payments for all products. [youtube http:\u002F\u002Fwww.youtube.com\u002Fwatch?v=8VqnLx0Nw-A]",355,"2026-03-06T21:38:00.000Z","4.0",[21,141,22,24,73],"subscription-billing","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fappalify-subscriptions-for-woocommerce.1.0.3.zip",{"attackSurface":144,"codeSignals":1115,"taintFlows":1653,"riskAssessment":1795,"analyzedAt":1811},{"hooks":145,"ajaxHandlers":977,"restRoutes":1063,"shortcodes":1071,"cronEvents":1099,"entryPointCount":151,"unprotectedCount":221},[146,152,156,160,163,166,169,173,176,180,182,185,188,192,195,198,200,203,207,210,213,217,219,223,226,230,233,236,239,243,247,251,255,258,262,265,268,271,274,277,280,283,287,290,294,298,302,306,310,312,315,317,320,322,326,329,332,336,339,342,346,350,354,357,361,366,371,375,380,383,386,389,392,396,400,403,406,408,411,413,416,417,419,421,425,428,432,435,438,441,444,446,448,450,453,455,457,460,462,465,468,471,475,478,481,484,487,489,493,496,499,502,505,508,511,513,516,518,522,525,527,529,532,534,536,541,545,550,553,557,561,563,566,568,570,572,575,576,577,581,585,587,589,591,594,598,601,605,607,609,611,614,616,619,622,626,629,633,637,640,642,644,647,650,652,655,658,660,661,663,666,669,673,676,680,683,686,689,691,693,695,697,700,703,706,710,714,718,722,724,727,728,730,733,735,739,743,748,752,755,758,762,765,768,772,776,780,783,787,791,794,798,801,804,807,811,814,817,819,821,824,826,828,830,833,834,836,838,841,843,845,846,850,853,855,857,859,861,863,865,866,869,873,877,881,883,885,887,889,891,893,896,898,900,902,903,904,905,907,909,911,912,915,919,920,921,923,925,928,931,935,939,942,944,947,951,954,955,957,958,962,966,967,968,969,972,975],{"type":147,"name":148,"callback":149,"file":150,"line":151},"action","init","closure","payment\\admin\\blocks\\register-woo-blocks.php",35,{"type":147,"name":148,"callback":153,"file":154,"line":155},"vipps_badge_init","payment\\Blocks\\Badges\\vipps-badge.php",114,{"type":147,"name":157,"callback":149,"file":158,"line":159},"woocommerce_blocks_payment_method_type_registration","payment\\Blocks\\Payment\\Vipps.class.php",23,{"type":147,"name":148,"callback":149,"file":161,"line":162},"payment\\Blocks\\woo-vipps-blocks.php",6,{"type":147,"name":164,"callback":149,"file":161,"line":165},"enqueue_block_assets",21,{"type":147,"name":167,"callback":149,"file":161,"line":168},"enqueue_block_editor_assets",32,{"type":147,"name":170,"callback":149,"file":171,"line":172},"woocommerce_init","payment\\payment.php",67,{"type":147,"name":174,"callback":149,"priority":28,"file":171,"line":175},"before_woocommerce_init",84,{"type":177,"name":178,"callback":149,"priority":179,"file":171,"line":64},"filter","woocommerce_set_cookie_enabled",999,{"type":147,"name":181,"callback":149,"file":171,"line":92},"woocommerce_shipping_init",{"type":147,"name":183,"callback":183,"file":184,"line":27},"admin_init","payment\\Vipps.class.php",{"type":147,"name":186,"callback":186,"file":184,"line":187},"admin_menu",101,{"type":147,"name":189,"callback":190,"file":184,"line":191},"wp_footer","footer",103,{"type":147,"name":193,"callback":193,"file":184,"line":194},"plugins_loaded",105,{"type":147,"name":196,"callback":196,"file":184,"line":197},"after_setup_theme",106,{"type":147,"name":148,"callback":148,"file":184,"line":199},107,{"type":147,"name":201,"callback":201,"file":184,"line":202},"woocommerce_loaded",108,{"type":177,"name":204,"callback":205,"file":184,"line":206},"woocommerce_available_payment_gateways","payment_gateway_filter",109,{"type":147,"name":208,"callback":208,"file":184,"line":209},"woocommerce_blocks_loaded",110,{"type":147,"name":211,"callback":212,"priority":64,"file":184,"line":155},"woocommerce_load_shipping_methods","maybe_load_pickup_locations",{"type":147,"name":214,"callback":215,"file":184,"line":216},"wp_loaded","wp_register_scripts",199,{"type":147,"name":218,"callback":218,"file":184,"line":121},"wp_enqueue_scripts",{"type":177,"name":220,"callback":220,"priority":221,"file":184,"line":222},"woocommerce_my_account_my_orders_actions",10,203,{"type":177,"name":224,"callback":224,"priority":221,"file":184,"line":225},"woocommerce_add_to_cart_redirect",206,{"type":147,"name":227,"callback":228,"file":184,"line":229},"admin_post_nopriv_woo_vipps_order_management","do_order_management",212,{"type":147,"name":231,"callback":228,"file":184,"line":232},"admin_post_woo_vipps_order_management",213,{"type":147,"name":234,"callback":149,"file":184,"line":235},"rest_api_init",232,{"type":177,"name":237,"callback":149,"file":184,"line":238},"cron_schedules",244,{"type":147,"name":240,"callback":241,"file":184,"line":242},"vipps_cron_cleanup_hook","cron_cleanup_hook",253,{"type":147,"name":244,"callback":245,"file":184,"line":246},"vipps_cron_missing_callback_hook","cron_check_for_missing_callbacks",255,{"type":177,"name":248,"callback":249,"file":184,"line":250},"woo_vipps_lock_order","flock_lock_order",266,{"type":147,"name":252,"callback":253,"file":184,"line":254},"woo_vipps_unlock_order","flock_unlock_order",267,{"type":177,"name":256,"callback":149,"priority":221,"file":184,"line":257},"woocommerce_order_data_store_cpt_get_orders_query",279,{"type":147,"name":259,"callback":260,"priority":221,"file":184,"line":261},"woocommerce_order_item_add_action_buttons","order_item_add_action_buttons",305,{"type":147,"name":263,"callback":149,"file":184,"line":264},"woocommerce_after_order_refund_item_name",308,{"type":147,"name":266,"callback":266,"file":184,"line":267},"admin_head",325,{"type":147,"name":269,"callback":269,"file":184,"line":270},"admin_enqueue_scripts",330,{"type":147,"name":272,"callback":149,"file":184,"line":273},"woocommerce_settings_start",333,{"type":177,"name":275,"callback":149,"priority":221,"file":184,"line":276},"admin_url",334,{"type":177,"name":278,"callback":278,"priority":92,"file":184,"line":279},"woocommerce_product_data_tabs",349,{"type":147,"name":281,"callback":281,"priority":92,"file":184,"line":282},"woocommerce_product_data_panels",350,{"type":147,"name":284,"callback":285,"priority":221,"file":184,"line":286},"woocommerce_process_product_meta","process_product_meta",351,{"type":147,"name":288,"callback":288,"file":184,"line":289},"add_meta_boxes",353,{"type":147,"name":291,"callback":292,"file":184,"line":293},"admin_notices","stored_admin_notices",356,{"type":147,"name":295,"callback":296,"file":184,"line":297},"admin_post_update_vipps_badge_settings","update_badge_settings",364,{"type":147,"name":299,"callback":300,"file":184,"line":301},"admin_post_update_vipps_button_settings","update_button_settings",365,{"type":147,"name":303,"callback":304,"file":184,"line":305},"admin_post_vipps_delete_webhook","vipps_delete_webhook",366,{"type":147,"name":307,"callback":308,"file":184,"line":309},"admin_post_vipps_add_webhook","vipps_add_webhook",367,{"type":147,"name":218,"callback":149,"file":184,"line":311},424,{"type":147,"name":313,"callback":149,"file":184,"line":314},"woocommerce_before_add_to_cart_form",425,{"type":147,"name":291,"callback":149,"file":184,"line":316},1323,{"type":147,"name":318,"callback":149,"file":184,"line":319},"shutdown",1369,{"type":147,"name":318,"callback":149,"file":184,"line":321},2173,{"type":177,"name":323,"callback":324,"file":184,"line":325},"autoptimize_filter_noptimize","__return_true",2286,{"type":177,"name":327,"callback":149,"priority":221,"file":184,"line":328},"woocommerce_blocks_product_grid_item_html",2375,{"type":177,"name":330,"callback":149,"priority":221,"file":184,"line":331},"woocommerce_order_shipping_to_display",2386,{"type":177,"name":333,"callback":334,"priority":221,"file":184,"line":335},"woo_vipps_modify_express_checkout_rate","express_add_pickup_location_options",2416,{"type":177,"name":337,"callback":337,"file":184,"line":338},"woocommerce_payment_gateways",2426,{"type":177,"name":337,"callback":149,"priority":340,"file":184,"line":341},99999,2428,{"type":177,"name":343,"callback":343,"priority":344,"file":184,"line":345},"woocommerce_create_pages",50,2442,{"type":147,"name":347,"callback":348,"file":184,"line":349},"woocommerce_api_wc_gateway_vipps","vipps_callback",2446,{"type":147,"name":351,"callback":352,"file":184,"line":353},"woocommerce_api_vipps_shipping_details","vipps_shipping_details_callback",2447,{"type":147,"name":355,"callback":355,"file":184,"line":356},"woocommerce_cart_updated",2450,{"type":147,"name":358,"callback":359,"file":184,"line":360},"woocommerce_cart_actions","cart_express_checkout_button",2453,{"type":147,"name":362,"callback":363,"priority":364,"file":184,"line":365},"woocommerce_widget_shopping_cart_buttons","minicart_express_checkout_button",30,2454,{"type":147,"name":367,"callback":368,"priority":369,"file":184,"line":370},"woocommerce_before_checkout_form","before_checkout_form_express",5,2455,{"type":147,"name":372,"callback":373,"file":184,"line":374},"woocommerce_after_add_to_cart_button","single_product_buy_now_button",2457,{"type":147,"name":376,"callback":377,"priority":378,"file":184,"line":379},"woocommerce_after_shop_loop_item","loop_single_product_buy_now_button",20,2458,{"type":147,"name":381,"callback":381,"priority":28,"file":184,"line":382},"template_redirect",2463,{"type":147,"name":384,"callback":384,"priority":28,"file":184,"line":385},"pre_handle_404",2464,{"type":177,"name":387,"callback":387,"priority":221,"file":184,"line":388},"template_include",2467,{"type":177,"name":390,"callback":149,"priority":378,"file":184,"line":391},"woocommerce_cancel_unpaid_order",2490,{"type":177,"name":393,"callback":149,"priority":394,"file":184,"line":395},"woocommerce_attribute_label",9,2556,{"type":177,"name":397,"callback":398,"file":184,"line":399},"woocommerce_session_handler","getCallbackSessionClass",3000,{"type":177,"name":401,"callback":324,"file":184,"line":402},"woo_vipps_is_vipps_checkout",3208,{"type":177,"name":404,"callback":149,"file":184,"line":405},"woocommerce_cart_shipping_packages",3323,{"type":147,"name":211,"callback":149,"priority":92,"file":184,"line":407},4582,{"type":177,"name":409,"callback":149,"file":184,"line":410},"body_class",5046,{"type":177,"name":409,"callback":149,"file":184,"line":412},5128,{"type":147,"name":183,"callback":183,"file":414,"line":415},"payment\\VippsCheckout.class.php",58,{"type":147,"name":148,"callback":148,"file":414,"line":104},{"type":147,"name":201,"callback":201,"file":414,"line":418},61,{"type":147,"name":381,"callback":381,"file":414,"line":420},62,{"type":147,"name":422,"callback":423,"file":414,"line":424},"admin_post_nopriv_vipps_gw","choose_other_gw",63,{"type":147,"name":426,"callback":423,"file":414,"line":427},"admin_post_vipps_gw",64,{"type":177,"name":429,"callback":430,"priority":221,"file":414,"line":431},"woocommerce_order_email_verification_required","allow_other_payment_method_email",65,{"type":147,"name":189,"callback":433,"file":414,"line":434},"maybe_proceed_to_payment",66,{"type":147,"name":436,"callback":436,"file":414,"line":437},"woocommerce_order_status_cancelled",69,{"type":177,"name":439,"callback":149,"priority":221,"file":414,"line":440},"woo_vipps_shipping_method_pickup_points",72,{"type":177,"name":442,"callback":324,"file":414,"line":443},"woocommerce_is_checkout",300,{"type":177,"name":409,"callback":149,"file":414,"line":445},301,{"type":177,"name":447,"callback":149,"priority":221,"file":414,"line":264},"the_title",{"type":147,"name":214,"callback":215,"file":414,"line":449},320,{"type":147,"name":451,"callback":451,"file":414,"line":452},"wp_head",343,{"type":147,"name":454,"callback":149,"file":414,"line":282},"woocommerce_thankyou_vipps",{"type":147,"name":456,"callback":149,"priority":221,"file":414,"line":293},"woocommerce_add_to_cart",{"type":147,"name":458,"callback":149,"priority":221,"file":414,"line":459},"woocommerce_cart_emptied",360,{"type":147,"name":461,"callback":149,"priority":221,"file":414,"line":297},"woocommerce_after_cart_item_quantity_update",{"type":147,"name":463,"callback":149,"priority":221,"file":414,"line":464},"woocommerce_cart_item_removed",368,{"type":147,"name":466,"callback":149,"priority":221,"file":414,"line":467},"woocommerce_cart_item_restored",372,{"type":177,"name":469,"callback":149,"file":414,"line":470},"woocommerce_update_cart_action_cart_updated",376,{"type":147,"name":472,"callback":473,"file":414,"line":474},"woocommerce_applied_coupon","cart_changed",381,{"type":147,"name":476,"callback":473,"file":414,"line":477},"woocommerce_removed_coupon",383,{"type":147,"name":479,"callback":473,"file":414,"line":480},"vipps_cart_changed",385,{"type":177,"name":482,"callback":482,"priority":221,"file":414,"line":483},"woocommerce_settings_pages",390,{"type":177,"name":485,"callback":324,"file":414,"line":486},"woo_vipps_is_checkout_callback",573,{"type":177,"name":401,"callback":324,"file":414,"line":488},681,{"type":147,"name":490,"callback":491,"priority":28,"file":414,"line":492},"woocommerce_check_cart_items","prettily_cleanup_coupons_in_cart",915,{"type":177,"name":494,"callback":149,"file":414,"line":495},"woo_vipps_checkout_callback_actions",923,{"type":177,"name":497,"callback":149,"priority":179,"file":414,"line":498},"woocommerce_mail_callback",940,{"type":177,"name":500,"callback":149,"file":414,"line":501},"woocommerce_add_success",957,{"type":177,"name":503,"callback":149,"file":414,"line":504},"woocommerce_add_error",958,{"type":177,"name":506,"callback":149,"file":414,"line":507},"woocommerce_add_notice",959,{"type":177,"name":509,"callback":149,"priority":221,"file":414,"line":510},"woo_vipps_checkout_recalculate_shipping",973,{"type":177,"name":509,"callback":149,"priority":221,"file":414,"line":512},1006,{"type":177,"name":514,"callback":149,"file":414,"line":515},"woo_vipps_checkout_widgets",1033,{"type":177,"name":401,"callback":324,"file":414,"line":517},1139,{"type":177,"name":519,"callback":520,"priority":221,"file":414,"line":521},"woocommerce_get_checkout_page_id","maybe_override_checkout_page_id",1334,{"type":177,"name":523,"callback":149,"file":414,"line":524},"woocommerce_checkout_fields",1338,{"type":147,"name":181,"callback":149,"priority":378,"file":526,"line":51},"payment\\VippsCheckoutShippingMethods.php",{"type":177,"name":528,"callback":149,"file":526,"line":84},"woocommerce_shipping_methods",{"type":147,"name":530,"callback":531,"priority":221,"file":526,"line":254},"admin_footer","enqueue_admin_js",{"type":147,"name":291,"callback":149,"file":533,"line":27},"payment\\VippsDismissibleAdminBanners.class.php",{"type":147,"name":291,"callback":149,"file":533,"line":535},144,{"type":177,"name":537,"callback":538,"file":539,"line":540},"kco_wc_gateway_settings","form_fields","payment\\VippsKCSupport.class.php",40,{"type":177,"name":542,"callback":543,"priority":64,"file":539,"line":544},"kco_wc_api_request_args","create_order_vipps",41,{"type":177,"name":546,"callback":547,"priority":548,"file":539,"line":549},"kco_wc_klarna_order_pre_submit","canonicalize_phone_number",11,42,{"type":147,"name":148,"callback":551,"file":539,"line":552},"maybe_remove_other_gateway_button",43,{"type":147,"name":554,"callback":555,"file":539,"line":556},"kco_wc_before_submit","add_vipps_payment_method",44,{"type":147,"name":558,"callback":559,"priority":221,"file":539,"line":560},"woocommerce_checkout_order_processed","reset_default_payment_method",45,{"type":147,"name":562,"callback":559,"priority":221,"file":539,"line":66},"woo_vipps_before_redirect_to_vipps",{"type":147,"name":183,"callback":183,"file":564,"line":565},"payment\\VippsQRCodeController.class.php",53,{"type":147,"name":186,"callback":186,"file":564,"line":567},54,{"type":147,"name":148,"callback":148,"file":564,"line":569},56,{"type":147,"name":201,"callback":201,"file":564,"line":571},57,{"type":147,"name":573,"callback":574,"priority":221,"file":564,"line":427},"save_post_vipps_qr_code","save_post",{"type":147,"name":269,"callback":269,"file":564,"line":431},{"type":147,"name":530,"callback":530,"file":564,"line":434},{"type":177,"name":578,"callback":579,"file":564,"line":580},"views_edit-vipps_qr_code","qr_list_views",68,{"type":147,"name":582,"callback":583,"file":564,"line":584},"admin_post_vipps_qr_handle_unsynched","handle_unsynched",70,{"type":147,"name":586,"callback":149,"file":564,"line":440},"in_admin_header",{"type":147,"name":291,"callback":149,"file":564,"line":588},80,{"type":147,"name":291,"callback":149,"file":564,"line":590},93,{"type":177,"name":592,"callback":592,"priority":221,"file":564,"line":593},"update_post_metadata",475,{"type":147,"name":595,"callback":596,"file":564,"line":597},"wp_trash_post","delete_qr_code",478,{"type":147,"name":599,"callback":596,"file":564,"line":600},"before_delete_post",479,{"type":147,"name":602,"callback":603,"file":564,"line":604},"untrashed_post","undelete_qr_code",482,{"type":147,"name":148,"callback":148,"file":606,"line":420},"payment\\VippsWCProductEditorV2.class.php",{"type":177,"name":608,"callback":149,"priority":221,"file":606,"line":440},"woocommerce_rest_prepare_product_object",{"type":147,"name":234,"callback":149,"file":606,"line":610},89,{"type":147,"name":612,"callback":613,"file":606,"line":64},"woocommerce_block_template_area_product-form_after_add_block_inventory","init_woo_vipps_product_tab",{"type":147,"name":269,"callback":149,"file":615,"line":440},"payment\\WC_Gateway_Vipps.class.php",{"type":147,"name":183,"callback":617,"file":615,"line":618},"add_image_upload_setting_widget",188,{"type":147,"name":436,"callback":620,"file":615,"line":621},"order_status_cancelled_wrapper",210,{"type":147,"name":623,"callback":624,"file":615,"line":625},"woocommerce_order_status_refunded","maybe_refund_payment",211,{"type":147,"name":627,"callback":628,"priority":340,"file":615,"line":232},"woocommerce_order_status_pending_to_cancelled","maybe_delete_order",{"type":147,"name":630,"callback":631,"priority":221,"file":615,"line":632},"woocommerce_payment_complete","order_payment_complete",215,{"type":147,"name":634,"callback":635,"priority":92,"file":615,"line":636},"woocommerce_order_status_completed","maybe_cancel_reserved_amount",220,{"type":147,"name":638,"callback":149,"file":615,"line":639},"vipps_admin_notices",1599,{"type":147,"name":638,"callback":149,"file":615,"line":641},1604,{"type":147,"name":638,"callback":149,"file":615,"line":643},1609,{"type":177,"name":645,"callback":149,"priority":92,"file":615,"line":646},"woocommerce_payment_complete_order_status",3535,{"type":147,"name":196,"callback":149,"priority":378,"file":648,"line":649},"payment\\woo-vipps-compatibility.php",36,{"type":147,"name":651,"callback":149,"priority":221,"file":648,"line":66},"woo_vipps_before_create_express_checkout_order",{"type":177,"name":653,"callback":149,"priority":92,"file":648,"line":654},"tutor_is_gift_item",47,{"type":147,"name":656,"callback":149,"priority":221,"file":648,"line":657},"woo_vipps_set_order_shipping_details",52,{"type":147,"name":456,"callback":149,"priority":28,"file":648,"line":659},81,{"type":147,"name":196,"callback":149,"file":648,"line":191},{"type":147,"name":381,"callback":149,"file":648,"line":662},117,{"type":177,"name":664,"callback":149,"priority":221,"file":648,"line":665},"option_woocommerce_dibs_easy_settings",129,{"type":147,"name":667,"callback":149,"file":648,"line":668},"woo_vipps_express_checkout_order_created",145,{"type":177,"name":670,"callback":671,"file":648,"line":672},"wp_doing_ajax","woo_vipps_pretend_not_doing_ajax",170,{"type":147,"name":674,"callback":149,"file":648,"line":675},"woo_vipps_before_calculate_totals_partial_order",175,{"type":147,"name":677,"callback":678,"priority":394,"file":648,"line":679},"woocommerce_new_order_item","woo_vipps_add_no_ajax",176,{"type":147,"name":677,"callback":681,"priority":548,"file":648,"line":682},"woo_vipps_remove_no_ajax",177,{"type":177,"name":684,"callback":149,"priority":221,"file":648,"line":685},"option_mailerlite_disable_checkout_sync",187,{"type":177,"name":687,"callback":149,"file":648,"line":688},"woo_vipps_checkout_consent_query",194,{"type":147,"name":656,"callback":149,"file":648,"line":690},197,{"type":147,"name":692,"callback":149,"priority":221,"file":648,"line":225},"woo_vipps_before_thankyou",{"type":177,"name":687,"callback":149,"file":648,"line":694},223,{"type":147,"name":656,"callback":149,"file":648,"line":696},229,{"type":177,"name":698,"callback":149,"priority":221,"file":648,"line":699},"woo_vipps_cart_supports_checkout",245,{"type":177,"name":701,"callback":149,"priority":221,"file":648,"line":702},"woo_vipps_cart_supports_express_checkout",254,{"type":177,"name":704,"callback":149,"priority":221,"file":648,"line":705},"woo_vipps_is_available",269,{"type":177,"name":707,"callback":708,"priority":221,"file":709,"line":221},"wc_vipps_recurring_cart_has_subscription_product","cart_has_subscription_product","recurring\\includes\\compat\\wc-vipps-recurring-all-products-support.php",{"type":177,"name":711,"callback":712,"priority":221,"file":709,"line":713},"wc_vipps_recurring_item_is_subscription","item_is_subscription",15,{"type":177,"name":715,"callback":716,"priority":221,"file":709,"line":717},"wc_vipps_recurring_checkout_product_billing_period","product_billing_period",17,{"type":177,"name":719,"callback":720,"priority":221,"file":709,"line":721},"wc_vipps_recurring_checkout_product_billing_interval","product_billing_interval",18,{"type":177,"name":537,"callback":538,"file":723,"line":221},"recurring\\includes\\compat\\wc-vipps-recurring-kc-support.php",{"type":177,"name":542,"callback":725,"priority":64,"file":723,"line":726},"create_vipps_recurring_order",12,{"type":177,"name":546,"callback":547,"priority":548,"file":723,"line":717},{"type":147,"name":148,"callback":551,"file":723,"line":729},22,{"type":147,"name":554,"callback":731,"file":723,"line":732},"add_vipps_recurring_payment_method",24,{"type":147,"name":630,"callback":559,"priority":221,"file":723,"line":734},29,{"type":177,"name":736,"callback":737,"priority":221,"file":723,"line":738},"wc_vipps_recurring_transaction_id_for_order","fix_transaction_id",34,{"type":147,"name":740,"callback":741,"file":723,"line":742},"wc_vipps_recurring_before_process_order_charge","fix_payment_method_on_subscription",39,{"type":177,"name":744,"callback":745,"file":746,"line":747},"woocommerce_valid_order_statuses_for_payment_complete","append_valid_statuses_for_payment_complete","recurring\\includes\\wc-gateway-vipps-recurring.php",183,{"type":147,"name":749,"callback":750,"priority":340,"file":746,"line":751},"woocommerce_subscription_status_pending-cancel_to_cancelled","maybe_delete_subscription",189,{"type":147,"name":753,"callback":750,"priority":340,"file":746,"line":754},"woocommerce_subscription_status_pending_to_cancelled",193,{"type":147,"name":756,"callback":757,"file":746,"line":690},"woocommerce_new_subscription","maybe_delete_subscription_later",{"type":147,"name":759,"callback":760,"priority":221,"file":746,"line":761},"woocommerce_subscription_status_updated","overwrite_send_cancelled_email",204,{"type":147,"name":763,"callback":764,"priority":28,"file":746,"line":621},"woocommerce_account_view-order_endpoint","check_charge_status",{"type":147,"name":766,"callback":767,"file":746,"line":229},"set_logged_in_cookie","set_cookie_on_current_request",{"type":147,"name":769,"callback":770,"priority":28,"file":746,"line":771},"woocommerce_before_thankyou","maybe_process_redirect_order",224,{"type":177,"name":773,"callback":774,"priority":221,"file":746,"line":775},"woocommerce_subscriptions_update_payment_via_pay_shortcode","indicate_async_payment_method_update",236,{"type":147,"name":777,"callback":778,"priority":221,"file":746,"line":779},"woocommerce_subscription_payment_meta","add_subscription_payment_meta",242,{"type":147,"name":781,"callback":782,"priority":221,"file":746,"line":699},"woocommerce_subscription_validate_payment_meta","validate_subscription_payment_meta",{"type":147,"name":784,"callback":785,"file":746,"line":786},"woocommerce_subscriptions_switched_item","handle_subscription_switch_completed",251,{"type":177,"name":788,"callback":789,"priority":27,"file":746,"line":790},"woocommerce_cart_needs_payment","cart_needs_payment",256,{"type":147,"name":759,"callback":792,"priority":221,"file":746,"line":793},"maybe_handle_subscription_status_transitions",262,{"type":147,"name":795,"callback":796,"file":746,"line":797},"wcs_resubscribe_order_created","delete_resubscribe_meta",268,{"type":147,"name":799,"callback":800,"file":746,"line":705},"wcs_renewal_order_created","delete_renewal_meta",{"type":147,"name":630,"callback":802,"file":746,"line":803},"after_renew_early_from_another_gateway",281,{"type":177,"name":645,"callback":805,"priority":27,"file":746,"line":806},"prevent_backwards_transition_on_completed_order",283,{"type":147,"name":808,"callback":809,"priority":221,"file":746,"line":810},"woocommerce_order_after_calculate_totals","update_agreement_price_in_app",288,{"type":177,"name":812,"callback":149,"file":746,"line":813},"allowed_redirect_hosts",293,{"type":177,"name":815,"callback":324,"file":746,"line":816},"wcs_is_scheduled_payment_attempt",524,{"type":147,"name":291,"callback":149,"file":746,"line":818},1958,{"type":147,"name":291,"callback":149,"file":746,"line":820},1967,{"type":147,"name":183,"callback":822,"file":823,"line":378},"action_admin_init","recurring\\includes\\wc-vipps-recurring-admin-notices.php",{"type":147,"name":291,"callback":825,"file":823,"line":165},"action_admin_notices",{"type":147,"name":234,"callback":148,"file":827,"line":732},"recurring\\includes\\wc-vipps-recurring-checkout-rest-api.php",{"type":177,"name":829,"callback":324,"file":827,"line":104},"wc_vipps_recurring_is_vipps_checkout",{"type":147,"name":148,"callback":148,"file":831,"line":832},"recurring\\includes\\wc-vipps-recurring-checkout.php",25,{"type":177,"name":519,"callback":519,"priority":378,"file":831,"line":48},{"type":147,"name":381,"callback":381,"file":831,"line":835},28,{"type":147,"name":183,"callback":183,"file":831,"line":837},31,{"type":147,"name":318,"callback":839,"priority":221,"file":831,"line":840},"save",87,{"type":147,"name":214,"callback":842,"priority":369,"file":831,"line":187},"maybe_load_cart",{"type":147,"name":214,"callback":844,"file":831,"line":191},"register_scripts",{"type":147,"name":451,"callback":451,"file":831,"line":197},{"type":147,"name":847,"callback":848,"file":831,"line":849},"wc_vipps_recurring_before_cron_check_order_status","check_order_status",111,{"type":147,"name":851,"callback":848,"file":831,"line":852},"wc_vipps_recurring_before_rest_api_check_order_status",112,{"type":147,"name":456,"callback":149,"priority":221,"file":831,"line":854},115,{"type":147,"name":472,"callback":149,"priority":221,"file":831,"line":856},120,{"type":147,"name":458,"callback":149,"priority":221,"file":831,"line":858},125,{"type":147,"name":461,"callback":149,"priority":221,"file":831,"line":860},130,{"type":147,"name":463,"callback":149,"priority":221,"file":831,"line":862},135,{"type":147,"name":466,"callback":149,"priority":221,"file":831,"line":864},140,{"type":177,"name":469,"callback":149,"file":831,"line":668},{"type":147,"name":867,"callback":473,"file":831,"line":868},"vipps_recurring_cart_changed",152,{"type":147,"name":870,"callback":871,"priority":221,"file":831,"line":872},"wc_vipps_recurring_checkout_callback","handle_callback",154,{"type":147,"name":874,"callback":875,"file":831,"line":876},"wc_vipps_recurring_check_charge_status_no_agreement","maybe_cancel_initial_order",157,{"type":177,"name":878,"callback":879,"priority":221,"file":831,"line":880},"wcs_user_has_subscription","user_has_subscription",159,{"type":177,"name":482,"callback":482,"file":831,"line":882},164,{"type":177,"name":442,"callback":324,"file":831,"line":884},565,{"type":177,"name":409,"callback":149,"file":831,"line":886},567,{"type":177,"name":447,"callback":149,"priority":221,"file":831,"line":888},576,{"type":177,"name":829,"callback":324,"file":831,"line":890},635,{"type":147,"name":193,"callback":149,"file":892,"line":369},"recurring\\includes\\wc-vipps-recurring-compatibility.php",{"type":147,"name":318,"callback":149,"file":894,"line":895},"recurring\\includes\\wc-vipps-recurring-helper.php",525,{"type":147,"name":234,"callback":148,"file":897,"line":732},"recurring\\includes\\wc-vipps-recurring-rest-api.php",{"type":147,"name":183,"callback":183,"file":899,"line":649},"recurring\\includes\\wc-vipps-recurring.php",{"type":147,"name":186,"callback":186,"file":899,"line":901},37,{"type":147,"name":193,"callback":193,"file":899,"line":556},{"type":147,"name":208,"callback":208,"file":899,"line":66},{"type":147,"name":148,"callback":148,"file":899,"line":654},{"type":177,"name":337,"callback":906,"file":899,"line":54},"add_gateways",{"type":177,"name":278,"callback":278,"file":899,"line":908},97,{"type":177,"name":281,"callback":281,"file":899,"line":910},98,{"type":177,"name":284,"callback":284,"file":899,"line":92},{"type":177,"name":204,"callback":913,"file":899,"line":914},"maybe_disable_gateway",102,{"type":147,"name":916,"callback":917,"file":899,"line":918},"woocommerce_api_wc_gateway_vipps_recurring","handle_webhook_callback",104,{"type":177,"name":343,"callback":343,"priority":344,"file":899,"line":199},{"type":147,"name":157,"callback":149,"file":899,"line":854},{"type":147,"name":218,"callback":218,"file":899,"line":922},136,{"type":177,"name":237,"callback":924,"file":899,"line":535},"woocommerce_vipps_recurring_add_cron_schedules",{"type":147,"name":926,"callback":927,"file":899,"line":872},"woocommerce_vipps_recurring_check_order_statuses","check_order_statuses",{"type":147,"name":929,"callback":930,"priority":221,"file":899,"line":880},"woocommerce_vipps_recurring_cancel_subscription","cancel_subscription",{"type":147,"name":932,"callback":933,"file":899,"line":934},"woocommerce_vipps_recurring_check_gateway_change_request","check_gateway_change_agreement_statuses",169,{"type":147,"name":936,"callback":937,"file":899,"line":938},"woocommerce_vipps_recurring_update_subscription_details_in_app","update_subscription_details_in_app",179,{"type":147,"name":940,"callback":941,"file":899,"line":751},"woocommerce_vipps_recurring_check_subscriptions_marked_for_deletion","check_subscriptions_marked_for_deletion",{"type":147,"name":943,"callback":750,"priority":221,"file":899,"line":688},"woocommerce_vipps_recurring_delete_pending_subscription",{"type":177,"name":945,"callback":946,"file":899,"line":225},"generate_rewrite_rules","custom_action_endpoints",{"type":177,"name":948,"callback":949,"file":899,"line":950},"query_vars","custom_action_query_vars",207,{"type":177,"name":387,"callback":952,"file":899,"line":953},"custom_action_page_template",208,{"type":147,"name":269,"callback":269,"file":899,"line":632},{"type":147,"name":266,"callback":266,"file":899,"line":956},217,{"type":147,"name":259,"callback":260,"file":899,"line":636},{"type":147,"name":959,"callback":960,"file":899,"line":961},"current_screen","setup_screen",231,{"type":147,"name":963,"callback":149,"priority":221,"file":964,"line":965},"deactivate_plugin","recurring\\maybe_load.php",19,{"type":147,"name":193,"callback":149,"priority":28,"file":964,"line":48},{"type":147,"name":214,"callback":149,"file":964,"line":569},{"type":147,"name":214,"callback":149,"file":964,"line":424},{"type":177,"name":970,"callback":149,"file":964,"line":971},"all_plugins",75,{"type":147,"name":973,"callback":149,"file":964,"line":974},"after_plugin_row",85,{"type":147,"name":174,"callback":149,"file":976,"line":971},"woo-vipps.php",[978,984,987,991,994,998,1001,1003,1007,1009,1013,1015,1019,1021,1025,1027,1031,1033,1036,1038,1042,1044,1048,1050,1053,1056,1060],{"action":979,"nopriv":980,"callback":981,"hasNonce":982,"hasCapCheck":980,"file":184,"line":983},"woo_vipps_order_action",false,"order_handle_vipps_action",true,216,{"action":985,"nopriv":980,"callback":149,"hasNonce":980,"hasCapCheck":980,"file":184,"line":986},"woo_vipps_activate_checkout_page",219,{"action":988,"nopriv":980,"callback":989,"hasNonce":982,"hasCapCheck":982,"file":184,"line":990},"vipps_create_shareable_link","ajax_vipps_create_shareable_link",359,{"action":992,"nopriv":980,"callback":993,"hasNonce":982,"hasCapCheck":980,"file":184,"line":459},"vipps_payment_details","ajax_vipps_payment_details",{"action":995,"nopriv":980,"callback":996,"hasNonce":980,"hasCapCheck":980,"file":184,"line":997},"vipps_update_admin_settings","ajax_vipps_update_admin_settings",361,{"action":848,"nopriv":982,"callback":999,"hasNonce":982,"hasCapCheck":980,"file":184,"line":1000},"ajax_check_order_status",2470,{"action":848,"nopriv":980,"callback":999,"hasNonce":982,"hasCapCheck":980,"file":184,"line":1002},2471,{"action":1004,"nopriv":982,"callback":1005,"hasNonce":980,"hasCapCheck":980,"file":184,"line":1006},"vipps_buy_single_product","ajax_vipps_buy_single_product",2475,{"action":1004,"nopriv":980,"callback":1005,"hasNonce":980,"hasCapCheck":980,"file":184,"line":1008},2476,{"action":1010,"nopriv":982,"callback":1011,"hasNonce":982,"hasCapCheck":980,"file":184,"line":1012},"do_express_checkout","ajax_do_express_checkout",2479,{"action":1010,"nopriv":980,"callback":1011,"hasNonce":982,"hasCapCheck":980,"file":184,"line":1014},2480,{"action":1016,"nopriv":982,"callback":1017,"hasNonce":982,"hasCapCheck":980,"file":184,"line":1018},"do_single_product_express_checkout","ajax_do_single_product_express_checkout",2483,{"action":1016,"nopriv":980,"callback":1017,"hasNonce":982,"hasCapCheck":980,"file":184,"line":1020},2484,{"action":1022,"nopriv":980,"callback":1023,"hasNonce":982,"hasCapCheck":980,"file":414,"line":1024},"vipps_checkout_poll_session","vipps_ajax_checkout_poll_session",323,{"action":1022,"nopriv":982,"callback":1023,"hasNonce":982,"hasCapCheck":980,"file":414,"line":1026},324,{"action":1028,"nopriv":980,"callback":1029,"hasNonce":982,"hasCapCheck":980,"file":414,"line":1030},"vipps_checkout_start_session","vipps_ajax_checkout_start_session",326,{"action":1028,"nopriv":982,"callback":1029,"hasNonce":982,"hasCapCheck":980,"file":414,"line":1032},327,{"action":1034,"nopriv":980,"callback":1035,"hasNonce":982,"hasCapCheck":980,"file":414,"line":270},"vipps_checkout_callback","vipps_ajax_checkout_callback",{"action":1034,"nopriv":982,"callback":1035,"hasNonce":982,"hasCapCheck":980,"file":414,"line":1037},331,{"action":1039,"nopriv":980,"callback":1040,"hasNonce":980,"hasCapCheck":980,"file":414,"line":1041},"vipps_checkout_validate_cart","ajax_vipps_checkout_validate_cart",335,{"action":1039,"nopriv":982,"callback":1040,"hasNonce":980,"hasCapCheck":980,"file":414,"line":1043},336,{"action":1045,"nopriv":980,"callback":1046,"hasNonce":980,"hasCapCheck":980,"file":414,"line":1047},"vipps_checkout_get_widgets","vipps_ajax_get_widgets",339,{"action":1045,"nopriv":982,"callback":1046,"hasNonce":980,"hasCapCheck":980,"file":414,"line":1049},340,{"action":1051,"nopriv":980,"callback":1052,"hasNonce":982,"hasCapCheck":980,"file":533,"line":427},"vipps_dismiss_notice","ajax_vipps_dismiss_notice",{"action":1054,"nopriv":980,"callback":1055,"hasNonce":982,"hasCapCheck":982,"file":606,"line":172},"vipps_generate_unused_shareable_meta_key","ajax_vipps_generate_unused_shareable_meta_key",{"action":1057,"nopriv":980,"callback":1058,"hasNonce":980,"hasCapCheck":980,"file":899,"line":1059},"vipps_recurring_force_check_charge_statuses","wp_ajax_vipps_recurring_force_check_charge_statuses",38,{"action":1061,"nopriv":980,"callback":1062,"hasNonce":982,"hasCapCheck":980,"file":899,"line":121},"wc_vipps_recurring_order_action","order_handle_vipps_recurring_action",[1064],{"namespace":1065,"route":1066,"methods":1067,"callback":1069,"permissionCallback":324,"file":184,"line":1070},"woo-vipps\u002Fv1","\u002Fexpress-products",[1068],"GET","rest_express_checkout_products",233,[1072,1076,1080,1084,1088,1092,1096],{"tag":1073,"callback":1074,"file":184,"line":1075},"woo_vipps_buy_now","buy_now_button_shortcode",1513,{"tag":1077,"callback":1078,"file":184,"line":1079},"woo_vipps_express_checkout_button","express_checkout_button_shortcode",1514,{"tag":1081,"callback":1082,"file":184,"line":1083},"woo_vipps_express_checkout_banner","express_checkout_banner_shortcode",1515,{"tag":1085,"callback":1086,"file":184,"line":1087},"vipps-mobilepay-badge","vipps_mobilepay_badge_shortcode",1519,{"tag":1089,"callback":1090,"file":184,"line":1091},"vipps-badge","vipps_badge_shortcode",1521,{"tag":1093,"callback":1094,"file":414,"line":1095},"vipps_checkout","vipps_checkout_shortcode",347,{"tag":1097,"callback":1098,"file":831,"line":206},"vipps_recurring_checkout","shortcode",[1100,1102,1104,1106,1108,1110,1112,1113],{"hook":240,"callback":240,"file":184,"line":1101},3968,{"hook":244,"callback":244,"file":184,"line":1103},3971,{"hook":929,"callback":929,"file":746,"line":1105},964,{"hook":943,"callback":943,"file":746,"line":1107},2973,{"hook":926,"callback":926,"file":899,"line":1109},151,{"hook":932,"callback":932,"file":899,"line":1111},166,{"hook":936,"callback":936,"file":899,"line":679},{"hook":940,"callback":940,"file":899,"line":1114},186,{"dangerousFunctions":1116,"sqlUsage":1127,"outputEscaping":1142,"fileOperations":548,"externalRequests":67,"nonceChecks":729,"capabilityChecks":713,"bundledLibraries":1652},[1117,1121,1124],{"fn":1118,"file":184,"line":1119,"context":1120},"unserialize",2962,"if (!$this->countrymap) $this->countrymap = unserialize(file_get_contents(dirname(__FILE__) . \"\u002Flib\u002F",{"fn":1118,"file":184,"line":1122,"context":1123},4099,"$cart = @unserialize(@base64_decode($cartdata));",{"fn":1118,"file":615,"line":1125,"context":1126},3135,"$shipping_rate = $decoded ? @unserialize($decoded) : null;",{"prepared":1128,"raw":369,"locations":1129},7,[1130,1133,1135,1138,1140],{"file":184,"line":1131,"context":1132},1870,"$wpdb->get_row() with variable interpolation",{"file":184,"line":1134,"context":1132},5065,{"file":564,"line":1136,"context":1137},139,"$wpdb->get_results() with variable interpolation",{"file":606,"line":1139,"context":1132},132,{"file":615,"line":1141,"context":1137},575,{"escaped":1143,"rawEcho":705,"locations":1144},291,[1145,1148,1150,1152,1154,1156,1158,1160,1162,1164,1166,1168,1170,1172,1174,1175,1177,1179,1181,1183,1185,1187,1189,1191,1193,1195,1197,1199,1201,1203,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1228,1230,1232,1234,1236,1238,1240,1242,1244,1246,1248,1250,1252,1254,1256,1258,1260,1262,1264,1266,1268,1270,1272,1274,1276,1278,1280,1282,1284,1286,1288,1290,1292,1294,1296,1298,1300,1302,1304,1306,1308,1310,1312,1313,1314,1316,1318,1320,1322,1324,1326,1328,1330,1332,1334,1336,1338,1340,1342,1344,1346,1348,1350,1352,1354,1356,1358,1360,1362,1364,1365,1367,1368,1370,1372,1374,1376,1378,1380,1382,1383,1385,1386,1388,1389,1391,1392,1394,1396,1398,1400,1402,1404,1406,1408,1410,1412,1414,1416,1418,1420,1422,1424,1426,1428,1430,1432,1434,1436,1438,1440,1442,1444,1446,1448,1450,1452,1454,1456,1458,1460,1462,1464,1466,1468,1470,1472,1474,1476,1478,1480,1482,1484,1486,1488,1490,1492,1494,1496,1498,1500,1502,1504,1506,1508,1510,1512,1513,1515,1517,1519,1521,1523,1525,1527,1529,1531,1533,1535,1537,1539,1541,1543,1544,1545,1547,1549,1550,1552,1553,1554,1556,1557,1559,1561,1563,1564,1566,1568,1570,1572,1574,1575,1576,1578,1580,1581,1582,1583,1585,1587,1589,1591,1593,1594,1596,1598,1600,1602,1604,1606,1609,1611,1613,1614,1615,1616,1617,1618,1620,1622,1624,1626,1628,1630,1632,1634,1636,1637,1638,1640,1641,1642,1644,1646,1648,1650],{"file":1146,"line":172,"context":1147},"payment\\admin\\settings\\VippsAdminSettings.class.php","raw output",{"file":1146,"line":1149,"context":1147},71,{"file":1146,"line":1151,"context":1147},119,{"file":1153,"line":832,"context":1147},"payment\\src\\Blocks\\src\\buy-now\\render.php",{"file":1155,"line":394,"context":1147},"payment\\src\\Blocks\\src\\buy-now-cart\\render.php",{"file":184,"line":1157,"context":1147},456,{"file":184,"line":1159,"context":1147},470,{"file":184,"line":1161,"context":1147},477,{"file":184,"line":1163,"context":1147},489,{"file":184,"line":1165,"context":1147},502,{"file":184,"line":1167,"context":1147},503,{"file":184,"line":1169,"context":1147},504,{"file":184,"line":1171,"context":1147},511,{"file":184,"line":1173,"context":1147},521,{"file":184,"line":816,"context":1147},{"file":184,"line":1176,"context":1147},526,{"file":184,"line":1178,"context":1147},528,{"file":184,"line":1180,"context":1147},757,{"file":184,"line":1182,"context":1147},759,{"file":184,"line":1184,"context":1147},766,{"file":184,"line":1186,"context":1147},770,{"file":184,"line":1188,"context":1147},779,{"file":184,"line":1190,"context":1147},795,{"file":184,"line":1192,"context":1147},796,{"file":184,"line":1194,"context":1147},808,{"file":184,"line":1196,"context":1147},811,{"file":184,"line":1198,"context":1147},838,{"file":184,"line":1200,"context":1147},866,{"file":184,"line":1202,"context":1147},966,{"file":184,"line":1204,"context":1147},967,{"file":184,"line":1206,"context":1147},968,{"file":184,"line":1208,"context":1147},983,{"file":184,"line":1210,"context":1147},984,{"file":184,"line":1212,"context":1147},995,{"file":184,"line":1214,"context":1147},996,{"file":184,"line":1216,"context":1147},1037,{"file":184,"line":1218,"context":1147},1038,{"file":184,"line":1220,"context":1147},1049,{"file":184,"line":1222,"context":1147},1050,{"file":184,"line":1224,"context":1147},1135,{"file":184,"line":1226,"context":1147},1136,{"file":184,"line":517,"context":1147},{"file":184,"line":1229,"context":1147},1140,{"file":184,"line":1231,"context":1147},1142,{"file":184,"line":1233,"context":1147},1144,{"file":184,"line":1235,"context":1147},1145,{"file":184,"line":1237,"context":1147},1146,{"file":184,"line":1239,"context":1147},1150,{"file":184,"line":1241,"context":1147},1155,{"file":184,"line":1243,"context":1147},1157,{"file":184,"line":1245,"context":1147},1162,{"file":184,"line":1247,"context":1147},1166,{"file":184,"line":1249,"context":1147},1183,{"file":184,"line":1251,"context":1147},1184,{"file":184,"line":1253,"context":1147},1185,{"file":184,"line":1255,"context":1147},1186,{"file":184,"line":1257,"context":1147},1188,{"file":184,"line":1259,"context":1147},1190,{"file":184,"line":1261,"context":1147},1191,{"file":184,"line":1263,"context":1147},1192,{"file":184,"line":1265,"context":1147},1193,{"file":184,"line":1267,"context":1147},1194,{"file":184,"line":1269,"context":1147},1198,{"file":184,"line":1271,"context":1147},1203,{"file":184,"line":1273,"context":1147},1205,{"file":184,"line":1275,"context":1147},1210,{"file":184,"line":1277,"context":1147},1214,{"file":184,"line":1279,"context":1147},1224,{"file":184,"line":1281,"context":1147},1226,{"file":184,"line":1283,"context":1147},1231,{"file":184,"line":1285,"context":1147},1236,{"file":184,"line":1287,"context":1147},1241,{"file":184,"line":1289,"context":1147},1251,{"file":184,"line":1291,"context":1147},1252,{"file":184,"line":1293,"context":1147},1253,{"file":184,"line":1295,"context":1147},1255,{"file":184,"line":1297,"context":1147},1261,{"file":184,"line":1299,"context":1147},1265,{"file":184,"line":1301,"context":1147},1269,{"file":184,"line":1303,"context":1147},1326,{"file":184,"line":1305,"context":1147},1388,{"file":184,"line":1307,"context":1147},1395,{"file":184,"line":1309,"context":1147},1542,{"file":184,"line":1311,"context":1147},1574,{"file":184,"line":1311,"context":1147},{"file":184,"line":641,"context":1147},{"file":184,"line":1315,"context":1147},1676,{"file":184,"line":1317,"context":1147},1696,{"file":184,"line":1319,"context":1147},1699,{"file":184,"line":1321,"context":1147},1701,{"file":184,"line":1323,"context":1147},1707,{"file":184,"line":1325,"context":1147},1718,{"file":184,"line":1327,"context":1147},1766,{"file":184,"line":1329,"context":1147},1767,{"file":184,"line":1331,"context":1147},1768,{"file":184,"line":1333,"context":1147},1769,{"file":184,"line":1335,"context":1147},1771,{"file":184,"line":1337,"context":1147},1774,{"file":184,"line":1339,"context":1147},1775,{"file":184,"line":1341,"context":1147},1778,{"file":184,"line":1343,"context":1147},1784,{"file":184,"line":1345,"context":1147},1789,{"file":184,"line":1347,"context":1147},1792,{"file":184,"line":1349,"context":1147},1793,{"file":184,"line":1351,"context":1147},1802,{"file":184,"line":1353,"context":1147},1805,{"file":184,"line":1355,"context":1147},1810,{"file":184,"line":1357,"context":1147},1811,{"file":184,"line":1359,"context":1147},1812,{"file":184,"line":1361,"context":1147},1818,{"file":184,"line":1363,"context":1147},1820,{"file":184,"line":1363,"context":1147},{"file":184,"line":1366,"context":1147},1821,{"file":184,"line":1366,"context":1147},{"file":184,"line":1369,"context":1147},1839,{"file":184,"line":1371,"context":1147},1857,{"file":184,"line":1373,"context":1147},1861,{"file":184,"line":1375,"context":1147},1880,{"file":184,"line":1377,"context":1147},1914,{"file":184,"line":1379,"context":1147},1916,{"file":184,"line":1381,"context":1147},1917,{"file":184,"line":1381,"context":1147},{"file":184,"line":1384,"context":1147},1918,{"file":184,"line":1384,"context":1147},{"file":184,"line":1387,"context":1147},1919,{"file":184,"line":1387,"context":1147},{"file":184,"line":1390,"context":1147},1920,{"file":184,"line":1390,"context":1147},{"file":184,"line":1393,"context":1147},1923,{"file":184,"line":1395,"context":1147},1926,{"file":184,"line":1397,"context":1147},1927,{"file":184,"line":1399,"context":1147},1928,{"file":184,"line":1401,"context":1147},1929,{"file":184,"line":1403,"context":1147},1930,{"file":184,"line":1405,"context":1147},1932,{"file":184,"line":1407,"context":1147},1983,{"file":184,"line":1409,"context":1147},1988,{"file":184,"line":1411,"context":1147},2007,{"file":184,"line":1413,"context":1147},2012,{"file":184,"line":1415,"context":1147},2014,{"file":184,"line":1417,"context":1147},2015,{"file":184,"line":1419,"context":1147},2018,{"file":184,"line":1421,"context":1147},2020,{"file":184,"line":1423,"context":1147},2022,{"file":184,"line":1425,"context":1147},2026,{"file":184,"line":1427,"context":1147},2027,{"file":184,"line":1429,"context":1147},2028,{"file":184,"line":1431,"context":1147},2029,{"file":184,"line":1433,"context":1147},2030,{"file":184,"line":1435,"context":1147},2032,{"file":184,"line":1437,"context":1147},2033,{"file":184,"line":1439,"context":1147},2039,{"file":184,"line":1441,"context":1147},2040,{"file":184,"line":1443,"context":1147},2041,{"file":184,"line":1445,"context":1147},2042,{"file":184,"line":1447,"context":1147},2043,{"file":184,"line":1449,"context":1147},2046,{"file":184,"line":1451,"context":1147},2047,{"file":184,"line":1453,"context":1147},2048,{"file":184,"line":1455,"context":1147},2049,{"file":184,"line":1457,"context":1147},2050,{"file":184,"line":1459,"context":1147},2051,{"file":184,"line":1461,"context":1147},2056,{"file":184,"line":1463,"context":1147},2057,{"file":184,"line":1465,"context":1147},2058,{"file":184,"line":1467,"context":1147},2059,{"file":184,"line":1469,"context":1147},2060,{"file":184,"line":1471,"context":1147},2065,{"file":184,"line":1473,"context":1147},2066,{"file":184,"line":1475,"context":1147},2070,{"file":184,"line":1477,"context":1147},2071,{"file":184,"line":1479,"context":1147},2072,{"file":184,"line":1481,"context":1147},2073,{"file":184,"line":1483,"context":1147},2074,{"file":184,"line":1485,"context":1147},2075,{"file":184,"line":1487,"context":1147},2078,{"file":184,"line":1489,"context":1147},2083,{"file":184,"line":1491,"context":1147},2087,{"file":184,"line":1493,"context":1147},2088,{"file":184,"line":1495,"context":1147},2089,{"file":184,"line":1497,"context":1147},2090,{"file":184,"line":1499,"context":1147},2697,{"file":184,"line":1501,"context":1147},2703,{"file":184,"line":1503,"context":1147},2727,{"file":184,"line":1505,"context":1147},2728,{"file":184,"line":1507,"context":1147},3196,{"file":184,"line":1509,"context":1147},4972,{"file":184,"line":1511,"context":1147},5006,{"file":414,"line":102,"context":1147},{"file":414,"line":1514,"context":1147},877,{"file":414,"line":1516,"context":1147},1046,{"file":414,"line":1518,"context":1147},1047,{"file":414,"line":1520,"context":1147},1054,{"file":414,"line":1522,"context":1147},1055,{"file":414,"line":1524,"context":1147},1056,{"file":414,"line":1526,"context":1147},1057,{"file":414,"line":1528,"context":1147},1059,{"file":414,"line":1530,"context":1147},1072,{"file":414,"line":1532,"context":1147},1073,{"file":414,"line":1534,"context":1147},1074,{"file":414,"line":1536,"context":1147},1075,{"file":414,"line":1538,"context":1147},1081,{"file":414,"line":1540,"context":1147},1085,{"file":414,"line":1542,"context":1147},1120,{"file":533,"line":206,"context":1147},{"file":533,"line":209,"context":1147},{"file":533,"line":1546,"context":1147},149,{"file":533,"line":1548,"context":1147},150,{"file":533,"line":868,"context":1147},{"file":564,"line":1551,"context":1147},235,{"file":564,"line":1026,"context":1147},{"file":564,"line":1032,"context":1147},{"file":564,"line":1555,"context":1147},344,{"file":564,"line":279,"context":1147},{"file":564,"line":1558,"context":1147},362,{"file":564,"line":1560,"context":1147},369,{"file":564,"line":1562,"context":1147},375,{"file":564,"line":470,"context":1147},{"file":564,"line":1565,"context":1147},378,{"file":564,"line":1567,"context":1147},391,{"file":564,"line":1569,"context":1147},403,{"file":564,"line":1571,"context":1147},404,{"file":564,"line":1573,"context":1147},415,{"file":606,"line":914,"context":1147},{"file":606,"line":1151,"context":1147},{"file":606,"line":1577,"context":1147},123,{"file":606,"line":1579,"context":1147},137,{"file":615,"line":194,"context":1147},{"file":615,"line":849,"context":1147},{"file":615,"line":662,"context":1147},{"file":615,"line":1584,"context":1147},118,{"file":615,"line":1586,"context":1147},1600,{"file":615,"line":1588,"context":1147},1605,{"file":615,"line":1590,"context":1147},1610,{"file":615,"line":1592,"context":1147},3853,{"file":615,"line":1592,"context":1147},{"file":615,"line":1595,"context":1147},3862,{"file":615,"line":1597,"context":1147},3864,{"file":615,"line":1599,"context":1147},3872,{"file":615,"line":1601,"context":1147},3893,{"file":615,"line":1603,"context":1147},3903,{"file":615,"line":1605,"context":1147},4219,{"file":1607,"line":1608,"context":1147},"recurring\\includes\\admin\\list-tables\\wc-vipps-recurring-list-table-failed-charges.php",190,{"file":1610,"line":1608,"context":1147},"recurring\\includes\\admin\\list-tables\\wc-vipps-recurring-list-table-pending-charges.php",{"file":1612,"line":394,"context":1147},"recurring\\includes\\pages\\admin\\vipps-recurring-admin-menu-page.php",{"file":1612,"line":53,"context":1147},{"file":1612,"line":965,"context":1147},{"file":1612,"line":48,"context":1147},{"file":1612,"line":168,"context":1147},{"file":1612,"line":552,"context":1147},{"file":1612,"line":1619,"context":1147},49,{"file":1612,"line":1621,"context":1147},55,{"file":1612,"line":1623,"context":1147},73,{"file":746,"line":1625,"context":1147},1890,{"file":746,"line":1627,"context":1147},1896,{"file":746,"line":1629,"context":1147},1897,{"file":746,"line":1631,"context":1147},1959,{"file":746,"line":1633,"context":1147},1968,{"file":823,"line":1635,"context":1147},86,{"file":823,"line":1635,"context":1147},{"file":823,"line":1635,"context":1147},{"file":823,"line":1639,"context":1147},88,{"file":823,"line":13,"context":1147},{"file":823,"line":908,"context":1147},{"file":831,"line":1643,"context":1147},594,{"file":899,"line":1645,"context":1147},377,{"file":899,"line":1647,"context":1147},562,{"file":899,"line":1649,"context":1147},564,{"file":899,"line":1651,"context":1147},669,[],[1654,1670,1683,1696,1707,1718,1769],{"entryPoint":1655,"graph":1656,"unsanitizedCount":28,"severity":41},"vipps_shipping_details_callback (payment\\Vipps.class.php:3094)",{"nodes":1657,"edges":1668},[1658,1663],{"id":1659,"type":1660,"label":1661,"file":184,"line":1662},"n0","source","$_REQUEST",3129,{"id":1664,"type":1665,"label":1666,"file":184,"line":1507,"wp_function":1667},"n1","sink","echo() [XSS]","echo",[1669],{"from":1659,"to":1664,"sanitized":980},{"entryPoint":1671,"graph":1672,"unsanitizedCount":51,"severity":41},"vipps_wait_for_payment (payment\\Vipps.class.php:5334)",{"nodes":1673,"edges":1681},[1674,1677],{"id":1659,"type":1660,"label":1675,"file":184,"line":1676},"$_GET (x2)",5353,{"id":1664,"type":1665,"label":1678,"file":184,"line":1679,"wp_function":1680},"wp_redirect() [Open Redirect]",5416,"wp_redirect",[1682],{"from":1659,"to":1664,"sanitized":980},{"entryPoint":1684,"graph":1685,"unsanitizedCount":28,"severity":41},"\u003CWC_Gateway_Vipps.class> (payment\\WC_Gateway_Vipps.class.php:0)",{"nodes":1686,"edges":1694},[1687,1690],{"id":1659,"type":1660,"label":1688,"file":615,"line":1689},"$_POST",1703,{"id":1664,"type":1665,"label":1691,"file":615,"line":1692,"wp_function":1693},"wp_remote_request() [SSRF]",3561,"wp_remote_request",[1695],{"from":1659,"to":1664,"sanitized":980},{"entryPoint":1697,"graph":1698,"unsanitizedCount":29,"severity":1706},"ajax_vipps_payment_details (payment\\Vipps.class.php:1976)",{"nodes":1699,"edges":1704},[1700,1703],{"id":1659,"type":1660,"label":1701,"file":184,"line":1702},"$_REQUEST (x5)",1979,{"id":1664,"type":1665,"label":1666,"file":184,"line":1451,"wp_function":1667},[1705],{"from":1659,"to":1664,"sanitized":982},"low",{"entryPoint":1708,"graph":1709,"unsanitizedCount":29,"severity":1706},"vipps_express_checkout (payment\\Vipps.class.php:5105)",{"nodes":1710,"edges":1716},[1711,1714],{"id":1659,"type":1660,"label":1712,"file":184,"line":1713},"$_SERVER (x2)",5113,{"id":1664,"type":1665,"label":1678,"file":184,"line":1715,"wp_function":1680},5118,[1717],{"from":1659,"to":1664,"sanitized":982},{"entryPoint":1719,"graph":1720,"unsanitizedCount":29,"severity":1706},"\u003CVipps.class> (payment\\Vipps.class.php:0)",{"nodes":1721,"edges":1761},[1722,1725,1726,1729,1734,1736,1741,1743,1745,1747,1749,1752,1756],{"id":1659,"type":1660,"label":1723,"file":184,"line":1724},"$_REQUEST (x8)",725,{"id":1664,"type":1665,"label":1666,"file":184,"line":1311,"wp_function":1667},{"id":1727,"type":1660,"label":1728,"file":184,"line":1702},"n2","$_REQUEST (x2)",{"id":1730,"type":1665,"label":1731,"file":184,"line":1732,"wp_function":1733},"n3","file_put_contents() [File Write]",2105,"file_put_contents",{"id":1735,"type":1660,"label":1661,"file":184,"line":1702},"n4",{"id":1737,"type":1665,"label":1738,"file":184,"line":1739,"wp_function":1740},"n5","fopen() [File Access]",2211,"fopen",{"id":1742,"type":1660,"label":1712,"file":184,"line":1713},"n6",{"id":1744,"type":1665,"label":1678,"file":184,"line":1715,"wp_function":1680},"n7",{"id":1746,"type":1660,"label":1675,"file":184,"line":1676},"n8",{"id":1748,"type":1665,"label":1678,"file":184,"line":1679,"wp_function":1680},"n9",{"id":1750,"type":1660,"label":1661,"file":184,"line":1751},"n10",2817,{"id":1753,"type":1754,"label":1755,"file":184,"line":1751},"n11","transform","→ get_pending_vipps_order()",{"id":1757,"type":1665,"label":1758,"file":184,"line":1759,"wp_function":1760},"n12","get_results() [SQLi]",2271,"get_results",[1762,1763,1764,1765,1766,1767,1768],{"from":1659,"to":1664,"sanitized":982},{"from":1727,"to":1730,"sanitized":982},{"from":1735,"to":1737,"sanitized":982},{"from":1742,"to":1744,"sanitized":982},{"from":1746,"to":1748,"sanitized":982},{"from":1750,"to":1753,"sanitized":980},{"from":1753,"to":1757,"sanitized":982},{"entryPoint":1770,"graph":1771,"unsanitizedCount":28,"severity":1794},"\u003CVippsCheckout.class> (payment\\VippsCheckout.class.php:0)",{"nodes":1772,"edges":1788},[1773,1775,1776,1778,1779,1780,1784,1785,1787],{"id":1659,"type":1660,"label":1774,"file":414,"line":1114},"$_GET",{"id":1664,"type":1665,"label":1666,"file":414,"line":1514,"wp_function":1667},{"id":1727,"type":1660,"label":1728,"file":414,"line":1777},993,{"id":1730,"type":1665,"label":1666,"file":414,"line":1516,"wp_function":1667},{"id":1735,"type":1660,"label":1774,"file":414,"line":1114},{"id":1737,"type":1665,"label":1781,"file":414,"line":1782,"wp_function":1783},"call_user_func() [RCE]",1123,"call_user_func",{"id":1742,"type":1660,"label":1774,"file":414,"line":1514},{"id":1744,"type":1754,"label":1786,"file":414,"line":1514},"→ get_checkout_widgets()",{"id":1746,"type":1665,"label":1781,"file":414,"line":1782,"wp_function":1783},[1789,1790,1791,1792,1793],{"from":1659,"to":1664,"sanitized":982},{"from":1727,"to":1730,"sanitized":982},{"from":1735,"to":1737,"sanitized":982},{"from":1742,"to":1744,"sanitized":980},{"from":1744,"to":1746,"sanitized":980},"high",{"summary":1796,"deductions":1797},"The \"woo-vipps\" v5.2.2 plugin exhibits a mixed security posture. While it demonstrates some good practices, such as a decent number of capability checks and the use of prepared statements for a majority of its SQL queries, significant concerns remain. The presence of the `unserialize` function, a known risk vector, is concerning, especially when combined with a taint flow identified as high severity. Furthermore, the plugin exposes a considerable attack surface with 10 unprotected entry points, including AJAX handlers and a REST API route lacking proper permission callbacks. This combination of potentially dangerous functions and unprotected access points creates a fertile ground for exploitation.\n\nThe vulnerability history shows one medium-severity Cross-site Scripting (XSS) vulnerability from late 2023, which is currently patched. While this indicates the developers address security issues, the historical presence of XSS and the current taint analysis findings warrant caution. The fact that there are no currently unpatched CVEs is a positive sign, but the identified weaknesses in code analysis and taint flows suggest a need for more robust input sanitization and authorization checks. Overall, the plugin has strengths but requires attention to critical areas like input validation and access control to improve its security.",[1798,1800,1802,1805,1807,1809],{"reason":1799,"points":394},"Unprotected AJAX handlers (9)",{"reason":1801,"points":221},"REST API route without permission callback",{"reason":1803,"points":1804},"Dangerous function: unserialize",8,{"reason":1806,"points":162},"SQL queries without prepared statements (42%)",{"reason":1808,"points":1128},"Output escaping: 52% properly escaped",{"reason":1810,"points":726},"Taint flow: High severity","2026-03-16T18:08:38.445Z",{"wat":1813,"direct":1824},{"assetPaths":1814,"generatorPatterns":1818,"scriptPaths":1819,"versionParams":1820},[1815,1816,1817],"\u002Fwp-content\u002Fplugins\u002Fwoo-vipps\u002Fassets\u002Fjs\u002Fadmin.js","\u002Fwp-content\u002Fplugins\u002Fwoo-vipps\u002Fassets\u002Fcss\u002Fadmin.css","\u002Fwp-content\u002Fplugins\u002Fwoo-vipps\u002Fassets\u002Fcss\u002Fstyle.css",[],[1815],[1821,1822,1823],"woo-vipps\u002Fassets\u002Fcss\u002Fadmin.css?ver=","woo-vipps\u002Fassets\u002Fcss\u002Fstyle.css?ver=","woo-vipps\u002Fassets\u002Fjs\u002Fadmin.js?ver=",{"cssClasses":1825,"htmlComments":1828,"htmlAttributes":1831,"restEndpoints":1834,"jsGlobals":1836,"shortcodeOutput":1839},[1826,1827],"woocommerce_vipps_settings","vipps_admin_settings_container",[1829,1830],"\u003C!-- Pay with Vipps and MobilePay for WooCommerce -->","\u003C!-- This file is part of the plugin Pay with Vipps and MobilePay for WooCommerce -->",[1832,1833],"data-vipps-admin-nonce","data-setting-name",[1835],"\u002Fwp-json\u002Fwoo-vipps\u002Fv1\u002Fsettings",[1837,1838],"VippsAdminSettings","vipps_admin_options",[]]