{"id":386678,"date":"2023-06-21T08:39:58","date_gmt":"2023-06-21T08:39:58","guid":{"rendered":"https:\/\/webkul.com\/blog\/?p=386678"},"modified":"2023-12-19T13:36:35","modified_gmt":"2023-12-19T13:36:35","slug":"create-opencart-version4-payment","status":"publish","type":"post","link":"https:\/\/webkul.com\/blog\/create-opencart-version4-payment\/","title":{"rendered":"Create a payment extension in Opencart version4"},"content":{"rendered":"\n<p>In this blog, we will provide a comprehensive guide on creating a payment extension in Opencart version 4. Online payment systems have become indispensable in e-commerce, acting as the backbone of transactions. <\/p>\n\n\n\n<p>To begin, it is essential to familiarize ourselves with the folder structure of an extension.<\/p>\n\n\n\n<p><strong>Folder structure<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"804\" height=\"407\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/06\/payment-extensio-folder-structure.png\" alt=\"payment-extensio-folder-structure\" class=\"wp-image-386844\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/06\/payment-extensio-folder-structure.png 804w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/06\/payment-extensio-folder-structure-300x152.png 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/06\/payment-extensio-folder-structure-250x127.png 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/06\/payment-extensio-folder-structure-768x389.png 768w\" sizes=\"(max-width: 804px) 100vw, 804px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Payment extension backend code<\/h2>\n\n\n\n<p>Finally, we have our folder structure in place, let\u2019s start creating an extension, we will show \u201dWebkul Payment\u201d on the checkout page.<\/p>\n\n\n\n<p><strong>admin\/controller\/payment\/example_payment.php<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">&lt;?php\n \/**\n * Extension name: Webkul Payment\n * Descrption: Using this extension we will show payment methods on the checkout page.\n * Author: Webkul Software Pvt. Ltd. \n * \n *\/\nnamespace Opencart\\Admin\\Controller\\Extension\\ExamplePayment\\Payment;\n\nclass ExamplePayment extends \\Opencart\\System\\Engine\\Controller {\n    \n    \/**\n     * index\n     *\n     * @return void\n     *\/\n    public function index(): void {\n        \n        $this-&gt;load-&gt;language(&#039;extension\/example_payment\/payment\/example_payment&#039;);\n\n        $this-&gt;document-&gt;setTitle($this-&gt;language-&gt;get(&#039;heading_title&#039;));\n\n        $data&#091;&#039;breadcrumbs&#039;] = &#091;];\n\n        $data&#091;&#039;breadcrumbs&#039;]&#091;] = &#091;\n            &#039;text&#039; =&gt; $this-&gt;language-&gt;get(&#039;text_home&#039;),\n            &#039;href&#039; =&gt; $this-&gt;url-&gt;link(&#039;common\/dashboard&#039;, &#039;user_token=&#039; . $this-&gt;session-&gt;data&#091;&#039;user_token&#039;])\n        ];\n\n        $data&#091;&#039;breadcrumbs&#039;]&#091;] = &#091;\n            &#039;text&#039; =&gt; $this-&gt;language-&gt;get(&#039;text_extension&#039;),\n            &#039;href&#039; =&gt; $this-&gt;url-&gt;link(&#039;marketplace\/extension&#039;, &#039;user_token=&#039; . $this-&gt;session-&gt;data&#091;&#039;user_token&#039;] . &#039;&amp;type=payment&#039;)\n        ];\n\n        if (!isset($this-&gt;request-&gt;get&#091;&#039;module_id&#039;])) {\n            $data&#091;&#039;breadcrumbs&#039;]&#091;] = &#091;\n                &#039;text&#039; =&gt; $this-&gt;language-&gt;get(&#039;heading_title&#039;),\n                &#039;href&#039; =&gt; $this-&gt;url-&gt;link(&#039;extension\/example_payment\/payment\/example_payment&#039;, &#039;user_token=&#039; . $this-&gt;session-&gt;data&#091;&#039;user_token&#039;])\n            ];\n        } else {\n            $data&#091;&#039;breadcrumbs&#039;]&#091;] = &#091;\n                &#039;text&#039; =&gt; $this-&gt;language-&gt;get(&#039;heading_title&#039;),\n                &#039;href&#039; =&gt; $this-&gt;url-&gt;link(&#039;extension\/example_payment\/payment\/example_payment&#039;, &#039;user_token=&#039; . $this-&gt;session-&gt;data&#091;&#039;user_token&#039;] . &#039;&amp;module_id=&#039; . $this-&gt;request-&gt;get&#091;&#039;module_id&#039;])\n            ];\n        }\n\n        $data&#091;&#039;save&#039;] = $this-&gt;url-&gt;link(&#039;extension\/example_payment\/payment\/example_payment.save&#039;, &#039;user_token=&#039; . $this-&gt;session-&gt;data&#091;&#039;user_token&#039;]);\n        $data&#091;&#039;back&#039;] = $this-&gt;url-&gt;link(&#039;marketplace\/extension&#039;, &#039;user_token=&#039; . $this-&gt;session-&gt;data&#091;&#039;user_token&#039;] . &#039;&amp;type=payment&#039;);\n\n        \/\/ getting payment extension config\n        $data&#091;&#039;payment_example_payment_order_status_id&#039;] = $this-&gt;config-&gt;get(&#039;payment_example_payment_order_status_id&#039;);\n\n        \/\/ loading order status model\n\t\t$this-&gt;load-&gt;model(&#039;localisation\/order_status&#039;);\n\n        \/\/ getting order status as array\n\t\t$data&#091;&#039;order_statuses&#039;] = $this-&gt;model_localisation_order_status-&gt;getOrderStatuses();\n\n        \/\/ zeo zone id\n\t\t$data&#091;&#039;payment_example_payment_geo_zone_id&#039;] = $this-&gt;config-&gt;get(&#039;payment_example_payment_geo_zone_id&#039;);\n\n        \/\/ loading geo_zone model\n\t\t$this-&gt;load-&gt;model(&#039;localisation\/geo_zone&#039;);\n\n        \/\/ getting all zeo zones\n\t\t$data&#091;&#039;geo_zones&#039;] = $this-&gt;model_localisation_geo_zone-&gt;getGeoZones();\n        \n\t\t$data&#091;&#039;payment_example_payment_status&#039;] = $this-&gt;config-&gt;get(&#039;payment_example_payment_status&#039;);\n\t\t$data&#091;&#039;payment_example_payment_sort_order&#039;] = $this-&gt;config-&gt;get(&#039;payment_example_payment_sort_order&#039;);\n\n        $data&#091;&#039;header&#039;] = $this-&gt;load-&gt;controller(&#039;common\/header&#039;);\n        $data&#091;&#039;column_left&#039;] = $this-&gt;load-&gt;controller(&#039;common\/column_left&#039;);\n        $data&#091;&#039;footer&#039;] = $this-&gt;load-&gt;controller(&#039;common\/footer&#039;);\n\n        $this-&gt;response-&gt;setOutput($this-&gt;load-&gt;view(&#039;extension\/example_payment\/payment\/example_payment&#039;, $data));\n    }\n    \n    \/**\n     * save method\n     *\n     * @return void\n     *\/\n    public function save(): void {\n        \/\/ loading example payment language\n        $this-&gt;load-&gt;language(&#039;extension\/example_payment\/payment\/example_payment&#039;);\n\n        $json = &#091;];\n\n        \/\/ checking file modification permission\n        if (!$this-&gt;user-&gt;hasPermission(&#039;modify&#039;, &#039;extension\/example_payment\/payment\/example_payment&#039;)) {\n            $json&#091;&#039;error&#039;]&#091;&#039;warning&#039;] = $this-&gt;language-&gt;get(&#039;error_permission&#039;);\n        }\n\n        if (!$json) {\n            $this-&gt;load-&gt;model(&#039;setting\/setting&#039;);\n\n            $this-&gt;model_setting_setting-&gt;editSetting(&#039;payment_example_payment&#039;, $this-&gt;request-&gt;post);\n\n            $json&#091;&#039;success&#039;] = $this-&gt;language-&gt;get(&#039;text_success&#039;);\n        }\n\n        $this-&gt;response-&gt;addHeader(&#039;Content-Type: application\/json&#039;);\n        $this-&gt;response-&gt;setOutput(json_encode($json));\n    }\n\n}<\/pre>\n\n\n\n<p><strong>admin\/language\/en-gb\/payment\/example_payment.php<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">&lt;?php\n\/**\n * Webkul Software\n * \n * @category Webkul\n * @package Opencart Payment Tutorial\n * @author &#091;Webkul] &lt;&#091;&lt;http:\/\/webkul.com\/&gt;]&gt;\n * @copyright Copyright (c) Webkul Software Private Limited (https:\/\/webkul.com)\n * @license https:\/\/store.webkul.com\/license.html\n *\/\n\/\/ Heading\n$_&#091;&#039;heading_title&#039;]      = &#039;Webkul Payment&#039;;\n\n\/\/ Text\n$_&#091;&#039;text_extension&#039;]     = &#039;Extensions&#039;;\n$_&#091;&#039;text_success&#039;]       = &#039;Success: You have modified Webkul Payment payment module!&#039;;\n$_&#091;&#039;text_edit&#039;]          = &#039;Edit Webkul Payment&#039;;\n\n\/\/ Entry\n$_&#091;&#039;entry_order_status&#039;] = &#039;Order Status&#039;;\n$_&#091;&#039;entry_geo_zone&#039;]     = &#039;Geo Zone&#039;;\n$_&#091;&#039;entry_status&#039;]       = &#039;Status&#039;;\n$_&#091;&#039;entry_sort_order&#039;]   = &#039;Sort Order&#039;;\n\n\/\/ Error\n$_&#091;&#039;error_permission&#039;]   = &#039;Warning: You do not have permission to modify payment Webkul Payment!&#039;;<\/pre>\n\n\n\n<p><strong>admin\/view\/template\/payment\/example_payment.twig<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">{{ header }}{{ column_left }}\n&lt;div id=&quot;content&quot;&gt;\n  &lt;div class=&quot;page-header&quot;&gt;\n    &lt;div class=&quot;container-fluid&quot;&gt;\n      &lt;div class=&quot;float-end&quot;&gt;\n        &lt;button type=&quot;submit&quot; form=&quot;form-payment&quot; data-bs-toggle=&quot;tooltip&quot; title=&quot;{{ button_save }}&quot; class=&quot;btn btn-primary&quot;&gt;&lt;i class=&quot;fa-solid fa-save&quot;&gt;&lt;\/i&gt;&lt;\/button&gt;\n        &lt;a href=&quot;{{ back }}&quot; data-bs-toggle=&quot;tooltip&quot; title=&quot;{{ button_back }}&quot; class=&quot;btn btn-light&quot;&gt;&lt;i class=&quot;fa-solid fa-reply&quot;&gt;&lt;\/i&gt;&lt;\/a&gt;&lt;\/div&gt;\n      &lt;h1&gt;{{ heading_title }}&lt;\/h1&gt;\n      &lt;ol class=&quot;breadcrumb&quot;&gt;\n        {% for breadcrumb in breadcrumbs %}\n          &lt;li class=&quot;breadcrumb-item&quot;&gt;&lt;a href=&quot;{{ breadcrumb.href }}&quot;&gt;{{ breadcrumb.text }}&lt;\/a&gt;&lt;\/li&gt;\n        {% endfor %}\n      &lt;\/ol&gt;\n    &lt;\/div&gt;\n  &lt;\/div&gt;\n  &lt;div class=&quot;container-fluid&quot;&gt;\n    &lt;div class=&quot;card&quot;&gt;\n      &lt;div class=&quot;card-header&quot;&gt;&lt;i class=&quot;fa-solid fa-pencil&quot;&gt;&lt;\/i&gt; {{ text_edit }}&lt;\/div&gt;\n      &lt;div class=&quot;card-body&quot;&gt;\n        &lt;form id=&quot;form-payment&quot; action=&quot;{{ save }}&quot; method=&quot;post&quot; data-oc-toggle=&quot;ajax&quot;&gt;\n          &lt;div class=&quot;row mb-3&quot;&gt;\n            &lt;label for=&quot;input-order-status&quot; class=&quot;col-sm-2 col-form-label&quot;&gt;{{ entry_order_status }}&lt;\/label&gt;\n            &lt;div class=&quot;col-sm-10&quot;&gt;\n              &lt;select name=&quot;payment_example_payment_order_status_id&quot; id=&quot;input-order-status&quot; class=&quot;form-select&quot;&gt;\n                {% for order_status in order_statuses %}\n                  &lt;option value=&quot;{{ order_status.order_status_id }}&quot;{% if order_status.order_status_id == payment_example_payment_order_status_id %} selected{% endif %}&gt;{{ order_status.name }}&lt;\/option&gt;\n                {% endfor %}\n              &lt;\/select&gt;\n            &lt;\/div&gt;\n          &lt;\/div&gt;\n          &lt;div class=&quot;row mb-3&quot;&gt;\n            &lt;label for=&quot;input-geo-zone&quot; class=&quot;col-sm-2 col-form-label&quot;&gt;{{ entry_geo_zone }}&lt;\/label&gt;\n            &lt;div class=&quot;col-sm-10&quot;&gt;\n              &lt;select name=&quot;payment_example_payment_geo_zone_id&quot; id=&quot;input-geo-zone&quot; class=&quot;form-select&quot;&gt;\n                &lt;option value=&quot;0&quot;&gt;{{ text_all_zones }}&lt;\/option&gt;\n                {% for geo_zone in geo_zones %}\n                  &lt;option value=&quot;{{ geo_zone.geo_zone_id }}&quot;{% if geo_zone.geo_zone_id == payment_example_payment_geo_zone_id %} selected{% endif %}&gt;{{ geo_zone.name }}&lt;\/option&gt;\n                {% endfor %}\n              &lt;\/select&gt;\n            &lt;\/div&gt;\n          &lt;\/div&gt;\n          &lt;div class=&quot;row mb-3&quot;&gt;\n            &lt;label for=&quot;input-status&quot; class=&quot;col-sm-2 col-form-label&quot;&gt;{{ entry_status }}&lt;\/label&gt;\n            &lt;div class=&quot;col-sm-10&quot;&gt;\n              &lt;div class=&quot;form-check form-switch form-switch-lg&quot;&gt;\n                &lt;input type=&quot;hidden&quot; name=&quot;payment_example_payment_status&quot; value=&quot;0&quot;\/&gt;\n                &lt;input type=&quot;checkbox&quot; name=&quot;payment_example_payment_status&quot; value=&quot;1&quot; id=&quot;input-status&quot; class=&quot;form-check-input&quot;{% if payment_example_payment_status %} checked{% endif %}\/&gt;\n              &lt;\/div&gt;\n            &lt;\/div&gt;\n          &lt;\/div&gt;\n          &lt;div class=&quot;row mb-3&quot;&gt;\n            &lt;label for=&quot;input-sort-order&quot; class=&quot;col-sm-2 col-form-label&quot;&gt;{{ entry_sort_order }}&lt;\/label&gt;\n            &lt;div class=&quot;col-sm-10&quot;&gt;\n              &lt;input type=&quot;text&quot; name=&quot;payment_example_payment_sort_order&quot; value=&quot;{{ payment_example_payment_sort_order }}&quot; placeholder=&quot;{{ entry_sort_order }}&quot; id=&quot;input-sort-order&quot; class=&quot;form-control&quot;\/&gt;\n            &lt;\/div&gt;\n          &lt;\/div&gt;\n        &lt;\/form&gt;\n      &lt;\/div&gt;\n    &lt;\/div&gt;\n  &lt;\/div&gt;\n&lt;\/div&gt;\n{{ footer }}<\/pre>\n\n\n\n<p>Now, let\u2019s initiate the development of the frontend code to display the payment methods on the checkout page.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Frontend code<\/h2>\n\n\n\n<p><strong>catalog\/controller\/payment\/example_payment.php<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">&lt;?php\n\/**\n * Extension name: Webkul Payment\n * Descrption: Using this extension we will show payment methods on the checkout page.\n * Author: Webkul Software Pvt. Ltd. \n * \n *\/\nnamespace Opencart\\Catalog\\Controller\\Extension\\ExamplePayment\\Payment;\n\nclass ExamplePayment extends \\Opencart\\System\\Engine\\Controller\n{    \n    \/**\n     * index\n     *\n     * @return mix\n     *\/\n    public function index(): string\n    {   \n        \/\/ loading example payment language\n        $this-&gt;load-&gt;language(&#039;extension\/example_payment\/payment\/example_payment&#039;);\n\n        $data&#091;&#039;language&#039;] = $this-&gt;config-&gt;get(&#039;config_language&#039;);\n\n        return $this-&gt;load-&gt;view(&#039;extension\/example_payment\/payment\/example_payment&#039;, $data);\n    }\n    \n    \/**\n     * confirm\n     *\n     * @return json|string\n     *\/\n    public function confirm(): void\n    {\n        \/\/ loading example payment language\n        $this-&gt;load-&gt;language(&#039;extension\/example_payment\/payment\/example_payment&#039;);\n\n        $json = &#091;];\n\n        if (!isset($this-&gt;session-&gt;data&#091;&#039;order_id&#039;])) {\n            $json&#091;&#039;error&#039;] = $this-&gt;language-&gt;get(&#039;error_order&#039;);\n        }\n        \n        if (!isset($this-&gt;session-&gt;data&#091;&#039;payment_method&#039;]) || $this-&gt;session-&gt;data&#091;&#039;payment_method&#039;]&#091;&#039;code&#039;] != &#039;example_payment.example_payment&#039;) {\n            $json&#091;&#039;error&#039;] = $this-&gt;language-&gt;get(&#039;error_payment_method&#039;);\n        }\n\n        if (!$json) {\n            $this-&gt;load-&gt;model(&#039;checkout\/order&#039;);\n\n            $this-&gt;model_checkout_order-&gt;addHistory($this-&gt;session-&gt;data&#091;&#039;order_id&#039;], $this-&gt;config-&gt;get(&#039;payment_example_payment_order_status_id&#039;));\n\n            $json&#091;&#039;redirect&#039;] = $this-&gt;url-&gt;link(&#039;checkout\/success&#039;, &#039;language=&#039; . $this-&gt;config-&gt;get(&#039;config_language&#039;), true);\n        }\n\n        $this-&gt;response-&gt;addHeader(&#039;Content-Type: application\/json&#039;);\n        $this-&gt;response-&gt;setOutput(json_encode($json));\n    }\n}<\/pre>\n\n\n\n<p><strong>catalog\/model\/payment\/example_payment.php<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">&lt;?php\n\/**\n * Extension name: Webkul Payment\n * Descrption: Using this extension we will show payment methods on the checkout page.\n * Author: Webkul Software Pvt. Ltd. \n * \n *\/\nnamespace Opencart\\Catalog\\Model\\Extension\\ExamplePayment\\Payment;\n\nclass ExamplePayment extends \\Opencart\\System\\Engine\\Model {\n    \t\n\t\/**\n\t * getMethods\n\t *\n\t * @param  mixed $address\n\t * @return array\n\t *\/\n\tpublic function getMethods(array $address = &#091;]): array {\n\n        \/\/ loading example payment language\n\t\t$this-&gt;load-&gt;language(&#039;extension\/example_payment\/payment\/example_payment&#039;);\n\n\t\tif ($this-&gt;cart-&gt;hasSubscription()) {\n\t\t\t$status = false;\n\t\t} elseif (!$this-&gt;cart-&gt;hasShipping()) {\n\t\t\t$status = false;\n\t\t} elseif (!$this-&gt;config-&gt;get(&#039;config_checkout_payment_address&#039;)) {\n\t\t\t$status = true;\n\t\t} elseif (!$this-&gt;config-&gt;get(&#039;payment_example_payment_geo_zone_id&#039;)) {\n\t\t\t$status = true;\n\t\t} else {\n            \/\/ getting payment data using zeo zone\n\t\t\t$query = $this-&gt;db-&gt;query(&quot;SELECT * FROM `&quot; . DB_PREFIX . &quot;zone_to_geo_zone` WHERE `geo_zone_id` = &#039;&quot; . (int)$this-&gt;config-&gt;get(&#039;payment_example_payment_geo_zone_id&#039;) . &quot;&#039; AND `country_id` = &#039;&quot; . (int)$address&#091;&#039;country_id&#039;] . &quot;&#039; AND (`zone_id` = &#039;&quot; . (int)$address&#091;&#039;zone_id&#039;] . &quot;&#039; OR `zone_id` = &#039;0&#039;)&quot;);\n\n            \/\/ if the rows found the status set to True\n\t\t\tif ($query-&gt;num_rows) {\n\t\t\t\t$status = true;\n\t\t\t} else {\n\t\t\t\t$status = false;\n\t\t\t}\n\t\t}\n\n\t\t$method_data = &#091;];\n        \n\t\tif ($status) {\n\t\t\t$option_data&#091;&#039;example_payment&#039;] = &#091;\n\t\t\t\t&#039;code&#039; =&gt; &#039;example_payment.example_payment&#039;,\n\t\t\t\t&#039;name&#039; =&gt; $this-&gt;language-&gt;get(&#039;heading_title&#039;)\n\t\t\t];\n\n\t\t\t$method_data = &#091;\n\t\t\t\t&#039;code&#039;       =&gt; &#039;example_payment&#039;,\n\t\t\t\t&#039;name&#039;       =&gt; $this-&gt;language-&gt;get(&#039;heading_title&#039;),\n\t\t\t\t&#039;option&#039;     =&gt; $option_data,\n\t\t\t\t&#039;sort_order&#039; =&gt; $this-&gt;config-&gt;get(&#039;payment_example_payment_sort_order&#039;)\n\t\t\t];\n\t\t}\n\n\t\treturn $method_data;\n\t}\n}<\/pre>\n\n\n\n<p><strong>catalog\/language\/en-gb\/payment\/example_payment.php<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">&lt;?php\n\/**\n * Webkul Software\n * \n * @category Webkul\n * @package Opencart Payment Tutorial\n * @author &#091;Webkul] &lt;&#091;&lt;http:\/\/webkul.com\/&gt;]&gt;\n * @copyright Copyright (c) Webkul Software Private Limited (https:\/\/webkul.com)\n * @license https:\/\/store.webkul.com\/license.html\n *\/\n\/\/ Heading\n$_&#091;&#039;heading_title&#039;]        = &#039;Webkul Payment&#039;;\n\n\/\/ Error\n$_&#091;&#039;error_order_id&#039;]       = &#039;No order ID in the session!&#039;;\n$_&#091;&#039;error_payment_method&#039;] = &#039;Payment method is incorrect!&#039;;<\/pre>\n\n\n\n<p><strong>catalog\/view\/template\/payment\/example_payment.twig<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">&lt;div class=&quot;text-end&quot;&gt;\n  &lt;button type=&quot;button&quot; id=&quot;button-confirm&quot; class=&quot;btn btn-primary&quot;&gt;{{ button_confirm }}&lt;\/button&gt;\n&lt;\/div&gt;\n&lt;script type=&quot;text\/javascript&quot;&gt;&lt;!--\n$(&#039;#button-confirm&#039;).on(&#039;click&#039;, function () {\n    var element = this;\n\n    $.ajax({\n        url: &#039;index.php?route=extension\/example_payment\/payment\/example_payment.confirm&amp;language={{ language }}&#039;,\n        dataType: &#039;json&#039;,\n        beforeSend: function () {\n            $(element).button(&#039;loading&#039;);\n        },\n        complete: function () {\n            $(element).button(&#039;reset&#039;);\n        },\n        success: function (json) {\n            if (json&#091;&#039;error&#039;]) {\n                $(&#039;#alert&#039;).prepend(&#039;&lt;div class=&quot;alert alert-danger alert-dismissible&quot;&gt;&lt;i class=&quot;fa-solid fa-circle-exclamation&quot;&gt;&lt;\/i&gt; &#039; + json&#091;&#039;error&#039;] + &#039; &lt;button type=&quot;button&quot; class=&quot;btn-close&quot; data-bs-dismiss=&quot;alert&quot;&gt;&lt;\/button&gt;&lt;\/div&gt;&#039;);\n            }\n\n            if (json&#091;&#039;redirect&#039;]) {\n                location = json&#091;&#039;redirect&#039;];\n            }\n        },\n        error: function (xhr, ajaxOptions, thrownError) {\n            console.log(thrownError + &quot;\\r\\n&quot; + xhr.statusText + &quot;\\r\\n&quot; + xhr.responseText);\n        }\n    });\n});\n\/\/--&gt;&lt;\/script&gt;<\/pre>\n\n\n\n<p>Once you have created the extension, you will need to include some information within the module\u2019s \u201cinstall.json\u201d file. This file supports the following keys: name, version, author, and link.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">{\n  &quot;name&quot;: &quot;Webkul Payment Extension&quot;,\n  &quot;version&quot;: &quot;1.0&quot;,\n  &quot;author&quot;: &quot;Webkul Software Pvt. Ltd.&quot;,\n  &quot;link&quot;: &quot;https:\/\/www.webkul.com&quot;,\n  &quot;instruction&quot;: &quot;&quot;\n}<\/pre>\n\n\n\n<p>Once install.json is inside the directory, you can zip it and name it that ends with .ocmod.zip, then upload it from the Opencart extension installer.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1040\" height=\"610\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/06\/payment-installer-15.png\" alt=\"payment extension installer\" class=\"wp-image-387343\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/06\/payment-installer-15.png 1040w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/06\/payment-installer-15-300x176.png 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/06\/payment-installer-15-250x147.png 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/06\/payment-installer-15-768x450.png 768w\" sizes=\"(max-width: 1040px) 100vw, 1040px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Upon successful installation of the extension, you can locate it by navigating to &#8220;Extensions &gt; Extensions &gt; Payment&#8221; where it will be listed for further configuration and customization.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1177\" height=\"1024\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/06\/Extensions-1-1-1177x1024.png\" alt=\"Extensions-1-1\" class=\"wp-image-387344\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/06\/Extensions-1-1-1177x1024.png 1177w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/06\/Extensions-1-1-300x261.png 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/06\/Extensions-1-1-250x218.png 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/06\/Extensions-1-1-768x668.png 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/06\/Extensions-1-1.png 1316w\" sizes=\"(max-width: 1177px) 100vw, 1177px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1060\" height=\"562\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/06\/extension-configure.png\" alt=\"extension-configure\" class=\"wp-image-387345\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/06\/extension-configure.png 1060w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/06\/extension-configure-300x159.png 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/06\/extension-configure-250x133.png 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/06\/extension-configure-768x407.png 768w\" sizes=\"(max-width: 1060px) 100vw, 1060px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Once the configuration is complete, the &#8220;Webkul Payment&#8221; payment method will become visible on the checkout page for you to select and proceed with your order.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"601\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/06\/payment-checkout-1-1200x601.png\" alt=\"payment-checkout-1\" class=\"wp-image-387346\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/06\/payment-checkout-1-1200x601.png 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/06\/payment-checkout-1-300x150.png 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/06\/payment-checkout-1-250x125.png 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/06\/payment-checkout-1-768x385.png 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/06\/payment-checkout-1.png 1257w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>These instructions will guide you through the process of creating a payment module for Opencart<\/p>\n\n\n\n<p>If you need custom&nbsp;<a href=\"https:\/\/webkul.com\/opencart-development\/\" target=\"_blank\" rel=\"noreferrer noopener\">Opencart Development services<\/a>&nbsp;then feel free to&nbsp;<a href=\"https:\/\/webkul.com\/contacts\" target=\"_blank\" rel=\"noreferrer noopener\">reach us<\/a>&nbsp;and also explore our exclusive range of&nbsp;<a href=\"https:\/\/store.webkul.com\/OpenCart-Modules.html\">Opencart Addons<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this blog, we will provide a comprehensive guide on creating a payment extension in Opencart version 4. Online payment systems have become indispensable in e-commerce, acting as the backbone of transactions. To begin, it is essential to familiarize ourselves with the folder structure of an extension. Folder structure Payment extension backend code Finally, we <a href=\"https:\/\/webkul.com\/blog\/create-opencart-version4-payment\/\">[&#8230;]<\/a><\/p>\n","protected":false},"author":530,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[305],"tags":[2071,1500,14201,14372],"class_list":["post-386678","post","type-post","status-publish","format-standard","hentry","category-opencart","tag-opencart","tag-opencart-payment-method","tag-opencart-version4-2","tag-opencart-version4-payment"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Create a payment extension in Opencart version4 - Webkul Blog<\/title>\n<meta name=\"description\" content=\"Learn how to create a payment extension in OpenCart Version 4 with our comprehensive guide. Enhance your e-commerce store using payments.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/webkul.com\/blog\/create-opencart-version4-payment\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Create a payment extension in Opencart version4 - Webkul Blog\" \/>\n<meta property=\"og:description\" content=\"Learn how to create a payment extension in OpenCart Version 4 with our comprehensive guide. Enhance your e-commerce store using payments.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/webkul.com\/blog\/create-opencart-version4-payment\/\" \/>\n<meta property=\"og:site_name\" content=\"Webkul Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/webkul\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-06-21T08:39:58+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-12-19T13:36:35+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2023\/06\/payment-extensio-folder-structure.png\" \/>\n<meta name=\"author\" content=\"Yash Gupta\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@webkul\" \/>\n<meta name=\"twitter:site\" content=\"@webkul\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Yash Gupta\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/webkul.com\/blog\/create-opencart-version4-payment\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/webkul.com\/blog\/create-opencart-version4-payment\/\"},\"author\":{\"name\":\"Yash Gupta\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/9c34caa3f4c420c0d8438a50b087ebae\"},\"headline\":\"Create a payment extension in Opencart version4\",\"datePublished\":\"2023-06-21T08:39:58+00:00\",\"dateModified\":\"2023-12-19T13:36:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/webkul.com\/blog\/create-opencart-version4-payment\/\"},\"wordCount\":303,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\/\/webkul.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/webkul.com\/blog\/create-opencart-version4-payment\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2023\/06\/payment-extensio-folder-structure.png\",\"keywords\":[\"opencart\",\"opencart payment method\",\"opencart version4\",\"opencart version4 payment\"],\"articleSection\":[\"opencart\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/webkul.com\/blog\/create-opencart-version4-payment\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/webkul.com\/blog\/create-opencart-version4-payment\/\",\"url\":\"https:\/\/webkul.com\/blog\/create-opencart-version4-payment\/\",\"name\":\"Create a payment extension in Opencart version4 - Webkul Blog\",\"isPartOf\":{\"@id\":\"https:\/\/webkul.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/webkul.com\/blog\/create-opencart-version4-payment\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/webkul.com\/blog\/create-opencart-version4-payment\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2023\/06\/payment-extensio-folder-structure.png\",\"datePublished\":\"2023-06-21T08:39:58+00:00\",\"dateModified\":\"2023-12-19T13:36:35+00:00\",\"description\":\"Learn how to create a payment extension in OpenCart Version 4 with our comprehensive guide. Enhance your e-commerce store using payments.\",\"breadcrumb\":{\"@id\":\"https:\/\/webkul.com\/blog\/create-opencart-version4-payment\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/webkul.com\/blog\/create-opencart-version4-payment\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webkul.com\/blog\/create-opencart-version4-payment\/#primaryimage\",\"url\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/06\/payment-extensio-folder-structure.png\",\"contentUrl\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/06\/payment-extensio-folder-structure.png\",\"width\":804,\"height\":407,\"caption\":\"payment-extensio-folder-structure\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/webkul.com\/blog\/create-opencart-version4-payment\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/webkul.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create a payment extension in Opencart version4\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/webkul.com\/blog\/#website\",\"url\":\"https:\/\/webkul.com\/blog\/\",\"name\":\"Webkul Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/webkul.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/webkul.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/webkul.com\/blog\/#organization\",\"name\":\"WebKul Software Private Limited\",\"url\":\"https:\/\/webkul.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png\",\"contentUrl\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png\",\"width\":380,\"height\":380,\"caption\":\"WebKul Software Private Limited\"},\"image\":{\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/webkul\/\",\"https:\/\/x.com\/webkul\",\"https:\/\/www.instagram.com\/webkul\/\",\"https:\/\/www.linkedin.com\/company\/webkul\",\"https:\/\/www.youtube.com\/user\/webkul\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/9c34caa3f4c420c0d8438a50b087ebae\",\"name\":\"Yash Gupta\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f40fe01c9ce421fdc497c9d9b886fdc92e4a8c64b7703708c68717d22db539d5?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f40fe01c9ce421fdc497c9d9b886fdc92e4a8c64b7703708c68717d22db539d5?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g\",\"caption\":\"Yash Gupta\"},\"url\":\"https:\/\/webkul.com\/blog\/author\/yashgupta-wp766\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Create a payment extension in Opencart version4 - Webkul Blog","description":"Learn how to create a payment extension in OpenCart Version 4 with our comprehensive guide. Enhance your e-commerce store using payments.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/webkul.com\/blog\/create-opencart-version4-payment\/","og_locale":"en_US","og_type":"article","og_title":"Create a payment extension in Opencart version4 - Webkul Blog","og_description":"Learn how to create a payment extension in OpenCart Version 4 with our comprehensive guide. Enhance your e-commerce store using payments.","og_url":"https:\/\/webkul.com\/blog\/create-opencart-version4-payment\/","og_site_name":"Webkul Blog","article_publisher":"https:\/\/www.facebook.com\/webkul\/","article_published_time":"2023-06-21T08:39:58+00:00","article_modified_time":"2023-12-19T13:36:35+00:00","og_image":[{"url":"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2023\/06\/payment-extensio-folder-structure.png","type":"","width":"","height":""}],"author":"Yash Gupta","twitter_card":"summary_large_image","twitter_creator":"@webkul","twitter_site":"@webkul","twitter_misc":{"Written by":"Yash Gupta","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/webkul.com\/blog\/create-opencart-version4-payment\/#article","isPartOf":{"@id":"https:\/\/webkul.com\/blog\/create-opencart-version4-payment\/"},"author":{"name":"Yash Gupta","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/9c34caa3f4c420c0d8438a50b087ebae"},"headline":"Create a payment extension in Opencart version4","datePublished":"2023-06-21T08:39:58+00:00","dateModified":"2023-12-19T13:36:35+00:00","mainEntityOfPage":{"@id":"https:\/\/webkul.com\/blog\/create-opencart-version4-payment\/"},"wordCount":303,"commentCount":2,"publisher":{"@id":"https:\/\/webkul.com\/blog\/#organization"},"image":{"@id":"https:\/\/webkul.com\/blog\/create-opencart-version4-payment\/#primaryimage"},"thumbnailUrl":"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2023\/06\/payment-extensio-folder-structure.png","keywords":["opencart","opencart payment method","opencart version4","opencart version4 payment"],"articleSection":["opencart"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/webkul.com\/blog\/create-opencart-version4-payment\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/webkul.com\/blog\/create-opencart-version4-payment\/","url":"https:\/\/webkul.com\/blog\/create-opencart-version4-payment\/","name":"Create a payment extension in Opencart version4 - Webkul Blog","isPartOf":{"@id":"https:\/\/webkul.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/webkul.com\/blog\/create-opencart-version4-payment\/#primaryimage"},"image":{"@id":"https:\/\/webkul.com\/blog\/create-opencart-version4-payment\/#primaryimage"},"thumbnailUrl":"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2023\/06\/payment-extensio-folder-structure.png","datePublished":"2023-06-21T08:39:58+00:00","dateModified":"2023-12-19T13:36:35+00:00","description":"Learn how to create a payment extension in OpenCart Version 4 with our comprehensive guide. Enhance your e-commerce store using payments.","breadcrumb":{"@id":"https:\/\/webkul.com\/blog\/create-opencart-version4-payment\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/webkul.com\/blog\/create-opencart-version4-payment\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/create-opencart-version4-payment\/#primaryimage","url":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/06\/payment-extensio-folder-structure.png","contentUrl":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/06\/payment-extensio-folder-structure.png","width":804,"height":407,"caption":"payment-extensio-folder-structure"},{"@type":"BreadcrumbList","@id":"https:\/\/webkul.com\/blog\/create-opencart-version4-payment\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/webkul.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Create a payment extension in Opencart version4"}]},{"@type":"WebSite","@id":"https:\/\/webkul.com\/blog\/#website","url":"https:\/\/webkul.com\/blog\/","name":"Webkul Blog","description":"","publisher":{"@id":"https:\/\/webkul.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/webkul.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/webkul.com\/blog\/#organization","name":"WebKul Software Private Limited","url":"https:\/\/webkul.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png","contentUrl":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png","width":380,"height":380,"caption":"WebKul Software Private Limited"},"image":{"@id":"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/webkul\/","https:\/\/x.com\/webkul","https:\/\/www.instagram.com\/webkul\/","https:\/\/www.linkedin.com\/company\/webkul","https:\/\/www.youtube.com\/user\/webkul\/"]},{"@type":"Person","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/9c34caa3f4c420c0d8438a50b087ebae","name":"Yash Gupta","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/f40fe01c9ce421fdc497c9d9b886fdc92e4a8c64b7703708c68717d22db539d5?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f40fe01c9ce421fdc497c9d9b886fdc92e4a8c64b7703708c68717d22db539d5?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g","caption":"Yash Gupta"},"url":"https:\/\/webkul.com\/blog\/author\/yashgupta-wp766\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/386678","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/users\/530"}],"replies":[{"embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/comments?post=386678"}],"version-history":[{"count":17,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/386678\/revisions"}],"predecessor-version":[{"id":415202,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/386678\/revisions\/415202"}],"wp:attachment":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/media?parent=386678"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/categories?post=386678"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/tags?post=386678"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}