diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..c5f261a
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,6 @@
+# 2017-03-09
+# https://github.com/isaacs/github/issues/170#issuecomment-150489692
+root = true
+[*]
+indent_size = 4
+indent_style = tab
\ No newline at end of file
diff --git a/Method.php b/Method.php
new file mode 100644
index 0000000..c5cfc68
--- /dev/null
+++ b/Method.php
@@ -0,0 +1,26 @@
+
+rm -rf var/di var/generation generated/code && bin/magento setup:di:compile
+```
+If you have some problems while executing these commands, then check the [detailed instruction](https://mage2.pro/t/263).
+
+## Licensing
+It is a paid extension, not free.
+You can use it for free for the testing puproses only.
+Please read the [testing policy](https://mage2.pro/t/2590) before installation.
+
+## Support
+- [The extension's **forum** branch](https://mage2.pro/c/extensions/payfort).
+- [Where and how to report a Mage2.PRO extension's issue?](https://mage2.pro/t/2034)
+- I also provide a **[generic Magento 2 support](https://mage2.pro/t/755)** and [Magento 2 installation service](https://mage2.pro/t/748).
+
+## Want to be notified about the extension's updates?
+- [Subscribe](https://mage2.pro/t/2540) to the extension's [forum branch](https://mage2.pro/c/extensions/payfort).
+- Subscribe to my [Twitter](https://twitter.com/mage2_pro) and [YouTube](https://www.youtube.com/channel/UCvlDAZuj01_b92pzRi69LeQ) channels.
+
+## Need a new feature?
+I provide the [**customization service**](https://mage2.pro/t/2020) for my payment extensions.
+
+## Need another payment extension for Magento 2?
+
+- «[**2Checkout**](https://mage2.pro/c/extensions/2checkout)» payment extension.
+- «[**歐付寶 allPay**](https://mage2.pro/c/extensions/allpay)» payment extension (Taiwan).
+- «[**Checkout.com**](https://mage2.pro/c/extensions/checkout-com)» payment extension.
+- «[**Dragonpay**](https://mage2.pro/c/extensions/dragonpay)» payment extension (Philippines).
+- «[**Ginger Payments**](https://mage2.pro/c/extensions/ginger-payments)» extension (the Netherlands, Belgium).
+- «[**iPay88**](https://mage2.pro/c/extensions/ipay88)» payment extension (Malaysia, Indonesia, Philippines, Thailand, Singapore, China).
+- «[**iyzico**](https://mage2.pro/c/extensions/iyzico)» payment extension (Turkey).
+- «[**Kassa Compleet**](https://mage2.pro/c/extensions/kassa-compleet)» payment extension by ING Bank (the Netherlands).
+- «[**Klarna**](https://mage2.pro/c/extensions/klarna)» payment extension (Austria, Denmark, Finland, Germany, Norway, Sweden).
+- «[**MercadoPago**](https://mage2.pro/c/extensions/mercadopago)» payment extension (Argentina, Brasil, Chile, Mexico, Venezuela, Colombia, Uruguay, Peru).
+- «[**Moip**](https://mage2.pro/c/extensions/moip)» payment extension (Brazil).
+- «[**mPAY24**](https://mage2.pro/c/extensions/mpay24)» payment extension (Austria, Germany).
+- «[**Omise**](https://mage2.pro/c/extensions/omise)» payment extension (Thailand, Japan).
+- «[**Paymill**](https://mage2.pro/c/extensions/paymill)» payment extension (the European Union).
+- «[**PayPal**](https://mage2.pro/c/extensions/paypal)»: an alternative module you can get fast support and customizations for.
+- «[**Paystation**](https://mage2.pro/c/extensions/paystation)» payment extension (New Zealand).
+- «[**QIWI Wallet**](https://mage2.pro/c/extensions/qiwi)» (QIWI Кошелёк) payment extension (Russia).
+- «[**Robokassa**](https://mage2.pro/c/extensions/robokassa)» payment extension (Russia).
+- «[**SecurePay**](https://mage2.pro/c/extensions/securepay)» payment extension (Australia).
+- «[**Spryng**](https://mage2.pro/c/extensions/spryng)» payment extension (the European Union).
+- «[**Square**](https://mage2.pro/c/extensions/square)» payment extension (USA, Canada).
+- «[**Stripe**](https://mage2.pro/c/extensions/stripe)» payment extension.
+- «[**Tinkoff Bank**](https://mage2.pro/c/extensions/tinkoff)» (Тинькофф Банк) payment extension (Russia).
+- «[**Yandex.Kassa**](https://mage2.pro/c/extensions/yandex-kassa)» (as known as Yandex.Checkout, Яндекс.Касса) payment extension (Russia, Armenia, Azerbaijan, Belarus, Georgia, Kazakhstan, Kyrgyzstan, Latvia, Moldova, Tajikistan).
+
+## See also my integrations between Magento 2 and a third-party business software (ERP, CRM, accounting, inventory, marketplaces, etc.):
+- «[**Microsoft Dynamics 365**](https://mage2.pro/c/extensions/dynamics365)» (an integration with the ERP/CRM software).
+- «[**Salesforce**](https://mage2.pro/c/extensions/salesforce)» (an integration with the CRM software).
+- «[**Zoho CRM**](https://mage2.pro/c/extensions/zoho-crm)».
+- «[**Zoho Inventory**](https://mage2.pro/c/extensions/zoho-inventory)».
+- «[**Zoho Books**](https://mage2.pro/c/extensions/zoho-books)» (an accounting software).
+- «[**1C:Enterprise**](https://github.com/mage2pro/1c)» (a Russian ERP software, модуль Magento 2 для интеграции с 1С:Предприятие).
+- «[**МойСклад**](https://github.com/mage2pro/moysklad)» (a Russian ERP software, модуль Magento 2 для интеграции с МойСклад).
+- «[**Яндекс.Маркет**](https://github.com/mage2pro/yandex-market)» (a Russian marketplace, модуль Magento 2 для интеграции с Яндекс.Маркет).
+
+## See also my other Magento 2 extensions:
+
+- «[**Backend Login with Google Account**](https://mage2.pro/c/extensions/google-backend-login)» (a single sign-on extension for the Magento 2 backend).
+- «[**Blackbaud NetCommunity**](https://mage2.pro/c/extensions/blackbaud-netcommunity)» (an integration with an online fundraising software).
+- «[**Facebook Like & Share**](https://mage2.pro/c/extensions/facebook-like)» (shows the Facebook's «Like» and «Share» buttons on the frontend product pages).
+- «[**Facebook Login**](https://mage2.pro/c/extensions/facebook-login)» (a single sign-on extension).
+- «[**Login with Amazon**](https://mage2.pro/c/extensions/amazon-login)» (a single sign-on extension).
+- «[**Markdown Editor**](https://mage2.pro/c/extensions/markdown)» (an alternative content editor for the Magento 2 backend).
+- «[**Price Format**](https://mage2.pro/c/extensions/price-format)» (set a custom display format for the prices and other currency values: discounts, taxes, sales amounts).
+- «[**Russian language package**](https://mage2.pro/c/extensions/ru)» (русификатор для Magento 2).
+- «[**Sales Documents Numeration**](https://mage2.pro/c/extensions/sales-documents-numeration)» (use a custom numeration for the sales documents: orders, invoices, shipments, and credit memos).
+- «[**Twitter Timeline**](https://mage2.pro/c/extensions/twitter-timeline)» (shows your latest tweets in your store's frontend sidebar).
+
+## Need a custom payment extension?
+I provide a [custom payment gateway integration service](https://mage2.pro/t/917).
+
+## Want to get the full rights on my extension?
+It is possible: the price depends on a extension and starts from $6.990.
+You will get free lifetime support, updates, and installation service for all your clients.
\ No newline at end of file
diff --git a/Settings.php b/Settings.php
new file mode 100644
index 0000000..b027a27
--- /dev/null
+++ b/Settings.php
@@ -0,0 +1,5 @@
+
+
+
+ .
+
+
\ No newline at end of file
diff --git a/composer.json b/composer.json
new file mode 100644
index 0000000..49fc579
--- /dev/null
+++ b/composer.json
@@ -0,0 +1,33 @@
+{
+ "name": "mage2pro/payfort"
+ ,"version": "0.0.1"
+ ,"description": "The «PayFort» payment extension for Magento 2."
+ ,"type": "magento2-module"
+ ,"homepage": "https://mage2.pro/c/extensions/payfort"
+ ,"license": "proprietary"
+ ,"authors": [{
+ "name": "Dmitry Fedyuk",
+ "email": "admin@mage2.pro",
+ "homepage": "https://mage2.pro/users/dmitry_fedyuk",
+ "role": "Developer"
+ }]
+ ,"require": {"mage2pro/core": ">=2.10.27"}
+ ,"autoload": {"files": ["registration.php"], "psr-4": {"Dfe\\Iyzico\\": ""}}
+ ,"keywords": [
+ "3D Secure"
+ ,"API"
+ ,"Bank card"
+ ,"Credit card"
+ ,"eCommerce"
+ ,"PayFort"
+ ,"Magento"
+ ,"Magento 2"
+ ,"Magento extension"
+ ,"Payment"
+ ,"Payment authorization"
+ ,"Payment integration"
+ ,"Payment gateway"
+ ,"Refund"
+ ,"United Arab Emirates", "Egypt", "Saudi Arabia", "Jordan", "Lebanon", "Qatar"
+ ]
+}
\ No newline at end of file
diff --git a/etc/adminhtml/di.xml b/etc/adminhtml/di.xml
new file mode 100644
index 0000000..02a9aec
--- /dev/null
+++ b/etc/adminhtml/di.xml
@@ -0,0 +1,6 @@
+
+
+
\ No newline at end of file
diff --git a/etc/adminhtml/system.xml b/etc/adminhtml/system.xml
new file mode 100644
index 0000000..0458c4a
--- /dev/null
+++ b/etc/adminhtml/system.xml
@@ -0,0 +1,238 @@
+
+
+
+
+
+
+
+ Dfe_PayFort
+ Df\Config\Fieldset
+
+
+ Df\Config\Backend\Checkbox
+ PayFort» payment extension?]]>
+
+
+
+
+ 1
+ required-entry
+
+
+
+ Df\Config\Backend\Checkbox
+ How to create a sandbox account?]]>
+ 1
+
+
+
+
+
+ 1
+ 1
+
+ required-entry
+
+
+
+
+ Magento\Config\Model\Config\Backend\Encrypted
+
+ 1
+ 1
+
+ required-entry
+
+
+
+
+
+ 1
+ 0
+
+ required-entry
+
+
+
+
+ Magento\Config\Model\Config\Backend\Encrypted
+
+ 1
+ 0
+
+ required-entry
+
+
+
+
+ 1
+
+
+
+ Df\Payment\Source\ACR
+ new, if he does not have any order in the «Completed» or «Processing» state.]]>
+ 1
+
+
+
+ Df\Payment\Source\ACR
+ 1
+
+
+
+ You can use variables in the description.]]>
+ 1
+
+
+
+ Df\Config\Backend\Checkbox
+ checked, Magento will require the billing address. It is the default Magento behavior.
If unchecked, Magento will not require the billing address, and even will not ask for it.]]>
+ 1
+
+
+
+
+ validate-number validate-greater-than-zero
+ 1
+
+
+
+
+ validate-number validate-greater-than-zero
+ 1
+
+
+
+ Df\Config\Source\NoWhiteBlack
+ 1
+
+
+
+ Magento\Directory\Model\Config\Source\Country
+ 1
+
+ 1
+
+ 0
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/etc/config.xml b/etc/config.xml
new file mode 100644
index 0000000..30a38b8
--- /dev/null
+++ b/etc/config.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+ authorize_capture
+ authorize_capture
+ 1
+ Bank Card
+ PayFort
+
+
+
+
+
+ Dfe\PayFort\Method
+
+
+
+
\ No newline at end of file
diff --git a/etc/df.json b/etc/df.json
new file mode 100644
index 0000000..7be6093
--- /dev/null
+++ b/etc/df.json
@@ -0,0 +1,7 @@
+{
+ "sentry": {
+ "id": 204891
+ ,"key1": "7276560bec724600a6837a6e6b1df9f3"
+ ,"key2": "b7a5c0754ea743bba8f4a0f8309fdbae"
+ }
+}
\ No newline at end of file
diff --git a/etc/di.xml b/etc/di.xml
new file mode 100644
index 0000000..774c785
--- /dev/null
+++ b/etc/di.xml
@@ -0,0 +1,7 @@
+
+
+
+
\ No newline at end of file
diff --git a/etc/frontend/di.xml b/etc/frontend/di.xml
new file mode 100644
index 0000000..83181c4
--- /dev/null
+++ b/etc/frontend/di.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+ - Dfe\PayFort\ConfigProvider
+
+
+
+
+
+
+ - dfe_pay_fort
+
+
+
+
+ Dfe_PayFort
+
+
\ No newline at end of file
diff --git a/etc/frontend/routes.xml b/etc/frontend/routes.xml
new file mode 100644
index 0000000..8c51219
--- /dev/null
+++ b/etc/frontend/routes.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
diff --git a/etc/module.xml b/etc/module.xml
new file mode 100644
index 0000000..4890f72
--- /dev/null
+++ b/etc/module.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
diff --git a/registration.php b/registration.php
new file mode 100644
index 0000000..2c12374
--- /dev/null
+++ b/registration.php
@@ -0,0 +1,3 @@
+
+
+
+
+
+
+ -
+
-
+
-
+
-
+
-
+
-
+
- uiComponent
+ -
+
-
+
-
+
-
+
-
+
+
-
+
- Dfe_PayFort/loader
+ -
+
-
+
- true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/view/frontend/web/loader.js b/view/frontend/web/loader.js
new file mode 100644
index 0000000..f9ca70a
--- /dev/null
+++ b/view/frontend/web/loader.js
@@ -0,0 +1 @@
+define(['Df_Payment/loader'], function(l) {return l('Dfe_PayFort');});
\ No newline at end of file
diff --git a/view/frontend/web/main.js b/view/frontend/web/main.js
new file mode 100644
index 0000000..14ca2d3
--- /dev/null
+++ b/view/frontend/web/main.js
@@ -0,0 +1,58 @@
+// 2017-08-17
+define(['Df_StripeClone/main'], function(parent) {'use strict'; return parent.extend({
+ /**
+ * 2017-08-17 The bank card network codes: https://mage2.pro/t/2647
+ * @returns {String[]}
+ */
+ getCardTypes: function() {return ['VI', 'MC', 'AE', 'JCB', 'DI', 'DN'];},
+ /**
+ * 2017-08-17
+ * @override
+ * @see Df_StripeClone/main::tokenCheckStatus()
+ * https://github.com/mage2pro/core/blob/2.7.9/StripeClone/view/frontend/web/main.js?ts=4#L8-L15
+ * @used-by Df_StripeClone/main::placeOrder()
+ * https://github.com/mage2pro/core/blob/2.7.9/StripeClone/view/frontend/web/main.js?ts=4#L75
+ * @param {*} status
+ * @returns {Boolean}
+ */
+ tokenCheckStatus: function(status) {return null;},
+ /**
+ * 2017-08-17
+ * @override
+ * @see https://github.com/mage2pro/core/blob/2.0.11/StripeClone/view/frontend/web/main.js?ts=4#L21-L29
+ * @used-by Df_StripeClone/main::placeOrder()
+ * https://github.com/mage2pro/core/blob/2.7.9/StripeClone/view/frontend/web/main.js?ts=4#L73
+ * @param {Object} params
+ * @param {Function} callback
+ */
+ tokenCreate: function(params, callback) {},
+ /**
+ * 2017-08-17
+ * @override
+ * @see https://github.com/mage2pro/core/blob/2.0.11/StripeClone/view/frontend/web/main.js?ts=4#L31-L39
+ * @used-by placeOrder()
+ * @param {Object|Number} status
+ * @param {Object} resp
+ * @returns {String}
+ */
+ tokenErrorMessage: function(status, resp) {return null;},
+ /**
+ * 2017-08-17
+ * @override
+ * @see https://github.com/mage2pro/core/blob/2.0.11/StripeClone/view/frontend/web/main.js?ts=4#L41-L48
+ * @used-by placeOrder()
+ * @param {Object} resp
+ * @returns {String}
+ */
+ tokenFromResponse: function(resp) {return null;},
+ /**
+ * 2017-08-17
+ * @override
+ * @see Df_StripeClone/main::tokenParams()
+ * https://github.com/mage2pro/core/blob/2.7.9/StripeClone/view/frontend/web/main.js?ts=4#L42-L48
+ * @used-by Df_StripeClone/main::placeOrder()
+ * https://github.com/mage2pro/core/blob/2.7.9/StripeClone/view/frontend/web/main.js?ts=4#L73
+ * @returns {Object}
+ */
+ tokenParams: function() {return null;}
+});});
\ No newline at end of file