SDK版本

gradle

compile group: 'com.alipay.sdk', name: 'alipay-sdk-java', version: '4.15.0.ALL'

maven

 <dependency><groupId>com.alipay.sdk</groupId><artifactId>alipay-sdk-java</artifactId><scope>4.15.0.ALL</scope></dependency>

创建连接的bean

     @Beanpublic AlipayClient alipayClient() {AlipayConfig alipayConfig = new AlipayConfig();//支付宝公钥,如何获取请参考:https://opensupport.alipay.com/support/helpcenter/207/201602487431alipayConfig.setAlipayPublicKey(ALIPAY_PUBLIC_KEY);//支付宝私钥alipayConfig.setPrivateKey(APP_PRIVATE_KEY);// 应用私钥,如何获取请参考:https://opensupport.alipay.com/support/helpcenter/207/201602469554alipayConfig.setAppCertPath(APP_CERT_PATH);//应用id,如何获取请参考:https://opensupport.alipay.com/support/helpcenter/190/201602493024alipayConfig.setAppId(APP_ID);try {return new DefaultAlipayClient(alipayConfig);} catch (AlipayApiException e) {logger.error("创建支付宝链接Bean失败 AlipayApiException:{}", e);return null;}}

收款码示例代码

 /*** 创建支付信息** @param order 支付订单信息* @return 支付页面URL*/public String createAlipayUrl(RechargeIntegralReferOrder order) {AlipayTradePagePayModel model = new AlipayTradePagePayModel();//商户订单号,商户自定义,需保证在商户端不重复,如:20200612000001model.setOutTradeNo(order.getOrderCode());model.setProductCode(FAST);model.setSubject(order.getSubject());//订单标题//设置过期时间long time = System.currentTimeMillis() + TimeUnit.MINUTES.toMillis(5);String ymdHmsStr = DateTimeUtil.getYmdHmsStr(new Date(time));model.setTimeExpire(ymdHmsStr);//订单金额,精确到小数点后两位model.setTotalAmount(order.getPrice().toString());//订单描述model.setBody(order.getBody());AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();alipayRequest.setBizModel(model);//设置配置的参数logger.info("获取支付订单接口参数配置 userNick:{} 金额:{} 过期时间:{}", order.getUserNick(), order.getPrice(), ymdHmsStr);//异步通知地址,以http或者https开头,商户外网可以post访问的异步地址,用于接收支付宝返回的支付结果alipayRequest.setNotifyUrl(ymlConfigBean.getAlipay_notify_url());//支付成功后同步地址,用于提示用户支付成功alipayRequest.setReturnUrl(ymlConfigBean.getAlipay_return_url());String alipayUrl = null;try {alipayUrl = alipayClient.pageExecute(alipayRequest, "GET").getBody();} catch (AlipayApiException e) {logger.error("getAlipayUrl AlipayApiException:{}", e);}return alipayUrl;}

回调示例代码

异步回调

     /*** 支付宝异步订单回调** @param request*/public void alipayNotifyCallBack(HttpServletRequest request) {Map<String, String> params = convertRequestParamsToMap(request); // 将异步通知中收到的待验证所有参数都存放到map中String paramsJson = JSON.toJSONString(params);logger.info("支付宝异步回调,{}", paramsJson);try {AlipayConfig alipayConfig = new AlipayConfig();// 支付宝配置// 调用SDK验证签名,使用秘钥的验证方式boolean signVerified = AlipaySignature.rsaCheckV1(params, AlipayBeanConfig.ALIPAY_PUBLIC_KEY,alipayConfig.getCharset(), alipayConfig.getSignType());logger.info("signVerified:{}", signVerified);if (!signVerified) {logger.info("支付宝异步回调签名认证失败,signVerified=false, paramsJson:{}", paramsJson);return;}logger.info("支付宝异步回调签名认证成功,开始处理订单业务");String tradeStatus = params.get("trade_status");//订单状态String orderCode = params.get("out_trade_no");//唯一的商家订单编号,创建订单的时候传入logger.info("订单状态TradeStatus:{} orderCode:{}", tradeStatus, orderCode);if (tradeStatus.equals(AlipayTradeEnum.支付成功.getTradeStatus()) || tradeStatus.equals(AlipayTradeEnum.交易完成.getTradeStatus())) {synchronized (orderCode.intern()) {RechargeIntegralReferOrder integralReferOrder = integralOrderService.findByOrderCode(orderCode);if (!integralReferOrder.getPayResult().isCancelable()) {logger.info("当前订单已进行过充值积分相关操作 orderCode:{}", orderCode);return;}//积分充值增加iIntegralOpsRecordService.integralRecharge(integralReferOrder.getUserNick(), integralReferOrder.getPrice(),integralReferOrder.getDiscount(), integralReferOrder.getIntegral(), IntegralOpsEnum.积分充值);RechargeIntegralReferOrder payResult = integralOrderService.updateOrderPayResult(integralReferOrder, PayResultEnum.支付成功);userVipService.plusVipIntegral(integralReferOrder.getUserNick(), null, integralReferOrder.getPrice().intValue(), UserVipOpsEnum.充值加分);logger.info("积分充值完毕 订单状态:{} orderCode:{}", payResult.getPayResult(), orderCode);}} else {integralOrderService.updateOrderPayResult(orderCode, PayResultEnum.支付失败);logger.info("订单支付失败,不进行业务操作");}} catch (AlipayApiException e) {logger.error("支付宝回调签名认证失败,paramsJson:{},errorMsg:{}", paramsJson, e.getMessage());}}

同步回调

 /*** 支付宝同步订单回调** @param request* @return*/public AlipayReturnParam alipayReturnCallBack(HttpServletRequest request) {Map<String, String> params = convertRequestParamsToMap(request); // 将异步通知中收到的待验证所有参数都存放到map中String paramsJson = JSON.toJSONString(params);logger.info(paramsJson);AlipayConfig alipayConfig = new AlipayConfig();//支付宝配置try {// 调用SDK验证签名,使用秘钥的验证方式boolean signVerified = AlipaySignature.rsaCheckV1(params, AlipayBeanConfig.ALIPAY_PUBLIC_KEY,alipayConfig.getCharset(), alipayConfig.getSignType());logger.info("signVerified:{}", signVerified);if (!signVerified) {logger.info("支付宝同步回调签名认证失败,signVerified=false");return null;}} catch (AlipayApiException e) {logger.error("alipayReturnCallBack AlipayApiException:{}", e);}logger.info("支付宝同步回调签名认证成功,开始处理订单业务");AlipayReturnParam param = new AlipayReturnParam();String timestamp = params.get("timestamp");//支付时间param.setTimestamp(timestamp);String amount = params.get("total_amount");//金额param.setAmount(amount);logger.info("支付宝同步回调 {}", param.toString());return param;}

Java对接支付宝(alipay)电脑网站生成二维码扫码支付 alipay.trade.page.pay统一收单下单并支付页面接口相关推荐

  1. WEB端支付宝接入----统一收单下单并支付页面接口

    问题:WEB端接入支付宝前后端分离的情况下,后端调用支付宝下单支付返回的是一段HTML语言 处理方法: <div id="divaliPay"></div> ...

  2. java将一个url链接或者文字生成二维码并且转成base64

    我们在开发的时候,肯定有这样的需求.把一个url链接转成二维码图片.提供给用户扫描,然后跳转到相应的页面. 三个问题(前提:没有用统一的图片服务器如:fastdfs.) (1):把url链接转成图片保 ...

  3. 【Java中级篇】使用zxing生成二维码

    一.pom.xml添加依赖 <dependency><groupId>com.google.zxing</groupId><artifactId>cor ...

  4. asp.net mvc 网站生成二维码

    网上有很多使用  Javascript 二维码生成库 ,我参考  https://c.runoob.com/ 写了一个简单的例子,本人菜鸟,写错请见谅 @{Layout = null; }<!D ...

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

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

  6. JAVA支付宝小程序授权登陆,并生成二维码(证书方式)

    接入准备 https://opendocs.alipay.com/open/284/106001?ref=api 根据文档进行创建小程序.配置相关信息(接口加签方式选择证书) 生成二维码文档https ...

  7. 几行代码,轻松带你实现Java生成二维码功能!

    作者:瑞 新 https://0x9.me/rVjw2 文章目录 效果图 步骤 maven依赖 工具类 service 扩展 局域网调试 线上调试 效果图 步骤 maven依赖 <!--生成二维 ...

  8. Java自定义生成二维码(兼容你所有的需求)

    1.概述 作为Java开发人员,说到生成二维码就会想到zxing开源二维码图像处理库,不可否认的是zxing确实很强大,但是实际需求中会遇到各种各样的需求是zxing满足不了的,于是就有了想法自己扩展 ...

  9. SpringBoot生成二维码 扫描并可下载文件

    生成二维码 扫描并可下载文件 pom.xml 依赖 application.yaml Controller ImageBuilderUtils 工具类 适当根据自己的业务需求变通,然后就能轻松使用了, ...

  10. springboot 生成二维码

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.导入依赖 二.编写配置文件 三.编写代码实现 1 controller层编写 2 Constant编写 3 映射规 ...

最新文章

  1. 深入java虚拟机 第四版_深入理解Java虚拟机-常用vm参数分析
  2. java activiti5_工作流Activiti5.13学习笔记(一)
  3. 留学申请计算机硕士个人陈述,申请美国计算机专业英文个人陈述
  4. LeetCode-461. 汉明距离(python3)
  5. Python之路(第三十一篇) 网络编程:简单的tcp套接字通信、粘包现象
  6. IOS15最标准的纯代码搭建项目
  7. Android插件化开发之DexClassLoader动态加载dex、jar小Demo
  8. HBASE启动失败,Failed construction of Master: class org.apache.hadoop.hbase.master.HMaster
  9. Avro从入门到入土
  10. java数学函数Math类
  11. Faster-Rcnn扫盲
  12. # 淘宝客导购小程序最新版本
  13. 高德地图记录跑步轨迹_朋友圈晒跑步 亲测高德地图和百度地图哪个更实用
  14. X Chen笔记---Centos安装使用xmr-stack-cpu教程
  15. seek()方法的使用
  16. 广州互联网营销群聚会图片
  17. Windows系统C语言检测键盘的状态
  18. kdj超卖_如何正确理解KDJ?
  19. 如何指定网站内搜索关键字(借用已有搜索引擎)
  20. C语言上学期整理(第6章)

热门文章

  1. lsb隐写的基本方法matlab,GitHub - RGNil/RG_LSB: 利用python实现LSB隐写算法(我自己改进了LSB算法),并进行了性能分析(psnr、错误率、鲁棒性)...
  2. matlab学习笔记 struct函数
  3. ActivityManagerService解读之Activity启动三探--Activity中Task与Stack
  4. 每周全球科技十大新闻(2019.8.12-8.18)
  5. as常用固定搭配_语法必看:as的几种固定用法
  6. python-docx文档
  7. 读取cpu温度的api_读取CPU核心温度
  8. 黑苹果常用 工具+Kext+ACPI+UEFI驱动 下载
  9. A* operator/(A*, A*)‘ must have an argument of class or enumerated type
  10. 如何从虚拟机复制文件到实体机