Author: jaz
Date: Wed Mar 28 14:19:01 2007 New Revision: 523464 URL: http://svn.apache.org/viewvc?view=rev&rev=523464 Log: better handling of payment responses; no more error throwing, but rather return proper gateway messages and response codes Modified: ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/finaccount/FinAccountPaymentServices.java Modified: ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/finaccount/FinAccountPaymentServices.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/finaccount/FinAccountPaymentServices.java?view=diff&rev=523464&r1=523463&r2=523464 ============================================================================== --- ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/finaccount/FinAccountPaymentServices.java (original) +++ ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/finaccount/FinAccountPaymentServices.java Wed Mar 28 14:19:01 2007 @@ -116,7 +116,15 @@ // validate the PIN if the store requires it if ("Y".equals(finAccountSettings.getString("requirePinCode"))) { if (!FinAccountHelper.validatePin(delegator, finAccountCode, finAccountPin)) { - return ServiceUtil.returnError("Financial account PIN/CODE combination not found"); + Map result = ServiceUtil.returnSuccess(); + result.put("authMessage", "Financial account PIN/CODE combination not found"); + result.put("authResult", Boolean.FALSE); + result.put("processAmount", amount); + result.put("authFlag", "0"); + result.put("authCode", "A"); + result.put("authRefNum", "0"); + Debug.logError("Unable to auth FinAccount: " + result, module); + return result; } } } @@ -124,17 +132,34 @@ // check for account being frozen String isFrozen = finAccount.getString("isFrozen"); if (isFrozen != null && "Y".equals(isFrozen)) { - return ServiceUtil.returnError("Financial account is currently frozen"); + Map result = ServiceUtil.returnSuccess(); + result.put("authMessage", "Account is currently frozen"); + result.put("authResult", Boolean.FALSE); + result.put("processAmount", amount); + result.put("authFlag", "0"); + result.put("authCode", "A"); + result.put("authRefNum", "0"); + Debug.logError("Unable to auth FinAccount: " + result, module); + return result; } // check for expiration date if ((finAccount.getTimestamp("thruDate") != null) && (finAccount.getTimestamp("thruDate").before(UtilDateTime.nowTimestamp()))) { - return ServiceUtil.returnError("Financial account has expired as of " + finAccount.getTimestamp("thruDate")); + Map result = ServiceUtil.returnSuccess(); + result.put("authMessage", "Account has expired as of " + finAccount.getTimestamp("thruDate")); + result.put("authResult", Boolean.FALSE); + result.put("processAmount", amount); + result.put("authFlag", "0"); + result.put("authCode", "A"); + result.put("authRefNum", "0"); + Debug.logError("Unable to auth FinAccount: " + result, module); + return result; } // check the amount to authorize against the available balance of fin account, which includes active authorizations as well as transactions BigDecimal availableBalance = finAccount.getBigDecimal("availableBalance"); Map result = ServiceUtil.returnSuccess(); + String authMessage = null; Boolean processResult; String refNum; @@ -180,15 +205,18 @@ } else { Debug.logError("Attempted to authorize [" + amount + "] against a balance of only [" + availableBalance + "]", module); refNum = "0"; // a refNum is always required from authorization + authMessage = "Insufficient funds"; processResult = Boolean.FALSE; } result.put("processAmount", amount); + result.put("authMessage", authMessage); result.put("authResult", processResult); result.put("processAmount", amount); result.put("authFlag", "1"); result.put("authCode", "A"); result.put("authRefNum", refNum); + Debug.logInfo("FinAccont Auth: " + result, module); return result; } catch (GenericEntityException ex) { |
Free forum by Nabble | Edit this page |