📄 worldpayevents.java
字号:
GenericValue productStore = null;
try {
productStore = orderHeader.getRelatedOne("ProductStore");
} catch (GenericEntityException e) {
Debug.logError(e, "Unable to get ProductStore from OrderHeader", module);
}
if (productStore == null) {
Debug.logError("ProductStore is null", module);
request.setAttribute("_ERROR_MESSAGE_", "<li>Problems getting merchant configuration, please contact customer service.");
return "error";
}
// get the payment properties file
GenericValue paymentConfig = ProductStoreWorker.getProductStorePaymentSetting(delegator, productStore.getString("productStoreId"), "EXT_WORLDPAY", null, true);
String configString = null;
if (paymentConfig != null) {
configString = paymentConfig.getString("paymentPropertiesPath");
}
if (configString == null) {
configString = "payment.properties";
}
String instId = UtilProperties.getPropertyValue(configString, "payment.worldpay.instId", "NONE");
String authMode = UtilProperties.getPropertyValue(configString, "payment.worldpay.authMode", "A");
String testMode = UtilProperties.getPropertyValue(configString, "payment.worldpay.testMode", "100");
String fixContact = UtilProperties.getPropertyValue(configString, "payment.worldpay.fixContact", "N");
String hideContact = UtilProperties.getPropertyValue(configString, "payment.worldpay.hideContact", "N");
String confirmTemplate = UtilProperties.getPropertyValue(configString, "payment.worldpay.confirmTemplate", "");
String timeout = UtilProperties.getPropertyValue(configString, "payment.worldpay.timeout", "0");
String company = UtilFormatOut.checkEmpty(productStore.getString("companyName"), "");
String defCur = UtilFormatOut.checkEmpty(productStore.getString("defaultCurrencyUomId"), "USD");
// order description
String description = "Order #" + orderId;
if (company != null && company.length() > 0)
description = description + " from " + company;
// check the instId - very important
if (instId == null || instId.equals("NONE")) {
Debug.logError("Worldpay InstId not found, cannot continue", module);
request.setAttribute("_ERROR_MESSAGE_", "<li>Problems getting merchant configuration, please contact customer service.");
return "error";
}
int instIdInt = 0;
try {
instIdInt = Integer.parseInt(instId);
} catch (NumberFormatException nfe) {
Debug.logError(nfe, "Problem converting instId string to integer", module);
request.setAttribute("_ERROR_MESSAGE_", "<li>Problems getting merchant configuration, please contact customer service.");
return "error";
}
// check the testMode
int testModeInt = -1;
if (testMode != null) {
try {
testModeInt = Integer.parseInt(testMode);
} catch (NumberFormatException nfe) {
Debug.logWarning(nfe, "Problems getting the testMode value, setting to 0", module);
testModeInt = 0;
}
}
// create the purchase link
String purchaseURL = null;
HTTPURL link = null;
URLParameters linkParms = null;
try {
purchaseURL = Select.getPurchaseURL();
link = new HTTPURL(purchaseURL);
linkParms = link.getParameters();
} catch (SelectException e) {
Debug.logError(e, "Problems creating the purchase url", module);
request.setAttribute("_ERROR_MESSAGE_", "<li>Problem creating link to WorldPay, please contact customer service.");
return "error";
} catch (ArgumentException e) {
Debug.logError(e, "Problems creating HTTPURL link", module);
request.setAttribute("_ERROR_MESSAGE_", "<li>Problem creating link to WorldPay, please contact customer service.");
return "error";
}
// create the currency amount
double orderTotal = orderHeader.getDouble("grandTotal").doubleValue();
CurrencyAmount currencyAmount = null;
try {
Currency currency = SelectCurrency.getInstanceByISOCode(defCur);
currencyAmount = new CurrencyAmount(orderTotal, currency);
} catch (ArgumentException ae) {
Debug.logError(ae, "Problems building CurrencyAmount", module);
request.setAttribute("_ERROR_MESSAGE_", "<li>Merchant Configuration Error, please contact customer service.");
return "error";
}
// create a purchase token
PurchaseToken token = null;
try {
token = new PurchaseToken(instIdInt, currencyAmount, orderId);
} catch (SelectException e) {
Debug.logError(e, "Cannot create purchase token", module);
} catch (ArgumentException e) {
Debug.logError(e, "Cannot create purchase token", module);
}
if (token == null) {
request.setAttribute("_ERROR_MESSAGE_", "<li>Problems creating a purchase token, please contact customer service.");
return "error";
}
// set the auth/test modes
try {
token.setAuthorisationMode(authMode);
} catch (SelectException e) {
Debug.logWarning(e, "Problems setting the authorization mode", module);
}
token.setTestMode(testModeInt);
// set the token to the purchase link
try {
linkParms.setValue(SelectDefs.SEL_purchase, token.produce());
} catch (SelectException e) {
Debug.logError(e, "Problems producing token", module);
request.setAttribute("_ERROR_MESSAGE_", "<li>Problems producing purchase token, please contact customer service.");
return "error";
}
// set the customer data in the link
linkParms.setValue(SelectDefs.SEL_desc, description);
linkParms.setValue(SelectDefs.SEL_name, name != null ? name : "");
linkParms.setValue(SelectDefs.SEL_address, address != null ? address.toString() : "");
linkParms.setValue(SelectDefs.SEL_postcode, contactAddress != null ? contactAddress.getString("postalCode") : "");
linkParms.setValue(SelectDefs.SEL_country, countryGeo.getString("geoCode"));
linkParms.setValue(SelectDefs.SEL_tel, phoneNumber != null ? phoneNumber : "");
linkParms.setValue(SelectDefs.SEL_email, emailAddress != null ? emailAddress : "");
// set some optional data
if (fixContact != null && fixContact.toUpperCase().startsWith("Y")) {
linkParms.setValue(SelectDefs.SEL_fixContact, "Y");
}
if (hideContact != null && hideContact.toUpperCase().startsWith("Y")) {
linkParms.setValue("hideContact", "Y"); // why is this not in SelectDefs??
}
// now set some send-back parameters
linkParms.setValue("M_controlPath", (String)request.getAttribute("_CONTROL_PATH_"));
linkParms.setValue("M_userLoginId", userLogin.getString("userLoginId"));
linkParms.setValue("M_dispatchName", dispatcher.getName());
linkParms.setValue("M_delegatorName", delegator.getDelegatorName());
linkParms.setValue("M_webSiteId", webSiteId);
linkParms.setValue("M_localLocale", UtilHttp.getLocale(request).toString());
linkParms.setValue("M_confirmTemplate", confirmTemplate != null ? confirmTemplate : "");
// redirect to worldpay
try {
response.sendRedirect(link.produce());
} catch (IOException e) {
Debug.logError(e, "Problems redirecting to Worldpay", module);
request.setAttribute("_ERROR_MESSAGE_", "<li>Problems connecting with WorldPay, please contact customer service.");
return "error";
}
return "success";
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -