From 7a084e37a046d9b889785adc7075605a36bc130d Mon Sep 17 00:00:00 2001 From: hugh-unicenta Date: Wed, 1 Nov 2023 16:40:28 +0000 Subject: [PATCH] teya payment happy path --- pom.xml | 2 +- .../pos/config/JPanelConfigPayment.java | 7 ++ .../pos/payment/PaymentGatewayFac.java | 2 + .../pos/payment/PaymentGatewayTeya.java | 80 +++++++++++++++++++ 4 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/unicenta/pos/payment/PaymentGatewayTeya.java diff --git a/pom.xml b/pom.xml index b34f638..e24bae6 100644 --- a/pom.xml +++ b/pom.xml @@ -325,7 +325,7 @@ com.unicenta unicenta-plugins - 1.1 + 1.2-SNAPSHOT com.gluonhq 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/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..b2f1c1a --- /dev/null +++ b/src/main/java/com/unicenta/pos/payment/PaymentGatewayTeya.java @@ -0,0 +1,80 @@ +// 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.*; + +@Slf4j +public class PaymentGatewayTeya implements PaymentGateway { + + /** Creates a new instance of PaymentGatewayExt */ + public PaymentGatewayTeya() { + } + + Window getPaymentWindow() { + for (Window window : Window.getWindows()) { + if (window.isActive()) { + return window; + } + } + return null; + } + + /** + * + * @param payinfo + */ + @Override + public void execute(PaymentInfoMagcard payinfo) { + + int timer = 0; + int timeout = 180; + + double roundedValue = RoundUtils.round(payinfo.getTotal()); + + new Application().teyaTransaction(roundedValue, getPaymentWindow()); + + while (!AppContext.getTeyaSuccessfulPayment()) { + 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()); + } + } + + payinfo.setCardName("Teya"); + payinfo.setVerification("Chip and Pin"); + payinfo.setChipAndPin(true); + payinfo.paymentOK( + "Teya", + "Teya", + "Teya" + ); + + } +}