一如既往的简易

第一步

添加maven

 <!--        支付宝支付最新依赖--><dependency><groupId>com.alipay.sdk</groupId><artifactId>alipay-sdk-java</artifactId><version>4.22.34.ALL</version><scope>compile</scope></dependency>

为了省事这里就一个配置文件

新建 AliPayConfig.java配置类


/*** 微信支付配置类*/
public class AliPayConfig {/** 支付宝支付的appid */public static  String APP_ID = "xxxxxxxxxxx";/** 商户私钥 */public static  String  APP_PRIVATE_KEY = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";//字符集public static   String CHARSET = "utf-8";//正式环境支付宝网关,如果是沙箱环境需更改成https://openapi.alipaydev.com/gateway.dopublic static String URL = "https://openapi.alipay.com/gateway.do";//加密方式public static String SIGN_TYPE = "RSA2";//配置证书public static String APP_CERT_PATH = "/xxxxxxxxxxx/appCertPublicKey_2021003113684123.crt";public static String ALIPAY_CERT_PATH = "/xxxxxxxxxxx/alipayCertPublicKey_RSA2.crt";public static String ALIPAY_ROOT_CERT_PATH = "/xxxxxxxxxxx/alipayRootCert.crt";}

新建 AliPayConfig.java配置类

/*** @author 影子*/
public interface AliPaymentService
{/*** 支付宝商品支付* @param alipayParam    订单接收对象* @return*/public Map<String, Object> alidoUnifiedOrder(String orderNumber) throws Exception;/*** 支付宝支付回调* @param request* @return*/public String aliPayNotify( HttpServletRequest request);}

新建 AlipaymentServiceImpl.java配置类


@Service
@Slf4j
public class AlipaymentServiceImpl implements AliPaymentService {//支付宝支付回调  省事0.0public static final String ALI_PAY_NOTIFY_URL = "https://xxxxxxxx/aliPayNotify";/*** 支付宝商品订单支付** @param payParam* @return* @throws Exception*/@Overridepublic Map<String,Object> alidoUnifiedOrder(String orderNumber) throws Exception {Map<String,Object> map = new HashMap<>();//支付总金额BigDecimal totalPrice = BigDecimal.ZERO;//你的订单金额totalPrice = totalPrice.add(BigDecimal.valueOf(600));try {//构造clientCertAlipayRequest certAlipayRequest = new CertAlipayRequest();//设置网关地址certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do");//设置应用IdcertAlipayRequest.setAppId(AliPayConfig.APP_ID);//设置应用私钥certAlipayRequest.setPrivateKey(AliPayConfig.APP_PRIVATE_KEY);//设置请求格式,固定值jsoncertAlipayRequest.setFormat("json");//设置字符集certAlipayRequest.setCharset(AliPayConfig.CHARSET);//设置签名类型certAlipayRequest.setSignType(AliPayConfig.SIGN_TYPE);//设置应用公钥证书路径certAlipayRequest.setCertPath(AliPayConfig.APP_CERT_PATH);//设置支付宝公钥证书路径certAlipayRequest.setAlipayPublicCertPath(AliPayConfig.ALIPAY_CERT_PATH);//设置支付宝根证书路径certAlipayRequest.setRootCertPath(AliPayConfig.ALIPAY_ROOT_CERT_PATH);//构造clientDefaultAlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest);//实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.payAlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();//SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();model.setBody("我是测试数据");//App支付测试Javamodel.setSubject("影子");/*setTimeoutExpress :该笔订单允许的最晚付款时间,逾期将关闭交易。取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。该参数数值不接受小数点, 如 1.5h,可转换为 90m。*/model.setTimeoutExpress("30m");//请保证OutTradeNo值每次保证唯一model.setOutTradeNo(“2017090080001939235”);//商品订单(2017090080001939235 )//订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000]model.setTotalAmount("0.01");request.setBizModel(model);//商户外网可以访问的异步地址request.setNotifyUrl(ALI_PAY_NOTIFY_URL);try {//这里和普通的接口调用不同,使用的是sdkExecuteAlipayTradeAppPayResponse responses = alipayClient.sdkExecute(request);map.put("code",200);map.put("msg","操作成功");map.put("data",responses.getBody());return map;//就是orderString 可以直接给客户端请求,无需再做处理。} catch (AlipayApiException e) {e.printStackTrace();map.put("code",500);map.put("msg","下单失败");return map;}} catch (Exception e) {e.printStackTrace();log.info("异常==>",e);map.put("code",500);map.put("msg","支付异常");return map;}}/*** 支付宝支付回调* @param request* @return*/@Overridepublic String aliPayNotify(HttpServletRequest request) {//支付宝交易号String payTradeNo= "";//获取支付宝POST过来反馈信息Map < String , String >   params   =   new HashMap< String , String >();Map   requestParams   =   request . getParameterMap ();for  (Iterator iter = requestParams . keySet (). iterator (); iter . hasNext ();) {String   name   =  ( String )  iter . next ();String []  values   =  ( String [])  requestParams . get ( name );String   valueStr   =   "" ;for  ( int   i   =   0 ;  i   <   values . length ;  i ++ ) {valueStr   =  (i == values . length - 1) ? valueStr + values [ i ]:  valueStr   +   values [ i ]  +   "," ;}params.put(name,valueStr );}payTradeNo =  params.get("trade_no");try {//验签boolean flag = AlipaySignature.rsaCertCheckV1(params,AliPayConfig.ALIPAY_CERT_PATH,AliPayConfig.CHARSET,AliPayConfig.SIGN_TYPE );if (flag){//验签成功//商户订单号String out_trade_no = new String(request.getParameter("out_trade_no").getBytes("ISO-8859-1"), "UTF-8");//交易状态String trade_status = new String(request.getParameter("trade_status").getBytes("ISO-8859-1"), "UTF-8");//查询订单逻辑省略....if (trade_status.equals("TRADE_SUCCESS")) {if (out_trade_no != null) {// 注意特殊情况:订单已经退款,但收到了支付结果成功的通知,不应把商户的订单状态从退款改成支付成功// 注意特殊情况:微信服务端同样的通知可能会多次发送给商户系统,所以数据持久化之前需要检查是否已经处理过了,处理了直接返回成功标志//业务数据持久化//业务逻辑省略....//必须返回SUCCESS 不然支付宝收不到成功信息会再次请求回调return "SUCCESS";}}}return "500";} catch (AlipayApiException | UnsupportedEncodingException e) {e.printStackTrace();}return null;}
Controller类贴一下吧 照顾一下迷的“小”朋友
     /*** 支付宝商品支付* @param orderNumber* @return* @throws Exception*/@PostMapping("/alidoUnifiedOrder")public Map<String,Object> alidoUnifiedOrder(String orderNumber) throws Exception {Map<String,Object> map = aliPaymentService.alidoUnifiedOrder(orderNumber);return map;}/*** 商品订单支付回调* @param request* @return*/@PostMapping("/aliPayNotify")@ResponseBodypublic String aliPayNotify( HttpServletRequest request) {String code = aliPaymentService.aliPayNotify(request);return code;}

到这就结束了 够简单吧 !复制粘贴即可一如既往没其它依赖

你学废了吗?

JAVA新支付宝支付(保姆级)相关推荐

  1. JAVA对接支付宝支付(超详细,一看就懂)

    Java对接支付宝支付 更多内容 冷文博客: 传送门 引入 为什么要发这篇帖子呢?原因很简单,就是因为在一个稍稍正规一点的应用上都会有支付这个环节,我们日常的在线支付如今包括支付宝,微信钱包,QQ钱包 ...

  2. java对接支付宝支付

    java对接支付宝支付演示 现在有不少的项目都需要对接支付,这里主要是进行讲解对接支付宝H5支付 废话不多说 上代码 引入支付宝官方的sdk <!-- https://mvnrepository ...

  3. 【超详细,全流程】java对接支付宝支付

    支付流程 一.对接前的准备 1.1创建应用,获取参数:APPID(使用沙箱环境可跳过) 1.1.1添加产品 1.1.2配置密钥,获取第二个参数:商户的私钥 1.1.3支付宝网关 1.1.4生成参数密钥 ...

  4. Java接入支付宝支付测试买iPhone13 pro max

    Java接入支付宝支付 一.介绍 二.沙箱 三.支付流程 四.准备支付宝 五.代码 1.前端代码 2.后端代码 六.测试 一.介绍 支付宝官方网站 支付宝(中国)网络技术有限公司是国内的第三方支付平台 ...

  5. Java接入支付宝支付超级详细教程——从入门到精通

    ​ Java接入支付宝支付教程 源码下载 源码获取:点击获取源码 本文介绍了"二维码付款"的代码.其他支付方式的代码都在源码中. 一.创建应用 1.登录支付宝开放平台 支付宝开放平 ...

  6. Java接入支付宝支付教程

    Java接入支付宝支付教程 一.创建应用 1.登录支付宝开放平台 支付宝开放平台网址:https://open.alipay.com/platform/developerIndex.htm 2.创建一 ...

  7. java 对接支付宝支付

    2019独角兽企业重金招聘Python工程师标准>>> 对接支付宝支付的前提: 1,商户开通支付能力 登录蚂蚁金服 开放平台:https://open.alipay.com/plat ...

  8. Java接入支付宝支付(沙箱)

    支付宝支付(沙箱) 支付宝支付 支付宝官方网站:https://www.alipay.com/ 支付宝(中国)网络技术有限公司是国内的第三方支付平台,致力于提供"简单.安全.快速" ...

  9. java 调用支付宝支付接口

    最近公司在做支付模块,在接入过程中遇到了很多坑,费了不少事,现在分享一下接入方法,也记录一下,以后可能还用的到.用的是支付宝的即时到帐支付功能和微信的扫码支付功能,相比起来,个人感觉支付宝的文档和接入 ...

最新文章

  1. android:Activity启动模式
  2. html算术计算,js实现计算器 提供算术表达式求值
  3. python包接口,Typetalk聊天API的python接口包
  4. Qt文档阅读笔记-moc工具使用及其理论(moc工具如何添加到makefile中)
  5. Python numpy学习笔记(一)
  6. VMware虚拟机CentOS7 - VMnet8网络配置及常见问题解决
  7. macos big sur 11 完整离线安装包v11.5.2正式版
  8. Kali Linux下社工密码字典生成工具Cupp教程
  9. 【深度学习】PyCorrector中文文本纠错实战
  10. 联通发送wap push备忘录
  11. 从音箱入门到高手必看知识
  12. 大数据可视化学习总结
  13. 一区HR:南京农业大学房婉萍教授团队揭示茶树-豆科植物互作改善茶叶品质
  14. 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
  15. 易安居平安家园隐私政策
  16. linux重做系统分区,如何重装linux系统
  17. plotjuggler⬅ROS1/ROS2画轨迹神器➡rqt_plot+rqt_multiplot之超级加强版
  18. 颜色透明度百分比对应8位颜色值
  19. Google发展史 Google十三年
  20. matlab绕圆柱有环量流线,绕圆柱无环量和有环量流动流线分布图

热门文章

  1. 1737C - Ela and Crickets
  2. vue 详情页返回列表,过滤查询条件保留
  3. classList属性和className的区别
  4. 我这一年的技术学习概况
  5. java删除某些段落word_Java 添加、回复、修改(替换)、删除、读取Word批注
  6. 无论发生什么,我一直都在
  7. Unity3D 实现简单的Buff系统
  8. 网络蜘蛛-搜狐博客批量下载(之一)
  9. 爬虫获取失信被执行人信息
  10. Python技术,我们这一年...