Skip to content
This repository has been archived by the owner on Aug 28, 2023. It is now read-only.

v3.14.0 #186

Merged
merged 110 commits into from
Jan 6, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
110 commits
Select commit Hold shift + click to select a range
296aeaf
Merge pull request #192 from PluginAndPartners/master
gubrito Nov 5, 2021
7c11754
feat(PPWP-377): unified calls
sleaof Nov 9, 2021
5c51d99
fix(PPWP-377): unified calls
sleaof Nov 9, 2021
1d11b45
fix(PPWP-377): unified calls
sleaof Nov 9, 2021
f4e5c8b
fix(PPWP-377): unified calls
sleaof Nov 9, 2021
5236746
fix(PPWP-377): unified calls
sleaof Nov 9, 2021
8d5b07d
added payment places method
sleaof Nov 9, 2021
1e36617
comments removed
sleaof Nov 9, 2021
f356c42
refactored access token validation
sleaof Nov 9, 2021
7a048ba
fixed ternary if structure
sleaof Nov 9, 2021
de9a58d
fixed instantiation of access token
sleaof Nov 9, 2021
4bbfdca
:bug: Fix the PR cover checker when there is no test (#189)
DouglasCorreiaMeli Nov 10, 2021
85e53fd
feat(PPWP-421): paycash front-end
sleaof Nov 10, 2021
962bf10
feat(PPWP-422): paycash admin
sleaof Nov 10, 2021
0daf338
fix(helper): 🐛 fixed float to int convertion
lira Nov 12, 2021
4c66376
Merge pull request #194 from PluginAndPartners/fix/rounded-method-fixed
lira Nov 12, 2021
3c8cfbc
feat(bin): ✨ new command sync with container
lira Nov 12, 2021
ddb4b96
improv: init tests
sleaof Nov 12, 2021
386f5b4
improv: changing chmod command
gubrito Nov 12, 2021
4047d48
Merge pull request #195 from PluginAndPartners/feature/improvements-t…
lira Nov 12, 2021
e3d8b4e
build: 📦 new patch version of mercardo pago for magento 2 v3.12.3
lira Nov 16, 2021
c91da28
getMercadoPagoPaymentMethods testing
gubrito Nov 16, 2021
2bc41b3
Merge pull request #197 from PluginAndPartners/release/3.12.3
lira Nov 16, 2021
ab3abdf
Merge github.com:PluginAndPartners/cart-magento2 into feature/PPWP-377
sleaof Nov 16, 2021
220096a
Merge branch 'mercadopago:master' into master
lira Nov 16, 2021
42c819d
Merge branch 'feature/PPWP-377' of github.com:PluginAndPartners/cart-…
sleaof Nov 16, 2021
7a842b0
Merge pull request #198 from PluginAndPartners/master
lira Nov 16, 2021
2e9974d
fix(ppwp-337): fixing exception testing
gubrito Nov 17, 2021
9ebcb64
testing config provider and api
gubrito Nov 18, 2021
5ac3e9b
testing PaymentMethodsTicket
sleaof Nov 22, 2021
d3b3612
Merge github.com:PluginAndPartners/cart-magento2 into feature/PPWP-377
sleaof Nov 22, 2021
b4c0d05
solving conflicts
sleaof Nov 22, 2021
87433e0
feat(ppwp-377): testing custom config provider
gubrito Nov 23, 2021
5665be7
Merge branch 'develop' into improvement/chmod-faster-build
gubrito Nov 23, 2021
d7da28d
refactored constants
sleaof Nov 23, 2021
6d893f3
refactored model test classes
sleaof Nov 23, 2021
b915209
refactored helper test classes
sleaof Nov 23, 2021
f5068da
added annotation for Code Coverage Ignore
sleaof Nov 23, 2021
107bf25
fixed test variables
sleaof Nov 23, 2021
1bd7f45
fixed html structure of ticket
sleaof Nov 24, 2021
db1bfe0
feat(ppwp-377): adding metadata payment_option_id
gubrito Nov 24, 2021
9ef0002
fixing data tests
gubrito Nov 24, 2021
ea0f61c
removed exception to access token
sleaof Nov 24, 2021
38f1b50
Merge pull request #193 from PluginAndPartners/feature/PPWP-377
DouglasCorreiaMeli Nov 25, 2021
a0ad55c
Merge branch 'develop' into improvement/chmod-faster-build
DouglasCorreiaMeli Nov 25, 2021
7d98fda
Merge pull request #196 from PluginAndPartners/improvement/chmod-fast…
DouglasCorreiaMeli Nov 25, 2021
138d2ea
hotfix(PLUG-1533): fixing refund error handling
gubrito Nov 26, 2021
bdaf040
fixing pr coverage checker
gubrito Nov 29, 2021
37ce70b
testing pr coverage checker
gubrito Nov 29, 2021
bc67daf
fixing pr coverage checker
gubrito Nov 29, 2021
7524676
Merge pull request #199 from PluginAndPartners/hotfix/PLUG-1533
gubrito Nov 29, 2021
c596fe9
hotfix: fixed js - undefined variable
sleaof Nov 29, 2021
b0237e9
Merge branch 'develop' into hotfix/bank-transfer-js
sleaof Nov 29, 2021
257f676
Merge pull request #200 from PluginAndPartners/hotfix/bank-transfer-js
sleaof Nov 30, 2021
a60c71f
feat(PPWP-569): initial commit
sleaof Nov 30, 2021
5453fec
build: 📦 new minor version of mercardo pago for magento 2 v3.13.0
lira Dec 1, 2021
60f43ba
build(v3.13.0): 📦 updated readme
lira Dec 1, 2021
3028938
expiration date mask and validations
gubrito Dec 1, 2021
72bdbd3
Merge pull request #201 from PluginAndPartners/release/magento-3.13.0
lira Dec 2, 2021
deb3b17
PPWP-569: inserted translations for titles
sleaof Dec 2, 2021
0632149
PPWP-569: added space between fields
sleaof Dec 2, 2021
576c8d9
Merge branch 'mercadopago:master' into master
lira Dec 3, 2021
a4fff24
Merge pull request #202 from PluginAndPartners/master
lira Dec 3, 2021
7471dea
improv(PPWP-611): dinamically validating bank transfer on admin page
gubrito Dec 3, 2021
4ae2132
implementing cache
gubrito Dec 6, 2021
ce14a38
PPWP-611: payment unit tests
sleaof Dec 6, 2021
8e9e0a1
PPWP-611: fixed abstractElementMock
sleaof Dec 6, 2021
64eb5e4
fix(wallet button): 🐛 create order even with cho pro disabled
lira Dec 7, 2021
040bf4b
fixing cache
gubrito Dec 7, 2021
51dc380
Merge pull request #204 from PluginAndPartners/hotfix/PLUG-1538/creat…
lira Dec 7, 2021
131c6de
separating cache values with constants
gubrito Dec 7, 2021
d982eee
PPWP-611: refactored test directory
sleaof Dec 7, 2021
b930648
Merge branch 'improvement/PPWP-611' of github.com:PluginAndPartners/c…
sleaof Dec 7, 2021
1cb8ed8
Merge branch 'develop' into improvement/PPWP-611
gubrito Dec 8, 2021
ec97f60
PPWP-570: added translation
sleaof Dec 8, 2021
0a8eab6
Merge pull request #203 from PluginAndPartners/improvement/PPWP-611
gubrito Dec 8, 2021
0a520e1
Merge branch 'develop' into feature/PPWP-379
sleaof Dec 8, 2021
c450726
PPWP-569: inserted style in title
sleaof Dec 8, 2021
349fff4
Merge branch 'feature/PPWP-379' of github.com:PluginAndPartners/cart-…
sleaof Dec 8, 2021
71e3c3a
PPWP-569: fixed cache for new installs
sleaof Dec 8, 2021
4971593
PPWP-569: fixed cache for new installs
sleaof Dec 8, 2021
cacb831
Merge pull request #205 from PluginAndPartners/feature/PPWP-379
sleaof Dec 8, 2021
47f4cf2
feature(ppwp-630): new front-end definitions
gubrito Dec 14, 2021
4675d5c
removing cache from bank_transfer validation
gubrito Dec 15, 2021
e0dd28a
fixing payment fieldset and removing debit text
gubrito Dec 15, 2021
1cc783a
Merge pull request #208 from PluginAndPartners/revert-klap
gubrito Dec 15, 2021
4c68277
Merge branch 'develop' into feature/PPWP-630
gubrito Dec 15, 2021
4b587cf
Merge pull request #207 from PluginAndPartners/feature/PPWP-630
gubrito Dec 15, 2021
4354a45
improv(ppwp-531): adding mlu to available lists
gubrito Dec 27, 2021
0d9479a
adding payment methods validation using API
gubrito Dec 29, 2021
6e3272c
removing old validation
gubrito Dec 29, 2021
84742dd
improving cache and applying rules to other checkouts
gubrito Dec 30, 2021
d5abb54
fixing pix rules
gubrito Dec 30, 2021
b15414d
disabling invalid payments
gubrito Dec 30, 2021
481fb06
clearing config activation flag caching
gubrito Dec 30, 2021
d256f94
testing new methods
gubrito Dec 30, 2021
3bb7411
fixing cache code coverage
gubrito Dec 30, 2021
285ad45
fixing observer code coverage
gubrito Dec 30, 2021
546cabc
fixing exception syntax
gubrito Dec 30, 2021
56c70fa
code enhancement
gubrito Jan 3, 2022
abe6646
fixing prefix issue
gubrito Jan 3, 2022
19e0ab7
fix(ticket): 🐛 changed str_contains to strpos
lira Jan 3, 2022
e687f72
Merge pull request #211 from PluginAndPartners/hotfix/change-str-cont…
lira Jan 4, 2022
d8f2141
Merge branch 'develop' into improvement/ppwp-531
gubrito Jan 4, 2022
a596dd0
Merge pull request #210 from PluginAndPartners/improvement/ppwp-531
gubrito Jan 4, 2022
9ccd889
build(v3.14.0): 📦 updated version files and changelog
lira Jan 4, 2022
e8551db
build(v3.14.0): 📦 updated changelog
lira Jan 4, 2022
ff14260
fix: treating paymentId on disablePayment function
gubrito Jan 4, 2022
6eadaa4
Merge pull request #212 from PluginAndPartners/fix/magento-3.14.0
lira Jan 4, 2022
d1ce12a
Merge pull request #213 from PluginAndPartners/release/magento-3.14.0
lira Jan 6, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,16 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [3.14.0] - 2022-01-04

### Added
- Improvements to credit card flow
- Dynamically removing unavailable payment methods from admin

### Fixed
- Changed str_contains to srtpos
- Wallet Button working without CHO PRO enabled

## [3.13.0] - 2021-12-01

### Added
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
</a>
</p>

# Magento 2 - Mercado Pago Module (v3.13.0)
# Magento 2 - Mercado Pago Module (v3.14.0)

The Mercado Pago plugin for Magento 2 allows you to expand the functionalities of your online store and offer a unique payment experience for your customers.

Expand Down
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
}
],
"type": "magento2-module",
"version": "3.13.0",
"version": "3.14.0",
"license": [
"OSL-3.0",
"AFL-3.0"
Expand Down
168 changes: 131 additions & 37 deletions src/MercadoPago/Core/Block/Adminhtml/System/Config/Fieldset/Payment.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,29 @@
use Magento\Backend\Model\Auth\Session;
use Magento\Config\Block\System\Config\Form\Fieldset;
use Magento\Config\Model\ResourceModel\Config;
use Magento\Framework\App\Cache\TypeListInterface;
use Magento\Framework\App\Config\ScopeConfigInterface;
use Magento\Framework\Data\Form\Element\AbstractElement;
use Magento\Framework\View\Helper\Js;
use Magento\Store\Model\ScopeInterface;
use MercadoPago\Core\Helper\ConfigData;
use MercadoPago\Core\Helper\Data;
use MercadoPago\Core\Helper\Cache;

/**
* Config form FieldSet renderer
*/
class Payment extends Fieldset
{

/**
* checkout types
*/
const CHECKOUT_CUSTOM_CARD = 'custom_checkout';
const CHECKOUT_CUSTOM_PIX= 'custom_checkout_pix';
const CHECKOUT_CUSTOM_TICKET = 'custom_checkout_ticket';
const CHECKOUT_CUSTOM_BANK_TRANSFER = 'custom_checkout_bank_transfer';

/**
* @var ScopeConfigInterface
*/
Expand All @@ -29,12 +41,30 @@ class Payment extends Fieldset
*/
protected $configResource;

/**
*
* @var TypeListInterface
*/
protected $cacheTypeList;

/**
*
* @var Switcher
*/
protected $switcher;

/**
*
* @var Data
*/
protected $coreHelper;

/**
*
* @var Cache
*/
protected $cache;

/**
* @param Context $context
* @param Session $authSession
Expand All @@ -43,6 +73,9 @@ class Payment extends Fieldset
* @param Config $configResource
* @param Switcher $switcher
* @param array $data
* @param Data $coreHelper
* @param Cache $cache
* @param TypeLIstInterface $cacheTypeList
*/
public function __construct(
Context $context,
Expand All @@ -51,12 +84,18 @@ public function __construct(
ScopeConfigInterface $scopeConfig,
Config $configResource,
Switcher $switcher,
array $data = []
array $data = [],
Data $coreHelper,
Cache $cache,
TypeLIstInterface $cacheTypeList
) {
parent::__construct($context, $authSession, $jsHelper, $data);
$this->scopeConfig = $scopeConfig;
$this->configResource = $configResource;
$this->switcher = $switcher;
$this->coreHelper = $coreHelper;
$this->cache = $cache;
$this->cacheTypeList = $cacheTypeList;
}

/**
Expand All @@ -68,39 +107,42 @@ public function render(AbstractElement $element)
//get id element
$paymentId = $element->getId();

//get country (Site id for Mercado Pago)
$siteId = strtoupper(
$this->scopeConfig->getValue(
ConfigData::PATH_SITE_ID,
ScopeInterface::SCOPE_STORE
)
);

//check is bank transfer
if ($this->hideBankTransfer($paymentId, $siteId)) {
return "";
}

//check is pix
if ($this->hidePix($paymentId, $siteId)) {
//check available payment methods
if ($this->hideInvalidCheckoutOptions($paymentId)) {
$this->disablePayment($paymentId);
return "";
}

return parent::render($element);
}

public function getPaymentMethods()
{
$accessToken = $this->coreHelper->getAccessToken();

$paymentMethods = $this->coreHelper->getMercadoPagoPaymentMethods($accessToken);

return $paymentMethods;
}

/**
* @param $paymentActivePath
* Disables the given payment if it is currently active
*
* @param $paymentId
*/
protected function disablePayment($paymentActivePath)
protected function disablePayment($paymentId)
{
$paymentIdWithoutPrefix = implode('_', array_slice(explode('_', $paymentId), 4));

$paymentActivePath = $this->getPaymentPath($paymentIdWithoutPrefix);

$statusPaymentMethod = $this->scopeConfig->isSetFlag(
$paymentActivePath,
ScopeInterface::SCOPE_STORE
);

//check is active for disable
if ($statusPaymentMethod) {
if ($paymentActivePath && $statusPaymentMethod) {
$value = 0;

if ($this->switcher->getWebsiteId() == 0) {
Expand All @@ -113,41 +155,93 @@ protected function disablePayment($paymentActivePath)
$this->switcher->getWebsiteId()
);
}
$this->cacheTypeList->cleanType(\Magento\Framework\App\Cache\Type\Config::TYPE_IDENTIFIER);
}
}

/**
* @param $paymentId
* @param $siteId
* @return bool
*/
protected function hideBankTransfer($paymentId, $siteId)
protected function hideInvalidCheckoutOptions($paymentId)
{
if (strpos($paymentId, 'custom_checkout_bank_transfer') !== false) {
//hide payment method if not Chile or Colombia
if ($siteId !== "MLC" && $siteId !== "MCO") {
$this->disablePayment(ConfigData::PATH_CUSTOM_BANK_TRANSFER_ACTIVE);
return true;
}
if (!$this->coreHelper->getAccessToken()) {
return true;
}

$cacheKey = Cache::VALID_PAYMENT_METHODS;
$validCheckoutOptions = json_decode($this->cache->getFromCache($cacheKey));
if (!$validCheckoutOptions) {
$validCheckoutOptions = $this->getAvailableCheckoutOptions();
$this->cache->saveCache($cacheKey, json_encode($validCheckoutOptions));
}

$paymentIdWithoutPrefix = implode('_', array_slice(explode('_', $paymentId), 4));

return false;
return !in_array($paymentIdWithoutPrefix, $validCheckoutOptions);
}

/**
* @param $paymentId
* @param $siteId
* @return bool
* Get available checkout options based on payment methods of the used credentials
*
* @param string $accessToken
* @return array
*/
protected function hidePix($paymentId, $siteId)
public function getAvailableCheckoutOptions()
{
if (strpos($paymentId, 'custom_checkout_pix') !== false) {
if ($siteId !== "MLB") {
$this->disablePayment(ConfigData::PATH_CUSTOM_PIX_ACTIVE);
return true;
try {
$availableCheckouts = array();
$paymentMethods = $this->getPaymentMethods();

foreach ($paymentMethods['response'] as $paymentMethod) {
switch (strtolower($paymentMethod['payment_type_id'])) {
case 'credit_card':
case 'debid_card':
case 'prepaid_card':
if (!in_array(self::CHECKOUT_CUSTOM_CARD, $availableCheckouts)) {
$availableCheckouts[] = self::CHECKOUT_CUSTOM_CARD;
}
break;

case 'atm':
case 'ticket':
if (!in_array(self::CHECKOUT_CUSTOM_TICKET, $availableCheckouts)) {
$availableCheckouts[] = self::CHECKOUT_CUSTOM_TICKET;
}
break;

case 'bank_transfer':
if (!in_array(self::CHECKOUT_CUSTOM_PIX, $availableCheckouts) && strtolower($paymentMethod['id']) === 'pix') {
$availableCheckouts[] = self::CHECKOUT_CUSTOM_PIX;
}
if (!in_array(self::CHECKOUT_CUSTOM_BANK_TRANSFER, $availableCheckouts) && strtolower($paymentMethod['id']) !== 'pix') {
$availableCheckouts[] = self::CHECKOUT_CUSTOM_BANK_TRANSFER;
}
break;
}
}

return $availableCheckouts;
} catch (\Exception $e) {
$this->coreHelper->log('Payment Fieldset getAvailableCheckoutOptions error: ' . $e->getMessage());
return [];
}
}

return false;
public function getPaymentPath($paymentId)
{
switch ($paymentId) {
case (self::CHECKOUT_CUSTOM_CARD):
return ConfigData::PATH_CUSTOM_ACTIVE;

case (self::CHECKOUT_CUSTOM_TICKET):
return ConfigData::PATH_CUSTOM_TICKET_ACTIVE;

case (self::CHECKOUT_CUSTOM_PIX):
return ConfigData::PATH_CUSTOM_PIX_ACTIVE;

case (self::CHECKOUT_CUSTOM_BANK_TRANSFER):
return ConfigData::PATH_CUSTOM_BANK_TRANSFER_ACTIVE;
}
}
}
3 changes: 3 additions & 0 deletions src/MercadoPago/Core/Helper/Cache.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,14 @@
/**
* Class Cache
* @package MercadoPago\Core\Helper
*
* @codeCoverageIgnore
*/
class Cache
{
const PREFIX_KEY = 'MP_';
const IS_VALID_AT = 'IS_VALID_ACCESS_TOKEN';
const VALID_PAYMENT_METHODS = 'VALID_PAYMENT_METHODS';

/**
* @var CacheInterface
Expand Down
Loading