⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 valuelinkservices.java

📁 Sequoia ERP是一个真正的企业级开源ERP解决方案。它提供的模块包括:电子商务应用(e-commerce), POS系统(point of sales),知识管理,存货与仓库管理
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
        Map request = vl.getInitialRequestMap(context);        request.put("Interface", "History");        request.put("CardNo", cardNumber);        request.put("PIN", vl.encryptPin(pin));        // user defined field #1        if (orderId != null && orderId.length() > 0) {            request.put("User1", orderId);        }        // user defined field #2        if (partyId != null && partyId.length() > 0) {            request.put("User2", partyId);        }        // send the request        Map response = null;        try {            response = vl.send(request);        } catch(HttpClientException e) {            Debug.logError(e, "Problem communicating with VL");            return ServiceUtil.returnError("Unable to call history inquire");        }        if (response != null) {            String responseCode = (String) response.get("responsecode");            Map result = ServiceUtil.returnSuccess();            if (responseCode.equals("00")) {                result.put("processResult", new Boolean(true));            } else {                result.put("processResult", new Boolean(false));            }            result.put("responseCode", responseCode);            result.put("balance", vl.getAmount((String) response.get("currbal")));            result.put("history", response.get("history"));            result.put("expireDate", response.get("expiredate"));            result.put("cardClass", response.get("cardclass"));            result.put("referenceNum", response.get("traceno"));            Debug.log("History Result : " + result, module);            return result;        } else {            return ServiceUtil.returnError("Empty response returned from ValueLink");        }    }    public static Map refund(DispatchContext dctx, Map context) {        GenericDelegator delegator = dctx.getDelegator();        Properties props = getProperties(context);        String cardNumber = (String) context.get("cardNumber");        String pin = (String) context.get("pin");        String currency = (String) context.get("currency");        String orderId = (String) context.get("orderId");        String partyId = (String) context.get("partyId");        Double amount = (Double) context.get("amount");        // override interface for void/rollback        String iFace = (String) context.get("Interface");        // get an api instance        ValueLinkApi vl = ValueLinkApi.getInstance(delegator, props);        Map request = vl.getInitialRequestMap(context);        request.put("Interface", iFace != null ? iFace : "Refund");        request.put("CardNo", cardNumber);        request.put("PIN", vl.encryptPin(pin));        request.put("Amount", vl.getAmount(amount));        request.put("LocalCurr", vl.getCurrency(currency));        // user defined field #1        if (orderId != null && orderId.length() > 0) {            request.put("User1", orderId);        }        // user defined field #2        if (partyId != null && partyId.length() > 0) {            request.put("User2", partyId);        }        // set the timeout reversal        setTimeoutReversal(dctx, context, request);        // send the request        Map response = null;        try {            response = vl.send(request);        } catch(HttpClientException e) {            Debug.logError(e, "Problem communicating with VL");            return ServiceUtil.returnError("Unable to refund gift card");        }        if (response != null) {            String responseCode = (String) response.get("responsecode");            Map result = ServiceUtil.returnSuccess();            if (responseCode.equals("00")) {                result.put("processResult", new Boolean(true));            } else {                result.put("processResult", new Boolean(false));            }            result.put("responseCode", responseCode);            result.put("authCode", response.get("authcode"));            result.put("previousAmount", vl.getAmount((String) response.get("prevbal")));            result.put("amount", vl.getAmount((String) response.get("newbal")));            result.put("expireDate", response.get("expiredate"));            result.put("cardClass", response.get("cardclass"));            result.put("referenceNum", response.get("traceno"));            Debug.log("Refund Result : " + result, module);            return result;        } else {            return ServiceUtil.returnError("Empty response returned from ValueLink");        }    }    public static Map voidRedeem(DispatchContext dctx, Map context) {        context.put("Interface", "Redeem/Void");        return redeem(dctx, context);    }    public static Map voidRefund(DispatchContext dctx, Map context) {        context.put("Interface", "Refund/Void");        return refund(dctx, context);    }    public static Map voidReload(DispatchContext dctx, Map context) {        context.put("Interface", "Reload/Void");        return reload(dctx, context);    }    public static Map voidActivate(DispatchContext dctx, Map context) {        context.put("Interface", "Activate/Void");        return activate(dctx, context);    }    public static Map timeOutReversal(DispatchContext dctx, Map context) {        String vlInterface = (String) context.get("Interface");        Debug.log("704 Interface : " + vlInterface, module);        if (vlInterface != null) {            if (vlInterface.startsWith("Activate")) {                if (vlInterface.equals("Activate/Rollback")) {                    return ServiceUtil.returnError("This transaction is not supported by ValueLink");                }                return activate(dctx, context);            } else if (vlInterface.startsWith("Redeem")) {                return redeem(dctx, context);            } else if (vlInterface.startsWith("Reload")) {                return reload(dctx, context);            } else if (vlInterface.startsWith("Refund")) {                return refund(dctx, context);            }        }        return ServiceUtil.returnError("Not a valid 0704 transaction");    }    // 0704 Timeout Reversal (Supports - Activate/Void, Redeem, Redeem/Void, Reload, Reload/Void, Refund, Refund/Void)    private static void setTimeoutReversal(DispatchContext dctx, Map ctx, Map request) {        String vlInterface = (String) request.get("Interface");        // clone the context        Map context = new HashMap(ctx);        // append the rollback interface        if (!vlInterface.endsWith("Rollback")) {            context.put("Interface", vlInterface + "/Rollback");        } else {            // no need to re-run ourself we are persisted            return;        }        // set the old tx time and number        context.put("MerchTime", request.get("MerchTime"));        context.put("TermTxnNo", request.get("TermTxnNo"));        // Activate/Rollback is not supported by valuelink        if (!vlInterface.equals("Activate")) {            // create the listener            ServiceXaWrapper xaw = new ServiceXaWrapper(dctx);            xaw.setRollbackService("vlTimeOutReversal", context);            //xaw.setCommitService("vlTimeOutReversal", context);            Debug.log("Set 704 context : " + context, module);            try {                xaw.enlist();            } catch (XAException e) {                Debug.logError(e, "Unable to setup 0704 Timeout Reversal", module);            }        }    }    private static Properties getProperties(Map context) {        String paymentProperties = (String) context.get("paymentConfig");        if (paymentProperties == null) {            paymentProperties = "payment.properties";        }        return UtilProperties.getProperties(paymentProperties);    }    // payment processing wrappers (process/release/refund)    public static Map giftCardProcessor(DispatchContext dctx, Map context) {        LocalDispatcher dispatcher = dctx.getDispatcher();        GenericValue userLogin = (GenericValue) context.get("userLogin");        GenericValue giftCard = (GenericValue) context.get("giftCard");        GenericValue party = (GenericValue) context.get("billToParty");        String paymentConfig = (String) context.get("paymentConfig");        String currency = (String) context.get("currency");        String orderId = (String) context.get("orderId");        Double amount = (Double) context.get("processAmount");        // make sure we have a currency        if (currency == null) {            currency = UtilProperties.getPropertyValue("general.properties", "currency.uom.id.default", "USD");        }        Map redeemCtx = new HashMap();        redeemCtx.put("userLogin", userLogin);        redeemCtx.put("paymentConfig", paymentConfig);        redeemCtx.put("cardNumber", giftCard.get("cardNumber"));        redeemCtx.put("pin", giftCard.get("pinNumber"));        redeemCtx.put("currency", currency);        redeemCtx.put("orderId", orderId);        redeemCtx.put("partyId", party.get("partyId"));        redeemCtx.put("amount", amount);        // invoke the redeem service        Map redeemResult = null;        try {            redeemResult = dispatcher.runSync("redeemGiftCard", redeemCtx);        } catch (GenericServiceException e) {            Debug.logError(e, "Problem calling the redeem service", module);            return ServiceUtil.returnError("Redeem service failed");        }        Map result = ServiceUtil.returnSuccess();        if (redeemResult != null) {            Boolean processResult = (Boolean) redeemResult.get("processResult");            // confirm the amount redeemed; since VL does not error in insufficient funds            if (processResult.booleanValue()) {                Double previous = (Double) redeemResult.get("previousAmount");                if (previous == null) previous = new Double(0);                Double current = (Double) redeemResult.get("amount");                if (current == null) current = new Double(0);                double redeemed = (((double) Math.round((previous.doubleValue() - current.doubleValue()) * 100)) / 100);                Debug.logInfo("Redeemed (" + amount + "): " + redeemed + " / " + previous + " : " + current, module);                if (redeemed < amount.doubleValue()) {                    // we didn't redeem enough void the transaction and return false                    Map voidResult = null;                    try {                        voidResult = dispatcher.runSync("voidRedeemGiftCard", redeemCtx);                    } catch (GenericServiceException e) {                        Debug.logError(e, module);                    }                    if (ServiceUtil.isError(voidResult)) {                        return voidResult;                    }                    processResult = new Boolean(false);                    amount = new Double(redeemed);                    result.put("authMessage", "Gift card did not contain enough funds");                }            }            result.put("processAmount", amount);            result.put("authFlag", redeemResult.get("responseCode"));            result.put("authResult", processResult);            result.put("captureResult", processResult);            result.put("authCode", redeemResult.get("authCode"));            result.put("captureCode", redeemResult.get("authCode"));            result.put("authRefNum", redeemResult.get("referenceNum"));            result.put("captureRefNum", redeemResult.get("referenceNum"));        }        return result;    }    public static Map giftCardRelease(DispatchContext dctx, Map context) {        LocalDispatcher dispatcher = dctx.getDispatcher();        GenericValue userLogin = (GenericValue) context.get("userLogin");        GenericValue paymentPref = (GenericValue) context.get("orderPaymentPreference");        String paymentConfig = (String) context.get("paymentConfig");        String currency = (String) context.get("currency");        Double amount = (Double) context.get("releaseAmount");        // get the orderId for tracking        String orderId = paymentPref.getString("orderId");        // get the GiftCard VO        GenericValue giftCard = null;        try {            giftCard = paymentPref.getRelatedOne("GiftCard");        } catch (GenericEntityException e) {            Debug.logError("Unable to get GiftCard from OrderPaymentPreference", module);            return ServiceUtil.returnError("Unable to locate GiftCard Information");        }        if (giftCard == null) {            return ServiceUtil.returnError("Attempt to release GiftCard payment faild; not a valid GiftCard record");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -