diff --git a/src/main/java/com/unicenta/pos/config/JPanelConfigPayment.java b/src/main/java/com/unicenta/pos/config/JPanelConfigPayment.java
index 0e7391c..dfd6084 100644
--- a/src/main/java/com/unicenta/pos/config/JPanelConfigPayment.java
+++ b/src/main/java/com/unicenta/pos/config/JPanelConfigPayment.java
@@ -52,6 +52,7 @@ public class JPanelConfigPayment extends javax.swing.JPanel implements PanelConf
initPayments("Not defined", new ConfigPaymentPanelEmpty());
initPayments("external", new ConfigPaymentPanelEmpty());
initPayments("PaymentSense", new ConfigPaymentPanelEmpty());
+ initPayments("Teya", new ConfigPaymentPanelEmpty());
// Lector de tarjetas.
jcboCardReader.addItem("Not defined");
@@ -277,6 +278,12 @@ public class JPanelConfigPayment extends javax.swing.JPanel implements PanelConf
emvConfigPanel.setVisible(Boolean.TRUE);
jcboCardReader.setSelectedItem("EMV");
jcboCardReader.setEnabled(Boolean.FALSE);
+
+ }
+ else if (comboValue(jcboPaymentGateway.getSelectedItem()).equals("Teya")) {
+ emvConfigPanel.setVisible(Boolean.FALSE);
+ jcboCardReader.setSelectedItem("EMV");
+ jcboCardReader.setEnabled(Boolean.FALSE);
}
else {
emvConfigPanel.setVisible(Boolean.FALSE);
diff --git a/src/main/java/com/unicenta/pos/forms/JRootKiosk.java b/src/main/java/com/unicenta/pos/forms/JRootKiosk.java
index 691720a..dac2d37 100644
--- a/src/main/java/com/unicenta/pos/forms/JRootKiosk.java
+++ b/src/main/java/com/unicenta/pos/forms/JRootKiosk.java
@@ -76,7 +76,7 @@ public class JRootKiosk extends javax.swing.JFrame implements AppMessage {
String osName = System.getProperty("os.name").toLowerCase();
boolean isWindows = osName.startsWith("windows");
boolean isMac = osName.startsWith("mac");
-
+
m_OS = new OSValidator();
m_props = props;
diff --git a/src/main/java/com/unicenta/pos/payment/PaymentGatewayFac.java b/src/main/java/com/unicenta/pos/payment/PaymentGatewayFac.java
index 0ef0c94..c0a8f55 100644
--- a/src/main/java/com/unicenta/pos/payment/PaymentGatewayFac.java
+++ b/src/main/java/com/unicenta/pos/payment/PaymentGatewayFac.java
@@ -39,6 +39,8 @@ public class PaymentGatewayFac {
return new PaymentGatewayExt();
case "PaymentSense":
return new PaymentGatewayPaymentSense();
+ case "Teya":
+ return new PaymentGatewayTeya();
default:
return null;
}
diff --git a/src/main/java/com/unicenta/pos/payment/PaymentGatewayTeya.java b/src/main/java/com/unicenta/pos/payment/PaymentGatewayTeya.java
new file mode 100644
index 0000000..baafb12
--- /dev/null
+++ b/src/main/java/com/unicenta/pos/payment/PaymentGatewayTeya.java
@@ -0,0 +1,101 @@
+// uniCenta oPOS - Touch Friendly Point Of Sale
+// Copyright (c) 2009-2018 uniCenta & previous Openbravo POS works
+// https://unicenta.com
+//
+// This file is part of uniCenta oPOS
+//
+// uniCenta oPOS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// uniCenta oPOS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with uniCenta oPOS. If not, see .
+
+package com.unicenta.pos.payment;
+
+import com.unicenta.plugins.Application;
+import com.unicenta.plugins.common.AppContext;
+import com.unicenta.pos.util.RoundUtils;
+import lombok.extern.slf4j.Slf4j;
+
+import java.awt.*;
+import java.util.ArrayList;
+
+@Slf4j
+public class PaymentGatewayTeya implements PaymentGateway {
+
+ /** Creates a new instance of PaymentGatewayExt */
+ public PaymentGatewayTeya() {
+ }
+
+ Window getPaymentWindow(double amount) {
+ if (amount > 0) {
+ ArrayList paymentWindows = new ArrayList<>();
+ for (Window window : Window.getWindows()) {
+ if (window instanceof JPaymentSelectReceipt) {
+ paymentWindows.add((JPaymentSelectReceipt) window);
+ }
+ }
+ return paymentWindows.get(paymentWindows.size()-1);
+ }
+ else {
+ ArrayList paymentWindows = new ArrayList<>();
+ for (Window window : Window.getWindows()) {
+ if (window instanceof JPaymentSelectRefund) {
+ paymentWindows.add((JPaymentSelectRefund) window);
+ }
+ }
+ return paymentWindows.get(paymentWindows.size()-1);
+ }
+
+ }
+
+ /**
+ *
+ * @param payinfo
+ */
+ @Override
+ public void execute(PaymentInfoMagcard payinfo) {
+
+ int timer = 0;
+ int timeout = 150;
+
+ double roundedValue = RoundUtils.round(payinfo.getTotal());
+
+ new Application().teyaTransaction(roundedValue, getPaymentWindow(roundedValue), payinfo.getTransactionID());
+
+ while (AppContext.getTeyaPaymentResult() == null) {
+ try {
+ log.info("uniCenta-oPos: waiting for payment to complete ....");
+ Thread.sleep(1000);
+ timer += 1;
+ if (timer > timeout) break;
+ } catch (InterruptedException e) {
+ log.error(e.getMessage());
+ }
+ }
+
+ if (AppContext.getTeyaPaymentResult().getStatus().equals("SUCCESSFUL")) {
+ payinfo.setCardName("Teya");
+ payinfo.setVerification("Chip and Pin");
+ payinfo.setChipAndPin(true);
+ payinfo.paymentOK(
+ roundedValue > 0 ? AppContext.getTeyaPaymentResult().getReferenceId() : "",
+ roundedValue > 0 ? AppContext.getTeyaPaymentResult().getGatewayPaymentId() : "",
+ AppContext.getTeyaPaymentResult().getStatus()
+ );
+ }
+ else {
+ payinfo.paymentError("Transaction Error! Please try again", AppContext.getTeyaPaymentResult().getStatus());
+ }
+
+
+
+ }
+}