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

📄 payflowpro.java

📁 Sequoia ERP是一个真正的企业级开源ERP解决方案。它提供的模块包括:电子商务应用(e-commerce), POS系统(point of sales),知识管理,存货与仓库管理
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    }    public static Map ccRefund(DispatchContext dctx, Map context) {        GenericValue paymentPref = (GenericValue) context.get("orderPaymentPreference");        Double amount = (Double) context.get("refundAmount");        String configString = (String) context.get("paymentConfig");        if (configString == null) {            configString = "payment.properties";        }        GenericValue captureTrans = PaymentGatewayServices.getCaptureTransaction(paymentPref);        if (captureTrans == null) {            return ServiceUtil.returnError("No capture transaction found for the OrderPaymentPreference; cannot refund");        }        // auth ref number        String refNum = captureTrans.getString("referenceNum");        Map data = UtilMisc.toMap("ORIGID", refNum);        // tx type (Credit)        data.put("TRXTYPE", "C");        // credit card tender        data.put("TENDER", "C");        // get the orderID        String orderId = paymentPref.getString("orderId");        data.put("COMMENT1", orderId);        // amount to capture        data.put("AMT", amount.toString());        PFProAPI pn = init(configString);        // get the base params        StringBuffer params = makeBaseParams(configString);        // parse the context parameters        params.append("&" + parseContext(data));        // transmit the request        if (Debug.verboseOn()) Debug.logVerbose("Sending to Verisign: " + params.toString(), module);        String resp = pn.SubmitTransaction(params.toString());        if (Debug.verboseOn()) Debug.logVerbose("Response from Verisign: " + resp, module);        // reset for next use        pn.DestroyContext();        // check the response        Map result = ServiceUtil.returnSuccess();        parseRefundResponse(resp, result, configString);        result.put("refundAmount", amount);        return result;    }    private static void parseAuthResponse(String resp, Map result, String resource, boolean isReAuth) {        Debug.logInfo("Verisign response string: " + resp, module);        Map parameters = new LinkedMap();        List params = StringUtil.split(resp, "&");        Iterator i = params.iterator();        while (i.hasNext()) {            String str = (String) i.next();            if (str.length() > 0) {                List kv = StringUtil.split(str, "=");                Object k = kv.get(0);                Object v = kv.get(1);                if (k != null && v != null)                    parameters.put(k, v);            }        }        // txType        boolean isSale = !UtilProperties.propertyValueEqualsIgnoreCase(resource, "payment.verisign.preAuth", "Y");        // avs checking - ignore on re-auth        boolean avsCheckOkay = true;        String avsCode = null;        if (!isReAuth) {            boolean checkAvs = UtilProperties.propertyValueEqualsIgnoreCase(resource, "payment.verisign.checkAvs", "Y");            if (checkAvs && !isSale) {                String addAvs = (String) parameters.get("AVSADDR");                String zipAvs = (String) parameters.get("AVSZIP");                avsCode = addAvs + zipAvs;                if ("N".equals(addAvs) || "N".equals(zipAvs)) {                    avsCheckOkay = false;                }            }        }        // cvv2 checking - ignore on re-auth        boolean cvv2CheckOkay = true;        String cvvCode = null;        if (!isReAuth) {            boolean checkCvv2 = UtilProperties.propertyValueEqualsIgnoreCase(resource, "payment.verisign.checkAvs", "Y");            if (checkCvv2 && !isSale) {                cvvCode = (String) parameters.get("CVV2MATCH");                if ("N".equals(cvvCode)) {                    cvv2CheckOkay = false;                }            }        }        String respCode = (String) parameters.get("RESULT");        if (respCode.equals("0") && avsCheckOkay && cvv2CheckOkay) {            result.put("authResult", Boolean.TRUE);            result.put("authCode", parameters.get("AUTHCODE"));        } else {            result.put("authResult", Boolean.FALSE);        }        result.put("cvCode", cvvCode);        result.put("avsCode", avsCode);        result.put("authRefNum", parameters.get("PNREF"));        result.put("authFlag", parameters.get("RESULT"));        result.put("authMessage", parameters.get("RESPMSG"));    }    private static void parseCaptureResponse(String resp, Map result, String resource) {        Map parameters = new LinkedMap();        List params = StringUtil.split(resp, "&");        Iterator i = params.iterator();        while (i.hasNext()) {            String str = (String) i.next();            if (str.length() > 0) {                List kv = StringUtil.split(str, "=");                Object k = kv.get(0);                Object v = kv.get(1);                if (k != null && v != null)                    parameters.put(k, v);            }        }        String respCode = (String) parameters.get("RESULT");        if (respCode.equals("0")) {            result.put("captureResult", Boolean.TRUE);            result.put("captureCode", parameters.get("AUTHCODE"));        } else {            result.put("captureResult", Boolean.FALSE);        }        result.put("captureRefNum", parameters.get("PNREF"));        result.put("captureFlag", parameters.get("RESULT"));        result.put("captureMessage", parameters.get("RESPMSG"));    }    private static void parseVoidResponse(String resp, Map result, String resource) {        Map parameters = new LinkedMap();        List params = StringUtil.split(resp, "&");        Iterator i = params.iterator();        while (i.hasNext()) {            String str = (String) i.next();            if (str.length() > 0) {                List kv = StringUtil.split(str, "=");                Object k = kv.get(0);                Object v = kv.get(1);                if (k != null && v != null)                    parameters.put(k, v);            }        }        String respCode = (String) parameters.get("RESULT");        if (respCode.equals("0")) {            result.put("releaseResult", Boolean.TRUE);            result.put("releaseCode", parameters.get("AUTHCODE"));        } else {            result.put("releaseResult", Boolean.FALSE);        }        result.put("releaseRefNum", parameters.get("PNREF"));        result.put("releaseFlag", parameters.get("RESULT"));        result.put("releaseMessage", parameters.get("RESPMSG"));    }    private static void parseRefundResponse(String resp, Map result, String resource) {        Map parameters = new LinkedMap();        List params = StringUtil.split(resp, "&");        Iterator i = params.iterator();        while (i.hasNext()) {            String str = (String) i.next();            if (str.length() > 0) {                List kv = StringUtil.split(str, "=");                Object k = kv.get(0);                Object v = kv.get(1);                if (k != null && v != null)                    parameters.put(k, v);            }        }        String respCode = (String) parameters.get("RESULT");        if (respCode.equals("0")) {            result.put("refundResult", Boolean.TRUE);            result.put("refundCode", parameters.get("AUTHCODE"));        } else {            result.put("refundResult", Boolean.FALSE);        }        result.put("refundRefNum", parameters.get("PNREF"));        result.put("refundFlag", parameters.get("RESULT"));        result.put("refundMessage", parameters.get("RESPMSG"));    }    private static String parseContext(Map context) {        StringBuffer buf = new StringBuffer();        Set keySet = context.keySet();        Iterator i = keySet.iterator();        while (i.hasNext()) {            Object name = i.next();            Object value = context.get(name);            if (value != null && (value instanceof String) && ((String) value).length() == 0) continue;            buf.append(name + "=");            buf.append(value);            if (i.hasNext())                buf.append("&");        }        return buf.toString();    }    private static StringBuffer makeBaseParams(String resource) {        StringBuffer buf = new StringBuffer();        try {            buf.append("PARTNER=");            buf.append(UtilProperties.getPropertyValue(resource, "payment.verisign.partner", "VeriSign"));            buf.append("&");            buf.append("VENDOR=");            buf.append(UtilProperties.getPropertyValue(resource, "payment.verisign.vendor", "nobody"));            buf.append("&");            buf.append("USER=");            buf.append(UtilProperties.getPropertyValue(resource, "payment.verisign.user", "nobody"));            buf.append("&");            buf.append("PWD=");            buf.append(UtilProperties.getPropertyValue(resource, "payment.verisign.pwd", "password"));        } catch (Exception e) {            Debug.logError(e, module);            return null;        }        return buf;    }    private static PFProAPI init(String resource) {        String certsPath = UtilProperties.getPropertyValue(resource, "payment.verisign.certsPath", "pfcerts");        String hostAddress = UtilProperties.getPropertyValue(resource, "payment.verisign.hostAddress", "test-payflow.verisign.com");        Integer hostPort = Integer.decode(UtilProperties.getPropertyValue(resource, "payment.verisign.hostPort", "443"));        Integer timeout = Integer.decode(UtilProperties.getPropertyValue(resource, "payment.verisign.timeout", "80"));        String proxyAddress = UtilProperties.getPropertyValue(resource, "payment.verisign.proxyAddress", "");        Integer proxyPort = Integer.decode(UtilProperties.getPropertyValue(resource, "payment.verisign.proxyPort", "80"));        String proxyLogon = UtilProperties.getPropertyValue(resource, "payment.verisign.proxyLogon", "");        String proxyPassword = UtilProperties.getPropertyValue(resource, "payment.verisign.proxyPassword", "");        PFProAPI pn = new PFProAPI();        // Set the certificate path        pn.SetCertPath(certsPath);        // Call the client.        pn.CreateContext(hostAddress, hostPort.intValue(), timeout.intValue(), proxyAddress, proxyPort.intValue(), proxyLogon, proxyPassword);        return pn;    }}

⌨️ 快捷键说明

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