IDEMPIERE-860 Review Payment Processors - include credit card validation
This commit is contained in:
parent
068897e912
commit
a33c9c0817
|
@ -118,8 +118,6 @@ public abstract class PaymentProcessor
|
|||
*/
|
||||
public String validate() throws IllegalArgumentException {
|
||||
String msg = null;
|
||||
if (p_mp.getC_BP_BankAccount_ID() != 0 || p_mp.getCustomerPaymentProfileID() != null)
|
||||
return msg;
|
||||
if (MPayment.TENDERTYPE_CreditCard.equals(p_mp.getTenderType())) {
|
||||
msg = validateCreditCard();
|
||||
} else if (MPayment.TENDERTYPE_Check.equals(p_mp.getTenderType())) {
|
||||
|
@ -143,7 +141,10 @@ public abstract class PaymentProcessor
|
|||
}
|
||||
|
||||
public String validateCreditCard() throws IllegalArgumentException {
|
||||
String msg = MPaymentValidate.validateCreditCardNumber(p_mp.getCreditCardNumber(), p_mp.getCreditCardType());
|
||||
String msg = null;
|
||||
if (p_mp.getC_BP_BankAccount_ID() != 0 || (p_mp.getCustomerPaymentProfileID() != null && p_mp.getCustomerPaymentProfileID().length() > 0))
|
||||
return msg;
|
||||
msg = MPaymentValidate.validateCreditCardNumber(p_mp.getCreditCardNumber(), p_mp.getCreditCardType());
|
||||
if (msg != null && msg.length() > 0)
|
||||
throw new IllegalArgumentException(Msg.getMsg(Env.getCtx(), msg));
|
||||
msg = MPaymentValidate.validateCreditCardExp(p_mp.getCreditCardExpMM(), p_mp.getCreditCardExpYY());
|
||||
|
|
|
@ -274,7 +274,7 @@ public class VPaymentFormCreditCard extends PaymentFormCreditCard implements Act
|
|||
ValueNamePair vp = (ValueNamePair)kTypeCombo.getSelectedItem();
|
||||
String CCType = vp.getValue();
|
||||
|
||||
boolean ok = processOnline(CCType, kNumberField.getText(), kExpField.getText());
|
||||
boolean ok = processOnline(CCType, kNumberField.getText(), kApprovalField.getText(), kExpField.getText());
|
||||
if (!ok)
|
||||
ADialog.error(getWindowNo(), dialog, "PaymentError", processMsg);
|
||||
else
|
||||
|
|
|
@ -75,9 +75,13 @@ public class WPaymentFormCreditCard extends PaymentFormCreditCard implements Eve
|
|||
|
||||
public void init() {
|
||||
Grid kLayout = GridFactory.newGridLayout();
|
||||
window.getPanel().appendChild(kLayout);
|
||||
window.getPanel().appendChild(kLayout);
|
||||
kNumberField.setMaxlength(16);
|
||||
kNumberField.setCols(16);
|
||||
|
||||
kExpField.setMaxlength(4);
|
||||
kExpField.setCols(4);
|
||||
kApprovalField.setMaxlength(4);
|
||||
kApprovalField.setCols(4);
|
||||
kApprovalField.setType("password");
|
||||
kTypeLabel.setText(Msg.translate(Env.getCtx(), "CreditCardType"));
|
||||
|
@ -291,7 +295,7 @@ public class WPaymentFormCreditCard extends PaymentFormCreditCard implements Eve
|
|||
ValueNamePair vp = kTypeCombo.getSelectedItem().toValueNamePair();
|
||||
String CCType = vp.getValue();
|
||||
|
||||
boolean ok = processOnline(CCType, kNumberField.getText(), kExpField.getText());
|
||||
boolean ok = processOnline(CCType, kNumberField.getText(), kApprovalField.getText(), kExpField.getText());
|
||||
if (!ok)
|
||||
FDialog.error(getWindowNo(), window, "PaymentNotProcessed", processMsg);
|
||||
else
|
||||
|
|
|
@ -26,6 +26,7 @@ import org.compiere.model.MOrder;
|
|||
import org.compiere.model.MPayment;
|
||||
import org.compiere.model.MPaymentProcessor;
|
||||
import org.compiere.model.MPaymentTransaction;
|
||||
import org.compiere.model.MPaymentValidate;
|
||||
import org.compiere.process.DocAction;
|
||||
import org.compiere.util.Env;
|
||||
import org.compiere.util.Msg;
|
||||
|
@ -392,16 +393,16 @@ public abstract class PaymentFormCreditCard extends PaymentForm {
|
|||
return true;
|
||||
}
|
||||
|
||||
public boolean processOnline(String CCType, String CCNumber, String CCExp)
|
||||
public boolean processOnline(String CCType, String CCNumber, String CCVV, String CCExp)
|
||||
{
|
||||
return processOnline(CCType, CCNumber, CCExp, 0);
|
||||
return processOnline(CCType, CCNumber, CCVV, CCExp, 0);
|
||||
}
|
||||
|
||||
public boolean processOnline(String CCType, String CCNumber, String CCExp, int C_PaymentProcessor_ID)
|
||||
public boolean processOnline(String CCType, String CCNumber, String CCVV, String CCExp, int C_PaymentProcessor_ID)
|
||||
{
|
||||
processMsg = null;
|
||||
boolean error = false;
|
||||
|
||||
|
||||
int C_Order_ID = Env.getContextAsInt(Env.getCtx(), getWindowNo(), "C_Order_ID");
|
||||
int C_Invoice_ID = Env.getContextAsInt(Env.getCtx(), getWindowNo(), "C_Invoice_ID");
|
||||
if (C_Invoice_ID == 0 && m_DocStatus.equals(MInvoice.DOCSTATUS_Completed))
|
||||
|
@ -430,7 +431,7 @@ public abstract class PaymentFormCreditCard extends PaymentForm {
|
|||
|
||||
MPaymentTransaction mpt = new MPaymentTransaction(Env.getCtx(), 0, null);
|
||||
mpt.setAD_Org_ID(m_AD_Org_ID);
|
||||
mpt.setCreditCard(MPayment.TRXTYPE_Sales, CCType, CCNumber, "", CCExp);
|
||||
mpt.setCreditCard(MPayment.TRXTYPE_Sales, CCType, CCNumber, CCVV != null ? CCVV : "", CCExp);
|
||||
mpt.setAmount(m_C_Currency_ID, payAmount);
|
||||
mpt.setC_PaymentProcessor_ID(C_PaymentProcessor_ID);
|
||||
mpt.setPaymentProcessor();
|
||||
|
@ -461,10 +462,20 @@ public abstract class PaymentFormCreditCard extends PaymentForm {
|
|||
mpt.setC_Invoice_ID(C_Invoice_ID);
|
||||
mpt.setDateTrx(m_DateAcct);
|
||||
setCustomizeValues(mpt);
|
||||
|
||||
// validate credit card
|
||||
String msg = validateCreditCard(CCType, CCNumber, CCVV != null ? CCVV : "", CCExp, mpt.getC_BP_BankAccount_ID(), mpt.getCustomerPaymentProfileID());
|
||||
if (msg != null && msg.trim().length() > 0)
|
||||
{
|
||||
processMsg = Msg.getMsg(Env.getCtx(), msg);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!mpt.save()) {
|
||||
processMsg = Msg.getMsg(Env.getCtx(), "PaymentNotCreated");
|
||||
return false;
|
||||
} else {
|
||||
mpt.setCreditCardVV(CCVV != null ? CCVV : "");
|
||||
approved = mpt.processOnline();
|
||||
mpt.saveEx();
|
||||
|
||||
|
@ -507,4 +518,23 @@ public abstract class PaymentFormCreditCard extends PaymentForm {
|
|||
public boolean isApproved() {
|
||||
return m_mPayment.isApproved();
|
||||
}
|
||||
|
||||
public String validateCreditCard(String CCType, String CCNumber, String CCVV, String CCExp, int C_BP_BankAccount_ID, String CustomerPaymentProfileID) throws IllegalArgumentException {
|
||||
String msg = null;
|
||||
if (C_BP_BankAccount_ID != 0 || (CustomerPaymentProfileID != null && CustomerPaymentProfileID.length() > 0))
|
||||
return msg;
|
||||
msg = MPaymentValidate.validateCreditCardNumber(CCNumber, CCType);
|
||||
if (msg != null && msg.length() > 0)
|
||||
return Msg.getMsg(Env.getCtx(), msg);
|
||||
msg = MPaymentValidate.validateCreditCardExp(MPaymentValidate.getCreditCardExpMM(CCExp), MPaymentValidate.getCreditCardExpYY(CCExp));
|
||||
if (msg != null && msg.length() > 0)
|
||||
return Msg.getMsg(Env.getCtx(), msg);
|
||||
if (CCVV != null && CCVV.length() > 0)
|
||||
{
|
||||
msg = MPaymentValidate.validateCreditCardVV(CCVV, CCType);
|
||||
if (msg != null && msg.length() > 0)
|
||||
return Msg.getMsg(Env.getCtx(), msg);
|
||||
}
|
||||
return msg;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue