diff --git a/Block/Checkout/Error.php b/Block/Checkout/Error.php
index d32e946..d7708d8 100644
--- a/Block/Checkout/Error.php
+++ b/Block/Checkout/Error.php
@@ -11,7 +11,7 @@ class Error extends Template
protected $request;
public function __construct(
- \Magento\Framework\View\Element\Template\Context $context,
+ Template\Context $context,
Http $request,
array $data = []
) {
diff --git a/Block/Checkout/Success.php b/Block/Checkout/Success.php
index 2322e68..0fa661f 100644
--- a/Block/Checkout/Success.php
+++ b/Block/Checkout/Success.php
@@ -11,7 +11,7 @@ class Success extends Template
protected $request;
public function __construct(
- \Magento\Framework\View\Element\Template\Context $context,
+ Template\Context $context,
Http $request,
array $data = []
) {
diff --git a/Controller/Checkout/Bnpl.php b/Controller/Checkout/Bnpl.php
index c2d9344..01adf28 100644
--- a/Controller/Checkout/Bnpl.php
+++ b/Controller/Checkout/Bnpl.php
@@ -5,6 +5,7 @@
namespace Fintecture\Payment\Controller\Checkout;
use Fintecture\Payment\Controller\FintectureAbstract;
+use Fintecture\Payment\Helper\Fintecture;
class Bnpl extends FintectureAbstract
{
@@ -21,7 +22,7 @@ public function execute()
}
// Connect
- $data = $this->fintectureHelper->generatePayload($order, self::BNPL_TYPE);
+ $data = $this->fintectureHelper->generatePayload($order, Fintecture::BNPL_TYPE);
$apiResponse = $this->connect->get($order, $data);
$url = $apiResponse->meta->url ?? '';
diff --git a/Controller/Checkout/Index.php b/Controller/Checkout/Index.php
index bcbaa45..d0b6d91 100644
--- a/Controller/Checkout/Index.php
+++ b/Controller/Checkout/Index.php
@@ -5,6 +5,7 @@
namespace Fintecture\Payment\Controller\Checkout;
use Fintecture\Payment\Controller\FintectureAbstract;
+use Fintecture\Payment\Helper\Fintecture;
use Magento\Framework\App\ObjectManager;
use Magento\LoginAsCustomerApi\Api\GetLoggedAsCustomerAdminIdInterface;
use Magento\Sales\Model\Order;
@@ -26,7 +27,7 @@ public function execute()
$alternativeMethod = $this->getAlternativeMethod();
if (!$alternativeMethod) {
// Connect
- $data = $this->fintectureHelper->generatePayload($order, self::PIS_TYPE);
+ $data = $this->fintectureHelper->generatePayload($order, Fintecture::PIS_TYPE);
$apiResponse = $this->connect->get($order, $data);
$url = $apiResponse->meta->url ?? '';
} else {
@@ -58,7 +59,7 @@ public function execute()
private function getQRCodeRedirect(Order $order): string
{
- $data = $this->fintectureHelper->generatePayload($order, self::RTP_TYPE);
+ $data = $this->fintectureHelper->generatePayload($order, Fintecture::RTP_TYPE);
$apiResponse = $this->requestToPay->get($order, $data);
$url = $apiResponse->meta->url ?? '';
diff --git a/Controller/FintectureAbstract.php b/Controller/FintectureAbstract.php
index dd0e44c..cbf2be7 100644
--- a/Controller/FintectureAbstract.php
+++ b/Controller/FintectureAbstract.php
@@ -80,10 +80,6 @@ abstract class FintectureAbstract implements CsrfAwareActionInterface
/** @var OrderRepositoryInterface */
protected $orderRepository;
- public const PIS_TYPE = 'PayByBank';
- public const RTP_TYPE = 'RequestToPay';
- public const BNPL_TYPE = 'BuyNowPayLater';
-
public function __construct(
CheckoutSession $checkoutSession,
Logger $fintectureLogger,
diff --git a/Controller/Standard/PaymentCreated.php b/Controller/Standard/PaymentCreated.php
index 129532d..018f6e4 100644
--- a/Controller/Standard/PaymentCreated.php
+++ b/Controller/Standard/PaymentCreated.php
@@ -55,6 +55,7 @@ public function execute()
'state' => $params['state'],
'status' => $params['status'],
'sessionId' => $sessionId,
+ 'isRefund' => $isRefund ? 'true' : 'false',
]);
$result->setContents('invalid_order');
@@ -63,18 +64,24 @@ public function execute()
try {
if ($isRefund) {
- $decodedState = json_decode(base64_decode($params['state']));
- if (property_exists($decodedState, 'creditmemo_transaction_id')) {
- return $this->refund($order, $params['status'], $decodedState->creditmemo_transaction_id);
- } else {
- $this->fintectureLogger->error('Webhook', [
- 'message' => 'No credit memo id found',
- 'state' => $params['state'],
- 'status' => $params['status'],
- 'sessionId' => $params['sessionId'],
- ]);
- $result->setContents('invalid_refund');
+ if ((float) $order->getData('fintecture_payment_refund_amount') === (float) $order->getBaseGrandTotal()) {
+ $result->setContents('order_already_refunded');
+
+ return $result;
+ }
+
+ $decodedState = base64_decode($params['state']);
+ if ($decodedState) {
+ $decodedStateObj = json_decode($decodedState);
+ if ($decodedStateObj) {
+ if (property_exists($decodedState, 'creditmemo_transaction_id')) {
+ // Use existing credit memo
+ return $this->refund($order, $params['status'], (float) $params['amount'], $decodedStateObj->creditmemo_transaction_id);
+ }
+ }
}
+
+ return $this->refund($order, $params['status'], (float) $params['amount']);
} else {
return $this->payment($order, $params);
}
@@ -95,7 +102,6 @@ private function payment(Order $order, array $params): Raw
{
$result = $this->resultRawFactory->create();
$result->setHeader('Content-Type', 'text/plain');
- $result->setHttpResponseCode(200);
$statuses = $this->fintectureHelper->getOrderStatus($params);
if (!$statuses) {
@@ -173,16 +179,21 @@ private function payment(Order $order, array $params): Raw
return $result;
}
- private function refund(Order $order, string $status, string $creditmemoTransactionId): Raw
+ private function refund(Order $order, string $status, float $amount, string $creditmemoTransactionId = null): Raw
{
$result = $this->resultRawFactory->create();
$result->setHeader('Content-Type', 'text/plain');
if ($status === 'payment_created') {
- $appliedRefund = $this->handleRefund->apply($order, $creditmemoTransactionId);
- if ($appliedRefund) {
- $result->setHttpResponseCode(200);
+ if (!is_null($creditmemoTransactionId)) {
+ $creditmemo = $this->fintectureHelper->getCreditmemoByTransactionId($order, $creditmemoTransactionId);
+
+ $appliedRefund = $creditmemo ? $this->handleRefund->apply($order, $creditmemo, $amount) : false;
} else {
+ $appliedRefund = $this->handleRefund->applyWithoutCreditmemo($order, $amount);
+ }
+
+ if (!$appliedRefund) {
$result->setHttpResponseCode(400);
$result->setContents('refund_not_applied');
}
diff --git a/Controller/Standard/Send.php b/Controller/Standard/Send.php
index 6430ef0..cb47a74 100644
--- a/Controller/Standard/Send.php
+++ b/Controller/Standard/Send.php
@@ -6,6 +6,7 @@
use chillerlan\QRCode\QRCode as QRCodeGenerator;
use Fintecture\Payment\Controller\FintectureAbstract;
+use Fintecture\Payment\Helper\Fintecture;
use Magento\Framework\View\Element\Template;
class Send extends FintectureAbstract
@@ -33,7 +34,7 @@ public function execute()
throw new \Exception('Send error: no order found');
}
- $data = $this->fintectureHelper->generatePayload($order, self::RTP_TYPE, $method);
+ $data = $this->fintectureHelper->generatePayload($order, Fintecture::RTP_TYPE, $method);
$apiResponse = $this->requestToPay->get($order, $data);
$reference = $data['data']['attributes']['communication'];
diff --git a/Gateway/Config/Config.php b/Gateway/Config/Config.php
index d5bcdb4..a89f7d8 100644
--- a/Gateway/Config/Config.php
+++ b/Gateway/Config/Config.php
@@ -7,7 +7,7 @@
class Config extends BaseConfig
{
const CODE = 'fintecture';
- const VERSION = '3.4.2';
+ const VERSION = '3.5.0';
const KEY_SHOP_NAME = 'general/store_information/name';
const KEY_ACTIVE = 'active';
@@ -21,6 +21,7 @@ class Config extends BaseConfig
const KEY_PRIVATE_KEY_SANDBOX = 'custom_file_upload_sandbox';
const KEY_PRIVATE_KEY_PRODUCTION = 'custom_file_upload_production';
const KEY_BANK_TYPE = 'general/bank_type';
+ const KEY_REFUND_STATUSES_ACTIVE = 'refund_statuses_active';
const KEY_EXPIRATION_ACTIVE = 'expiration_active';
const KEY_EXPIRATION_AFTER = 'expiration_after';
const KEY_INVOICING_ACTIVE = 'invoicing_active';
@@ -110,6 +111,11 @@ public function getBankType(): ?string
return $this->getValue(self::KEY_BANK_TYPE);
}
+ public function isRefundStatusesActive(): bool
+ {
+ return (bool) $this->getValue(self::KEY_REFUND_STATUSES_ACTIVE);
+ }
+
public function isExpirationActive(): bool
{
return (bool) $this->getValue(self::KEY_EXPIRATION_ACTIVE);
@@ -234,4 +240,14 @@ public function getPaymentFailedStatus(): string
return $status;
}
+
+ public function getPartialRefundStatus(): string
+ {
+ $status = $this->getValue('payment/fintecture/partial_refund_status');
+ if (!$status) {
+ $status = 'fintecture_partial_refund';
+ }
+
+ return $status;
+ }
}
diff --git a/Gateway/HandlePayment.php b/Gateway/HandlePayment.php
index 06428a2..f20de14 100644
--- a/Gateway/HandlePayment.php
+++ b/Gateway/HandlePayment.php
@@ -3,6 +3,7 @@
namespace Fintecture\Payment\Gateway;
use Fintecture\Payment\Gateway\Config\Config;
+use Fintecture\Payment\Gateway\Http\Sdk;
use Fintecture\Payment\Helper\Fintecture as FintectureHelper;
use Fintecture\Payment\Logger\Logger;
use Magento\Framework\DB\Transaction;
@@ -60,6 +61,9 @@ class HandlePayment
/** @var InvoiceRepositoryInterface */
protected $invoiceRepository;
+ /** @var Sdk */
+ protected $sdk;
+
public function __construct(
Logger $fintectureLogger,
Config $config,
@@ -73,7 +77,8 @@ public function __construct(
OrderSender $orderSender,
InvoiceSender $invoiceSender,
InvoiceService $invoiceService,
- InvoiceRepositoryInterface $invoiceRepository
+ InvoiceRepositoryInterface $invoiceRepository,
+ Sdk $sdk
) {
$this->fintectureLogger = $fintectureLogger;
$this->config = $config;
@@ -88,6 +93,7 @@ public function __construct(
$this->invoiceService = $invoiceService;
$this->invoiceSender = $invoiceSender;
$this->invoiceRepository = $invoiceRepository;
+ $this->sdk = $sdk;
}
public function create(
@@ -140,7 +146,7 @@ public function create(
->setOrder($order)
->setTransactionId($order->getIncrementId() . '-' . time())
->setAdditionalInformation([
- \Magento\Sales\Model\Order\Payment\Transaction::RAW_DETAILS => [
+ Payment\Transaction::RAW_DETAILS => [
'amount' => (string) $lastTransactionAmount . ' €',
'status' => $params['status'],
'sessionId' => $params['sessionId'],
@@ -204,6 +210,7 @@ public function sendInvoice(Order $order, array $params): void
$invoice = $this->invoiceService->prepareInvoice($order);
$invoice->setTransactionId($params['sessionId']);
$invoice->register();
+ $invoice->pay();
$this->invoiceRepository->save($invoice);
$transactionSave = $this->transaction
->addObject($invoice)
@@ -214,6 +221,35 @@ public function sendInvoice(Order $order, array $params): void
$order->setIsCustomerNotified(true);
$this->orderRepository->save($order);
+
+ if ($params['status'] === 'order_created') {
+ // Update invoice_reference field for BNPL orders
+ $data = [
+ 'data' => [
+ 'attributes' => [
+ 'invoice_reference' => '#' . $invoice->getIncrementId(),
+ ],
+ ],
+ ];
+
+ $pisToken = $this->sdk->pisClient->token->generate();
+ if (!$pisToken->error) {
+ $this->sdk->pisClient->setAccessToken($pisToken); // set token of PIS client
+ } else {
+ $this->fintectureLogger->error("Can't update invoice_reference field", [
+ 'message' => $pisToken->errorMsg,
+ 'incrementOrderId' => $order->getIncrementId(),
+ ]);
+ }
+
+ $apiResponse = $this->sdk->pisClient->payment->update($params['sessionId'], $data);
+ if ($apiResponse->error) {
+ $this->fintectureLogger->error("Can't update invoice_reference field", [
+ 'message' => $apiResponse->errorMsg,
+ 'incrementOrderId' => $order->getIncrementId(),
+ ]);
+ }
+ }
}
}
diff --git a/Gateway/HandleRefund.php b/Gateway/HandleRefund.php
index 7385efe..cd0fb58 100644
--- a/Gateway/HandleRefund.php
+++ b/Gateway/HandleRefund.php
@@ -2,6 +2,7 @@
namespace Fintecture\Payment\Gateway;
+use Fintecture\Payment\Gateway\Config\Config;
use Fintecture\Payment\Gateway\Http\Sdk;
use Fintecture\Payment\Helper\Fintecture as FintectureHelper;
use Fintecture\Payment\Logger\Logger;
@@ -13,6 +14,7 @@
use Magento\Sales\Api\OrderRepositoryInterface;
use Magento\Sales\Model\Order;
use Magento\Sales\Model\Order\Creditmemo;
+use Magento\Sales\Model\Order\CreditmemoFactory;
use Magento\Sales\Model\Order\RefundAdapterInterface;
class HandleRefund
@@ -31,26 +33,36 @@ class HandleRefund
/** @var CreditmemoRepositoryInterface */
protected $creditmemoRepository;
+ /** @var CreditmemoFactory */
+ protected $creditmemoFactory;
+
/** @var RefundAdapterInterface */
protected $refundAdapter;
/** @var Sdk */
protected $sdk;
+ /** @var Config */
+ protected $config;
+
public function __construct(
Logger $fintectureLogger,
FintectureHelper $fintectureHelper,
OrderRepositoryInterface $orderRepository,
CreditmemoRepositoryInterface $creditmemoRepository,
+ CreditmemoFactory $creditmemoFactory,
RefundAdapterInterface $refundAdapter,
- Sdk $sdk
+ Sdk $sdk,
+ Config $config
) {
$this->fintectureLogger = $fintectureLogger;
$this->fintectureHelper = $fintectureHelper;
$this->orderRepository = $orderRepository;
$this->creditmemoRepository = $creditmemoRepository;
+ $this->creditmemoFactory = $creditmemoFactory;
$this->refundAdapter = $refundAdapter;
$this->sdk = $sdk;
+ $this->config = $config;
}
public function create(OrderInterface $order, CreditmemoInterface $creditmemo): void
@@ -169,49 +181,65 @@ public function create(OrderInterface $order, CreditmemoInterface $creditmemo):
}
}
- public function apply(OrderInterface $order, string $creditmemoTransactionId): bool
+ public function apply(Order $order, Creditmemo $creditmemo, float $amount): bool
{
- try {
- /** @var Order $order */
- $creditmemos = $order->getCreditmemosCollection();
- if (!$creditmemos) {
- throw new \Exception("Can't find any creditmemo on the order");
- }
+ $refundedAmount = (float) $order->getData('fintecture_payment_refund_amount');
+ $isFullRefund = ($amount === (float) $order->getBaseGrandTotal())
+ || ($refundedAmount + $amount === (float) $order->getBaseGrandTotal());
- /** @var Creditmemo $creditmemo */
- $creditmemo = $creditmemos
- ->addFieldToFilter('transaction_id', $creditmemoTransactionId)
- ->getLastItem();
- } catch (\Exception $e) {
- $order->addCommentToStatusHistory(__('The refund has failed.')->render());
- $this->orderRepository->save($order);
+ return $this->completeRefund($order, $creditmemo, $isFullRefund, $amount);
+ }
- $this->fintectureLogger->error('Apply refund', [
- 'message' => "Can't find credit memo associated to order",
- 'creditmemoId' => $creditmemoTransactionId,
- 'orderIncrementId' => $order->getIncrementId(),
- 'exception' => $e,
- ]);
+ public function applyWithoutCreditmemo(Order $order, float $amount): bool
+ {
+ $refundedAmount = (float) $order->getData('fintecture_payment_refund_amount');
+ $isFullRefund = ($amount === (float) $order->getBaseGrandTotal())
+ || ($refundedAmount + $amount === (float) $order->getBaseGrandTotal());
- return false;
+ // Create a credit memo only for a full refund
+ if ($isFullRefund) {
+ $creditmemo = $this->creditmemoFactory->createByOrder($order);
+
+ return $this->apply($order, $creditmemo, $amount);
}
+ return $this->completeRefund($order, null, $isFullRefund, $amount);
+ }
+
+ private function completeRefund(Order $order, ?Creditmemo $creditmemo, bool $isFullRefund, float $amount): bool
+ {
try {
- $creditmemo->setState(Creditmemo::STATE_REFUNDED);
+ if (!is_null($creditmemo)) {
+ $creditmemo->setState(Creditmemo::STATE_REFUNDED);
- /** @var Order $order */
- $order = $this->refundAdapter->refund($creditmemo, $creditmemo->getOrder(), true);
+ /** @var Order $order */
+ $order = $this->refundAdapter->refund($creditmemo, $order);
+ }
if ($order->canUnhold()) {
$order->unhold();
}
- $order->addCommentToStatusHistory(__('The refund has been made.')->render());
+
+ $order->addCommentToStatusHistory(__('The refund of %1€ has been made.', number_format($amount, 2, ',', ' '))->render());
+
+ if ($this->config->isRefundStatusesActive()) {
+ if (!$isFullRefund) {
+ // Partial refund
+ $order->setStatus($this->config->getPartialRefundStatus());
+ }
+ }
+
+ $refundedAmount = (float) $order->getData('fintecture_payment_refund_amount');
+ $order->setData('fintecture_payment_refund_amount', $refundedAmount + $amount);
$this->orderRepository->save($order);
- $this->creditmemoRepository->save($creditmemo);
+
+ if (!is_null($creditmemo)) {
+ $this->creditmemoRepository->save($creditmemo);
+ }
$this->fintectureLogger->info('Refund completed', [
- 'creditmemoId' => $creditmemoTransactionId,
+ 'creditmemoId' => !is_null($creditmemo) ? $creditmemo->getTransactionId() : '',
'orderIncrementId' => $order->getIncrementId(),
]);
@@ -222,12 +250,12 @@ public function apply(OrderInterface $order, string $creditmemoTransactionId): b
$this->fintectureLogger->error('Apply refund', [
'message' => "Can't apply refund",
- 'creditmemoId' => $creditmemoTransactionId,
+ 'creditmemoId' => !is_null($creditmemo) ? $creditmemo->getTransactionId() : '',
'orderIncrementId' => $order->getIncrementId(),
'exception' => $e,
]);
- }
- return false;
+ return false;
+ }
}
}
diff --git a/Helper/Fintecture.php b/Helper/Fintecture.php
index c7949e9..3703b4c 100644
--- a/Helper/Fintecture.php
+++ b/Helper/Fintecture.php
@@ -10,9 +10,11 @@
use Magento\Framework\App\Helper\AbstractHelper;
use Magento\Framework\App\Helper\Context;
use Magento\Framework\HTTP\PhpEnvironment\RemoteAddress;
+use Magento\Sales\Api\Data\OrderInterface;
use Magento\Sales\Api\OrderRepositoryInterface;
use Magento\Sales\Api\TransactionRepositoryInterface;
use Magento\Sales\Model\Order;
+use Magento\Sales\Model\Order\Creditmemo;
use Magento\Sales\Model\Order\Payment\Transaction;
use Magento\Sales\Model\Order\Status\History;
use Magento\Sales\Model\ResourceModel\Order\Status\History\CollectionFactory;
@@ -21,6 +23,10 @@ class Fintecture extends AbstractHelper
{
private const PAYMENT_COMMUNICATION = 'FINTECTURE-';
+ public const PIS_TYPE = 'PayByBank';
+ public const RTP_TYPE = 'RequestToPay';
+ public const BNPL_TYPE = 'BuyNowPayLater';
+
/** @var Config */
protected $config;
@@ -119,7 +125,7 @@ public function getSessionIdByOrderId(string $orderId): ?string
/** @var Transaction|null $transaction */
$transaction = array_pop($transactionList);
if ($transaction) {
- $extraInfos = $transaction->getAdditionalInformation(\Magento\Sales\Model\Order\Payment\Transaction::RAW_DETAILS);
+ $extraInfos = $transaction->getAdditionalInformation(Transaction::RAW_DETAILS);
if ($extraInfos && isset($extraInfos['sessionId'])) {
return $extraInfos['sessionId'];
}
@@ -128,6 +134,36 @@ public function getSessionIdByOrderId(string $orderId): ?string
return null;
}
+ public function getCreditmemoByTransactionId(OrderInterface $order, string $creditmemoTransactionId): ?Creditmemo
+ {
+ try {
+ /** @var Order $order */
+ $creditmemos = $order->getCreditmemosCollection();
+ if (!$creditmemos) {
+ throw new \Exception("Can't find any creditmemo on the order");
+ }
+
+ /** @var Creditmemo $creditmemo */
+ $creditmemo = $creditmemos
+ ->addFieldToFilter('transaction_id', $creditmemoTransactionId)
+ ->getLastItem();
+
+ return $creditmemo;
+ } catch (\Exception $e) {
+ $order->addCommentToStatusHistory(__('The refund has failed.')->render());
+ $this->orderRepository->save($order);
+
+ $this->fintectureLogger->error('Apply refund', [
+ 'message' => "Can't find credit memo associated to order",
+ 'creditmemoId' => $creditmemoTransactionId,
+ 'orderIncrementId' => $order->getIncrementId(),
+ 'exception' => $e,
+ ]);
+
+ return null;
+ }
+ }
+
/**
* Get Magento statuses associated with our params
*
@@ -271,9 +307,15 @@ public function generatePayload(Order $order, string $type, string $method = '')
$street = implode(' ', $street);
}
+ $baseGrandTotal = (float) $order->getBaseGrandTotal();
+ $total = (string) round($baseGrandTotal, 2);
+
+ $baseTaxAmount = $order->getBaseTaxAmount();
+ $totalMinusTaxes = $baseGrandTotal - $baseTaxAmount;
+ $netTotal = (string) round($totalMinusTaxes, 2);
+
$payload = [
'meta' => [
- 'type' => $type,
'psu_name' => $name,
'psu_email' => $billingAddress->getEmail(),
'psu_company' => $billingAddress->getCompany(),
@@ -289,9 +331,8 @@ public function generatePayload(Order $order, string $type, string $method = '')
],
],
'data' => [
- 'type' => 'payments',
'attributes' => [
- 'amount' => (string) round((float) $order->getBaseGrandTotal(), 2),
+ 'amount' => $total,
'currency' => $order->getOrderCurrencyCode(),
'communication' => self::PAYMENT_COMMUNICATION . $order->getIncrementId(),
],
@@ -312,10 +353,18 @@ public function generatePayload(Order $order, string $type, string $method = '')
}
// Handle method for RTP
- if ($type === 'REQUEST_TO_PAY' && !empty($method)) {
+ if ($type === Fintecture::RTP_TYPE && !empty($method)) {
$payload['meta']['method'] = $method;
}
+ // BNPL
+ if ($type === Fintecture::BNPL_TYPE) {
+ $payload['meta']['payment_methods'][] = [
+ 'id' => 'bnpl',
+ ];
+ $payload['data']['attributes']['net_amount'] = $netTotal;
+ }
+
// Handle custom reconciliation field if enabled
if ($this->config->isCustomReconciliationFieldActive() && $this->config->getCustomReconciliationField()) {
$customReconciliationField = $this->config->getCustomReconciliationField();
diff --git a/Helper/Stats.php b/Helper/Stats.php
index 36f6aad..818fead 100644
--- a/Helper/Stats.php
+++ b/Helper/Stats.php
@@ -96,7 +96,7 @@ public function getConfigurationSummary(): array
'shop_domain' => $this->storeManager->getStore()->getBaseUrl(),
'shop_cms' => 'magento',
'shop_cms_version' => $this->getMagentoVersion(),
- 'module_version' => $this->config::VERSION,
+ 'module_version' => Config::VERSION,
'module_position' => '', // TODO: find way to get to find position
'shop_payment_methods' => $this->getNumberOfActivePaymentMethods(),
'module_enabled' => $this->config->isActive(),
diff --git a/Setup/InstallSchema.php b/Setup/InstallSchema.php
new file mode 100644
index 0000000..99c770e
--- /dev/null
+++ b/Setup/InstallSchema.php
@@ -0,0 +1,32 @@
+startSetup();
+
+ $connection = $setup->getConnection();
+ $connection->addColumn(
+ $setup->getTable('sales_order'),
+ 'fintecture_payment_refund_amount',
+ [
+ 'type' => Table::TYPE_DECIMAL,
+ 'nullable' => true,
+ 'length' => '20,4',
+ 'comment' => 'Total amount refunded by Fintecture',
+ ]
+ );
+
+ $setup->endSetup();
+ }
+}
diff --git a/Setup/Patch/Data/AddCustomStatusBNPL.php b/Setup/Patch/Data/AddCustomStatusBNPL.php
index a18d9b1..6b2f293 100644
--- a/Setup/Patch/Data/AddCustomStatusBNPL.php
+++ b/Setup/Patch/Data/AddCustomStatusBNPL.php
@@ -3,6 +3,7 @@
namespace Fintecture\Payment\Setup\Patch\Data;
use Magento\Framework\Setup\Patch\DataPatchInterface;
+use Magento\Sales\Model\Order;
use Magento\Sales\Model\Order\StatusFactory;
use Magento\Sales\Model\ResourceModel\Order\StatusFactory as StatusResourceFactory;
@@ -30,7 +31,7 @@ public function __construct(
public function apply()
{
- $this->addCustomStatus(self::ORDER_STATUS_ORDER_CREATED_CODE, self::ORDER_STATUS_ORDER_CREATED_LABEL);
+ $this->addCustomStatus(self::ORDER_STATUS_ORDER_CREATED_CODE, self::ORDER_STATUS_ORDER_CREATED_LABEL, Order::STATE_PROCESSING);
return $this;
}
diff --git a/Setup/Patch/Data/AddCustomStatusRefund.php b/Setup/Patch/Data/AddCustomStatusRefund.php
new file mode 100644
index 0000000..5d39eed
--- /dev/null
+++ b/Setup/Patch/Data/AddCustomStatusRefund.php
@@ -0,0 +1,69 @@
+statusFactory = $statusFactory;
+ $this->statusResourceFactory = $statusResourceFactory;
+ }
+
+ public function apply()
+ {
+ $this->addCustomStatus(self::ORDER_STATUS_PARTIAL_REFUND_CODE, self::ORDER_STATUS_PARTIAL_REFUND_LABEL);
+
+ return $this;
+ }
+
+ public function addCustomStatus(string $id, string $label, string $state = null): bool
+ {
+ $status = $this->statusFactory->create();
+ $statusResourceFactory = $this->statusResourceFactory->create();
+
+ $status->setData([
+ 'status' => $id,
+ 'label' => $label,
+ ]);
+ try {
+ $statusResourceFactory->save($status);
+ } catch (\Exception $e) {
+ return false;
+ }
+
+ if ($state) {
+ $status->assignState($state, false, true);
+ }
+
+ return true;
+ }
+
+ public static function getDependencies()
+ {
+ return [];
+ }
+
+ public function getAliases()
+ {
+ return [];
+ }
+}
diff --git a/composer.json b/composer.json
index 0887d8b..45c4925 100644
--- a/composer.json
+++ b/composer.json
@@ -7,7 +7,7 @@
"email": "contact@fintecture.com"
},
"type": "magento2-module",
- "version": "3.4.2",
+ "version": "3.5.0",
"license": [
"GPL-3.0"
],
diff --git a/etc/adminhtml/system.xml b/etc/adminhtml/system.xml
index 9b73b79..26cc758 100644
--- a/etc/adminhtml/system.xml
+++ b/etc/adminhtml/system.xml
@@ -232,9 +232,31 @@
Fintecture\Payment\Model\StatusMappingpayment/fintecture/payment_failed_status
+
+
+
+ Fintecture\Payment\Model\StatusMapping
+ payment/fintecture/refunded_status
+
+
+
+
+ Fintecture\Payment\Model\StatusMapping
+ payment/fintecture/partial_refund_status
+
+
+
+
+
+
+
+
+ Magento\Config\Model\Config\Source\Yesno
+ payment/fintecture/refund_statuses_active
+
-
+
@@ -251,7 +273,7 @@
-
+
diff --git a/etc/config.xml b/etc/config.xml
index e591031..7ce301a 100644
--- a/etc/config.xml
+++ b/etc/config.xml
@@ -14,6 +14,7 @@
111
+ 0newEUR0
@@ -31,6 +32,9 @@
fintecture_overpaidfintecture_partialcanceled
+ fintecture_refunded
+ fintecture_partial_refund
+ 00101
@@ -53,6 +57,7 @@
111
+ 0newEUR1
diff --git a/etc/module.xml b/etc/module.xml
index 01062bc..a8b1e53 100644
--- a/etc/module.xml
+++ b/etc/module.xml
@@ -1,7 +1,7 @@
-
+
diff --git a/i18n/en_US.csv b/i18n/en_US.csv
index 8b40f64..323cbea 100644
--- a/i18n/en_US.csv
+++ b/i18n/en_US.csv
@@ -1,135 +1,136 @@
-" for an express payment of your purchases."," for an express payment of your purchases."
-"*subject to eligibility","*subject to eligibility"
-"A partial payment has been made.","A partial payment has been made."
-"A problem occurred during the payment initiation with Fintecture. Please try again or choose another payment method.","A problem occurred during the payment initiation with Fintecture. Please try again or choose another payment method."
-"Accepted payment","Accepted payment"
-"Advanced settings","Advanced settings"
-"All","All"
-"Allow your professional buyers to buy now and pay later directly from your check-out. An innovative solution made for B2B merchants looking to boost their sales.","Allow your professional buyers to buy now and pay later directly from your check-out. An innovative solution made for B2B merchants looking to boost their sales."
-"Alternative payment methods for 'Login as Customer' feature","Alternative payment methods for 'Login as Customer' feature"
-"Amount","Amount"
-"Automatic expiration of pending orders after","Automatic expiration of pending orders after"
-"Automatic expiration of pending orders","Automatic expiration of pending orders"
-"Bank type","Bank type"
-"Buy Now Pay Later","Buy Now Pay Later"
-"Can't save the private key","Can't save the private key"
-"Checkout design","Checkout design"
-"Choose how to send your payment link","Choose how to send your payment link"
-"Choose the alternative payment method for 'Login as Customer' feature","Choose the alternative payment method for 'Login as Customer' feature"
-"Choose to pay by","Choose to pay by"
-"Close","Close"
-"Configure","Configure"
-"Confirm your payment securely","Confirm your payment securely"
-"Connection did not succeed. Make sure you have entered the right parameters.","Connection did not succeed. Make sure you have entered the right parameters."
-"Connection succeeded","Connection succeeded"
-"Continue","Continue"
-"Corporate","Corporate"
-"Custom field for the reconciliation","Custom field for the reconciliation"
-"Debit ","Debit "
-"Design options","Design options"
-"Enable alternative payment methods for 'Login as Customer' feature","Enable alternative payment methods for 'Login as Customer' feature"
-"Enable automatic expiration of pending orders","Enable automatic expiration of pending orders"
-"Enable custom field for the reconciliation","Enable custom field for the reconciliation"
-"Enable invoice generation for paid orders","Enable invoice generation for paid orders"
-"Enabled","Enabled"
-"Environment","Environment"
-"Failed payment","Failed payment"
-"Filter the bank type","Filter the bank type"
-"Fintecture APP ID","Fintecture APP ID"
-"Fintecture APP secret","Fintecture APP secret"
-"Fintecture is a payment institution supervised by the Banque de France and the ACPR under the N°17248.","Fintecture is a payment institution supervised by the Banque de France and the ACPR under the N°17248."
-"Fintecture private key","Fintecture private key"
-"How it works?","How it works?"
-"How to make an immediate transfer?","How to make an immediate transfer?"
-"If the payment has been made, then the order will be validated in a few moments.","If the payment has been made, then the order will be validated in a few moments."
-"If you activate this feature without having the option on your Fintecture account, your users will see an error on the payment page.","If you activate this feature without having the option on your Fintecture account, your users will see an error on the payment page."
-"Immediate Transfer & Smart Transfer","Immediate Transfer & Smart Transfer"
-"immediate transfer","immediate transfer"
-"Immediate Transfer","Immediate Transfer"
-"In 30 days","In 30 days"
-"In minutes. Minimum value: 3","In minutes. Minimum value: 3"
-"Invalid request","Invalid request"
-"Invoicing","Invoicing"
-"Login with your usual banking ID's","Login with your usual banking ID's"
-"Long version","Long version"
-"Module version:","Module version:"
-"New order status","New order status"
-"No private key file found","No private key file found"
-"Not available in all Magento versions. Check the GitHub page of our Magento plugin for conditions.","Not available in all Magento versions. Check the GitHub page of our Magento plugin for conditions."
-"or by","or by"
-"Order created status","Order created status"
-"Order is not paid with Fintecture","Order is not paid with Fintecture"
-"Order validated","Order validated"
-"Orders from this country are not supported by Fintecture. Please select a different payment option.","Orders from this country are not supported by Fintecture. Please select a different payment option."
-"Overpaid order. Amount received: ","Overpaid order. Amount received: "
-"Overpaid payment","Overpaid payment"
-"Partial payment","Partial payment"
-"Pay for your purchases instantly and securely.","Pay for your purchases instantly and securely."
-"Pay in 30 days, without fee","Pay in 30 days, without fee"
-"Pay instantly and securely directly from your bank account. Collect payments without any credit limit. Reduce your transaction fees by 40%!","Pay instantly and securely directly from your bank account. Collect payments without any credit limit. Reduce your transaction fees by 40%!"
-"Pay Now","Pay Now"
-"Pay","Pay"
-"Payment by QR Code","Payment by QR Code"
-"Payment by SMS or Email","Payment by SMS or Email"
-"Payment from applicable countries","Payment from applicable countries"
-"Payment from specific countries","Payment from specific countries"
-"Payment options","Payment options"
-"Payment status mapping between Fintecture and Magento","Payment status mapping between Fintecture and Magento"
-"Payment was initiated but has not been confirmed yet. Merchant will send confirmation once the transaction is settled.","Payment was initiated but has not been confirmed yet. Merchant will send confirmation once the transaction is settled."
-"Pending payment","Pending payment"
-"Please re-upload private key file","Please re-upload private key file"
-"Please select the message you want to display on your checkout page, depending on the payment solutions you have.","Please select the message you want to display on your checkout page, depending on the payment solutions you have."
-"Please upload private key file","Please upload private key file"
-"Private key file already saved","Private key file already saved"
-"Production","Production"
-"Retail","Retail"
-"Return to the homepage","Return to the homepage"
-"Sandbox","Sandbox"
-"Scan this QR Code to pay with Fintecture","Scan this QR Code to pay with Fintecture"
-"Secured connection to your bank by","Secured connection to your bank by"
-"Secured wire transfer","Secured wire transfer"
-"Select your bank","Select your bank"
-"Send by Email","Send by Email"
-"Send by SMS","Send by SMS"
-"Settings","Settings"
-"Short version","Short version"
-"Smart Transfer","Smart Transfer"
-"Some fields are empty","Some fields are empty"
-"Sorry, something went wrong. Please try again later.","Sorry, something went wrong. Please try again later."
-"Sort order","Sort order"
-"Test connection","Test connection"
-"The bank is validating the payment.","The bank is validating the payment."
-"The order is confirmed, you will receive the funds under 30 days.","The order is confirmed, you will receive the funds under 30 days."
-"The payer got redirected to their bank and needs to authenticate.","The payer got redirected to their bank and needs to authenticate."
-"The payment has been completed with a higher amount.","The payment has been completed with a higher amount."
-"The payment has been dropped by the payer.","The payment has been dropped by the payer."
-"The payment has been validated by the bank.","The payment has been validated by the bank."
-"The payment has failed for technical reasons.","The payment has failed for technical reasons."
-"The payment link has expired.","The payment link has expired."
-"The payment was rejected by either the payer or the bank.","The payment was rejected by either the payer or the bank."
-"The payment was unsuccessful. Please choose a different bank or different payment method.","The payment was unsuccessful. Please choose a different bank or different payment method."
-"The refund has been made.","The refund has been made."
-"The refund has failed.","The refund has failed."
-"The refund link has been send.","The refund link has been send."
-"This section is intended for advanced users. Changing the settings may impact the proper functioning of your system.","This section is intended for advanced users. Changing the settings may impact the proper functioning of your system."
-"Title","Title"
-"Today","Today"
-"traditional bank transfer","traditional bank transfer"
-"Unhandled status.","Unhandled status."
-"We can't place the order.","We can't place the order."
-"Wire transfer","Wire transfer"
-"You are a professional, buy now and pay in 30 days without any fees on the transaction.","You are a professional, buy now and pay in 30 days without any fees on the transaction."
-"You must proceed to the refund directly from the Fintecture Console with this type of account.","You must proceed to the refund directly from the Fintecture Console with this type of account."
-"You will be automatically redirected to your secured bank environment to confirm your payment.","You will be automatically redirected to your secured bank environment to confirm your payment."
-"Your payment link has been sent successfully","Your payment link has been sent successfully"
-"Your purchase is confirmed!","Your purchase is confirmed!"
-"""Recommended"" badge", """Recommended"" badge"
-"Recommend the payment method on checkout page","Recommend the payment method on checkout page"
-"RECOMMENDED","RECOMMENDED"
-"First position depending of cart amount","First position depending of cart amount"
-"Minimal cart amount to place Fintecture in first position (in €)","Minimal cart amount to place Fintecture in first position (in €)"
-"Your payment with Fintecture has been successfully processed!","Your payment with Fintecture has been successfully processed!"
-"Your payment with Fintecture is currently being processed by your bank. You can track the status of your payment using the link provided in the confirmation email.","Your payment with Fintecture is currently being processed by your bank. You can track the status of your payment using the link provided in the confirmation email."
-"The payment has been cancelled and the transaction could not be completed.","The payment has been cancelled and the transaction could not be completed."
-"The payment has failed. Please select another bank or another payment method.","The payment has failed. Please select another bank or another payment method."
-"A technical error has occurred. Please contact the merchant or Fintecture by email at %2 or via chat.","A technical error has occurred. Please contact the merchant or Fintecture by email at %2 or via chat."
\ No newline at end of file
+key_name,en_US,comment
+ for an express payment of your purchases., for an express payment of your purchases.,
+"""Recommended"" badge","""Recommended"" badge",
+*subject to eligibility,*subject to eligibility,
+A partial payment has been made.,A partial payment has been made.,
+A problem occurred during the payment initiation with Fintecture. Please try again or choose another payment method.,A problem occurred during the payment initiation with Fintecture. Please try again or choose another payment method.,
+"A technical error has occurred. Please contact the merchant or Fintecture by email at %2 or via chat.","A technical error has occurred. Please contact the merchant or Fintecture by email at %2 or via chat.",
+Accepted payment,Accepted payment,
+Advanced settings,Advanced settings,
+All,All,
+Allow your professional buyers to buy now and pay later directly from your check-out. An innovative solution made for B2B merchants looking to boost their sales.,Allow your professional buyers to buy now and pay later directly from your check-out. An innovative solution made for B2B merchants looking to boost their sales.,
+Alternative payment methods for 'Login as Customer' feature,Alternative payment methods for 'Login as Customer' feature,
+Amount,Amount,
+Automatic expiration of pending orders,Automatic expiration of pending orders,
+Automatic expiration of pending orders after,Automatic expiration of pending orders after,
+Bank type,Bank type,
+Buy Now Pay Later,Buy Now Pay Later,
+Can't save the private key,Can't save the private key,
+Checkout design,Checkout design,
+Choose how to send your payment link,Choose how to send your payment link,
+Choose the alternative payment method for 'Login as Customer' feature,Choose the alternative payment method for 'Login as Customer' feature,
+Choose to pay by,Choose to pay by,
+Close,Close,
+Configure,Configure,
+Confirm your payment securely,Confirm your payment securely,
+Connection did not succeed. Make sure you have entered the right parameters.,Connection did not succeed. Make sure you have entered the right parameters.,
+Connection succeeded,Connection succeeded,
+Continue,Continue,
+Corporate,Corporate,
+Custom field for the reconciliation,Custom field for the reconciliation,
+Debit ,Debit ,
+Design options,Design options,
+Enable alternative payment methods for 'Login as Customer' feature,Enable alternative payment methods for 'Login as Customer' feature,
+Enable automatic expiration of pending orders,Enable automatic expiration of pending orders,
+Enable custom field for the reconciliation,Enable custom field for the reconciliation,
+Enable invoice generation for paid orders,Enable invoice generation for paid orders,
+Enabled,Enabled,
+Environment,Environment,
+Failed payment,Failed payment,
+Filter the bank type,Filter the bank type,
+Fintecture APP ID,Fintecture APP ID,
+Fintecture APP secret,Fintecture APP secret,
+Fintecture is a payment institution supervised by the Banque de France and the ACPR under the N°17248.,Fintecture is a payment institution supervised by the Banque de France and the ACPR under the N°17248.,
+Fintecture private key,Fintecture private key,
+First position depending of cart amount,First position depending of cart amount,
+How it works?,How it works?,
+How to make an immediate transfer?,How to make an immediate transfer?,
+"If the payment has been made, then the order will be validated in a few moments.","If the payment has been made, then the order will be validated in a few moments.",
+"If you activate this feature without having the option on your Fintecture account, your users will see an error on the payment page.","If you activate this feature without having the option on your Fintecture account, your users will see an error on the payment page.",
+immediate transfer,immediate transfer,
+Immediate Transfer,Immediate Transfer,
+Immediate Transfer & Smart Transfer,Immediate Transfer & Smart Transfer,
+In 30 days,In 30 days,
+In minutes. Minimum value: 3,In minutes. Minimum value: 3,
+Invalid request,Invalid request,
+Invoicing,Invoicing,
+Login with your usual banking ID's,Login with your usual banking ID's,
+Long version,Long version,
+Minimal cart amount to place Fintecture in first position (in €),Minimal cart amount to place Fintecture in first position (in €),
+Module version:,Module version:,
+New order status,New order status,
+No private key file found,No private key file found,
+Not available in all Magento versions. Check the GitHub page of our Magento plugin for conditions.,Not available in all Magento versions. Check the GitHub page of our Magento plugin for conditions.,
+or by,or by,
+Order created status,Order created status,
+Order is not paid with Fintecture,Order is not paid with Fintecture,
+Order validated,Order validated,
+Orders from this country are not supported by Fintecture. Please select a different payment option.,Orders from this country are not supported by Fintecture. Please select a different payment option.,
+Overpaid order. Amount received: ,Overpaid order. Amount received: ,
+Overpaid payment,Overpaid payment,
+Partial payment,Partial payment,
+Pay,Pay,
+Pay for your purchases instantly and securely.,Pay for your purchases instantly and securely.,
+"Pay in 30 days, without fee","Pay in 30 days, without fee",
+Pay instantly and securely directly from your bank account. Collect payments without any credit limit. Reduce your transaction fees by 40%!,Pay instantly and securely directly from your bank account. Collect payments without any credit limit. Reduce your transaction fees by 40%!,
+Pay Now,Pay Now,
+Payment by QR Code,Payment by QR Code,
+Payment by SMS or Email,Payment by SMS or Email,
+Payment from applicable countries,Payment from applicable countries,
+Payment from specific countries,Payment from specific countries,
+Payment options,Payment options,
+Payment status mapping between Fintecture and Magento,Payment status mapping between Fintecture and Magento,
+Payment was initiated but has not been confirmed yet. Merchant will send confirmation once the transaction is settled.,Payment was initiated but has not been confirmed yet. Merchant will send confirmation once the transaction is settled.,
+Pending payment,Pending payment,
+Please re-upload private key file,Please re-upload private key file,
+"Please select the message you want to display on your checkout page, depending on the payment solutions you have.","Please select the message you want to display on your checkout page, depending on the payment solutions you have.",
+Please upload private key file,Please upload private key file,
+Private key file already saved,Private key file already saved,
+Production,Production,
+Recommend the payment method on checkout page,Recommend the payment method on checkout page,
+RECOMMENDED,RECOMMENDED,
+Retail,Retail,
+Return to the homepage,Return to the homepage,
+Sandbox,Sandbox,
+Scan this QR Code to pay with Fintecture,Scan this QR Code to pay with Fintecture,
+Secured connection to your bank by,Secured connection to your bank by,
+Secured wire transfer,Secured wire transfer,
+Select your bank,Select your bank,
+Send by Email,Send by Email,
+Send by SMS,Send by SMS,
+Settings,Settings,
+Short version,Short version,
+Smart Transfer,Smart Transfer,
+Some fields are empty,Some fields are empty,
+"Sorry, something went wrong. Please try again later.","Sorry, something went wrong. Please try again later.",
+Sort order,Sort order,
+Test connection,Test connection,
+The bank is validating the payment.,The bank is validating the payment.,
+"The order is confirmed, you will receive the funds under 30 days.","The order is confirmed, you will receive the funds under 30 days.",
+The payer got redirected to their bank and needs to authenticate.,The payer got redirected to their bank and needs to authenticate.,
+The payment has been cancelled and the transaction could not be completed.,The payment has been cancelled and the transaction could not be completed.,
+The payment has been completed with a higher amount.,The payment has been completed with a higher amount.,
+The payment has been dropped by the payer.,The payment has been dropped by the payer.,
+The payment has been validated by the bank.,The payment has been validated by the bank.,
+The payment has failed for technical reasons.,The payment has failed for technical reasons.,
+The payment has failed. Please select another bank or another payment method.,The payment has failed. Please select another bank or another payment method.,
+The payment link has expired.,The payment link has expired.,
+The payment was rejected by either the payer or the bank.,The payment was rejected by either the payer or the bank.,
+The payment was unsuccessful. Please choose a different bank or different payment method.,The payment was unsuccessful. Please choose a different bank or different payment method.,
+The refund has been made.,The refund has been made.,
+The refund has failed.,The refund has failed.,
+The refund link has been send.,The refund link has been send.,
+This section is intended for advanced users. Changing the settings may impact the proper functioning of your system.,This section is intended for advanced users. Changing the settings may impact the proper functioning of your system.,
+Title,Title,
+Today,Today,
+traditional bank transfer,traditional bank transfer,
+Unhandled status.,Unhandled status.,
+We can't place the order.,We can't place the order.,
+Wire transfer,Wire transfer,
+"You are a professional, buy now and pay in 30 days without any fees on the transaction.","You are a professional, buy now and pay in 30 days without any fees on the transaction.",
+You must proceed to the refund directly from the Fintecture Console with this type of account.,You must proceed to the refund directly from the Fintecture Console with this type of account.,
+You will be automatically redirected to your secured bank environment to confirm your payment.,You will be automatically redirected to your secured bank environment to confirm your payment.,
+Your payment link has been sent successfully,Your payment link has been sent successfully,
+Your payment with Fintecture has been successfully processed!,Your payment with Fintecture has been successfully processed!,
+Your payment with Fintecture is currently being processed by your bank. You can track the status of your payment using the link provided in the confirmation email.,Your payment with Fintecture is currently being processed by your bank. You can track the status of your payment using the link provided in the confirmation email.,
+Your purchase is confirmed!,Your purchase is confirmed!,
diff --git a/i18n/es_ES.csv b/i18n/es_ES.csv
index 7add9fc..49456d7 100644
--- a/i18n/es_ES.csv
+++ b/i18n/es_ES.csv
@@ -1,45 +1,46 @@
-"All","Todo"
-"Bank type","Tipo de banco"
-"Confirm your payment securely","Confirma tu pago de forma segura"
-"Connection did not succeed. Make sure you have entered the right parameters.","La conexión ha fallado. Asegúrate de haber introducido los parámetros correctos."
-"Connection succeeded","Conexión exitosa"
-"Corporate","Empresa"
-"Enabled","Activado"
-"Environment","Espacio"
-"Filter the bank type","Filtrar el tipo de banco"
-"Fintecture APP ID","APP ID de Fintecture"
-"Fintecture APP secret","App secret de Fintecture"
-"Fintecture private key","Clave privada de Fintecture"
-"Settings","Ajustes"
-"How it works?","¿Cómo funciona?"
-"Login with your usual banking ID’s","Inicia sesión con tus identificaciones bancarias habituales"
-"No private key file found","No se ha encontrado ningún archivo de Clave Privada"
-"Pay for your purchases instantly and securely.","Paga tus compras de forma inmediata y segura."
-"Pay instantly and securely directly from your bank account. Collect payments without any credit limit. Reduce your transaction fees by 40%!","Paga de forma inmediata y segura directamente desde tu aplicación bancaria. Cobra sin límite de crédito. ¡Reduce tus gastos de transacción en un 40%!"
-"Pay Now","Pagar ahora"
-"Payment from applicable countries","Pagos de países aplicables"
-"Payment from specific countries","Pagos de países específicos"
-"Payment options","Opciones de pago"
-"Payment pending","Pagos pendientes"
-"Payment was initiated but has not been confirmed yet. Merchant will send confirmation once the transaction is settled.","El pago se ha iniciado pero aún no se ha confirmado. La empresa enviará la confirmación una vez que se haya liquidado la transacción."
-"Please re-upload private key file","Por favor, vuelve a cargar el archivo de clave privada"
-"Please upload private key file","Por favor, carga el archivo de clave privada"
-"Private key file already saved","Archivo de Clave Privada guardado"
-"Production","Producción"
-"Retail","Venta al por menor"
-"Sandbox","Sandbox"
-"Select your bank","Selecciona tu banco"
-"Technical Error","Error técnico"
-"Test Connection","Conexión de prueba"
-"The buyer has either abandoned the payment flow on the banks web page","El comprador ha abandonado el proceso de pago en la página web del banco"
-"The buyer has select *Pay By Bank* as payment method","El comprador ha seleccionado *Pay by bank* como método de pago"
-"The buyer has selected a Bank in Connect and has been redirected to the Authentication page of the bank","El comprador ha seleccionado un banco en Connect y ha sido redirigido a la página de identificación del banco"
-"The payment initiation has been created successfully","La iniciación del pago se ha creado con éxito"
-"The payment was unsuccessful. Please choose a different bank or different payment method.","El pago ha fallado. Por favor, elige otro banco u otro método de pago."
-"Title","Título"
-"Upload APP Private Key","Cargar Clave Privada"
-"Use system value","Usar el valor del sistema"
-"We can't place the order.","No podemos realizar el pedido."
-"You will be automatically redirected to your secured bank environment to confirm your payment.","Serás redirigido automáticamente a tu aplicación bancaria segura para confirmar tu pago."
-"Your purchase is confirmed!","¡Tu compra ha sido confirmada!"
-"Unknown status", "Estado desconocido"
\ No newline at end of file
+key_name,es_ES,comment
+All,Todo,
+Bank type,Tipo de banco,
+Confirm your payment securely,Confirma tu pago de forma segura,
+Connection did not succeed. Make sure you have entered the right parameters.,La conexión ha fallado. Asegúrate de haber introducido los parámetros correctos.,
+Connection succeeded,Conexión exitosa,
+Corporate,Empresa,
+Enabled,Activado,
+Environment,Espacio,
+Filter the bank type,Filtrar el tipo de banco,
+Fintecture APP ID,APP ID de Fintecture,
+Fintecture APP secret,App secret de Fintecture,
+Fintecture private key,Clave privada de Fintecture,
+How it works?,¿Cómo funciona?,
+Login with your usual banking ID’s,Inicia sesión con tus identificaciones bancarias habituales,
+No private key file found,No se ha encontrado ningún archivo de Clave Privada,
+Pay for your purchases instantly and securely.,Paga tus compras de forma inmediata y segura.,
+Pay instantly and securely directly from your bank account. Collect payments without any credit limit. Reduce your transaction fees by 40%!,Paga de forma inmediata y segura directamente desde tu aplicación bancaria. Cobra sin límite de crédito. ¡Reduce tus gastos de transacción en un 40%!,
+Pay Now,Pagar ahora,
+Payment from applicable countries,Pagos de países aplicables,
+Payment from specific countries,Pagos de países específicos,
+Payment options,Opciones de pago,
+Payment pending,Pagos pendientes,
+Payment was initiated but has not been confirmed yet. Merchant will send confirmation once the transaction is settled.,El pago se ha iniciado pero aún no se ha confirmado. La empresa enviará la confirmación una vez que se haya liquidado la transacción.,
+Please re-upload private key file,"Por favor, vuelve a cargar el archivo de clave privada",
+Please upload private key file,"Por favor, carga el archivo de clave privada",
+Private key file already saved,Archivo de Clave Privada guardado,
+Production,Producción,
+Retail,Venta al por menor,
+Sandbox,Sandbox,
+Select your bank,Selecciona tu banco,
+Settings,Ajustes,
+Technical Error,Error técnico,
+Test Connection,Conexión de prueba,
+The buyer has either abandoned the payment flow on the banks web page,El comprador ha abandonado el proceso de pago en la página web del banco,
+The buyer has select *Pay By Bank* as payment method,El comprador ha seleccionado *Pay by bank* como método de pago,
+The buyer has selected a Bank in Connect and has been redirected to the Authentication page of the bank,El comprador ha seleccionado un banco en Connect y ha sido redirigido a la página de identificación del banco,
+The payment initiation has been created successfully,La iniciación del pago se ha creado con éxito,
+The payment was unsuccessful. Please choose a different bank or different payment method.,"El pago ha fallado. Por favor, elige otro banco u otro método de pago.",
+Title,Título,
+Unknown status,Estado desconocido,
+Upload APP Private Key,Cargar Clave Privada,
+Use system value,Usar el valor del sistema,
+We can't place the order.,No podemos realizar el pedido.,
+You will be automatically redirected to your secured bank environment to confirm your payment.,Serás redirigido automáticamente a tu aplicación bancaria segura para confirmar tu pago.,
+Your purchase is confirmed!,¡Tu compra ha sido confirmada!,
diff --git a/i18n/fr_FR.csv b/i18n/fr_FR.csv
index d46be0c..3f7c5f7 100644
--- a/i18n/fr_FR.csv
+++ b/i18n/fr_FR.csv
@@ -1,135 +1,136 @@
-" for an express payment of your purchases."," pour un paiement express de vos achats."
-"*subject to eligibility","*sous réserve d'éligibilité"
-"A partial payment has been made.","Un paiement partiel a été effectué."
-"A problem occurred during the payment initiation with Fintecture. Please try again or choose another payment method.","Un problème est survenu lors de l'initiation du paiement avec Fintecture. Veuillez réessayer ou choisir un autre mode de paiement."
-"Accepted payment","Paiement accepté"
-"Advanced settings","Paramètres avancés"
-"All","Tous"
-"Allow your professional buyers to buy now and pay later directly from your check-out. An innovative solution made for B2B merchants looking to boost their sales.","Permettez à vos clients professionnels d'acheter maintenant et de payer plus tard directement depuis votre checkout. Une solution innovante conçue pour les marchands B2B qui cherchent à faire décoller leur chiffre d'affaires et booster leurs ventes."
-"Alternative payment methods for 'Login as Customer' feature","Méthodes de paiement alternatives pour la fonction ""Se connecter en tant que client"""
-"Amount","Montant"
-"Automatic expiration of pending orders after","Expiration automatique des commandes en attente après"
-"Automatic expiration of pending orders","Expiration automatique des commandes en cours"
-"Bank type","Type de banque"
-"Buy Now Pay Later","Buy Now Pay Later"
-"Can't save the private key","Impossible d'enregistrer la clé privée"
-"Checkout design","Affichage sur la page de paiement"
-"Choose how to send your payment link","Choisissez comment envoyer votre lien de paiement"
-"Choose the alternative payment method for 'Login as Customer' feature","Choisissez la méthode de paiement alternative pour la fonction ""Se connecter en tant que client""."
-"Choose to pay by","Choisissez de payer par"
-"Close","Fermer"
-"Configure","Configurer"
-"Confirm your payment securely","Confirmez votre paiement en toute sécurité"
-"Connection did not succeed. Make sure you have entered the right parameters.","La connexion n'a pas abouti. Vérifiez que vous avez saisi les bons paramètres."
-"Connection succeeded","Connexion réussie"
-"Continue","Continuer"
-"Corporate","Entreprise"
-"Custom field for the reconciliation","Champ personnalisé pour le rapprochement"
-"Debit ","Prélèvement"
-"Design options","Options d'affichage"
-"Enable alternative payment methods for 'Login as Customer' feature","Activer d'autres méthodes de paiement pour la fonction ""Se connecter en tant que client"""
-"Enable automatic expiration of pending orders","Activer l'expiration automatique des commandes en attente"
-"Enable custom field for the reconciliation","Activer le champ personnalisé pour le rapprochement"
-"Enable invoice generation for paid orders","Activer la génération de factures pour les commandes payées"
-"Enabled","Activé"
-"Environment","Environnement"
-"Failed payment","Échec du paiement"
-"Filter the bank type","Filter le type de banque"
-"Fintecture APP ID","Fintecture APP ID"
-"Fintecture APP secret","Fintecture APP secret"
-"Fintecture is a payment institution supervised by the Banque de France and the ACPR under the N°17248.","Fintecture est un établissement de paiement supervisé par la Banque de France et l'ACPR sous le N°17248."
-"Fintecture private key","Clé privée de Fintecture"
-"How it works?","Comment ça marche ?"
-"How to make an immediate transfer?","Comment faire un virement immédiat ?"
-"If the payment has been made, then the order will be validated in a few moments.","Si le paiement a été effectué, la commande sera validée dans quelques instants."
-"If you activate this feature without having the option on your Fintecture account, your users will see an error on the payment page.","Si vous activez cette fonctionnalité sans avoir l'option sur votre compte Fintecture, vos utilisateurs verront une erreur sur la page de paiement."
-"Immediate Transfer & Smart Transfer","Virement Immédiat et Virement Intelligent"
-"immediate transfer","virement immédiat"
-"Immediate Transfer","Virement immédiat"
-"In 30 days","Dans 30 jours"
-"In minutes. Minimum value: 3","En minutes. Valeur minimale : 3"
-"Invalid request","Reqûete non valide"
-"Invoicing","Facturation"
-"Login with your usual banking ID's","Connectez-vous avec vos identifiants bancaires habituels"
-"Long version","Version longue"
-"Module version:","Version du module :"
-"New order status","Statut de la nouvelle commande"
-"No private key file found","Aucun fichier de clé privée n'a été trouvé"
-"Not available in all Magento versions. Check the GitHub page of our Magento plugin for conditions.","Pas disponible dans toutes les versions de Magento. Consultez la page GitHub de notre plugin Magento pour les conditions."
-"or by","ou par"
-"Order created status","Statut de la commande créé"
-"Order is not paid with Fintecture","La commande n'est pas payée avec Fintecture"
-"Order validated","Commande validée"
-"Orders from this country are not supported by Fintecture. Please select a different payment option.","Les commandes en provenance de ce pays ne sont pas prises en charge par Fintecture. Veuillez sélectionner une autre option de paiement."
-"Overpaid order. Amount received: ","Commande excédentaire. Montant reçu : "
-"Overpaid payment","Paiement avec surplus"
-"Partial payment","Paiement partiel"
-"Pay for your purchases instantly and securely.","Payez vos achats instantanément et en toute sécurité."
-"Pay in 30 days, without fee","Payer dans 30 jours, sans frais"
-"Pay instantly and securely directly from your bank account. Collect payments without any credit limit. Reduce your transaction fees by 40%!","Payez instantanément et en toute sécurité directement à partir de votre compte bancaire. Collectez des paiements sans limite de crédit. Réduisez vos frais de transaction de 40% !"
-"Pay Now","Payer immédiatement"
-"Pay","Payer"
-"Payment by QR Code","Paiement par QR Code"
-"Payment by SMS or Email","Paiement par SMS ou par e-mail"
-"Payment from applicable countries","Paiement à partir des pays autorisés"
-"Payment from specific countries","Paiement à partir de pays spécifiques"
-"Payment options","Option de paiement"
-"Payment status mapping between Fintecture and Magento","Mappage des statuts de paiement entre Fintecture et Magento"
-"Payment was initiated but has not been confirmed yet. Merchant will send confirmation once the transaction is settled.","Le paiement a été initié mais n'a pas encore été confirmé. Le marchand enverra une confirmation une fois la transaction réglée."
-"Pending payment","Paiement en attente"
-"Please re-upload private key file","Veuillez télécharger à nouveau le fichier de la clé privée"
-"Please select the message you want to display on your checkout page, depending on the payment solutions you have.","Veuillez choisir le message que vous voulez afficher sur votre page de paiement, selon les solutions de paiement dont vous disposez."
-"Please upload private key file","Veuillez télécharger le fichier de la clé privée"
-"Private key file already saved","Fichier de clé privée déjà enregistré"
-"Production","Production"
-"QR Code error: no URL provided","Erreur de QR Code : pas d'URL fournie"
-"Retail","Particulier"
-"Return to the homepage","Retour à la page d'accueil"
-"Sandbox","Sandbox"
-"Scan this QR Code to pay with Fintecture","Scanner ce QR Code pour payer avec Fintecture"
-"Secured connection to your bank by","Connexion sécurisée à votre banque par"
-"Secured wire transfer","Virement sécurisé"
-"Select your bank","Sélectionnez votre banque"
-"Send by Email","Envoyer par mail"
-"Send by SMS","Envoyer par SMS"
-"Settings","Paramètres"
-"Short version","Version courte"
-"Smart Transfer","Virement Intelligent"
-"Some fields are empty","Certains champs sont vides"
-"Sorry, something went wrong. Please try again later.","Désolé, quelque chose s'est mal passé. Veuillez réessayer plus tard."
-"Sort order","Ordre de tri"
-"Test connection","Test de connexion"
-"The bank is validating the payment.","La banque valide le paiement."
-"The order is confirmed, you will receive the funds under 30 days.","La commande est confirmée, vous recevrez les fonds sous 30 jours."
-"The payer got redirected to their bank and needs to authenticate.","Le payeur a été redirigé vers sa banque et doit s'authentifier."
-"The payment has been completed with a higher amount.","Le paiement a été effectué avec un montant plus élevé."
-"The payment has been dropped by the payer.","Le paiement a été abandonné par le payeur."
-"The payment has been validated by the bank.","Le paiement a été validé par la banque."
-"The payment has failed for technical reasons.","Le paiement a échoué pour des raisons techniques."
-"The payment link has expired.","Le lien de paiement a expiré."
-"The payment was rejected by either the payer or the bank.","Le paiement a été rejeté par le payeur ou la banque."
-"The payment was unsuccessful. Please choose a different bank or different payment method.","Le paiement n'a pas abouti. Veuillez choisir une autre banque ou un autre mode de paiement."
-"The refund has been made.","Le remboursement a été effectué."
-"The refund has failed.","Le remboursement a échoué."
-"The refund link has been send.","Le lien de remboursement a été envoyé."
-"This section is intended for advanced users. Changing the settings may impact the proper functioning of your system.","Cette section est destinée aux utilisateurs avancés. La modification des paramètres peut avoir un impact sur le bon fonctionnement de votre système."
-"Title","Titre"
-"Today","Aujourd'hui"
-"traditional bank transfer","virement bancaire traditionnel"
-"Unhandled status.","Statut non géré."
-"We can't place the order.","Nous ne pouvons pas passer la commande."
-"Wire transfer","Virement bancaire"
-"You are a professional, buy now and pay in 30 days without any fees on the transaction.","Vous êtes un professionnel, achetez maintenant et payez dans 30 jours sans aucun frais sur la transaction."
-"You will be automatically redirected to your secured bank environment to confirm your payment.","Vous serez automatiquement redirigé vers votre environnement bancaire sécurisé pour confirmer votre paiement."
-"Your payment link has been sent successfully","Votre lien de paiement a bien été envoyé"
-"Your purchase is confirmed!","Votre achat est confirmé !"
-"""Recommended"" badge", "Badge ""recommandé"""
-"Recommend the payment method on checkout page","Recommander la méthode de paiement dans la page de paiement"
-"RECOMMENDED","RECOMMANDÉ"
-"First position depending of cart amount","Première position en fonction du montant du panier"
-"Minimal cart amount to place Fintecture in first position (in €)","Montant minimum du panier pour placer Fintecture en première position (en €)"
-"Your payment with Fintecture has been successfully processed!","Le paiement Fintecture a été réalisé avec succès !"
-"Your payment with Fintecture is currently being processed by your bank. You can track the status of your payment using the link provided in the confirmation email.","Le paiement Fintecture est en cours de traitement par votre banque. Vous pouvez suivre l'état de votre paiement en utilisant le lien présent dans l'e-mail de confirmation."
-"The payment has been cancelled and the transaction could not be completed.","Le paiement a été annulé et la transaction n’a pas pu aboutir."
-"The payment has failed. Please select another bank or another payment method.","Le paiement a échoué. Merci de sélectionner une autre banque ou une autre méthode de paiement."
-"A technical error has occurred. Please contact the merchant or Fintecture by email at %2 or via chat.","Une erreur technique est survenue. Merci de contacter le marchand ou Fintecture par mail à %2 ou par chat."
+key_name,fr_FR,comment
+ for an express payment of your purchases., pour un paiement express de vos achats.,
+"""Recommended"" badge","Badge ""recommandé""",
+*subject to eligibility,*sous réserve d'éligibilité,
+A partial payment has been made.,Un paiement partiel a été effectué.,
+A problem occurred during the payment initiation with Fintecture. Please try again or choose another payment method.,Un problème est survenu lors de l'initiation du paiement avec Fintecture. Veuillez réessayer ou choisir un autre mode de paiement.,
+"A technical error has occurred. Please contact the merchant or Fintecture by email at %2 or via chat.","Une erreur technique est survenue. Merci de contacter le marchand ou Fintecture par mail à %2 ou par chat.",
+Accepted payment,Paiement accepté,
+Advanced settings,Paramètres avancés,
+All,Tous,
+Allow your professional buyers to buy now and pay later directly from your check-out. An innovative solution made for B2B merchants looking to boost their sales.,Permettez à vos clients professionnels d'acheter maintenant et de payer plus tard directement depuis votre checkout. Une solution innovante conçue pour les marchands B2B qui cherchent à faire décoller leur chiffre d'affaires et booster leurs ventes.,
+Alternative payment methods for 'Login as Customer' feature,"Méthodes de paiement alternatives pour la fonction ""Se connecter en tant que client""",
+Amount,Montant,
+Automatic expiration of pending orders,Expiration automatique des commandes en cours,
+Automatic expiration of pending orders after,Expiration automatique des commandes en attente après,
+Bank type,Type de banque,
+Buy Now Pay Later,Buy Now Pay Later,
+Can't save the private key,Impossible d'enregistrer la clé privée,
+Checkout design,Affichage sur la page de paiement,
+Choose how to send your payment link,Choisissez comment envoyer votre lien de paiement,
+Choose the alternative payment method for 'Login as Customer' feature,"Choisissez la méthode de paiement alternative pour la fonction ""Se connecter en tant que client"".",
+Choose to pay by,Choisissez de payer par,
+Close,Fermer,
+Configure,Configurer,
+Confirm your payment securely,Confirmez votre paiement en toute sécurité,
+Connection did not succeed. Make sure you have entered the right parameters.,La connexion n'a pas abouti. Vérifiez que vous avez saisi les bons paramètres.,
+Connection succeeded,Connexion réussie,
+Continue,Continuer,
+Corporate,Entreprise,
+Custom field for the reconciliation,Champ personnalisé pour le rapprochement,
+Debit ,Prélèvement,
+Design options,Options d'affichage,
+Enable alternative payment methods for 'Login as Customer' feature,"Activer d'autres méthodes de paiement pour la fonction ""Se connecter en tant que client""",
+Enable automatic expiration of pending orders,Activer l'expiration automatique des commandes en attente,
+Enable custom field for the reconciliation,Activer le champ personnalisé pour le rapprochement,
+Enable invoice generation for paid orders,Activer la génération de factures pour les commandes payées,
+Enabled,Activé,
+Environment,Environnement,
+Failed payment,Échec du paiement,
+Filter the bank type,Filter le type de banque,
+Fintecture APP ID,Fintecture APP ID,
+Fintecture APP secret,Fintecture APP secret,
+Fintecture is a payment institution supervised by the Banque de France and the ACPR under the N°17248.,Fintecture est un établissement de paiement supervisé par la Banque de France et l'ACPR sous le N°17248.,
+Fintecture private key,Clé privée de Fintecture,
+First position depending of cart amount,Première position en fonction du montant du panier,
+How it works?,Comment ça marche ?,
+How to make an immediate transfer?,Comment faire un virement immédiat ?,
+"If the payment has been made, then the order will be validated in a few moments.","Si le paiement a été effectué, la commande sera validée dans quelques instants.",
+"If you activate this feature without having the option on your Fintecture account, your users will see an error on the payment page.","Si vous activez cette fonctionnalité sans avoir l'option sur votre compte Fintecture, vos utilisateurs verront une erreur sur la page de paiement.",
+immediate transfer,virement immédiat,
+Immediate Transfer,Virement immédiat,
+Immediate Transfer & Smart Transfer,Virement Immédiat et Virement Intelligent,
+In 30 days,Dans 30 jours,
+In minutes. Minimum value: 3,En minutes. Valeur minimale : 3,
+Invalid request,Reqûete non valide,
+Invoicing,Facturation,
+Login with your usual banking ID's,Connectez-vous avec vos identifiants bancaires habituels,
+Long version,Version longue,
+Minimal cart amount to place Fintecture in first position (in €),Montant minimum du panier pour placer Fintecture en première position (en €),
+Module version:,Version du module :,
+New order status,Statut de la nouvelle commande,
+No private key file found,Aucun fichier de clé privée n'a été trouvé,
+Not available in all Magento versions. Check the GitHub page of our Magento plugin for conditions.,Pas disponible dans toutes les versions de Magento. Consultez la page GitHub de notre plugin Magento pour les conditions.,
+or by,ou par,
+Order created status,Statut de la commande créé,
+Order is not paid with Fintecture,La commande n'est pas payée avec Fintecture,
+Order validated,Commande validée,
+Orders from this country are not supported by Fintecture. Please select a different payment option.,Les commandes en provenance de ce pays ne sont pas prises en charge par Fintecture. Veuillez sélectionner une autre option de paiement.,
+Overpaid order. Amount received: ,Commande excédentaire. Montant reçu : ,
+Overpaid payment,Paiement avec surplus,
+Partial payment,Paiement partiel,
+Pay,Payer,
+Pay for your purchases instantly and securely.,Payez vos achats instantanément et en toute sécurité.,
+"Pay in 30 days, without fee","Payer dans 30 jours, sans frais",
+Pay instantly and securely directly from your bank account. Collect payments without any credit limit. Reduce your transaction fees by 40%!,Payez instantanément et en toute sécurité directement à partir de votre compte bancaire. Collectez des paiements sans limite de crédit. Réduisez vos frais de transaction de 40% !,
+Pay Now,Payer immédiatement,
+Payment by QR Code,Paiement par QR Code,
+Payment by SMS or Email,Paiement par SMS ou par e-mail,
+Payment from applicable countries,Paiement à partir des pays autorisés,
+Payment from specific countries,Paiement à partir de pays spécifiques,
+Payment options,Option de paiement,
+Payment status mapping between Fintecture and Magento,Mappage des statuts de paiement entre Fintecture et Magento,
+Payment was initiated but has not been confirmed yet. Merchant will send confirmation once the transaction is settled.,Le paiement a été initié mais n'a pas encore été confirmé. Le marchand enverra une confirmation une fois la transaction réglée.,
+Pending payment,Paiement en attente,
+Please re-upload private key file,Veuillez télécharger à nouveau le fichier de la clé privée,
+"Please select the message you want to display on your checkout page, depending on the payment solutions you have.","Veuillez choisir le message que vous voulez afficher sur votre page de paiement, selon les solutions de paiement dont vous disposez.",
+Please upload private key file,Veuillez télécharger le fichier de la clé privée,
+Private key file already saved,Fichier de clé privée déjà enregistré,
+Production,Production,
+QR Code error: no URL provided,Erreur de QR Code : pas d'URL fournie,
+Recommend the payment method on checkout page,Recommander la méthode de paiement dans la page de paiement,
+RECOMMENDED,RECOMMANDÉ,
+Retail,Particulier,
+Return to the homepage,Retour à la page d'accueil,
+Sandbox,Sandbox,
+Scan this QR Code to pay with Fintecture,Scanner ce QR Code pour payer avec Fintecture,
+Secured connection to your bank by,Connexion sécurisée à votre banque par,
+Secured wire transfer,Virement sécurisé,
+Select your bank,Sélectionnez votre banque,
+Send by Email,Envoyer par mail,
+Send by SMS,Envoyer par SMS,
+Settings,Paramètres,
+Short version,Version courte,
+Smart Transfer,Virement Intelligent,
+Some fields are empty,Certains champs sont vides,
+"Sorry, something went wrong. Please try again later.","Désolé, quelque chose s'est mal passé. Veuillez réessayer plus tard.",
+Sort order,Ordre de tri,
+Test connection,Test de connexion,
+The bank is validating the payment.,La banque valide le paiement.,
+"The order is confirmed, you will receive the funds under 30 days.","La commande est confirmée, vous recevrez les fonds sous 30 jours.",
+The payer got redirected to their bank and needs to authenticate.,Le payeur a été redirigé vers sa banque et doit s'authentifier.,
+The payment has been cancelled and the transaction could not be completed.,Le paiement a été annulé et la transaction n’a pas pu aboutir.,
+The payment has been completed with a higher amount.,Le paiement a été effectué avec un montant plus élevé.,
+The payment has been dropped by the payer.,Le paiement a été abandonné par le payeur.,
+The payment has been validated by the bank.,Le paiement a été validé par la banque.,
+The payment has failed for technical reasons.,Le paiement a échoué pour des raisons techniques.,
+The payment has failed. Please select another bank or another payment method.,Le paiement a échoué. Merci de sélectionner une autre banque ou une autre méthode de paiement.,
+The payment link has expired.,Le lien de paiement a expiré.,
+The payment was rejected by either the payer or the bank.,Le paiement a été rejeté par le payeur ou la banque.,
+The payment was unsuccessful. Please choose a different bank or different payment method.,Le paiement n'a pas abouti. Veuillez choisir une autre banque ou un autre mode de paiement.,
+The refund has been made.,Le remboursement a été effectué.,
+The refund has failed.,Le remboursement a échoué.,
+The refund link has been send.,Le lien de remboursement a été envoyé.,
+This section is intended for advanced users. Changing the settings may impact the proper functioning of your system.,Cette section est destinée aux utilisateurs avancés. La modification des paramètres peut avoir un impact sur le bon fonctionnement de votre système.,
+Title,Titre,
+Today,Aujourd'hui,
+traditional bank transfer,virement bancaire traditionnel,
+Unhandled status.,Statut non géré.,
+We can't place the order.,Nous ne pouvons pas passer la commande.,
+Wire transfer,Virement bancaire,
+"You are a professional, buy now and pay in 30 days without any fees on the transaction.","Vous êtes un professionnel, achetez maintenant et payez dans 30 jours sans aucun frais sur la transaction.",
+You will be automatically redirected to your secured bank environment to confirm your payment.,Vous serez automatiquement redirigé vers votre environnement bancaire sécurisé pour confirmer votre paiement.,
+Your payment link has been sent successfully,Votre lien de paiement a bien été envoyé,
+Your payment with Fintecture has been successfully processed!,Le paiement Fintecture a été réalisé avec succès !,
+Your payment with Fintecture is currently being processed by your bank. You can track the status of your payment using the link provided in the confirmation email.,Le paiement Fintecture est en cours de traitement par votre banque. Vous pouvez suivre l'état de votre paiement en utilisant le lien présent dans l'e-mail de confirmation.,
+Your purchase is confirmed!,Votre achat est confirmé !,
diff --git a/view/frontend/web/css/style.css b/view/frontend/web/css/style.css
index 764f0fb..121fbf6 100644
--- a/view/frontend/web/css/style.css
+++ b/view/frontend/web/css/style.css
@@ -17,6 +17,7 @@
margin: 0 !important;
color: #141414;
line-height: 1.1em;
+ word-break: break-word;
}
.fintecture-alert p a {
@@ -205,6 +206,17 @@
background-size: contain;
}
+@media only screen and (max-width: 768px) {
+ .checkout-index-index .fintecture-alert {
+ /*
+ to avoid overlap with fintecture alerts
+ cause by .opc-estimated-wrapper / margin: -21px -15px 15px;
+ 20 + 21 = 41
+ */
+ margin-bottom: 41px;
+ }
+}
+
@media screen and (max-width: 640px) {
.checkout_block {
padding-left: 32px;