java支付宝即时到帐提交订单功能
发布时间 - 2026-01-11 02:47:00 点击率:次本文实例为大家分享了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 += "?" + 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支付宝即时到帐提交订单
# java支付宝即时到帐
# java支付宝
# Java判断浏览器是微信还是支付宝
# java实现在SSM下使用支付宝扫码支付功能
# 详解java集成支付宝支付接口(JSP+支付宝20160912)
# Java实现支付宝之第三方支付宝即时到账支付功能
# java后台实现支付宝支付接口和支付宝订单查询接口(前端为APP)
# 必填
# 您目前
# 大家分享
# 不包括
# 支付宝
# 具体内容
# 大家多多
# 过程中
# 到帐
# 出现错误
# 组中
# 重定向
# out_trade_no
# payment_type
# body
# partner
# total_fee
# service
# id
# _input_charset
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
php485函数参数是什么意思_php485各参数详细说明【介绍】
Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】
html5的keygen标签为什么废弃_替代方案说明【解答】
CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】
如何在七牛云存储上搭建网站并设置自定义域名?
javascript中闭包概念与用法深入理解
Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】
如何在景安服务器上快速搭建个人网站?
Laravel如何创建自定义Facades?(详细步骤)
Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】
详解jQuery中的事件
如何在 Pandas 中基于一列条件计算另一列的分组均值
edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】
如何用美橙互联一键搭建多站合一网站?
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
Laravel如何升级到最新版本?(升级指南和步骤)
如何在VPS电脑上快速搭建网站?
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
Linux后台任务运行方法_nohup与&使用技巧【技巧】
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
Laravel如何创建和注册中间件_Laravel中间件编写与应用流程
QQ浏览器网页版登录入口 个人中心在线进入
如何快速查询网站的真实建站时间?
如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
android nfc常用标签读取总结
微信h5制作网站有哪些,免费微信H5页面制作工具?
北京网站制作公司哪家好一点,北京租房网站有哪些?
如何选择PHP开源工具快速搭建网站?
利用 Google AI 进行 YouTube 视频 SEO 描述优化
Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践
详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
韩国服务器如何优化跨境访问实现高效连接?
linux top下的 minerd 木马清除方法
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
Laravel DB事务怎么使用_Laravel数据库事务回滚操作
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
详解Oracle修改字段类型方法总结
音响网站制作视频教程,隆霸音响官方网站?
JavaScript如何实现继承_有哪些常用方法
Thinkphp 中 distinct 的用法解析
Laravel Blade模板引擎语法_Laravel Blade布局继承用法
Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤
Laravel如何处理和验证JSON类型的数据库字段
黑客如何利用漏洞与弱口令入侵网站服务器?
Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧
如何在IIS服务器上快速部署高效网站?
Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区
Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】

