对接支付宝当面付生成二维码


前言

前几天突然告诉我要对接一个新项目,开发一个支付宝支付得功能,最后研究一下获取支付宝二维码字符串在前台生成二维码比较适合我们得项目.

一、开发前准备

1.首先需要前往支付宝开放平台注册个人账号
注册网址:https://open.alipay.com/dev/workspace
2.在申请成功后选择沙箱工具(否则申请应用会耽误一阵时间)
登录成功后选择左下角沙箱
3.在沙箱账号中获取我们需要得参数

如测试用的 appid , pid 在接口加密方式选择公钥模式点击查看可以看到对应的 应用公钥,应用私钥,支付宝公钥等等.

二、使用步骤

1.将支付宝需要的依赖引入到我们maven得pom.xml中

  <dependency><groupId>com.alipay.sdk</groupId><artifactId>alipay-sdk-java</artifactId><version>4.31.7.ALL</version></dependency>

2.在项目中配置参数
在application.yml中添加支付宝得相关参数

注意:异步回调地址一定要外网可以访问到 局域外网和内网都不符合要求!!!

3.创建支付宝properties文件 创建get 和 set方法

4.在controller中写获取支付宝二维码的字符串的方法 和异步通知的方法 建议使用post请求 可参考文档https://opendocs.alipay.com/open/194/106078 编写代码

在向支付宝发送请求成功后
AlipayTradePrecreateResponse response = null;
response = alipayClient.execute(request);
在response中有一个getQrCode方法
这个就是获取支付宝二维码字符串得方法,测试时可在控制台输出这个字符串,复制这个字符串到草料二维码生成器中看这个二维码是否正确,生成得二维码可以用沙箱账号扫一扫付款.
5.异步回调接收以及验签参考使用 可以去支付宝官网找到这部分代码

    System.out.println("--开始接收支付宝回调信息--");Map<String, String> params = new HashMap<String, String>();try {Map<String, String[]> requestParams = request.getParameterMap();for (Iterator<String> 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] + ",";}//乱码解决,这段代码在出现乱码时使用//valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");params.put(name, valueStr);}boolean  alipayflag = AlipaySignature.verifyV1(params,alipayProperties.getAlipayPublicKey(),alipayProperties.getCharSet(),alipayProperties.getSignType());if(alipayflag){System.out.println("success");}else{this.setSuccess(false);this.setMessage("验签失败");}System.out.println(alipayflag);}catch (Exception e){System.out.println(e);}PrintWriter writer = null;try {writer = response.getWriter();} catch (IOException e) {e.printStackTrace();}System.out.println(params);String Paytime =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());String PayState = "1";writer.write("success"); // 一定要打印success,否则支付宝会一直发送请求  writer.flush();

总结

开发遇到的问题
开发环境属于局域内网无法被支付宝访问到 所以使用内外网穿透工具ngrok
之前一直用花生壳 但是前不久花生壳的htpp请求失效 换了这个内外网穿透工具供测试使用 .

开发思路
首先保证支付宝的所有代码 可以被互联网访问到
1.取业务数据 生成支付宝二维码
2.异步接收用户扫完二维码的回调通知
3.对回调的数据进行验签
4.验签成功后改变人员状态
5.遇到问题可以去支付宝开放平台找人工问清楚

对接支付宝 生成付款码功能相关推荐

  1. 微信小程序拉起付款码功能

    使用openOfflinePayView接口,拉起微信付款码,提示"支付验证签名失败" wx.openOfflinePayView({'appId': data.appId, // ...

  2. 微信扫码支付功能(1)---通过谷歌二维码工具生成付款码

    生成付款二维码 一.微信网站扫码支付介绍 1.扫码支付文档 微信开发官方文档:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_5 ...

  3. JAVA对接支付宝,实现支付功能

    网站对接支付宝支付 沙盒开通 支付宝给我们提供了支付宝支付沙盒 供测试 注册沙盒可以自行 百度开通 这里不过多介绍 对接支付宝主要流程 我们在我们订单支付时给支付宝发送一个创建订单请求 在创建订单时创 ...

  4. Java对接支付宝网站扫码支付

    一.对接流程概述 申请支付宝商户号 > 开通支付能力 >申请应用>开发设置>签约开通支付能力>集成SDK 二.流程详解 2.1 申请支付宝账号 2.2开通网站支付功能

  5. 网站对接支付宝进行支付

    本文介绍PC网页对接支付宝,完成批量向支付宝账户转账的功能(使用Java实现),首先我的水平是这样的:接到这个工作任务后,可以说我是大白,之前我做过银行的项目,懂签名和验签是怎么一回事,但是对接支付宝 ...

  6. 对接支付宝单笔转账接口

    对接支付宝单笔转账接口 功能介绍 接入准备 调用支付宝api需要以下参数: 项目引入 操作流程 创建小程序 配置小程序 集成配置 SDK 助手 详细操作流程 获取appId 获取证书 获取AES密钥 ...

  7. 还不知道付款码背后的原理吗?轻轻一扫,立刻扣款,来!带你解密

    前言 最近由于业务需求,需要开发付款码功能,该接口底层将会聚合市面上主流钱包 APP 的付款码功能,如微信支付,支付宝支付. ps:付款码支付别称有很多,如微信支付端支付产品为付款码支付(之前的文档叫 ...

  8. 轻轻一扫,立刻扣款,付款码背后的原理你不想知道吗?

    来自:程序通事 前言 最近由于业务需求,需要开发付款码功能,该接口底层将会聚合市面上主流钱包 APP 的付款码功能,如微信支付,支付宝支付. ps:付款码支付别称有很多,如微信支付端支付产品为付款码支 ...

  9. 轻轻一扫立刻扣款,付款码技术原理大揭秘 | 原力计划

    作者 | 楼下小黑哥 责编 | 王晓曼 出品 | CSDN博客 前言 最近由于业务需求,需要开发付款码功能,该接口底层将会聚合市面上主流钱包 APP 的付款码功能,如微信支付,支付宝支付. ps:付款 ...

  10. 在线支付篇(微信)——native方式(付款码支付)

    前一段时间由于项目功能的需要,需要支持几种在线支付.之前也没有接触过这一方面.下面来说说我期中的一种很常用的支付方式吧--微信支付. 这篇文章能,主要用来记录一下我实现微信支付的付款码支付和jsapi ...

最新文章

  1. AS 400 常用命令
  2. Lua的清屏快捷方式
  3. 批量kill掉包含某个nginx的进程
  4. JAX-RS 2.0的新功能– @BeanParam批注
  5. java异常处理,需要考虑的流程
  6. LeetCode 1114. 按序打印
  7. 用MyEclipse JPA创建项目(四)
  8. php遍历指定目录下的文件,PHP遍历指定目录下所有文件和目录
  9. python urllib.parse_Python3的urllib.parse常用函数小结
  10. 计算机网络之应用层图解,秒解应用层HTTP,期末考试不担心!!
  11. Pytorch:CycleGAN代码中nn.Sequential(*module)处错误:list is not a Module subclass
  12. 实验11-1-7 藏头诗 (15分)
  13. pom文件配置阿里云仓库 转
  14. 汉字转拼音 - 输入汉字获取其拼音
  15. 重磅!五大电力央企“一把手”华山论剑深谈数字化转型
  16. 常用颜色16进制、3原色对照
  17. python快速找到列表中出现最多的元素
  18. 如何获取数组中的最后几项:slice()
  19. 周末交友好运气:请找中国张名记
  20. matlab 随机相位的正弦信号,利用MATLAB绘制随机相位正弦波.docx

热门文章

  1. pytorch 画loss曲线_Python练习绘制损失曲线,Pytorch,Loss
  2. 计蒜课:Fantastic Graph(图论)(有源汇的上下界的可行流)
  3. matlab里comb用法,comb - 操作字符串的利器
  4. Systemverilog always_comb 过程块
  5. zkLedger: Privacy-Preserving Auditing for Distributed Ledgers
  6. VSCode更改显示语言-如更改英语为中文或者将中文改为英语
  7. 黑天鹅mobi_破坏我们系统的因素:黑天鹅分类法
  8. 与世界有怎样的关系,便拥有了怎样的自己
  9. 蓝桥杯题目练习(学做菜)
  10. torch.nn.MSELoss的用法