public void filter(StringBuffer sql, Cat cat, String urlFragment) { String keyword = urlFragment == null ? "" : urlFragment; if (!StringUtil.isEmpty(keyword)) { String encoding = EopSetting.ENCODING; if (!StringUtil.isEmpty(encoding)) { keyword = StringUtil.to(keyword, encoding); } sql.append(" and g.name like '%"); sql.append(keyword); sql.append("%'"); } }
@Override public String onCallBack() { HttpServletRequest request = ThreadContextHolder.getHttpRequest(); Map<String, String> configparams = this.getConfigParams(); String partner = configparams.get("partner"); // partner合作伙伴id(必须填写) String key = configparams.get("key"); // partner 的对应交易安全校验码(必须填写) String encoding = configparams.get("callback_encoding"); // 获取支付宝POST过来反馈信息 Map<String, String> params = new HashMap<String, String>(); Map requestParams = request.getParameterMap(); for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext(); ) { String name = (String) iter.next(); String[] values = (String[]) requestParams.get(name); String valueStr = ""; for (int i = 0; i < values.length; i++) { valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ","; } if (!StringUtil.isEmpty(encoding)) { valueStr = StringUtil.to(valueStr, encoding); } params.put(name, valueStr); } // 获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表(以下仅供参考)// String trade_no = request.getParameter("trade_no"); // 支付宝交易号 String order_no = request.getParameter("out_trade_no"); // 获取订单号 String total_fee = request.getParameter("price"); // 获取总金额 String subject = request.getParameter("subject"); // 商品名称、订单名称 if (!StringUtil.isEmpty(encoding)) { subject = StringUtil.to(subject, encoding); } String body = ""; if (request.getParameter("body") != null) { body = request.getParameter("body"); // 商品描述、订单备注、描述 if (!StringUtil.isEmpty(encoding)) { body = StringUtil.to(body, encoding); } } String buyer_email = request.getParameter("buyer_email"); // 买家支付宝账号 String receive_name = ""; // 收货人姓名 if (request.getParameter("receive_name") != null) { receive_name = request.getParameter("receive_name"); if (!StringUtil.isEmpty(encoding)) { receive_name = StringUtil.to(receive_name, encoding); } } String receive_address = ""; // 收货人地址 if (request.getParameter("receive_address") != null) { receive_address = request.getParameter("receive_address"); if (!StringUtil.isEmpty(encoding)) { receive_address = StringUtil.to(receive_address, encoding); } } String receive_zip = ""; // 收货人邮编 if (request.getParameter("receive_zip") != null) { receive_zip = request.getParameter("receive_zip"); if (!StringUtil.isEmpty(encoding)) { receive_zip = StringUtil.to(receive_zip, encoding); } } String receive_phone = ""; // 收货人电话 if (request.getParameter("receive_phone") != null) { receive_phone = request.getParameter("receive_phone"); if (!StringUtil.isEmpty(encoding)) { receive_phone = StringUtil.to(receive_phone, encoding); } } String receive_mobile = ""; // 收货人手机 if (request.getParameter("receive_mobile") != null) { receive_mobile = request.getParameter("receive_mobile"); if (!StringUtil.isEmpty(encoding)) { receive_mobile = StringUtil.to(receive_mobile, encoding); } } String trade_status = request.getParameter("trade_status"); // 交易状态 // 获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表(以上仅供参考)// if (AlipayNotify.callbackverify(params, key, partner)) { // 验证成功 ////////////////////////////////////////////////////////////////////////////////////////// // 请在这里加上商户的业务逻辑程序代码 this.paySuccess(order_no); // ——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— this.logger.info("异步校验订单[" + order_no + "]成功"); if (trade_status.equals("WAIT_BUYER_PAY")) { // 该判断表示买家已在支付宝交易管理中产生了交易记录,但没有付款 // 判断该笔订单是否在商户网站中已经做过处理(可参考“集成教程”中“3.4返回数据处理”) // 如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 // 如果有做过处理,不执行商户的业务程序 return ("success"); // 请不要修改或删除 } else if (trade_status.equals("WAIT_SELLER_SEND_GOODS")) { // 该判断表示买家已在支付宝交易管理中产生了交易记录且付款成功,但卖家没有发货 // 判断该笔订单是否在商户网站中已经做过处理(可参考“集成教程”中“3.4返回数据处理”) // 如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 // 如果有做过处理,不执行商户的业务程序 return ("success"); // 请不要修改或删除 } else if (trade_status.equals("WAIT_BUYER_CONFIRM_GOODS")) { // 该判断表示卖家已经发了货,但买家还没有做确认收货的操作 // 判断该笔订单是否在商户网站中已经做过处理(可参考“集成教程”中“3.4返回数据处理”) // 如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 // 如果有做过处理,不执行商户的业务程序 return ("success"); // 请不要修改或删除 } else if (trade_status.equals("TRADE_FINISHED")) { // 该判断表示买家已经确认收货,这笔交易完成 // 判断该笔订单是否在商户网站中已经做过处理(可参考“集成教程”中“3.4返回数据处理”) // 如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 // 如果有做过处理,不执行商户的业务程序 return ("success"); // 请不要修改或删除 } else { return ("success"); // 请不要修改或删除 } // ——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ////////////////////////////////////////////////////////////////////////////////////////// } else { // 验证失败 return ("fail"); } }
@Override public String onReturn() { Map<String, String> cfgparams = paymentManager.getConfigParams(this.getId()); HttpServletRequest request = ThreadContextHolder.getHttpRequest(); this.logger.info("返回来的body" + request.getParameter("body")); String key = cfgparams.get("key"); String partner = cfgparams.get("partner"); String encoding = cfgparams.get("return_encoding"); // 获取支付宝GET过来反馈信息 Map<String, String> params = new HashMap<String, String>(); Map requestParams = request.getParameterMap(); for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext(); ) { String name = (String) iter.next(); String[] values = (String[]) requestParams.get(name); String valueStr = ""; for (int i = 0; i < values.length; i++) { valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ","; } // 乱码解决,这段代码在出现乱码时使用。如果mysign和sign不相等也可以使用这段代码转化 if (!StringUtil.isEmpty(encoding)) { valueStr = StringUtil.to(valueStr, encoding); } params.put(name, valueStr); } // 获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表(以下仅供参考)// String trade_no = request.getParameter("trade_no"); // 支付宝交易号 String order_no = request.getParameter("out_trade_no"); // 获取订单号 String total_fee = request.getParameter("total_fee"); // 获取总金额 String subject = request.getParameter("subject"); // 商品名称、订单名称 if (!StringUtil.isEmpty(encoding)) { subject = StringUtil.to(subject, encoding); } String body = ""; if (request.getParameter("body") != null) { body = request.getParameter("body"); // 商品描述、订单备注、描述 if (!StringUtil.isEmpty(encoding)) { body = StringUtil.to(body, encoding); } } String buyer_email = request.getParameter("buyer_email"); // 买家支付宝账号 String receive_name = ""; // 收货人姓名 if (request.getParameter("receive_name") != null) { receive_name = request.getParameter("receive_name"); if (!StringUtil.isEmpty(encoding)) { receive_name = StringUtil.to(receive_name, encoding); } } String receive_address = ""; // 收货人地址 if (request.getParameter("receive_address") != null) { receive_address = request.getParameter("receive_address"); if (!StringUtil.isEmpty(encoding)) { receive_address = StringUtil.to(receive_address, encoding); } } String receive_zip = ""; // 收货人邮编 if (request.getParameter("receive_zip") != null) { receive_zip = request.getParameter("receive_zip"); if (!StringUtil.isEmpty(encoding)) { receive_zip = StringUtil.to(receive_zip, encoding); } } String receive_phone = ""; // 收货人电话 if (request.getParameter("receive_phone") != null) { receive_phone = request.getParameter("receive_phone"); if (!StringUtil.isEmpty(encoding)) { receive_phone = StringUtil.to(receive_phone, encoding); } } String receive_mobile = ""; // 收货人手机 if (request.getParameter("receive_mobile") != null) { receive_mobile = request.getParameter("receive_mobile"); if (!StringUtil.isEmpty(encoding)) { receive_mobile = StringUtil.to(receive_mobile, encoding); } } String trade_status = request.getParameter("trade_status"); // 交易状态 // 获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表(以上仅供参考)// // 计算得出通知验证结果 boolean verify_result = AlipayNotify.returnverify(params, key, partner); if (verify_result) { // 验证成功 ////////////////////////////////////////////////////////////////////////////////////////// // 请在这里加上商户的业务逻辑程序代码 // ——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— if (trade_status.equals("WAIT_SELLER_SEND_GOODS")) { // 判断该笔订单是否在商户网站中已经做过处理(可参考“集成教程”中“3.4返回数据处理”) // 如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 // 如果有做过处理,不执行商户的业务程序 } if (trade_status.equals("TRADE_FINISHED")) { // 判断该笔订单是否在商户网站中已经做过处理(可参考“集成教程”中“3.4返回数据处理”) // 如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 // 如果有做过处理,不执行商户的业务程序 } this.paySuccess(order_no); return order_no; // ——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ////////////////////////////////////////////////////////////////////////////////////////// } else { throw new RuntimeException("验证失败"); } }