溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用java怎么實現一個即時提交功能

發布時間:2020-12-02 15:04:06 來源:億速云 閱讀:333 作者:Leah 欄目:編程語言

本篇文章給大家分享的是有關利用java怎么實現一個即時提交功能,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

具體內容如下

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
   *      異步執行地址
   * @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");

      Map<String, String> map = new HashMap<String, String>();

      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<String, String> 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<String, String> 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 += "&#63;" + 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<String, String> paraFilter(Map<String, String> sArray) {
    Map<String, String> result = new HashMap<String, String>();
    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<String, String> 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<String, String> params) {
    List<String> keys = new ArrayList<String>(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簽名過程中出現錯誤,指定的編碼集不對,您目前指定的編碼集是:" + charset);
    }
  }
}

以上就是利用java怎么實現一個即時提交功能,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女