{"id":305636,"date":"2026-05-07T06:06:37","date_gmt":"2026-05-07T06:06:37","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/morkva-novapay\/"},"modified":"2026-05-07T10:13:18","modified_gmt":"2026-05-07T10:13:18","slug":"morkva-novapay","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/morkva-novapay\/","author":7292994,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.2.0","stable_tag":"0.2.0","tested":"6.9.4","requires":"6.5","requires_php":"7.4","requires_plugins":null,"header_name":"morkva NovaPay","header_author":"morkva","header_description":"NovaPay payment gateway for WooCommerce.","assets_banners_color":"ddcdc5","last_updated":"2026-05-07 10:13:18","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/morkva.co.ua","rating":0,"author_block_rating":0,"active_installs":0,"downloads":29,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.2.0":{"tag":"0.2.0","author":"bandido","date":"2026-05-07 10:13:18"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.gif":{"filename":"icon-128x128.gif","revision":3525040,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.gif":{"filename":"icon-256x256.gif","revision":3525040,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3525040,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3525040,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.2.0"],"block_files":[],"assets_screenshots":[],"screenshots":[],"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[262105,286],"plugin_category":[45],"plugin_contributors":[161640,216377],"plugin_business_model":[],"class_list":["post-305636","plugin","type-plugin","status-publish","hentry","plugin_tags-novapay","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-bandido","plugin_contributors-dpmine","plugin_committers-bandido"],"banners":{"banner":"https:\/\/ps.w.org\/morkva-novapay\/assets\/banner-772x250.png?rev=3525040","banner_2x":"https:\/\/ps.w.org\/morkva-novapay\/assets\/banner-1544x500.png?rev=3525040","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/morkva-novapay\/assets\/icon-128x128.gif?rev=3525040","icon_2x":"https:\/\/ps.w.org\/morkva-novapay\/assets\/icon-256x256.gif?rev=3525040","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>morkva NovaPay integrates the NovaPay Internet Acquiring API as a WooCommerce payment method. After clicking Pay at checkout the customer is redirected to NovaPay's hosted page, and is automatically returned to the order-received page once the transaction is finalized.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Classic checkout and WooCommerce Blocks (Cart \/ Checkout) support<\/li>\n<li>HPOS (High-Performance Order Storage) compatibility<\/li>\n<li>Sandbox and production environments \u2014 toggle from a single checkbox<\/li>\n<li>Status sync fallback on the order-received page \u2014 protects against missed or delayed postbacks<\/li>\n<li>Auto-redirect from NovaPay back to the shop with configurable delay (default 3s) for cleaner analytics attribution<\/li>\n<li>Order status mapping: <code>paid<\/code> \u2192 processing\/completed, <code>holded<\/code> \u2192 on-hold, <code>failed<\/code> \u2192 failed, <code>voided<\/code> \/ <code>expired<\/code> \u2192 cancelled<\/li>\n<li>Order meta box on the order edit screen showing: session ID, terminal, processing result, RRN, approval code, masked card PAN, card type, issuer bank<\/li>\n<li>Card, NovaPay wallet, Apple Pay and Google Pay supported through NovaPay's hosted checkout<\/li>\n<li>Phone normalization for Ukrainian numbers (<code>+380\u2026<\/code>, <code>380\u2026<\/code>, <code>80\u2026<\/code>, <code>0\u2026<\/code>, or 9-digit local)<\/li>\n<li>Developer filters: <code>mrkv_novapay_client_phone<\/code>, <code>mrkv_novapay_api_base_url<\/code><\/li>\n<li>Full request \/ response and postback logging via <code>WC_Logger<\/code> (WooCommerce \u2192 Status \u2192 Logs, source <code>morkva-novapay<\/code>)<\/li>\n<\/ul>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WooCommerce 6.5 or later<\/li>\n<li>PHP 7.4 or later, OpenSSL extension enabled<\/li>\n<li>A NovaPay merchant account with API credentials (merchant ID, RSA private key, NovaPay public key)<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>morkva-novapay<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install the ZIP via the WordPress admin.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen.<\/li>\n<li>Go to <strong>WooCommerce \u2192 Settings \u2192 Payments \u2192 NovaPay by morkva<\/strong>.<\/li>\n<li>Enable the gateway, paste your Merchant ID, merchant private key (PEM) and the NovaPay public key (PEM).<\/li>\n<li>Copy the <strong>Postback URL<\/strong> shown in the settings and paste it into your NovaPay merchant cabinet as the callback endpoint.<\/li>\n<li>(Optional) Enable <strong>Test mode<\/strong> while integrating with the sandbox environment.<\/li>\n<\/ol>\n\n<p>For more context see our <a href=\"https:\/\/docs.morkva.co.ua\/uk\/plugins\/nalashtuvannia-plaghina-morkva-nova-pay\">documentation page<\/a>.<\/p>\n\n<h4>For developers<\/h4>\n\n<p>Plugin Documentation: <a href=\"https:\/\/morkva.helpcrunch.com\/knowledge-base\/uk\/articles\/173\">https:\/\/morkva.helpcrunch.com\/knowledge-base\/uk\/articles\/173<\/a><\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20obtain%20merchant%20credentials%3F\"><h3>How do I obtain merchant credentials?<\/h3><\/dt>\n<dd><p>Through your NovaPay merchant account. The sandbox environment credentials with test keys provided in the NovaPay API documentation.<\/p><\/dd>\n<dt id=\"what%27s%20the%20difference%20between%20test%20mode%20on%20and%20off%3F\"><h3>What's the difference between Test mode on and off?<\/h3><\/dt>\n<dd><p>With Test mode on, API requests go to <code>https:\/\/api-qecom.novapay.ua<\/code> (sandbox). With it off, requests go to <code>https:\/\/api-ecom.novapay.ua<\/code> (production). If your assigned production host differs, override it via the <code>mrkv_novapay_api_base_url<\/code> filter.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20support%20refunds%3F\"><h3>Does the plugin support refunds?<\/h3><\/dt>\n<dd><p>Not in this release. Refunds are planned.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20the%20postback%20is%20delayed%20or%20lost%3F\"><h3>What happens if the postback is delayed or lost?<\/h3><\/dt>\n<dd><p>On the order-received page the plugin queries NovaPay's <code>get-status<\/code> endpoint and updates the order accordingly, so the status is synced even when the server-to-server postback is delayed, blocked, or lost.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Full Internet Acquiring integration: create-session, add-payment, get-status, postback handling<\/li>\n<li>HPOS and Block Checkout compatibility declared<\/li>\n<li>Sandbox \/ production environment switch<\/li>\n<li>Postback v3 signature verification (RSA-SHA256 over raw body, header <code>x-sign-v2<\/code>)<\/li>\n<li>Order meta box with payment details (RRN, approval, card, terminal, processing result)<\/li>\n<li>Status sync fallback on the order-received page<\/li>\n<li>Configurable auto-redirect delay<\/li>\n<li>Ukrainian phone normalization<\/li>\n<li>Developer filters for phone formatting and API base URL<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<\/ul>","raw_excerpt":"NovaPay payment gateway for WooCommerce. Supports HPOS, Block Checkout, postback verification, and a hardened thank-you sync.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/305636","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=305636"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/bandido"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=305636"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=305636"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=305636"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=305636"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=305636"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=305636"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}