/** 更新 */ @RequestMapping(value = "/update", method = RequestMethod.POST) public String update( String paymentName, String partner, String key, FeeType feeType, BigDecimal fee, String logo, String description, @RequestParam(defaultValue = "false") Boolean isEnabled, Integer order, RedirectAttributes redirectAttributes) { PluginConfig pluginConfig = tenpayBankPlugin.getPluginConfig(); pluginConfig.setAttribute(PaymentPlugin.PAYMENT_NAME_ATTRIBUTE_NAME, paymentName); pluginConfig.setAttribute("partner", partner); pluginConfig.setAttribute("key", key); pluginConfig.setAttribute(PaymentPlugin.FEE_TYPE_ATTRIBUTE_NAME, feeType.toString()); pluginConfig.setAttribute(PaymentPlugin.FEE_ATTRIBUTE_NAME, fee.toString()); pluginConfig.setAttribute(PaymentPlugin.LOGO_ATTRIBUTE_NAME, logo); pluginConfig.setAttribute(PaymentPlugin.DESCRIPTION_ATTRIBUTE_NAME, description); pluginConfig.setIsEnabled(isEnabled); pluginConfig.setOrder(order); pluginConfigService.update(pluginConfig); addFlashMessage(redirectAttributes, SUCCESS_MESSAGE); return "redirect:/admin/payment_plugin/list.jhtml"; }
@Override public Map<String, Object> getParameterMap( String sn, String description, HttpServletRequest request) { PluginConfig pluginConfig = getPluginConfig(); Payment payment = getPayment(sn); Map<String, Object> parameterMap = new LinkedHashMap<String, Object>(); parameterMap.put("inputCharset", "1"); parameterMap.put("pageUrl", getNotifyUrl(sn, NotifyMethod.sync)); parameterMap.put("bgUrl", getNotifyUrl(sn, NotifyMethod.async)); parameterMap.put("version", "v2.0"); parameterMap.put("language", "1"); parameterMap.put("signType", "1"); parameterMap.put("merchantAcctId", pluginConfig.getAttribute("partner")); parameterMap.put("payerIP", request.getLocalAddr()); parameterMap.put("orderId", sn); parameterMap.put( "orderAmount", payment.getAmount().multiply(new BigDecimal(100)).setScale(0).toString()); parameterMap.put("orderTime", new SimpleDateFormat("yyyyMMddhhmmss").format(new Date())); parameterMap.put("orderTimestamp", new SimpleDateFormat("yyyyMMddhhmmss").format(new Date())); parameterMap.put( "productName", StringUtils.abbreviate(description.replaceAll("[^0-9a-zA-Z\\u4e00-\\u9fa5 ]", ""), 100)); parameterMap.put( "productDesc", StringUtils.abbreviate(description.replaceAll("[^0-9a-zA-Z\\u4e00-\\u9fa5 ]", ""), 400)); parameterMap.put("ext1", "dp2345"); parameterMap.put("payType", "00"); parameterMap.put("signMsg", generateSign(parameterMap)); return parameterMap; }
/** 安装 */ @RequestMapping(value = "/install", method = RequestMethod.POST) public @ResponseBody Message install() { if (!tenpayBankPlugin.getIsInstalled()) { PluginConfig pluginConfig = new PluginConfig(); pluginConfig.setPluginId(tenpayBankPlugin.getId()); pluginConfig.setIsEnabled(false); pluginConfigService.save(pluginConfig); } return SUCCESS_MESSAGE; }
/** * 生成签名 * * @param parameterMap 参数 * @return 签名 */ private String generateSign(Map<String, Object> parameterMap) { PluginConfig pluginConfig = getPluginConfig(); return DigestUtils.md5Hex( joinKeyValue( parameterMap, null, "&key=" + pluginConfig.getAttribute("key"), "&", true, "signMsg")) .toUpperCase(); }
@Override public boolean verifyNotify(String sn, NotifyMethod notifyMethod, HttpServletRequest request) { PluginConfig pluginConfig = getPluginConfig(); Payment payment = getPayment(sn); Map<String, Object> parameterMap = new LinkedHashMap<String, Object>(); parameterMap.put("merchantAcctId", request.getParameter("merchantAcctId")); parameterMap.put("version", request.getParameter("version")); parameterMap.put("language", request.getParameter("language")); parameterMap.put("signType", request.getParameter("signType")); parameterMap.put("payType", request.getParameter("payType")); parameterMap.put("bankId", request.getParameter("bankId")); parameterMap.put("orderId", request.getParameter("orderId")); parameterMap.put("orderTime", request.getParameter("orderTime")); parameterMap.put("orderAmount", request.getParameter("orderAmount")); parameterMap.put("bindCard", request.getParameter("bindCard")); parameterMap.put("bindMobile", request.getParameter("bindMobile")); parameterMap.put("dealId", request.getParameter("dealId")); parameterMap.put("bankDealId", request.getParameter("bankDealId")); parameterMap.put("dealTime", request.getParameter("dealTime")); parameterMap.put("payAmount", request.getParameter("payAmount")); parameterMap.put("fee", request.getParameter("fee")); parameterMap.put("ext1", request.getParameter("ext1")); parameterMap.put("ext2", request.getParameter("ext2")); parameterMap.put("payResult", request.getParameter("payResult")); parameterMap.put("errCode", request.getParameter("errCode")); parameterMap.put("signMsg", request.getParameter("signMsg")); if (generateSign(parameterMap).equals(request.getParameter("signMsg")) && pluginConfig.getAttribute("partner").equals(request.getParameter("merchantAcctId")) && sn.equals(request.getParameter("orderId")) && "10".equals(request.getParameter("payResult")) && payment .getAmount() .multiply(new BigDecimal(100)) .compareTo(new BigDecimal(request.getParameter("payAmount"))) == 0) { return true; } return false; }