diff --git a/Controller/Checkout/Exchange.php b/Controller/Checkout/Exchange.php index 0692f725..ce46a481 100755 --- a/Controller/Checkout/Exchange.php +++ b/Controller/Checkout/Exchange.php @@ -182,6 +182,15 @@ public function execute() } } + if ($transaction->isChargeBack() && substr($action, 0, 10) == 'chargeback') { + try { + $response = $this->payPayment->chargebackOrder($orderEntityId); + } catch (Exception $e) { + $response = $e->getMessage(); + } + return $this->result->setContents($response === true ? 'TRUE|Chargeback success' : 'FALSE|' . $response); + } + if ($order->getTotalDue() <= 0) { $this->payHelper->logDebug($action . '. Ignoring - already paid: ' . $orderEntityId); if (!$this->config->registerPartialPayments()) { diff --git a/Model/Config.php b/Model/Config.php index 0d007f20..92ea6fa1 100755 --- a/Model/Config.php +++ b/Model/Config.php @@ -571,6 +571,14 @@ public function refundFromPay() return $this->store->getConfig('payment/paynl/allow_refund_from_pay'); } + /** + * @return string|null + */ + public function chargebackFromPayEnabled() + { + return $this->store->getConfig('payment/paynl/allow_chargeback_from_pay'); + } + /** * @param string $paymentProfileId * @return mixed|void diff --git a/Model/PayPayment.php b/Model/PayPayment.php index 574e01c6..239b7d73 100644 --- a/Model/PayPayment.php +++ b/Model/PayPayment.php @@ -193,6 +193,28 @@ public function uncancelOrder(Order $order) $this->eventManager->dispatch('order_uncancel_after', ['order' => $order]); } + /** + * @param integer $orderEntityId + * @return true + * @throws \Exception + */ + public function chargebackOrder($orderEntityId) + { + $order = $this->orderRepository->get($orderEntityId); + if (!$this->config->chargebackFromPayEnabled() || $order->getTotalDue() != 0 || $order->getBaseTotalRefunded() == $order->getBaseGrandTotal()) { + throw new \Exception("Ignoring chargeback"); + } + try { + $creditmemo = $this->cmFac->createByOrder($order); + $this->cmService->refund($creditmemo); + $order->addStatusHistoryComment(__('PAY. - Chargeback initiated by customer'))->save(); + } catch (\Exception $e) { + $this->payHelper->logDebug('Chargeback failed:', ['error' => $e->getMessage(), 'orderEntityId' => $orderEntityId]); + throw new \Exception('Could not chargeback'); + } + return true; + } + /** * @param integer $orderEntityId * @return true diff --git a/etc/adminhtml/system.xml b/etc/adminhtml/system.xml index 81b7859e..36bfd512 100755 --- a/etc/adminhtml/system.xml +++ b/etc/adminhtml/system.xml @@ -139,6 +139,15 @@ On - via Sherpa - Capture automatically via Sherpa. Paynl\Payment\Model\Config\Source\OffOn payment/paynl/allow_refund_from_pay + + + + + + When this settings is enabled, chargebacks initiated by customers will refund the order in Magento. + Paynl\Payment\Model\Config\Source\OffOn + payment/paynl/allow_chargeback_from_pay + diff --git a/i18n/de_AT.csv b/i18n/de_AT.csv index 081bc133..74a85435 100644 --- a/i18n/de_AT.csv +++ b/i18n/de_AT.csv @@ -174,4 +174,5 @@ On - via Sherpa - Capture automatically via Sherpa.","Aus – Keine automatische Ein – Zahlungen mit dem Status AUTORISIEREN automatisch erfassen, wenn eine Sendung in Magento erstellt wird (Picqer wird dabei auch unterstützt). Ein – über Wuunder – Automatische Erfassung über Wuunder. Ein – über Sherpa – Automatische Erfassung über Sherpa." -"When the store currency deviates from the base currency setting in Magento, this setting will ensure the payment starts in the base currency instead of the store currency.","When the store currency deviates from the base currency setting in Magento, this setting will ensure the payment starts in the base currency instead of the store currency." \ No newline at end of file +"When the store currency deviates from the base currency setting in Magento, this setting will ensure the payment starts in the base currency instead of the store currency.","When the store currency deviates from the base currency setting in Magento, this setting will ensure the payment starts in the base currency instead of the store currency." +"When this settings is enabled, chargebacks initiated by customers will refund the order in Magento.","" \ No newline at end of file diff --git a/i18n/de_CH.csv b/i18n/de_CH.csv index 90461160..57ee757c 100644 --- a/i18n/de_CH.csv +++ b/i18n/de_CH.csv @@ -174,4 +174,7 @@ On - via Sherpa - Capture automatically via Sherpa.","Aus – Keine automatische Ein – Zahlungen mit dem Status AUTORISIEREN automatisch erfassen, wenn eine Sendung in Magento erstellt wird (Picqer wird dabei auch unterstützt). Ein – über Wuunder – Automatische Erfassung über Wuunder. Ein – über Sherpa – Automatische Erfassung über Sherpa." -"When the store currency deviates from the base currency setting in Magento, this setting will ensure the payment starts in the base currency instead of the store currency.","Wenn die Shopwährung von der Basiswährungseinstellung in Magento abweicht, sorgt diese Einstellung dafür, dass die Zahlung in der Basiswährung und nicht in der Shopwährung beginnt." \ No newline at end of file +"When the store currency deviates from the base currency setting in Magento, this setting will ensure the payment starts in the base currency instead of the store currency.","Wenn die Shopwährung von der Basiswährungseinstellung in Magento abweicht, sorgt diese Einstellung dafür, dass die Zahlung in der Basiswährung und nicht in der Shopwährung beginnt." +"Chargebacks","Rückbuchungen" +"Set to `on` to accept chargebacks initiated from Pay.","Setzen Sie diese Option auf "Ein", um von Pay initiierte Rückbuchungen zu akzeptieren." +"When this settings is enabled, chargebacks initiated by customers will refund the order in Magento.","Wenn diese Einstellung aktiviert ist, werden Rückbuchungen, die von Kunden initiiert wurden, in Magento erstattet." \ No newline at end of file diff --git a/i18n/de_DE.csv b/i18n/de_DE.csv index 90461160..57ee757c 100644 --- a/i18n/de_DE.csv +++ b/i18n/de_DE.csv @@ -174,4 +174,7 @@ On - via Sherpa - Capture automatically via Sherpa.","Aus – Keine automatische Ein – Zahlungen mit dem Status AUTORISIEREN automatisch erfassen, wenn eine Sendung in Magento erstellt wird (Picqer wird dabei auch unterstützt). Ein – über Wuunder – Automatische Erfassung über Wuunder. Ein – über Sherpa – Automatische Erfassung über Sherpa." -"When the store currency deviates from the base currency setting in Magento, this setting will ensure the payment starts in the base currency instead of the store currency.","Wenn die Shopwährung von der Basiswährungseinstellung in Magento abweicht, sorgt diese Einstellung dafür, dass die Zahlung in der Basiswährung und nicht in der Shopwährung beginnt." \ No newline at end of file +"When the store currency deviates from the base currency setting in Magento, this setting will ensure the payment starts in the base currency instead of the store currency.","Wenn die Shopwährung von der Basiswährungseinstellung in Magento abweicht, sorgt diese Einstellung dafür, dass die Zahlung in der Basiswährung und nicht in der Shopwährung beginnt." +"Chargebacks","Rückbuchungen" +"Set to `on` to accept chargebacks initiated from Pay.","Setzen Sie diese Option auf "Ein", um von Pay initiierte Rückbuchungen zu akzeptieren." +"When this settings is enabled, chargebacks initiated by customers will refund the order in Magento.","Wenn diese Einstellung aktiviert ist, werden Rückbuchungen, die von Kunden initiiert wurden, in Magento erstattet." \ No newline at end of file diff --git a/i18n/de_LU.csv b/i18n/de_LU.csv index 90461160..57ee757c 100644 --- a/i18n/de_LU.csv +++ b/i18n/de_LU.csv @@ -174,4 +174,7 @@ On - via Sherpa - Capture automatically via Sherpa.","Aus – Keine automatische Ein – Zahlungen mit dem Status AUTORISIEREN automatisch erfassen, wenn eine Sendung in Magento erstellt wird (Picqer wird dabei auch unterstützt). Ein – über Wuunder – Automatische Erfassung über Wuunder. Ein – über Sherpa – Automatische Erfassung über Sherpa." -"When the store currency deviates from the base currency setting in Magento, this setting will ensure the payment starts in the base currency instead of the store currency.","Wenn die Shopwährung von der Basiswährungseinstellung in Magento abweicht, sorgt diese Einstellung dafür, dass die Zahlung in der Basiswährung und nicht in der Shopwährung beginnt." \ No newline at end of file +"When the store currency deviates from the base currency setting in Magento, this setting will ensure the payment starts in the base currency instead of the store currency.","Wenn die Shopwährung von der Basiswährungseinstellung in Magento abweicht, sorgt diese Einstellung dafür, dass die Zahlung in der Basiswährung und nicht in der Shopwährung beginnt." +"Chargebacks","Rückbuchungen" +"Set to `on` to accept chargebacks initiated from Pay.","Setzen Sie diese Option auf "Ein", um von Pay initiierte Rückbuchungen zu akzeptieren." +"When this settings is enabled, chargebacks initiated by customers will refund the order in Magento.","Wenn diese Einstellung aktiviert ist, werden Rückbuchungen, die von Kunden initiiert wurden, in Magento erstattet." \ No newline at end of file diff --git a/i18n/en_US.csv b/i18n/en_US.csv index 30b308fb..ac9468dd 100644 --- a/i18n/en_US.csv +++ b/i18n/en_US.csv @@ -225,4 +225,7 @@ On - via Sherpa - Capture automatically via Sherpa.","Off - No autocapture. On - Automatically capture payments with the status AUTHORIZE when a shipment is created in Magento (Picqer is also supported in this). On - via Wuunder - Capture automatically via Wuunder. On - via Sherpa - Capture automatically via Sherpa." -"When the store currency deviates from the base currency setting in Magento, this setting will ensure the payment starts in the base currency instead of the store currency.","When the store currency deviates from the base currency setting in Magento, this setting will ensure the payment starts in the base currency instead of the store currency." \ No newline at end of file +"When the store currency deviates from the base currency setting in Magento, this setting will ensure the payment starts in the base currency instead of the store currency.","When the store currency deviates from the base currency setting in Magento, this setting will ensure the payment starts in the base currency instead of the store currency." +"Chargebacks","Chargebacks" +"Set to `on` to accept chargebacks initiated from Pay.","Set to `on` to accept chargebacks initiated from Pay." +"When this settings is enabled, chargebacks initiated by customers will refund the order in Magento.","When this settings is enabled, chargebacks initiated by customers will refund the order in Magento." \ No newline at end of file diff --git a/i18n/fr_BE.csv b/i18n/fr_BE.csv index fe7f3164..ce6617fc 100644 --- a/i18n/fr_BE.csv +++ b/i18n/fr_BE.csv @@ -173,4 +173,7 @@ On - via Sherpa - Capture automatically via Sherpa.","Désactivé - Pas de captu Activé - Capturer automatiquement les paiements avec le statut AUTORISER lorsqu'un envoi est créé dans Magento (Picqer est également pris en charge dans ce domaine). Activé - via Wuunder - Capture automatique via Wuunder. Activé - via Sherpa - Capture automatique via Sherpa." -"When the store currency deviates from the base currency setting in Magento, this setting will ensure the payment starts in the base currency instead of the store currency.","Lorsque la devise du magasin diffère de la devise de base dans Magento, ce paramètre garantit que le paiement commence dans la devise de base au lieu de la devise du magasin." \ No newline at end of file +"When the store currency deviates from the base currency setting in Magento, this setting will ensure the payment starts in the base currency instead of the store currency.","Lorsque la devise du magasin diffère de la devise de base dans Magento, ce paramètre garantit que le paiement commence dans la devise de base au lieu de la devise du magasin." +"Chargebacks","Refacturation" +"Set to `on` to accept chargebacks initiated from Pay.","Réglez ce paramètre sur "on" pour accepter les rétrofacturations initiées par Pay." +"When this settings is enabled, chargebacks initiated by customers will refund the order in Magento.","Lorsque ce paramètre est activé, les rétrocessions initiées par les clients rembourseront la commande dans Magento." \ No newline at end of file diff --git a/i18n/fr_CA.csv b/i18n/fr_CA.csv index fe7f3164..ce6617fc 100644 --- a/i18n/fr_CA.csv +++ b/i18n/fr_CA.csv @@ -173,4 +173,7 @@ On - via Sherpa - Capture automatically via Sherpa.","Désactivé - Pas de captu Activé - Capturer automatiquement les paiements avec le statut AUTORISER lorsqu'un envoi est créé dans Magento (Picqer est également pris en charge dans ce domaine). Activé - via Wuunder - Capture automatique via Wuunder. Activé - via Sherpa - Capture automatique via Sherpa." -"When the store currency deviates from the base currency setting in Magento, this setting will ensure the payment starts in the base currency instead of the store currency.","Lorsque la devise du magasin diffère de la devise de base dans Magento, ce paramètre garantit que le paiement commence dans la devise de base au lieu de la devise du magasin." \ No newline at end of file +"When the store currency deviates from the base currency setting in Magento, this setting will ensure the payment starts in the base currency instead of the store currency.","Lorsque la devise du magasin diffère de la devise de base dans Magento, ce paramètre garantit que le paiement commence dans la devise de base au lieu de la devise du magasin." +"Chargebacks","Refacturation" +"Set to `on` to accept chargebacks initiated from Pay.","Réglez ce paramètre sur "on" pour accepter les rétrofacturations initiées par Pay." +"When this settings is enabled, chargebacks initiated by customers will refund the order in Magento.","Lorsque ce paramètre est activé, les rétrocessions initiées par les clients rembourseront la commande dans Magento." \ No newline at end of file diff --git a/i18n/fr_CH.csv b/i18n/fr_CH.csv index fe7f3164..ce6617fc 100644 --- a/i18n/fr_CH.csv +++ b/i18n/fr_CH.csv @@ -173,4 +173,7 @@ On - via Sherpa - Capture automatically via Sherpa.","Désactivé - Pas de captu Activé - Capturer automatiquement les paiements avec le statut AUTORISER lorsqu'un envoi est créé dans Magento (Picqer est également pris en charge dans ce domaine). Activé - via Wuunder - Capture automatique via Wuunder. Activé - via Sherpa - Capture automatique via Sherpa." -"When the store currency deviates from the base currency setting in Magento, this setting will ensure the payment starts in the base currency instead of the store currency.","Lorsque la devise du magasin diffère de la devise de base dans Magento, ce paramètre garantit que le paiement commence dans la devise de base au lieu de la devise du magasin." \ No newline at end of file +"When the store currency deviates from the base currency setting in Magento, this setting will ensure the payment starts in the base currency instead of the store currency.","Lorsque la devise du magasin diffère de la devise de base dans Magento, ce paramètre garantit que le paiement commence dans la devise de base au lieu de la devise du magasin." +"Chargebacks","Refacturation" +"Set to `on` to accept chargebacks initiated from Pay.","Réglez ce paramètre sur "on" pour accepter les rétrofacturations initiées par Pay." +"When this settings is enabled, chargebacks initiated by customers will refund the order in Magento.","Lorsque ce paramètre est activé, les rétrocessions initiées par les clients rembourseront la commande dans Magento." \ No newline at end of file diff --git a/i18n/fr_FR.csv b/i18n/fr_FR.csv index fe7f3164..ce6617fc 100644 --- a/i18n/fr_FR.csv +++ b/i18n/fr_FR.csv @@ -173,4 +173,7 @@ On - via Sherpa - Capture automatically via Sherpa.","Désactivé - Pas de captu Activé - Capturer automatiquement les paiements avec le statut AUTORISER lorsqu'un envoi est créé dans Magento (Picqer est également pris en charge dans ce domaine). Activé - via Wuunder - Capture automatique via Wuunder. Activé - via Sherpa - Capture automatique via Sherpa." -"When the store currency deviates from the base currency setting in Magento, this setting will ensure the payment starts in the base currency instead of the store currency.","Lorsque la devise du magasin diffère de la devise de base dans Magento, ce paramètre garantit que le paiement commence dans la devise de base au lieu de la devise du magasin." \ No newline at end of file +"When the store currency deviates from the base currency setting in Magento, this setting will ensure the payment starts in the base currency instead of the store currency.","Lorsque la devise du magasin diffère de la devise de base dans Magento, ce paramètre garantit que le paiement commence dans la devise de base au lieu de la devise du magasin." +"Chargebacks","Refacturation" +"Set to `on` to accept chargebacks initiated from Pay.","Réglez ce paramètre sur "on" pour accepter les rétrofacturations initiées par Pay." +"When this settings is enabled, chargebacks initiated by customers will refund the order in Magento.","Lorsque ce paramètre est activé, les rétrocessions initiées par les clients rembourseront la commande dans Magento." \ No newline at end of file diff --git a/i18n/fr_LU.csv b/i18n/fr_LU.csv index fe7f3164..ce6617fc 100644 --- a/i18n/fr_LU.csv +++ b/i18n/fr_LU.csv @@ -173,4 +173,7 @@ On - via Sherpa - Capture automatically via Sherpa.","Désactivé - Pas de captu Activé - Capturer automatiquement les paiements avec le statut AUTORISER lorsqu'un envoi est créé dans Magento (Picqer est également pris en charge dans ce domaine). Activé - via Wuunder - Capture automatique via Wuunder. Activé - via Sherpa - Capture automatique via Sherpa." -"When the store currency deviates from the base currency setting in Magento, this setting will ensure the payment starts in the base currency instead of the store currency.","Lorsque la devise du magasin diffère de la devise de base dans Magento, ce paramètre garantit que le paiement commence dans la devise de base au lieu de la devise du magasin." \ No newline at end of file +"When the store currency deviates from the base currency setting in Magento, this setting will ensure the payment starts in the base currency instead of the store currency.","Lorsque la devise du magasin diffère de la devise de base dans Magento, ce paramètre garantit que le paiement commence dans la devise de base au lieu de la devise du magasin." +"Chargebacks","Refacturation" +"Set to `on` to accept chargebacks initiated from Pay.","Réglez ce paramètre sur "on" pour accepter les rétrofacturations initiées par Pay." +"When this settings is enabled, chargebacks initiated by customers will refund the order in Magento.","Lorsque ce paramètre est activé, les rétrocessions initiées par les clients rembourseront la commande dans Magento." \ No newline at end of file diff --git a/i18n/nl_BE.csv b/i18n/nl_BE.csv index f21ad386..8f4690a6 100644 --- a/i18n/nl_BE.csv +++ b/i18n/nl_BE.csv @@ -229,4 +229,7 @@ On - via Sherpa - Capture automatically via Sherpa.","Uit - Geen autocapture. Aan - Capture automatisch betalingen met de status AUTHORIZE wanneer een shipment in Magento wordt aangemaakt (Picqer wordt hierin ook ondersteund). Aan - via Wuunder - Capture automatisch via Wuunder. Aan - via Sherpa - Capture automatisch via Sherpa." -"When the store currency deviates from the base currency setting in Magento, this setting will ensure the payment starts in the base currency instead of the store currency.","Wanneer de winkelvaluta afwijkt van de basisvaluta-instelling in Magento, zorgt deze instelling ervoor dat de betalingen worden gestart in de basisvaluta in plaats van de winkelvaluta." \ No newline at end of file +"When the store currency deviates from the base currency setting in Magento, this setting will ensure the payment starts in the base currency instead of the store currency.","Wanneer de winkelvaluta afwijkt van de basisvaluta-instelling in Magento, zorgt deze instelling ervoor dat de betalingen worden gestart in de basisvaluta in plaats van de winkelvaluta." +"Chargebacks","Terugboekingen" +"Set to `on` to accept chargebacks initiated from Pay.","Stel in op `aan` om chargebacks te accepteren die zijn geïnitieerd vanuit Pay." +"When this settings is enabled, chargebacks initiated by customers will refund the order in Magento.","Als deze instelling is ingeschakeld, zullen chargebacks die door klanten worden geïnitieerd de bestelling refunden in Magento." \ No newline at end of file diff --git a/i18n/nl_NL.csv b/i18n/nl_NL.csv index 87346be1..1eb823fc 100644 --- a/i18n/nl_NL.csv +++ b/i18n/nl_NL.csv @@ -229,4 +229,7 @@ On - via Sherpa - Capture automatically via Sherpa.","Uit - Geen autocapture. Aan - Capture automatisch betalingen met de status AUTHORIZE wanneer een shipment in Magento wordt aangemaakt (Picqer wordt hierin ook ondersteund). Aan - via Wuunder - Capture automatisch via Wuunder. Aan - via Sherpa - Capture automatisch via Sherpa." -"When the store currency deviates from the base currency setting in Magento, this setting will ensure the payment starts in the base currency instead of the store currency.","Wanneer de winkelvaluta afwijkt van de basisvaluta-instelling in Magento, zorgt deze instelling ervoor dat de betalingen worden gestart in de basisvaluta in plaats van de winkelvaluta." \ No newline at end of file +"When the store currency deviates from the base currency setting in Magento, this setting will ensure the payment starts in the base currency instead of the store currency.","Wanneer de winkelvaluta afwijkt van de basisvaluta-instelling in Magento, zorgt deze instelling ervoor dat de betalingen worden gestart in de basisvaluta in plaats van de winkelvaluta." +"Chargebacks","Chargebacks" +"Set to `on` to accept chargebacks initiated from Pay.","Stel in op `aan` om chargebacks te accepteren die zijn geïnitieerd vanuit Pay." +"When this settings is enabled, chargebacks initiated by customers will refund the order in Magento.","Als deze instelling is ingeschakeld, zullen chargebacks die door klanten worden geïnitieerd de bestelling refunden in Magento." \ No newline at end of file