📄 valuelinkservices.java
字号:
vlFulFill.put("typeEnumId", "VL_ACTIVATE");
vlFulFill.put("merchantId", UtilProperties.getPropertyValue(paymentConfig, "payment.valuelink.merchantId"));
vlFulFill.put("partyId", partyId);
vlFulFill.put("orderId", orderId);
vlFulFill.put("orderItemSeqId", orderItem.get("orderItemSeqId"));
vlFulFill.put("surveyResponseId", surveyResponse.get("surveyResponseId"));
vlFulFill.put("cardNumber", activateResult.get("cardNumber"));
vlFulFill.put("pinNumber", activateResult.get("pin"));
vlFulFill.put("amount", activateResult.get("amount"));
vlFulFill.put("responseCode", activateResult.get("responseCode"));
vlFulFill.put("referenceNum", activateResult.get("referenceNum"));
vlFulFill.put("authCode", activateResult.get("authCode"));
vlFulFill.put("userLogin", userLogin);
try {
dispatcher.runAsync("createVLFulFillmentRecord", vlFulFill, true);
} catch (GenericServiceException e) {
Debug.logError(e, module);
return ServiceUtil.returnError("Unable to store fulfillment info");
}
if (failure) {
return ServiceUtil.returnError("Activate Failed");
}
// add some information to the answerMap for the email
answerMap.put("cardNumber", activateResult.get("cardNumber"));
answerMap.put("pinNumber", activateResult.get("pin"));
answerMap.put("amount", activateResult.get("amount"));
// get the email setting for this email type
GenericValue productStoreEmail = null;
String emailType = "PRDS_GC_PURCHASE";
try {
productStoreEmail = delegator.findByPrimaryKey("ProductStoreEmailSetting", UtilMisc.toMap("productStoreId", productStoreId, "emailType", emailType));
} catch (GenericEntityException e) {
Debug.logError(e, "Unable to get product store email setting for gift card purchase", module);
}
if (productStoreEmail == null) {
Debug.logError("No gift card purchase email setting found for this store; cannot send gift card information", module);
} else {
String subjectString = productStoreEmail.getString("subject");
subjectString = FlexibleStringExpander.expandString(subjectString, answerMap);
// set the bcc address(s)
String bcc = productStoreEmail.getString("bccAddress");
if (copyMe) {
if (UtilValidate.isNotEmpty(bcc)) {
bcc = bcc + "," + orderEmails;
} else {
bcc = orderEmails;
}
}
String ofbizHome = System.getProperty("ofbiz.home");
Map emailCtx = new HashMap();
emailCtx.put("templateName", ofbizHome + productStoreEmail.get("templatePath"));
emailCtx.put("templateData", answerMap);
emailCtx.put("sendTo", sendToEmail);
emailCtx.put("contentType", productStoreEmail.get("contentType"));
emailCtx.put("sendFrom", productStoreEmail.get("fromAddress"));
emailCtx.put("sendCc", productStoreEmail.get("ccAddress"));
emailCtx.put("sendBcc", bcc);
emailCtx.put("subject", subjectString);
emailCtx.put("userLogin", userLogin);
// send off the email async so we will retry on failed attempts
try {
dispatcher.runAsync("sendGenericNotificationEmail", emailCtx);
} catch (GenericServiceException e) {
Debug.logError(e, "Problem sending mail", module);
// this is fatal; we will rollback and try again later
return ServiceUtil.returnError("Problem sending email");
}
}
}
return ServiceUtil.returnSuccess();
}
public static Map giftCardReload(DispatchContext dctx, Map context) {
// this service should always be called via FULFILLMENT_EXTSYNC
LocalDispatcher dispatcher = dctx.getDispatcher();
GenericDelegator delegator = dctx.getDelegator();
GenericValue userLogin = (GenericValue) context.get("userLogin");
GenericValue orderItem = (GenericValue) context.get("orderItem");
// order ID for tracking
String orderId = orderItem.getString("orderId");
// the order header for store info
GenericValue orderHeader = null;
try {
orderHeader = orderItem.getRelatedOne("OrderHeader");
} catch (GenericEntityException e) {
Debug.logError(e, "Unable to get OrderHeader from OrderItem",module);
return ServiceUtil.returnError("Unable to get OrderHeader from OrderItem");
}
// get the order read helper
OrderReadHelper orh = new OrderReadHelper(orderHeader);
// get the currency
String currency = orh.getCurrency();
// make sure we have a currency
if (currency == null) {
currency = UtilProperties.getPropertyValue("general.properties", "currency.uom.id.default", "USD");
}
// get the product store
String productStoreId = null;
if (orderHeader != null) {
productStoreId = orh.getProductStoreId();
}
if (productStoreId == null) {
return ServiceUtil.returnError("Unable to process gift card reload; no productStoreId on OrderHeader : " + orderId);
}
// payment config
GenericValue paymentSetting = ProductStoreWorker.getProductStorePaymentSetting(delegator, productStoreId, "GIFT_CARD", null, true);
String paymentConfig = null;
if (paymentSetting != null) {
paymentConfig = paymentSetting.getString("paymentPropertiesPath");
}
if (paymentConfig == null) {
return ServiceUtil.returnError("Unable to get payment configuration file");
}
// party ID for tracking
GenericValue placingParty = orh.getPlacingParty();
String partyId = null;
if (placingParty != null) {
partyId = placingParty.getString("partyId");
}
// amount of the gift card reload
Double amount = orderItem.getDouble("unitPrice");
// survey information
String surveyId = UtilProperties.getPropertyValue(paymentConfig, "payment.valuelink.reload.surveyId");
// get the survey response
GenericValue surveyResponse = null;
try {
Map fields = UtilMisc.toMap("orderId", orderId, "orderItemSeqId", orderItem.get("orderItemSeqId"), "surveyId", surveyId);
List order = UtilMisc.toList("-responseDate");
List responses = delegator.findByAnd("SurveyResponse", fields, order);
// there should be only one
surveyResponse = EntityUtil.getFirst(responses);
} catch (GenericEntityException e) {
Debug.logError(e, module);
return ServiceUtil.returnError("Unable to get survey response information; cannot fulfill gift card reload");
}
// get the response answers
List responseAnswers = null;
try {
responseAnswers = surveyResponse.getRelated("SurveyResponseAnswer");
} catch (GenericEntityException e) {
Debug.logError(e, module);
return ServiceUtil.returnError("Unable to get survey response answers from survey response; cannot fulfill gift card reload");
}
// make a map of answer info
Map answerMap = new HashMap();
if (responseAnswers != null) {
Iterator rai = responseAnswers.iterator();
while (rai.hasNext()) {
GenericValue answer = (GenericValue) rai.next();
GenericValue question = null;
try {
question = answer.getRelatedOne("SurveyQuestion");
} catch (GenericEntityException e) {
Debug.logError(e, module);
return ServiceUtil.returnError("Unable to get survey question from answer");
}
if (question != null) {
String desc = question.getString("description");
String ans = answer.getString("textResponse"); // only support text response types for now
answerMap.put(desc, ans);
}
}
}
String cardNumberKey = UtilProperties.getPropertyValue(paymentConfig, "payment.valuelink.reload.survey.cardNumber");
String pinNumberKey = UtilProperties.getPropertyValue(paymentConfig, "payment.valuelink.reload.survey.pinNumber");
String cardNumber = (String) answerMap.get(cardNumberKey);
String pinNumber = (String) answerMap.get(pinNumberKey);
// reload the gift card
Map reloadCtx = new HashMap();
reloadCtx.put("paymentConfig", paymentConfig);
reloadCtx.put("currency", currency);
reloadCtx.put("partyId", partyId);
reloadCtx.put("orderId", orderId);
reloadCtx.put("cardNumber", cardNumber);
reloadCtx.put("pin", pinNumber);
reloadCtx.put("amount", amount);
reloadCtx.put("userLogin", userLogin);
Map reloadResult = null;
try {
reloadResult = dispatcher.runSync("reloadGiftCard", reloadCtx);
} catch (GenericServiceException e) {
Debug.logError(e, "Unable to reload gift card", module);
return ServiceUtil.returnError("Problem running reload service");
}
// create the fulfillment record
Map vlFulFill = new HashMap();
vlFulFill.put("typeEnumId", "VL_RELOAD");
vlFulFill.put("merchantId", UtilProperties.getPropertyValue(paymentConfig, "payment.valuelink.merchantId"));
vlFulFill.put("partyId", partyId);
vlFulFill.put("orderId", orderId);
vlFulFill.put("orderItemSeqId", orderItem.get("orderItemSeqId"));
vlFulFill.put("surveyResponseId", surveyResponse.get("surveyResponseId"));
vlFulFill.put("cardNumber", cardNumber);
vlFulFill.put("pinNumber", pinNumber);
vlFulFill.put("amount", amount);
vlFulFill.put("responseCode", reloadResult.get("responseCode"));
vlFulFill.put("referenceNum", reloadResult.get("referenceNum"));
vlFulFill.put("authCode", reloadResult.get("authCode"));
vlFulFill.put("userLogin", userLogin);
try {
dispatcher.runAsync("createVLFulFillmentRecord", vlFulFill, true);
} catch (GenericServiceException e) {
Debug.logError(e, module);
return ServiceUtil.returnError("Unable to store fulfillment info");
}
Boolean processResult = (Boolean) reloadResult.get("processResult");
if (reloadResult == null || reloadResult.containsKey(ModelService.ERROR_MESSAGE) || !processResult.booleanValue()) {
Debug.logError("Reload Failed Need to Refund : " + reloadResult, module);
// process the return
try {
Map refundCtx = UtilMisc.toMap("orderItem", orderItem, "partyId", partyId, "userLogin", userLogin);
dispatcher.runAsync("refundVLReload", refundCtx, null, true, 300, true);
} catch (GenericServiceException e) {
Debug.logError(e, "ERROR! Unable to call create refund service; this failed reload will NOT be refunded", module);
}
String responseCode = "-1";
if (processResult != null) {
responseCode = (String) reloadResult.get("responseCode");
}
if ("17".equals(responseCode)) {
Debug.logError("Error code : " + responseCode + " : Max Balance Exceeded", module);
return ServiceUtil.returnError("Gift Card Reload Failed : Max Balance Exceeded; charges will be refunded");
} else {
Debug.logError("Error code : " + responseCode + " : Processing Error", module);
return ServiceUtil.returnError("Gift Card Reload Failed : Processing Error; charges will be refunded");
}
}
// add some information to the answerMap for the email
answerMap.put("processResult", reloadResult.get("processResult"));
answerMap.put("responseCode", reloadResult.get("responseCode"));
answerMap.put("previousAmount", reloadResult.get("previousAmount"));
answerMap.put("amount", reloadResult.get("amount"));
// get the email setting for this email type
GenericValue productStoreEmail = null;
String emailType = "PRDS_GC_RELOAD";
try {
productStoreEmail = delegator.findByPrimaryKey("ProductStoreEmailSetting", UtilMisc.toMap("productStoreId", productStoreId, "emailType", emailType));
} catch (GenericEntityException e) {
Debug.logError(e, "Unable to get product store email setting for gift card purchase", module);
}
if (productStoreEmail == null) {
Debug.logError("No gift card purchase email setting found for this store; cannot send gift card information", module);
} else {
String subjectString = productStoreEmail.getString("subject");
subjectString = FlexibleStringExpander.expandString(subjectString, answerMap);
String ofbizHome = System.getProperty("ofbiz.home");
Map emailCtx = new HashMap();
emailCtx.put("templateName", ofbizHome + productStoreEmail.get("templatePath"));
emailCtx.put("templateData", answerMap);
emailCtx.put("sendTo", orh.getOrderEmailString());
emailCtx.put("contentType", productStoreEmail.get("contentType"));
emailCtx.put("sendFrom", productStoreEmail.get("fromAddress"));
emailCtx.put("sendCc", productStoreEmail.get("ccAddress"));
emailCtx.put("sendBcc", productStoreEmail.get("bccAddress"));
emailCtx.put("subject", subjectString);
emailCtx.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -