📄 paymentservices.java
字号:
origMaskedNumber = origMaskedNumber + "*";
}
origMaskedNumber = origMaskedNumber + origCardNumber.substring(cardLength);
Debug.log(origMaskedNumber);
// compare the two masked numbers
if (updatedCardNumber.equals(origMaskedNumber)) {
updatedCardNumber = origCardNumber;
}
}
context.put("cardNumber", updatedCardNumber);
if (!UtilValidate.isCardMatch((String) context.get("cardType"), (String) context.get("cardNumber")))
messages.add(
(String) context.get("cardNumber")
+ UtilValidate.isCreditCardPrefixMsg
+ (String) context.get("cardType")
+ UtilValidate.isCreditCardSuffixMsg
+ " (It appears to be a "
+ UtilValidate.getCardType((String) context.get("cardNumber"))
+ " credit card number)");
if (!UtilValidate.isDateAfterToday((String) context.get("expireDate")))
messages.add("The expiration date " + (String) context.get("expireDate") + " is before today.");
if (messages.size() > 0) {
return ServiceUtil.returnError(messages);
}
newPm = new GenericValue(paymentMethod);
toBeStored.add(newPm);
newCc = new GenericValue(creditCard);
toBeStored.add(newCc);
Long newPmId = delegator.getNextSeqId("PaymentMethod");
if (newPmId == null) {
return ServiceUtil.returnError("ERROR: Could not update credit card info (id generation failure)");
}
newPm.set("partyId", partyId);
newPm.set("fromDate", context.get("fromDate"), false);
newPm.set("thruDate", context.get("thruDate"));
newCc.set("nameOnCard", context.get("nameOnCard"));
newCc.set("companyNameOnCard", context.get("companyNameOnCard"));
newCc.set("cardType", context.get("cardType"));
newCc.set("cardNumber", context.get("cardNumber"));
newCc.set("expireDate", context.get("expireDate"));
GenericValue newPartyContactMechPurpose = null;
String contactMechId = (String) context.get("contactMechId");
if (contactMechId != null && contactMechId.length() > 0 && !contactMechId.equals("_NEW_")) {
// set the contactMechId on the credit card
newCc.set("contactMechId", contactMechId);
}
if (!newCc.equals(creditCard) || !newPm.equals(paymentMethod)) {
newPm.set("paymentMethodId", newPmId.toString());
newCc.set("paymentMethodId", newPmId.toString());
newPm.set("fromDate", (context.get("fromDate") != null ? context.get("fromDate") : now));
isModified = true;
}
if (contactMechId != null && contactMechId.length() > 0 && !contactMechId.equals("_NEW_")) {
// add a PartyContactMechPurpose of BILLING_LOCATION if necessary
String contactMechPurposeTypeId = "BILLING_LOCATION";
GenericValue tempVal = null;
try {
List allPCMPs =
EntityUtil.filterByDate(
delegator.findByAnd(
"PartyContactMechPurpose",
UtilMisc.toMap(
"partyId",
partyId,
"contactMechId",
contactMechId,
"contactMechPurposeTypeId",
contactMechPurposeTypeId),
null),
true);
tempVal = EntityUtil.getFirst(allPCMPs);
} catch (GenericEntityException e) {
Debug.logWarning(e.getMessage(), module);
tempVal = null;
}
if (tempVal == null) {
// no value found, create a new one
newPartyContactMechPurpose =
delegator.makeValue(
"PartyContactMechPurpose",
UtilMisc.toMap(
"partyId",
partyId,
"contactMechId",
contactMechId,
"contactMechPurposeTypeId",
contactMechPurposeTypeId,
"fromDate",
now));
}
}
if (isModified) {
// Debug.logInfo("yes, is modified", module);
if (newPartyContactMechPurpose != null)
toBeStored.add(newPartyContactMechPurpose);
// set thru date on old paymentMethod
paymentMethod.set("thruDate", now);
toBeStored.add(paymentMethod);
try {
delegator.storeAll(toBeStored);
} catch (GenericEntityException e) {
Debug.logWarning(e.getMessage(), module);
return ServiceUtil.returnError(
"ERROR: Could not update credit card (write failure): " + e.getMessage());
}
} else {
result.put("newPaymentMethodId", paymentMethodId);
result.put(ModelService.RESPONSE_MESSAGE, ModelService.RESPOND_SUCCESS);
if (contactMechId == null || !contactMechId.equals("_NEW_")) {
result.put(ModelService.SUCCESS_MESSAGE, "No changes made, not updating credit card");
}
return result;
}
result.put("newPaymentMethodId", newCc.getString("paymentMethodId"));
result.put(ModelService.RESPONSE_MESSAGE, ModelService.RESPOND_SUCCESS);
return result;
}
public static Map createGiftCard(DispatchContext ctx, Map context) {
Map result = new HashMap();
GenericDelegator delegator = ctx.getDelegator();
Security security = ctx.getSecurity();
GenericValue userLogin = (GenericValue) context.get("userLogin");
Timestamp now = UtilDateTime.nowTimestamp();
String partyId = ServiceUtil.getPartyIdCheckSecurity(userLogin, security, context, result, "PAY_INFO", "_CREATE");
if (result.size() > 0)
return result;
List toBeStored = new LinkedList();
GenericValue newPm = delegator.makeValue("PaymentMethod", null);
toBeStored.add(newPm);
GenericValue newGc = delegator.makeValue("GiftCard", null);
toBeStored.add(newGc);
Long newPmId = delegator.getNextSeqId("PaymentMethod");
if (newPmId == null) {
return ServiceUtil.returnError("ERROR: Could not create GiftCard (id generation failure)");
}
newPm.set("partyId", partyId);
newPm.set("fromDate", (context.get("fromDate") != null ? context.get("fromDate") : now));
newPm.set("thruDate", context.get("thruDate"));
newGc.set("cardNumber", context.get("cardNumber"));
newGc.set("pinNumber", context.get("pinNumber"));
newGc.set("expireDate", context.get("expireDate"));
newPm.set("paymentMethodId", newPmId.toString());
newPm.set("paymentMethodTypeId", "GIFT_CARD");
newGc.set("paymentMethodId", newPmId.toString());
try {
delegator.storeAll(toBeStored);
} catch (GenericEntityException e) {
Debug.logWarning(e.getMessage(), module);
return ServiceUtil.returnError("ERROR: Could not create GiftCard (write failure): " + e.getMessage());
}
result.put("paymentMethodId", newGc.getString("paymentMethodId"));
result.put(ModelService.RESPONSE_MESSAGE, ModelService.RESPOND_SUCCESS);
return result;
}
public static Map updateGiftCard(DispatchContext ctx, Map context) {
Map result = new HashMap();
GenericDelegator delegator = ctx.getDelegator();
Security security = ctx.getSecurity();
GenericValue userLogin = (GenericValue) context.get("userLogin");
Timestamp now = UtilDateTime.nowTimestamp();
String partyId =
ServiceUtil.getPartyIdCheckSecurity(userLogin, security, context, result, "PAY_INFO", "_UPDATE");
if (result.size() > 0)
return result;
List toBeStored = new LinkedList();
boolean isModified = false;
GenericValue paymentMethod = null;
GenericValue newPm = null;
GenericValue giftCard = null;
GenericValue newGc = null;
String paymentMethodId = (String) context.get("paymentMethodId");
try {
giftCard = delegator.findByPrimaryKey("GiftCard", UtilMisc.toMap("paymentMethodId", paymentMethodId));
paymentMethod = delegator.findByPrimaryKey("PaymentMethod", UtilMisc.toMap("paymentMethodId", paymentMethodId));
} catch (GenericEntityException e) {
Debug.logWarning(e.getMessage(), module);
return ServiceUtil.returnError("ERROR: Could not get GiftCard to update (read error): " + e.getMessage());
}
if (giftCard == null || paymentMethod == null) {
return ServiceUtil.returnError("ERROR: Could not find GiftCard to update with id " + paymentMethodId);
}
// card number (masked)
String cardNumber = StringUtil.removeSpaces((String) context.get("cardNumber"));
if (cardNumber.startsWith("*")) {
// get the masked card number from the db
String origCardNumber = giftCard.getString("cardNumber");
//Debug.log(origCardNumber);
String origMaskedNumber = "";
int cardLength = origCardNumber.length() - 4;
if (cardLength > 0) {
for (int i = 0; i < cardLength; i++) {
origMaskedNumber = origMaskedNumber + "*";
}
origMaskedNumber = origMaskedNumber + origCardNumber.substring(cardLength);
} else {
origMaskedNumber = origCardNumber;
}
// compare the two masked numbers
if (cardNumber.equals(origMaskedNumber)) {
cardNumber = origCardNumber;
}
}
context.put("cardNumber", cardNumber);
newPm = new GenericValue(paymentMethod);
toBeStored.add(newPm);
newGc = new GenericValue(giftCard);
toBeStored.add(newGc);
Long newPmId = delegator.getNextSeqId("PaymentMethod");
if (newPmId == null) {
return ServiceUtil.returnError("ERROR: Could not update GiftCard info (id generation failure)");
}
newPm.set("partyId", partyId);
newPm.set("fromDate", context.get("fromDate"), false);
newPm.set("thruDate", context.get("thruDate"));
newGc.set("cardNumber", context.get("cardNumber"));
newGc.set("pinNumber", context.get("pinNumber"));
newGc.set("expireDate", context.get("expireDate"));
if (!newGc.equals(giftCard) || !newPm.equals(paymentMethod)) {
newPm.set("paymentMethodId", newPmId.toString());
newGc.set("paymentMethodId", newPmId.toString());
newPm.set("fromDate", (context.get("fromDate") != null ? context.get("fromDate") : now));
isModified = true;
}
if (isModified) {
// set thru date on old paymentMethod
paymentMethod.set("thruDate", now);
toBeStored.add(paymentMethod);
try {
delegator.storeAll(toBeStored);
} catch (GenericEntityException e) {
Debug.logWarning(e.getMessage(), module);
return ServiceUtil.returnError(
"ERROR: Could not update EFT Account (write failure): " + e.getMessage());
}
} else {
result.put("newPaymentMethodId", paymentMethodId);
result.put(ModelService.RESPONSE_MESSAGE, ModelService.RESPOND_SUCCESS);
result.put(ModelService.SUCCESS_MESSAGE, "No changes made, not updating EFT Account");
return result;
}
result.put("newPaymentMethodId", newGc.getString("paymentMethodId"));
result.put(ModelService.RESPONSE_MESSAGE, ModelService.RESPOND_SUCCESS);
return result;
}
/**
* Creates EftAccount and PaymentMethod entities according to the parameters passed in the context
* <b>security check</b>: userLogin partyId must equal partyId, or must have PAY_INFO_CREATE permission
* @param ctx The DispatchContext that this service is operating in
* @param context Map containing the input parameters
* @return Map with the result of the service, the output parameters
*/
public static Map createEftAccount(DispatchContext ctx, Map context) {
Map result = new HashMap();
GenericDelegator delegator = ctx.getDelegator();
Security security = ctx.getSecurity();
GenericValue userLogin = (GenericValue) context.get("userLogin");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -