java支付宝即时到帐提交订单功能
本文实例为大家分享了java支付宝即时到帐提交订单的具体代码,供大家参考,具体内容如下
packagecom.tian.batis;
importjava.io.UnsupportedEncodingException;
importjava.net.URLEncoder;
importjava.util.ArrayList;
importjava.util.Collections;
importjava.util.HashMap;
importjava.util.List;
importjava.util.Map;
importorg.apache.commons.codec.digest.DigestUtils;
importjavax.servlet.http.HttpServletResponse;
publicclassalipay{
/**
*alipay支付接口
*
*@param_input_charset
*编码
*@paramsubject
*商品名(必填)
*@paramnotify_url
*异步执行地址
*@parambody
*商品描述
*@parampayment_type
*付款类型
*@paramout_trade_no
*订单号(必填)
*@parampartner
*商家id
*@paramservice
*服务
*@paramtotal_fee
*金额(必填)
*@paramreturn_url
*返回展示地址
*@paramsign_type
*加密方式(默认md5)
*@paramseller_id
*同商家id
*@paramresponse
*@paramsessionId
*sessionId
*@return成功返回url;-1失败(参数);-2处理异常
*/
publicStringAlipayPayment(String_input_charset,Stringsubject,Stringnotify_url,Stringbody,
Stringpayment_type,Stringout_trade_no,Stringpartner,Stringservice,Integertotal_fee,
Stringreturn_url,Stringsign_type,Stringseller_id,HttpServletResponseresponse,StringsessionId){
try{
StringstrSandbox="https://mapi.alipay.com/gateway.do";//地址
ConfigManagerconfigManager=ConfigManager.getInstance("alipayconfig.properties");
Mapmap=newHashMap();
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&¬ify_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);
}
MapsPara=paraFilter(map);
//生成签名结果
Stringsign=buildRequestMysign(sPara,configManager.getConfigItem("alipay.key").toString(),
configManager.getConfigItem("alipay._input_charset").toString());
map.put("sign",sign);
Stringstr="";
for(Map.Entryentry:map.entrySet()){
Stringkey=entry.getKey();
Stringvalue=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;
}
}
Stringurl=strSandbox;
if(null!=str&&str.trim().length()>0){
url+="?"+str;
}
returnurl;
//注:如果失败考虑
//1.response重定向编码
//2.sign_type放置参数末尾
//3.url追加_input_charset=utf-8
}catch(Exceptione){
e.printStackTrace();
return"-2";
}
}
///////////////////////////////////////////////////////
/**
*除去数组中的空值和签名参数
*
*@paramsArray
*签名参数组
*@return去掉空值与签名参数后的新签名参数组
*/
publicstaticMapparaFilter(MapsArray){
Mapresult=newHashMap();
if(sArray==null||sArray.size()<=0){
returnresult;
}
for(Stringkey:sArray.keySet()){
Stringvalue=sArray.get(key);
if(value==null||value.equals("")||key.equalsIgnoreCase("sign")
||key.equalsIgnoreCase("sign_type")){
continue;
}
result.put(key,value);
}
returnresult;
}
/**
*生成签名结果
*
*@paramsPara
*要签名的数组
*@return签名结果字符串
*/
publicstaticStringbuildRequestMysign(MapsPara,Stringkey,Stringinput_charset){
Stringprestr=createLinkString(sPara);//把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
Stringmysign="";
mysign=sign(prestr,key,input_charset);
returnmysign;
}
/**
*把数组所有元素排序,并按照“参数=参数值”的模式用“&”字符拼接成字符串
*
*@paramparams
*需要排序并参与字符拼接的参数组
*@return拼接后字符串
*/
publicstaticStringcreateLinkString(Mapparams){
Listkeys=newArrayList(params.keySet());
Collections.sort(keys);
Stringprestr="";
for(inti=0;i
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。