本篇文章給大家分享的是有關利用java怎么實現(xiàn)一個即時提交功能,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
成都創(chuàng)新互聯(lián)電話聯(lián)系:18982081108,為您提供成都網站建設網頁設計及定制高端網站建設服務,成都創(chuàng)新互聯(lián)網頁制作領域十余年,包括玻璃鋼雕塑等多個行業(yè)擁有多年的網站設計經驗,選擇成都創(chuàng)新互聯(lián),為企業(yè)錦上添花!
具體內容如下
package com.tian.batis; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.commons.codec.digest.DigestUtils; import javax.servlet.http.HttpServletResponse; public class alipay { /** * alipay 支付接口 * * @param _input_charset * 編碼 * @param subject * 商品名 (必填) * @param notify_url * 異步執(zhí)行地址 * @param body * 商品描述 * @param payment_type * 付款類型 * @param out_trade_no * 訂單號 (必填) * @param partner * 商家id * @param service * 服務 * @param total_fee * 金額 (必填) * @param return_url * 返回展示地址 * @param sign_type * 加密方式(默認md5) * @param seller_id * 同商家id * @param response * @param sessionId * sessionId * @return 成功 返回url;-1失敗(參數);-2處理異常 */ public String AlipayPayment(String _input_charset, String subject, String notify_url, String body, String payment_type, String out_trade_no, String partner, String service, Integer total_fee, String return_url, String sign_type, String seller_id, HttpServletResponse response, String sessionId) { try { String strSandbox = "https://mapi.alipay.com/gateway.do";// 地址 ConfigManager configManager = ConfigManager.getInstance("alipayconfig.properties"); Mapmap = new HashMap (); if (null != subject && subject.trim().length() > 0) { map.put("subject", subject); } else { return "-1"; } if (null != out_trade_no && out_trade_no.trim().length() > 0) { map.put("out_trade_no", out_trade_no); } else { return "-1"; } if (null != total_fee && total_fee > 0) { map.put("total_fee", total_fee + ""); // map.put("total_fee", "0.01"); } else { return "-1"; } if (null != _input_charset && _input_charset.trim().length() > 0) { map.put("_input_charset", _input_charset); } else { map.put("_input_charset", configManager.getConfigItem("alipay._input_charset").toString()); } if (null != notify_url && notify_url.trim().length() > 0) { map.put("notify_url", notify_url); } else { map.put("notify_url", configManager.getConfigItem("alipay.notify_url1").toString()); } if (null != return_url && return_url.trim().length() > 0) { map.put("return_url", return_url); } else { map.put("return_url", configManager.getConfigItem("alipay.return_url").toString()); } if (null != payment_type && payment_type.trim().length() > 0) { map.put("payment_type", payment_type); } else { map.put("payment_type", configManager.getConfigItem("alipay.payment_type").toString()); } if (null != partner && partner.trim().length() > 0) { map.put("partner", partner); } else { map.put("partner", configManager.getConfigItem("alipay.partner").toString()); } if (null != service && service.trim().length() > 0) { map.put("service", service); } else { map.put("service", configManager.getConfigItem("alipay.service").toString()); } if (null != sign_type && sign_type.trim().length() > 0) { map.put("sign_type", sign_type); } else { map.put("sign_type", configManager.getConfigItem("alipay.sign_type").toString()); } if (null != seller_id && seller_id.trim().length() > 0) { map.put("seller_id", seller_id); } else { map.put("seller_id", configManager.getConfigItem("alipay.seller_id").toString()); } if (null != body && body.trim().length() > 0) { map.put("body", body); } if (null != sessionId && sessionId.trim().length() > 0) { map.put("extra_common_param", sessionId); } Map sPara = paraFilter(map); // 生成簽名結果 String sign = buildRequestMysign(sPara, configManager.getConfigItem("alipay.key").toString(), configManager.getConfigItem("alipay._input_charset").toString()); map.put("sign", sign); String str = ""; for (Map.Entry entry : map.entrySet()) { String key = entry.getKey(); String value = entry.getValue(); if (key.equals("subject") || key.equals("body")) { value = URLEncoder.encode(value, "UTF-8"); } if (null != str && str.trim().length() > 0) { str += "&" + key + "=" + value; } else { str += key + "=" + value; } } String url = strSandbox; if (null != str && str.trim().length() > 0) { url += "?" + str; } return url; // 注:如果失敗考慮 // 1.response 重定向編碼 // 2.sign_type 放置參數末尾 // 3.url 追加 _input_charset=utf-8 } catch (Exception e) { e.printStackTrace(); return "-2"; } } /////////////////////////////////////////////////////// /** * 除去數組中的空值和簽名參數 * * @param sArray * 簽名參數組 * @return 去掉空值與簽名參數后的新簽名參數組 */ public static Map paraFilter(Map sArray) { Map result = new HashMap (); if (sArray == null || sArray.size() <= 0) { return result; } for (String key : sArray.keySet()) { String value = sArray.get(key); if (value == null || value.equals("") || key.equalsIgnoreCase("sign") || key.equalsIgnoreCase("sign_type")) { continue; } result.put(key, value); } return result; } /** * 生成簽名結果 * * @param sPara * 要簽名的數組 * @return 簽名結果字符串 */ public static String buildRequestMysign(Map sPara, String key, String input_charset) { String prestr = createLinkString(sPara); // 把數組所有元素,按照“參數=參數值”的模式用“&”字符拼接成字符串 String mysign = ""; mysign = sign(prestr, key, input_charset); return mysign; } /** * 把數組所有元素排序,并按照“參數=參數值”的模式用“&”字符拼接成字符串 * * @param params * 需要排序并參與字符拼接的參數組 * @return 拼接后字符串 */ public static String createLinkString(Map params) { List keys = new ArrayList (params.keySet()); Collections.sort(keys); String prestr = ""; for (int i = 0; i < keys.size(); i++) { String key = keys.get(i); String value = params.get(key); if (i == keys.size() - 1) {// 拼接時,不包括最后一個&字符 prestr = prestr + key + "=" + value; } else { prestr = prestr + key + "=" + value + "&"; } } return prestr; } /** * 簽名字符串 * * @param text * 需要簽名的字符串 * @param key * 密鑰 * @param input_charset * 編碼格式 * @return 簽名結果 */ public static String sign(String text, String key, String input_charset) { text = text + key; return DigestUtils.md5Hex(getContentBytes(text, input_charset)); } /** * @param content * @param charset * @return * @throws SignatureException * @throws UnsupportedEncodingException */ private static byte[] getContentBytes(String content, String charset) { if (charset == null || "".equals(charset)) { return content.getBytes(); } try { return content.getBytes(charset); } catch (UnsupportedEncodingException e) { throw new RuntimeException("MD5簽名過程中出現(xiàn)錯誤,指定的編碼集不對,您目前指定的編碼集是:" + charset); } } }
以上就是利用java怎么實現(xiàn)一個即時提交功能,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。