本文章主要介绍H5使用的支付宝二维码是如果通过java生成的,方便大家更好的对接。首先集成alipay的sdk,然后要到支付宝商户平台创建应用,生成私钥 公钥,话不多说直接上代码块
@ApiOperation(value = "支付宝生成二维码", httpMethod = "POST", response = ResultJsonBean.class, notes = "")
@RequestMapping(value = "/alipayQrcode",  method = {RequestMethod.POST,RequestMethod.GET})
@ResponseBody
@ParentPCUser
public void  alipayQrcode(@ApiParam(value="token")@RequestParam(required = false) String token,@ApiParam(value="支付金额",required = true)@RequestParam(required = true) Long totalprice,@ApiParam(value="支付订单号",required = true)@RequestParam(required = true) String orderNo,HttpServletRequest requests,HttpServletResponse responses) throws AlipayApiException {//获得初始化的AlipayClientAlipayClient alipayClient = new DefaultAlipayClient(OrderInfoUtil.requestUrl, OrderInfoUtil.APP_ID, OrderInfoUtil.APP_PRIVATE_KEY, "json", AlipayUtil.charset, OrderInfoUtil.ALIPAY_PUBLIC_KEY, AlipayUtil.sign_type);AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();//创建API对应的request类Map<String,Object> map=new HashMap<>();//设置回调地址request.setNotifyUrl(AlipayUtil.NOTIFY_URL);//根据订单号查询订单信息Map<String,Object> maps=new HashMap<>();maps.put("out_trade_no",orderNo);maps.put("total_amount",totalprice+"");maps.put("subject","科谊达微课");maps.put("store_id","NJ_001");maps.put("timeout_express","90m");//把订单信息转换为json对象的字符串String postdata = JSONObject.fromObject(maps).toString();request.setBizContent(postdata);AlipayTradePrecreateResponse response = alipayClient.execute(request);String body = response.getBody();JSONObject jsonObject = JSONObject.fromObject(body);String qr_code = jsonObject.getJSONObject("alipay_trade_precreate_response").getString("qr_code");//流输出ServletOutputStream sos = null;try {sos = responses.getOutputStream();Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>();// 指定编码格式hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");// 指定纠错级别(L--7%,M--15%,Q--25%,H--30%)hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);// 编码内容,编码类型(这里指定为二维码),生成图片宽度,生成图片高度,设置参数BitMatrix bitMatrix = new MultiFormatWriter().encode(qr_code, BarcodeFormat.QR_CODE, 200, 200, hints);//生成二维码MatrixToImageWriter.writeToStream(bitMatrix, "png", sos);} catch (IOException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}
}

这里要强调的是APP_PRIVATE_KEY是应用私钥,而ALIPAY_PUBLIC_KEY是支付宝公钥,sign_type用RSA还是RSA2取决你在商户平台使用的哪一种,否则会报签名错误,二维码返回其实是有两种方式一种是我写的这种,自己生产一个适用于任何地方的二维码,生成二维码代码

package com.kyd.util.pay;import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import javax.imageio.ImageIO;
import com.google.zxing.common.BitMatrix;
public class MatrixToImageWriter {private static final int BLACK = 0xFF000000;private static final int WHITE = 0xFFFFFFFF;private MatrixToImageWriter() {}public static BufferedImage toBufferedImage(BitMatrix matrix) {int width = matrix.getWidth();int height = matrix.getHeight();BufferedImage image = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);for (int x = 0; x < width; x++) {for (int y = 0; y < height; y++) {image.setRGB(x, y, matrix.get(x, y) ? BLACK : WHITE);}}return image;}public static void writeToFile(BitMatrix matrix, String format, File file)throws IOException {BufferedImage image = toBufferedImage(matrix);if (!ImageIO.write(image, format, file)) {throw new IOException("Could not write an image of format "+ format + " to " + file);}}public static void writeToStream(BitMatrix matrix, String format,OutputStream stream)throws IOException {BufferedImage image = toBufferedImage(matrix);if (!ImageIO.write(image, format, stream)) {throw new IOException("Could not write an image of format "+ format);}}
}

还有一种是生成form表单的形式

    @ApiOperation(value = "支付宝生成二维码", httpMethod = "POST", response = ResultJsonBean.class, notes = "")@RequestMapping(value = "/alipayQrcode",  method = {RequestMethod.POST,RequestMethod.GET})@ResponseBody@ParentPCUserpublic String alipayQrcode(@ApiParam(value="token")@RequestParam(required = false) String token,@ApiParam(value="支付金额",required = true)@RequestParam(required = true) Long totalprice,@ApiParam(value="支付订单号",required = true)@RequestParam(required = true) String orderNo,HttpServletRequest request,HttpServletResponse response){//获得初始化的AlipayClientAlipayClient alipayClient = new DefaultAlipayClient(AlipayUtil.gatewayUrl, OrderInfoUtil.APP_ID, OrderInfoUtil.APP_PRIVATE_KEY, "json", AlipayUtil.charset, OrderInfoUtil.ALIPAY_PUBLIC_KEY, AlipayUtil.sign_type);//创建PC场景下单并支付请求对象AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();//创建API对应的request//设置同步返回地址,HTTP/HTTPS开头字符串alipayRequest.setReturnUrl(AlipayUtil.RETURN_URL);//支付宝服务器主动通知商户服务器里指定的页面http/https路径。alipayRequest.setNotifyUrl(AlipayUtil.NOTIFY_URL);//在公共参数中设置回跳和通知地址Map<String,String> requestMap = new HashMap<>();requestMap.put("out_trade_no",orderNo);//订单编号requestMap.put("product_code","FAST_INSTANT_TRADE_PAY");//产品交易码requestMap.put("total_amount",totalprice+"");//实际付款金额requestMap.put("subject","微课");//商品名称//填充业务参数alipayRequest.setBizContent(JSON.toJSONString(requestMap));String form="";try {//调用SDK生成表单form = alipayClient.pageExecute(alipayRequest).getBody();} catch (AlipayApiException e) {e.printStackTrace();}return form;}
}

这种方式是跳转到支付宝的公共扫码页面做支付

java实现支付宝二维码支付(Spring Boot)相关推荐

  1. Python实现支付宝二维码支付(沙箱环境)

    Python实现支付宝二维码支付 一.沙箱环境配置 1.登陆蚂蚁金融开放平台:https://openhome.alipay.com 2.选择进入我的开放平台.寻找开发中心的研发服务. 3.点击沙箱环 ...

  2. 梦行扫码付(收银台条码支付 微信钱包条码支付 支付宝二维码支付 手机APP钱包支付 PHP扫码支付 )

    适用于:各行各业(如,超市 餐厅 收费站 等各类收费处) 平台管理员篇 扫码付管理 (收银台条码支付) 全站收款账号 (微信钱包条码支付) 全站收款记录 (支付宝二维码支付) 商家篇 我的扫码付 (支 ...

  3. 微信二维码支付支付宝二维码支付(主扫模式)开发指南

    微信二维码支付 熟悉微信支付全家桶的童鞋应该都清楚,微信支付是没有提供PC网关支付的,那么传统的网站需要怎么接入微信支付产品呢? 我们可以选择微信支付中的Native支付产品,官方介绍: Native ...

  4. Java支付宝二维码支付和退款,微信二维码支付

    在蚂蚁金服开发平台下载demo 打开 TradePayDemo 项目,里面的main可以直接运行,在配置文件zfbinfo.properties中改为自己支付宝的信息 # 支付宝网关名.partner ...

  5. php实现支付宝二维码支付

    下面是代码 <?php header('Content-type:text/html; Charset=utf-8'); /*** 请填写以下配置信息 ***/ $appid = '****'; ...

  6. 怎样在前端实现微信/支付宝二维码支付?

    首先在终端中下载qrcode,[npm install qrcode] 在script区域中导入 qrcode:[import qrcode from 'qrcode'] 在自定义的方法中调用toDa ...

  7. 支付宝二维码支付文档,找了好久,记在这里

    http://app.alipay.com/market/document.htm?name=saomazhifu#page-14

  8. 深入支付宝支付扫描支付-跳转支付宝二维码页面支付与自定义生成二维码支付-1参数配置篇

    这里较详细总结一下支付宝扫码支付,从三个方面总结 ①参数配置 ②跳转固定的支付宝页面进行扫码支付 ③自定义二维码扫码支付 参数配置-开放平台相关配置(沙箱环境) 刚开始支付宝的配置参数还是有点让人懵逼 ...

  9. java实现微信支付宝等多个支付平台合一的二维码支付(maven+spring springmvc mybatis框架)

    首先申明,本人实现微信支付宝等支付平台合多为一的二维码支付,并且实现有效时间内支付有效,本人采用的框架是spring springmvc mybatis 框架,maven管理.其实如果支付,不需要my ...

最新文章

  1. Android隐藏状态栏和标题栏,相当于全屏效果
  2. iphone XCode调试技巧之EXC_BAD_ACCESS中BUG解决
  3. 表达对别人的感激之情
  4. new是不是c语言运算符优先级表,C语言运算符优先级列表(超详细)
  5. C++中如何区分引用和取地址符号?
  6. dell 2r30服务器装系统,DELL服务器操作系统安装汇总.docx
  7. Python网络编程(1.利用socket(udp)+网络调试助手,发送数据)
  8. 有向无环图拓扑排序(python实现)
  9. cannot create employee - HR check BP_BUPA_CHECK_HR_IS_ACTIVE
  10. 日本老爷爷坚持17年用Excel作画,我可能用了假的Excel···
  11. 【算法图解|4】JavaScript 如何求数组的最大值和最小值
  12. Mysql的数据库引擎 区别特点_mysql数据库存储引擎及区别
  13. 佛祖保佑代码无bug图片_程序员都有哪些奇趣的代码注释,细思极恐
  14. 支付宝架构师眼中的高并发架构,真是绝了!
  15. Webgame服务端分布式架构设计
  16. 利用SUMIF和OFFSET+MATCH进行多条件求和
  17. 解决ionic 中 $ionicHistory.goBack()无法返回问题
  18. Pybulle中确定UR机械臂末端姿态方法
  19. 《FFmpeg Basics》中文版-11-格式之间转换
  20. JAVA判断上传文件后缀名是否符合规范MultipartFile

热门文章

  1. android nvram读写,MTK Android平台Nvram与Gensor数据获取
  2. Fansblog  HDU-6608(费马小定理、威尔逊定理)
  3. echart旭日图_echart旭日图
  4. 阿里云OSS域名配置及简单上传
  5. matlab 动态识别,基于matlab脸部动态特征的人脸表情识别程序
  6. mysql interval weekday_Mysql DATE_SUB(NOW(), INTERVAL 1 DAY) 24 hours or weekday?
  7. 如何用 Python 识别车牌
  8. word文档批量转换为html格式
  9. python的多线程
  10. 一个U盘安装多个iso引导