diff --git a/202/build.xml b/202/build.xml index 96a82a2..37de8f8 100644 --- a/202/build.xml +++ b/202/build.xml @@ -5,7 +5,7 @@ - + diff --git a/README.md b/README.md index c5831ff..e6836e0 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,97 @@ -# braintree +# Braintree Braintree official module + +## About + +Let customer pay on PrestaShop 1.7 with one of this payment methods : +- PayPal +- Braintree cards + +#### Product page on PrestaShop Addons: + +https://addons.prestashop.com/en/payments-gateways-prestashop-modules/46833-braintree-official.html + +## Module version guide + +| PrestaShop version | Module version | Repo | Doc | PHP Version | +|---------|------------|---------------------|---------------------|-------------| +| 1.7.x | 1.x | [master][paypal-4] | [module documentation][6]| 5.4 or greater | + +## Requirements + +1. PHP version (check Module version guide) +2. TLS 1.2 & cURL 1.0.1c + +The Payment Card Industry (PCI) Council has mandated that early versions of +TLS be retired from service. All organizations that handle credit card information +are required to comply with this standard. As part of this obligation, PayPal has +upgraded its services to require TLS 1.2 for all HTTPS connections. +Connections to the sandbox environment use only TLS 1.2. + +For more official, relevant information, see the 2017-2018 Merchant Security +Roadmap Microsite: +* [TLS 1.2 and HTTP/1.1 Upgrade Microsite][4] +* [SSL Certificate Upgrade Microsite][5] + +Check the version of your URL’s underlying security library. If you use OpenSSL +libraries, please update them to at least version 1.0.1c. + +## Installation + +To install module on PrestaShop, download zip package form [product page on PrestaShop Addons][addons]. + +This module contain composer.json file. If you clone or download the module from github +repository, run the ```composer install``` from the root module folder. + +See the [composer documentation][composer-doc] to learn more about the composer.json file. + +## Compiling assets +**For development** + +We use _Webpack_ to compile our javascript and scss files. +In order to compile those files, you must : +1. have _Node 10+_ installed locally +2. run `npm install` in the root folder to install dependencies +3. then run `npm run watch` to compile assets and watch for file changes + +**For production** + +Run `npm run build` to compile for production. +Files are minified, `console.log` and comments dropped. + +## Contributing + +PrestaShop modules are open-source extensions to the PrestaShop e-commerce solution. Everyone is welcome and even encouraged to contribute with their own improvements. + +### Requirements + +Contributors **must** follow the following rules: + +* **Make your Pull Request on the "develop" branch**, NOT the "master" branch. +* Do not update the module's version number. +* Follow [the coding standards][1]. + +### Process in details + +Contributors wishing to edit a module's files should follow the following process: + +1. Create your GitHub account, if you do not have one already. +2. Fork the paypal project to your GitHub account. +3. Clone your fork to your local machine in the ```/modules``` directory of your PrestaShop installation. +4. Create a branch in your local clone of the module for your changes. +5. Change the files in your branch. Be sure to follow [the coding standards][1]! +6. Push your changed branch to your fork in your GitHub account. +7. Create a pull request for your changes **on the _'develop'_ branch** of the module's project. Be sure to follow [the commit message norm][2] in your pull request. If you need help to make a pull request, read the [Github help page about creating pull requests][3]. +8. Wait for one of the core developers either to include your change in the codebase, or to comment on possible improvements you should make to your code. + +That's it: you have contributed to this open-source project! Congratulations! + +[1]: https://devdocs.prestashop.com/1.7/development/coding-standards/ +[2]: http://doc.prestashop.com/display/PS16/How+to+write+a+commit+message +[3]: https://help.github.com/articles/using-pull-requests +[4]: https://www.paypal-notice.com/en/TLS-1.2-and-HTTP1.1-Upgrade/ +[5]: https://www.paypal-notice.com/en/SSL-Certificate-Upgrade-Microsite/ +[6]: https://help.202-ecommerce.com/wp-content/uploads/2019/12/User-guide-Braintree-PrestaShop-module.pdf +[paypal-4]: https://github.com/202-ecommerce/braintreeofficial/tree/master +[addons]: https://addons.prestashop.com/en/payments-gateways-prestashop-modules/46833-braintree-official.html +[composer-doc]: https://getcomposer.org/doc/04-schema.md diff --git a/braintreeofficial.php b/braintreeofficial.php index e03ee0a..a50a637 100644 --- a/braintreeofficial.php +++ b/braintreeofficial.php @@ -1023,17 +1023,17 @@ public function hookHeader() } $this->context->controller->addJqueryPlugin('fancybox'); - $this->context->controller->registerJavascript($this->name . '-braintreegateway-client', 'https://js.braintreegateway.com/web/3.56.0/js/client.min.js', array('server' => 'remote')); - $this->context->controller->registerJavascript($this->name . '-braintreegateway-hosted', 'https://js.braintreegateway.com/web/3.56.0/js/hosted-fields.min.js', array('server' => 'remote')); - $this->context->controller->registerJavascript($this->name . '-braintreegateway-data', 'https://js.braintreegateway.com/web/3.24.0/js/data-collector.min.js', array('server' => 'remote')); - $this->context->controller->registerJavascript($this->name . '-braintreegateway-3ds', 'https://js.braintreegateway.com/web/3.56.0/js/three-d-secure.min.js', array('server' => 'remote')); + $this->context->controller->registerJavascript($this->name . '-braintreegateway-client', 'https://js.braintreegateway.com/web/3.57.0/js/client.min.js', array('server' => 'remote')); + $this->context->controller->registerJavascript($this->name . '-braintreegateway-hosted', 'https://js.braintreegateway.com/web/3.57.0/js/hosted-fields.min.js', array('server' => 'remote')); + $this->context->controller->registerJavascript($this->name . '-braintreegateway-data', 'https://js.braintreegateway.com/web/3.57.0/js/data-collector.min.js', array('server' => 'remote')); + $this->context->controller->registerJavascript($this->name . '-braintreegateway-3ds', 'https://js.braintreegateway.com/web/3.57.0/js/three-d-secure.min.js', array('server' => 'remote')); $this->context->controller->registerStylesheet($this->name . '-braintreecss', 'modules/' . $this->name . '/views/css/braintree.css'); $this->addJsVarsLangBT(); $this->addJsVarsBT(); $this->context->controller->registerJavascript($this->name . '-braintreejs', 'modules/' . $this->name . '/views/js/payment_bt.js'); if (Configuration::get('BRAINTREEOFFICIAL_ACTIVATE_PAYPAL')) { - $this->context->controller->registerJavascript($this->name . '-pp-braintree-checkout-min', 'https://js.braintreegateway.com/web/3.56.0/js/paypal-checkout.min.js', array('server' => 'remote')); + $this->context->controller->registerJavascript($this->name . '-pp-braintree-checkout-min', 'https://js.braintreegateway.com/web/3.57.0/js/paypal-checkout.min.js', array('server' => 'remote')); $this->context->controller->registerJavascript($this->name . '-pp-braintree-checkout', 'https://www.paypalobjects.com/api/checkout.js', array('server' => 'remote')); Media::addJsDefL('empty_nonce', $this->l('Please click on the PayPal Pay button first')); $this->addJsVarsPB(); @@ -1060,24 +1060,24 @@ public function hookHeader() } $resources = array( - 'https://js.braintreegateway.com/web/3.56.0/js/client.min.js', - 'https://js.braintreegateway.com/web/3.56.0/js/hosted-fields.min.js', - 'https://js.braintreegateway.com/web/3.24.0/js/data-collector.min.js', - 'https://js.braintreegateway.com/web/3.56.0/js/three-d-secure.min.js', + 'https://js.braintreegateway.com/web/3.57.0/js/client.min.js', + 'https://js.braintreegateway.com/web/3.57.0/js/hosted-fields.min.js', + 'https://js.braintreegateway.com/web/3.57.0/js/data-collector.min.js', + 'https://js.braintreegateway.com/web/3.57.0/js/three-d-secure.min.js', ); $this->context->controller->registerStylesheet($this->name . '-braintreecss', 'modules/' . $this->name . '/views/css/braintree.css'); if (Configuration::get('BRAINTREEOFFICIAL_ACTIVATE_PAYPAL')) { $resources_paypal = array( - 'https://js.braintreegateway.com/web/3.56.0/js/paypal-checkout.min.js' + 'https://js.braintreegateway.com/web/3.57.0/js/paypal-checkout.min.js' ); if (Configuration::get('BRAINTREEOFFICIAL_EXPRESS_CHECKOUT_SHORTCUT_CART')) { Media::addJsDef($this->methodBraintreeOfficial->getShortcutJsVars(BRAINTREE_CART_PAGE)); $this->context->controller->registerJavascript($this->name . '-braintreeShortcut', 'modules/' . $this->name . '/views/js/btShortcut.js'); - $this->context->controller->registerJavascript($this->name . '-pp-braintree-checkout-min', 'https://js.braintreegateway.com/web/3.56.0/js/paypal-checkout.min.js', array('server' => 'remote')); + $this->context->controller->registerJavascript($this->name . '-pp-braintree-checkout-min', 'https://js.braintreegateway.com/web/3.57.0/js/paypal-checkout.min.js', array('server' => 'remote')); $this->context->controller->registerJavascript($this->name . '-pp-braintree-checkout', 'https://www.paypalobjects.com/api/checkout.js', array('server' => 'remote')); - $this->context->controller->registerJavascript($this->name . '-pp-braintree-client', 'https://js.braintreegateway.com/web/3.56.0/js/client.min.js', array('server' => 'remote')); + $this->context->controller->registerJavascript($this->name . '-pp-braintree-client', 'https://js.braintreegateway.com/web/3.57.0/js/client.min.js', array('server' => 'remote')); } $resources = array_merge($resources, $resources_paypal); @@ -1091,9 +1091,9 @@ public function hookHeader() if (Configuration::get('BRAINTREEOFFICIAL_ACTIVATE_PAYPAL') && Configuration::get('BRAINTREEOFFICIAL_EXPRESS_CHECKOUT_SHORTCUT')) { Media::addJsDef($this->methodBraintreeOfficial->getShortcutJsVars(BRAINTREE_PRODUCT_PAGE)); $this->context->controller->registerJavascript($this->name . '-braintreeShortcut', 'modules/' . $this->name . '/views/js/btShortcut.js'); - $this->context->controller->registerJavascript($this->name . '-pp-braintree-checkout-min', 'https://js.braintreegateway.com/web/3.56.0/js/paypal-checkout.min.js', array('server' => 'remote')); + $this->context->controller->registerJavascript($this->name . '-pp-braintree-checkout-min', 'https://js.braintreegateway.com/web/3.57.0/js/paypal-checkout.min.js', array('server' => 'remote')); $this->context->controller->registerJavascript($this->name . '-pp-braintree-checkout', 'https://www.paypalobjects.com/api/checkout.js', array('server' => 'remote')); - $this->context->controller->registerJavascript($this->name . '-pp-braintree-client', 'https://js.braintreegateway.com/web/3.56.0/js/client.min.js', array('server' => 'remote')); + $this->context->controller->registerJavascript($this->name . '-pp-braintree-client', 'https://js.braintreegateway.com/web/3.57.0/js/client.min.js', array('server' => 'remote')); } } } diff --git a/controllers/front/validation.php b/controllers/front/validation.php index 1334f43..125d93b 100755 --- a/controllers/front/validation.php +++ b/controllers/front/validation.php @@ -103,7 +103,7 @@ public function displayAjaxGetOrderInformation() 'amount' => $this->context->cart->getOrderTotal(true, Cart::BOTH), 'email' => $customer->email, 'billingAddress' => array( - 'givenName' => $customer->firstname, + 'givenName' => iconv("utf-8", "ascii//TRANSLIT", $customer->firstname), 'surneme' => $customer->lastname, 'phoneNumber' => $address->phone, 'streetAddress' => $address->address1, diff --git a/views/templates/front/payment_bt.tpl b/views/templates/front/payment_bt.tpl index 0094f87..e1dd146 100755 --- a/views/templates/front/payment_bt.tpl +++ b/views/templates/front/payment_bt.tpl @@ -31,7 +31,7 @@
lock {l s='Pay securely using your credit card.' mod='braintreeofficial'} - +
{if !isset($init_error)}