1.注册开发者中心应用   登录点击沙箱服务

https://open.alipay.com/platform/developerIndex.htm

2.创建沙箱应用获取APPID和支付宝网关地址(创建设置密钥这里就不说明了),将公共密钥和私密保存到本地。

3.创建项目结构,设置配置文件

1.下载支付宝SDK文件jar包,讲jar包导入到项目内

2.编写配置信息和Java文件

/********************************************************************************************************************************************************************************************/

* 应用启动加载文件*/

@Component

public class AlipayConfig implements ApplicationListener {

//保存加载配置参数

private static Map aliPropertiesMap = new HashMap();

/*获取配置参数值*/

public static String getKey(String key) {

return aliPropertiesMap.get(key);

}

/*监听启动完成,执行配置加载到aliPropertiesMap*/

public void onApplicationEvent(ApplicationEvent event) {

if (event instanceof ApplicationReadyEvent) {

this.init(aliPropertiesMap);//应用启动加载

}

}

/*初始化加载aliPropertiesMap*/

public void init(Map map) {

// 获得PathMatchingResourcePatternResolver对象

PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();

try {

//加载resource文件(也可以加载resources)

Resource resources = resolver.getResource("classpath:/alipay.properties");

PropertiesFactoryBean config = new PropertiesFactoryBean();

config.setLocation(resources);

config.afterPropertiesSet();

Properties prop = config.getObject();

//循环遍历所有得键值对并且存入集合

for (String key : prop.stringPropertyNames()) {

map.put(key, (String) prop.get(key));

}

} catch (Exception e) {

new Exception("配置文件加载失败");

}

}

}

/********************************************************************************************************************************************************************************************/

4.创建支付工具类

public class PayUtil {

/**

* @param outTradeNo 商户订单号,商户网站订单系统中唯一订单号,必填 对应缴费记录的orderNo

* @param totalAmount 付款金额,必填

* @param subject 主题

* @param body 商品描述,可空

* @return

*/

public static String alipay(AlipayBean alipayBean) {

//1、获得初始化的AlipayClient

AlipayClient alipayClient = new DefaultAlipayClient(

AlipayConfig.getKey("gatewayUrl"),//支付宝网关

AlipayConfig.getKey("app_id"),//appid

AlipayConfig.getKey("merchant_private_key"),//商户私钥

"json",

AlipayConfig.getKey("charset"),//字符编码格式

AlipayConfig.getKey("alipay_public_key"),//支付宝公钥

AlipayConfig.getKey("sign_type")//签名方式

);

//设置请求参数

AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();

alipayRequest.setReturnUrl(AlipayConfig.getKey("return_url"));

alipayRequest.setNotifyUrl(AlipayConfig.getKey("notify_url"));

try {

alipayRequest.setBizContent(JSON.toJSONString(alipayBean));

//请求

String result = alipayClient.pageExecute(alipayRequest).getBody();

System.out.println("*********************\n返回结果为:" + result);

return result;

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

return null;

}

}

/**

* 支付宝退款接口

*

* @param outTradeNo

* @param tradeNo

* @param refundAmount

* @param refundReason

* @param out_request_no 标识一次退款请求,同一笔交易多次退款需要保证唯一,如需部分退款,则此参数必传

* @return

*/

public static String aliRefund(AlipayBean alipayBean) {

//1、获得初始化的AlipayClient

AlipayClient alipayClient = new DefaultAlipayClient(

AlipayConfig.getKey("gatewayUrl"),//支付宝网关

AlipayConfig.getKey("app_id"),//appid

AlipayConfig.getKey("merchant_private_key"),//商户私钥

"json",

AlipayConfig.getKey("charset"),//字符编码格式

AlipayConfig.getKey("alipay_public_key"),//支付宝公钥

AlipayConfig.getKey("sign_type")//签名方式

);

//设置请求参数

AlipayTradeRefundRequest alipayRequest = new AlipayTradeRefundRequest();

alipayRequest.setReturnUrl(AlipayConfig.getKey("return_url"));

alipayRequest.setNotifyUrl(AlipayConfig.getKey("notify_url"));

try {

alipayRequest.setBizContent(JSON.toJSONString(alipayBean));

//请求

String result= alipayClient.execute(alipayRequest).getBody();

System.out.println("*********************\n返回结果为:" + result);

return result;

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

return null;

}

}

/**

* 支付宝的验签方法

*

* @param req

* @return

*/

public static boolean checkSign(HttpServletRequest req) {

Map requestMap = req.getParameterMap();

Map paramsMap = new HashMap<>();

requestMap.forEach((key, values) -> {

String strs = "";

for (String value : values) {

strs = strs + value;

}

System.out.println(("key值为" + key + "value为:" + strs));

paramsMap.put(key, strs);

});

//调用SDK验证签名

try {

return AlipaySignature.rsaCheckV1(paramsMap, AlipayConfig.getKey("alipay_public_key"), AlipayConfig.getKey("charset"), AlipayConfig.getKey("sign_type"));

} catch (AlipayApiException e) {

// TODO Auto-generated catch block

e.printStackTrace();

System.out.println("*********************验签失败********************");

return false;

}

}

5.创建Controller,dao和service

6.创建测试html,运行项目访问测试。

over......

java调用支付接口实例_Java 调用支付宝接口相关推荐

  1. java 支付宝接口开发_JAVA 实现支付宝接口

    0.必备类 AlipayConfig配置文件 (签约账号.密钥.页面跳转通知页面都在这里设定) MD5支付宝签名加密文件 AlipayCore支付宝接口公共函数类 AlipayNotify-支付宝通知 ...

  2. 环信 java接口实例_java调用环信接口

    现在需要实现app中消息禁言功能?需要调用环信的接口,已经有文档了,但是不知道怎么调用?不清楚怎么将环信的接口继承到java代码中?请大家多多指教. 添加禁言 将一个用户禁言.用户被禁言后,将无法在群 ...

  3. java xml接口实例_Java访问WebService接口方法 , 返回xml数据,能根据 下面的能给我写个实例吗?略急...

    接口方法StringgetHolidayMsg(Stringkey,Stringflag,StringxmlMessage)参数说明keyXX提供给的key值,传入key值不正确不能正常提取数据,值为 ...

  4. java 怎么页面授权访问_Java调用Linkedin接口API之:获取授权

    配置领英应用 配置地址:https://www.linkedin.com/secure/developer?newapp= 强烈建议您使用 HTTPS 网址必须是绝对网址 (例如: "htt ...

  5. java调用python项目实战_Java调用Python

    今天遇到Java调用一个Python脚本的问题,纠结了大半天,遇到各种问题.网上搜索的大部分都是用jython,但是我想要调用的python脚本里有import urllib,这个urllib也不是什 ...

  6. python调用webservice接口实例_python调用各种接口,webservice,c接口,com接口,socket协议方法...

    python调用webservice接口(SOAP) (2)调用示例: 需要先安装suds库:pip install suds from suds.client import Client #如果需要 ...

  7. java 给对象创建实例_Java中创建(实例化)对象的五种方式

    Java中创建(实例化)对象的五种方式1.用new语句创建对象,这是最常见的创建对象的方法. 2.通过工厂方法返回对象,如:String str = String.valueOf(23); 3.运用反 ...

  8. java枚举类型季节实例_Java之枚举类

    目录 一.为何引入枚举类型(为了替代魔法值) 什么是魔法值?魔法值有哪些隐患,见另一篇文章编码规约之使用Enum枚举类替代魔法值 那么为什么不用静态变量来替换魔法值呢? 有时候,变量的取值只在一个有限 ...

  9. java项目使用过滤器实例_Java web开发--过滤器篇(详细介绍)

    一. web过滤器的介绍 1.过滤器 在生活中,过滤这种我们时常可见:比如水资源的处理,化学药剂的提取等等.所谓过滤,就是指对某事物的处理进行一定的处理获取相应的结果的一个过程.它可以总结为下: 过滤 ...

最新文章

  1. ubuntu下Tomcat7的安装和配置
  2. nordic 协议栈区别
  3. android盒子改造,废旧手机改造成电视盒子详细教程
  4. devexpress 创建窗口句柄时出错_MATLAB函数句柄
  5. 使用Python获取Excel文件中单元格公式的计算结果
  6. 软考信息系统项目管理师_管理科学(运筹学)2---软考高级之信息系统项目管理师034
  7. SSH 无法启动的原因分析及解决方法
  8. React 组件生命周期详解
  9. [转载] 高等应用数学问题的matlab求解——第4章 线性代数问题的计算机求解
  10. pdf资源有密码怎么办?
  11. iOS开发 非常全的三方库、插件、大牛博客等等
  12. [NOIP模拟33]反思+题解
  13. 原生JS实现飞机大战游戏 超详细解析 快来做一个自己玩吧
  14. 创始人也会有的流量焦虑
  15. 谷歌浏览器linux,windows下载
  16. Android富文本编辑器附源码
  17. 正则表达式贪婪模式、懒惰模式与独占模式浅析
  18. 衡量企业网络广告效果的九个指标
  19. JavaScript之ES6语法
  20. docker pull拉取镜像原理_Dockerfile镜像细节

热门文章

  1. media recovery oracle,media recovery
  2. springboot @value启动报错_打造一个 Spring Boot 注解启动控制开关
  3. android 日期正则表达,Android 判断输入的年月日是否合法-正则表达
  4. linux 共享内存陷井,linux共享内存应用与陷阱
  5. 2015美国数学建模a代码c语言,美国数学建模比赛2020 MCM C题代码详解
  6. MySQL初始化zabbix_【Zabbix】CentOS6.9系统下部署Zabbix-server 3.0
  7. vecm模型怎么写系数_用Stata搞实证之面板模型入门
  8. linux shell命令分布执行,Linux学习笔记:bash特性之多命令执行,shell脚本
  9. centos6.5 yum安装mysql_CentOS 6.5使用yum安装MySQL快速上手必备
  10. mysql sort aborted_mysql排序中断(Sort aborted)-mysql临时文件无法写入