本文实例为大家分享了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"); 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 += "&#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 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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。