{"id":103024,"date":"2019-04-23T02:00:24","date_gmt":"2019-04-23T02:00:24","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/sagepay-direct-gateway-for-gravity-forms\/"},"modified":"2026-03-22T16:10:10","modified_gmt":"2026-03-22T16:10:10","slug":"sagepay-direct-gateway-for-gravity-forms","status":"publish","type":"plugin","link":"https:\/\/pan.wordpress.org\/plugins\/sagepay-direct-gateway-for-gravity-forms\/","author":8520520,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.0.3","stable_tag":"1.0.3","tested":"6.9.4","requires":"4.5","requires_php":"7.4","requires_plugins":null,"header_name":"Opayo Direct Gateway for Gravity Forms","header_author":"PatSaTECH","header_description":"GravityForms Plugin for accepting payment through SagePay Direct Gateway.","assets_banners_color":"ced2e3","last_updated":"2026-03-22 16:10:10","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/secure.2checkout.com\/order\/product.php?PRODS=6129141&QTY=10&LANG=en","header_plugin_uri":"http:\/\/www.patsatech.com\/","header_author_uri":"http:\/\/www.patsatech.com","rating":0,"author_block_rating":0,"active_installs":10,"downloads":1489,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"patsatech","date":"2023-03-31 18:42:38"},"1.0.1":{"tag":"1.0.1","author":"patsatech","date":"2023-03-31 18:45:23"},"1.0.2":{"tag":"1.0.2","author":"patsatech","date":"2023-04-01 19:35:11"},"1.0.3":{"tag":"1.0.3","author":"patsatech","date":"2026-03-22 16:10:10"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon.svg":{"filename":"icon.svg","revision":2888623,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":2888623,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":2888623,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.0.2","1.0.3"],"block_files":[],"assets_screenshots":[],"screenshots":[],"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[282,9775,219439,201126,6593],"plugin_category":[42,45],"plugin_contributors":[85964],"plugin_business_model":[],"class_list":["post-103024","plugin","type-plugin","status-publish","hentry","plugin_tags-ecommerce","plugin_tags-gravityforms","plugin_tags-opayo-direct","plugin_tags-opayo-go","plugin_tags-payment-gateway","plugin_category-contact-forms","plugin_category-ecommerce","plugin_contributors-patsatech","plugin_committers-patsatech"],"banners":{"banner":"https:\/\/ps.w.org\/sagepay-direct-gateway-for-gravity-forms\/assets\/banner-772x250.png?rev=2888623","banner_2x":"https:\/\/ps.w.org\/sagepay-direct-gateway-for-gravity-forms\/assets\/banner-1544x500.png?rev=2888623","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/sagepay-direct-gateway-for-gravity-forms\/assets\/icon.svg?rev=2888623","icon":"https:\/\/ps.w.org\/sagepay-direct-gateway-for-gravity-forms\/assets\/icon.svg?rev=2888623","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>This add-on connects <strong>Gravity Forms<\/strong> to <strong>Opayo Direct<\/strong> (formerly Sage Pay Direct), so you can take payments inside your forms without sending shoppers to an external payment page.<\/p>\n\n<p><strong>What you get<\/strong><\/p>\n\n<ul>\n<li>On-form card fields: number, expiry, and security code are submitted securely to Opayo using the Direct integration.<\/li>\n<li><strong>Test and live<\/strong> modes, plus global settings for vendor name and transaction type (Payment, Deferred, or Authenticate).<\/li>\n<li>Optional <strong>per-form feed overrides<\/strong> for vendor name, mode, and transaction type when you need different Opayo settings per form.<\/li>\n<li><strong>3-D Secure<\/strong> support: when Opayo requires authentication, the shopper is guided through the challenge and returns to your site to complete the payment.<\/li>\n<li><strong>Gravity Forms payment features<\/strong>: product and donation pricing, feed conditional logic (where configured in Gravity Forms), delayed notifications until payment succeeds, and payment-related notification events.<\/li>\n<\/ul>\n\n<p><strong>Requirements<\/strong><\/p>\n\n<ul>\n<li><strong>Gravity Forms 2.5 or newer<\/strong> with the <strong>Payment Add-On<\/strong> framework (required by this plugin).<\/li>\n<li>An <strong>Opayo<\/strong> merchant account with <strong>Direct<\/strong> enabled.<\/li>\n<li><strong>HTTPS (SSL)<\/strong> on your site. Card data is collected on your domain; you are responsible for <strong>PCI DSS<\/strong> compliance for your environment.<\/li>\n<\/ul>\n\n<p><strong>Support and custom work<\/strong><\/p>\n\n<p>Send ideas and feedback to <a href=\"https:\/\/www.patsatech.com\/\">PatSaTECH<\/a>. We also build custom payment gateway integrations.<\/p>\n\n<p>More plugins:<\/p>\n\n<ul>\n<li><a href=\"https:\/\/www.patsatech.com\/product-category\/wordpress\/easy-digital-downloads\/\">Easy Digital Downloads<\/a><\/li>\n<li><a href=\"https:\/\/www.patsatech.com\/product-category\/wordpress\/gravity-forms\/\">Gravity Forms<\/a><\/li>\n<li><a href=\"https:\/\/www.patsatech.com\/product-category\/wordpress\/woocommerce\/\">WooCommerce<\/a><\/li>\n<\/ul>\n\n<!--section=installation-->\n<p><strong>Before you start<\/strong><\/p>\n\n<ol>\n<li>Install and activate <strong>Gravity Forms<\/strong> (a licensed copy that includes payment functionality).<\/li>\n<li>Confirm your site uses <strong>HTTPS<\/strong> and meets your <strong>PCI<\/strong> obligations for collecting card details on-site.<\/li>\n<\/ol>\n\n<p><strong>Install the plugin<\/strong><\/p>\n\n<ol>\n<li>Download the plugin ZIP (or clone\/unzip the package).<\/li>\n<li>In WordPress, go to <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong>, choose the ZIP, and click <strong>Install Now<\/strong> \u2014 <strong>or<\/strong> upload the plugin folder to <code>wp-content\/plugins\/<\/code> via FTP\/SFTP.<\/li>\n<li>Activate <strong>Opayo Direct Gateway for Gravity Forms<\/strong> under <strong>Plugins<\/strong>.<\/li>\n<\/ol>\n\n<p><strong>Connect Opayo<\/strong><\/p>\n\n<ol>\n<li>In the WordPress admin, open <strong>Forms \u2192 Settings \u2192 Opayo Direct<\/strong> (or the add-on\u2019s settings screen under Gravity Forms).<\/li>\n<li>Choose <strong>Test<\/strong> or <strong>Production<\/strong>, enter your <strong>Vendor Name<\/strong>, and set the default <strong>Transaction Type<\/strong>.<\/li>\n<li>Copy the <strong>IPN \/ notification URL<\/strong> shown on that page and add it in your Opayo account if your integration or support documentation requires it (it is used for 3-D Secure and callback handling).<\/li>\n<\/ol>\n\n<p><strong>Create a payment feed<\/strong><\/p>\n\n<ol>\n<li>Edit the form that should accept payments.<\/li>\n<li>Open <strong>Settings \u2192 Opayo Direct<\/strong> (or <strong>Payment<\/strong> settings for that form, depending on your Gravity Forms version).<\/li>\n<li>Add a <strong>feed<\/strong>: map products or totals, billing fields, and the credit card field; save and test in <strong>Test<\/strong> mode before going live.<\/li>\n<\/ol>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial Release<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Updated to change the branding from SagePay to Opayo<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Raised Tested up to WordPress 6.9.4 in the plugin header and readme.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Gravity Forms: minimum version 2.5; aligned with current Payment Add-On patterns; <code>subscribe()<\/code> returns a clear error (subscriptions are not implemented for this gateway).<\/li>\n<li>Feed settings: billing First\/Last name mappings use <code>get_field<\/code> \/ <code>replace_field<\/code> and scan nested Address-style field maps (no brittle fixed section index).<\/li>\n<li>Billing data for Opayo: ISO 3166-1 alpha-2 country codes (UK\u2192GB, common alpha-3 map, Gravity Forms country helpers); resolve country from submission, entry, and Address field <code>.6<\/code> when needed; clear validation if country is missing.<\/li>\n<li>Billing address: resolve street, city, state, postcode, email, and phone from submission data, entry, and Address sub-inputs <code>.1<\/code>\u2013<code>.5<\/code>; promote line 2 to line 1 when line 1 is empty; trim values to typical Opayo field lengths.<\/li>\n<li>Callback \/ IPN: validate <code>oid<\/code>, session, and entry; per-feed test\/live mode for gateway URLs; <code>home_url()<\/code>-based IPN URLs; sanitized inputs; escaped output on challenge and status pages; <code>HOUR_IN_SECONDS<\/code> for transients where used.<\/li>\n<li>3-D Secure: optional parent page with embedded iframe for the challenge (filter <code>gf_sagepay_direct_3ds_use_iframe<\/code> to disable if an issuer blocks iframes); after authentication, redirect targets the top window using session state so the thank-you page is not trapped inside the frame (ACS may omit query parameters on return).<\/li>\n<li>Reliability: <code>JSON.stringify<\/code> for delayed-notification IDs; strict notification ID matching; fixed error URL <code>message<\/code> parameter (legacy <code>meesage<\/code> still accepted); <code>update_post_meta<\/code> only when the entry has a <code>post_id<\/code>; HTTP timeouts and default TLS verification for gateway <code>wp_remote_post<\/code> calls; <code>wp_safe_redirect<\/code> \/ confirmation redirects where appropriate.<\/li>\n<\/ul>","raw_excerpt":"Accept card payments on Gravity Forms with Opayo (Elavon) Direct\u2014customers stay on your site while cards are processed through your Opayo account.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/103024","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=103024"}],"author":[{"embeddable":true,"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/patsatech"}],"wp:attachment":[{"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=103024"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=103024"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=103024"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=103024"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=103024"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=103024"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}