目录

URL生成二维码

扫码回调开发

验证签名的正确性,更改订单状态

操作多个表库要开启事务


URL生成二维码

1、生成二维码返回页端
​加入依赖<!-- google二维码生成包 --><dependency><groupId>com.google.zxing</groupId><artifactId>javase</artifactId><version>3.3.0</version></dependency><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>2.0</version></dependency>​
​2、使用微信扫码完成支付
​
​参考资料:https://blog.csdn.net/shenfuli/article/details/68923393https://www.cnblogs.com/lanxiamo/p/6293580.html
​二维码知识:https://coolshell.cn/articles/10590.html

扫码回调开发

文档:

https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_7&index=3


​1 、开发支付回调接口
​//读取回调输入流   StringBuffer sb = new StringBuffer();    InputStream inputStream = request.getInputStream();    String line ;    BufferedReader in = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));    while ((line = in.readLine()) != null){    sb.append(line);  }  in.close();  inputStream.close();  //解析xml成map    //{transaction_id=4200000141201805266700247361, nonce_str=cbb67accd8044c9ea48f3318b99d88e4, bank_type=CFT, openid=oiNKG03vVY4PHlGUEwT-ztFo8K8Y, sign=0575804DBE4E9FFF6545046FA062BC4C, fee_type=CNY, mch_id=1503809911, cash_fee=1, out_trade_no=78902e694bab485b8e7745b61e05dbfe, appid=wx5beac15ca207c40c, total_fee=1, trade_type=NATIVE, result_code=SUCCESS, time_end=20180526162759, is_subscribe=Y, return_code=SUCCESS}Map<String, String> callbackMap = WXPayUtil.xmlToMap(sb.toString());    //获取有序map    SortedMap<String, String> sortedMap = CommonUtil.getSortedMap(callbackMap) ;
​
​回调数据:<xml><appid><![CDATA[wx5beac15ca207c40c]]></appid><bank_type><![CDATA[CFT]]></bank_type><cash_fee><![CDATA[10]]></cash_fee><fee_type><![CDATA[CNY]]></fee_type><is_subscribe><![CDATA[Y]]></is_subscribe><mch_id><![CDATA[1503809911]]></mch_id><nonce_str><![CDATA[de019d5f1e5d40649cd76de33f18b13e]]></nonce_str><openid><![CDATA[oiNKG03vVY4PHlGUEwT-ztFo8K8Y]]></openid><out_trade_no><![CDATA[4d8cea4a916440368583edaf82488624]]></out_trade_no><result_code><![CDATA[SUCCESS]]></result_code><return_code><![CDATA[SUCCESS]]></return_code><sign><![CDATA[FA799B7DF70C2BAC558E839E01EF341A]]></sign><time_end><![CDATA[20180626230347]]></time_end><total_fee>10</total_fee><trade_type><![CDATA[NATIVE]]></trade_type><transaction_id><![CDATA[4200000142201806264038572903]]></transaction_id></xml>
​转成map:{transaction_id=4200000142201806264038572903, nonce_str=de019d5f1e5d40649cd76de33f18b13e, bank_type=CFT, openid=oiNKG03vVY4PHlGUEwT-ztFo8K8Y, sign=FA799B7DF70C2BAC558E839E01EF341A, fee_type=CNY, mch_id=1503809911, cash_fee=10, out_trade_no=4d8cea4a916440368583edaf82488624, appid=wx5beac15ca207c40c, total_fee=10, trade_type=NATIVE, result_code=SUCCESS, time_end=20180626230347, is_subscribe=Y, return_code=SUCCESS}2、注意点:回调要用post方式,微信文档没有写回调的通知方式可以用这个注解 @RequestMapping
​问题:一定要看日志

验证签名的正确性,更改订单状态

更新订单状态和幂等性

无论调用多少次接口,积分只增加1次(wx会多次回调我们的接口)所以回调接口要考虑幂等性

微信回调通知规则(通知频率为15/15/30/180/1800/1800/1800/1800/3600,单位:秒)
​幂等性: 同样的参数和值,不管调用你的接口多少次,响应结果都和调用一次是一样的1、校验签名是否正确,防止伪造回调2、查询订单是否已经更新
​3、若没更新则更新订单状态
​4、回应微信,SUCCESS 或者 FAIL response.setContentType("text/xml");            response.getWriter().println("success");

下单接口开启事务(这里只操作一个数据库可以不开启事务)

1、springboot开启事务,启动类里面增加 @EnableTransactionManagement
2、需要事务的方法上加 @Transactional(propagation = Propagation.REQUIRED)
3、aop的管理事务的好处和选择
SUPPORTS如果没有事务就 不开启

REQUIRED 如果没有事务就开启事务

增,删,改  开启事务

操作多个表库要开启事务

@Override
public int updateViderOrderByoutTradeNo(VideoOrder videoOrder) {
//如果要加积分给又换券等多个操作的话要开启事务return videoOrderMapper.updateViderOrderByoutTradeNo(videoOrder);
}

微信支付---二维码的生成(保姆级介绍)相关推荐

  1. Java利用HttpClient发送请求生成微信支付二维码、查询支付状态

    一.HttpClient工具类 import org.apache.http.Consts; import org.apache.http.HttpEntity; import org.apache. ...

  2. 用qrcode生成微信支付二维码

    项目场景: 用qrcode生成微信支付二维码 问题描述 根据后台返回的路径动态生成微信二维码 在这里我们用的是qrcodejs2,它有官网文档 npm i qrcodejs2 导入: import Q ...

  3. 微信支付:支付流程分析、微信扫码支付(HttpClient)、微信支付二维码生成、检测支付状态、订单状态操作准备工作、支付信息回调、MQ处理支付回调状态、定时处理订单状态

    微信支付 微信支付开发的整体思路 生成支付二维码 查询支付状态(微信的服务器) 实现订单状态的修改.删除订单 支付状态回查->微信服务器将支付状态返回给支付微服务 MQ处理支付回调状态 Rabb ...

  4. 前端 js 微信 支付二维码

    这里使用了 js 以及一个网上的工具包,巨j2简单的生成了微信的支付二维码 文章目录 这里使用了 js 以及一个网上的工具包,巨j2简单的生成了微信的支付二维码 下载微信二维码包 生成微信二维码 事后 ...

  5. 微信支付之01------获取订单微信支付二维码的接口------Java实现

    [ 前言:以前写过一个获取微信二维码支付的接口,发现最近公司新开的项目会经常用到,现在我又翻出代码看了一遍,觉得还是把整个代码流程记下来的好 ] 借鉴博客: 他这篇博客写得不错,挺全的:https:/ ...

  6. python制作微信二维码_Python提取支付宝和微信支付二维码的示例代码

    支付宝或者微信支付导出的收款二维码,除了二维码部分,还有很大一块背景图案,例如下面就是微信支付的收款二维码: 有时候我们仅仅只想要图片中间的方形二维码部分,为了提取出中间部分,我们可以使用图片处理软件 ...

  7. 9月4日科技资讯|微信支付二维码被诉侵权;AI 换脸 App「ZAO」致歉; Android 10 正式发布

    「CSDN 极客头条」,是从 CSDN 网站延伸至官方微信公众号的特别栏目,专注于一天业界事报道.风里雨里,我们将每天为朋友们,播报最新鲜有料的新闻资讯,让所有技术人,时刻紧跟业界潮流. 整理 | 胡 ...

  8. 微信支付二维码显示(二)

    第一步: 首先配置WxPayConfig /* 微信公众号信息配置 * APPID:绑定支付的APPID(必须配置) * MCHID:商户号(必须配置) * KEY:商户支付密钥,参考开户邮件设置(必 ...

  9. 关于微信支付 二维码扫码支付

    首先注册微信公众平台服务号:https://mp.weixin.qq.com 获得开发者id和秘钥(appid & appsecret) 随后注册微信支付商户平台:https://pay.we ...

最新文章

  1. Angular自学笔记(?)结构型指令
  2. 通过Servlet的response绘制页面验证码
  3. 【转】理解Azure订阅,账户,活动目录AD,租户等概念
  4. 剑指Offer - 面试题59 - II. 队列的最大值(deque模拟单调栈)
  5. 服务器系统关了,各种服务器系统的关机
  6. vue读取外部配置文件
  7. ARM环境中的c语言socket进程通信-转
  8. 机器学习常见的六大错误
  9. hibernate配置文件hibernate.cfg.xml的详细解释
  10. 如何用Uber JVM Profiler等可视化工具监控Spark应用程序?
  11. js 调用 php,利用js调用后台php进行数据处理原码
  12. DMA内存申请--dma_alloc_coherent 及 寄存器与内存【转】
  13. IE兼容模式文件上传所遇问题解决
  14. Android 5.1.1 源码目录结构
  15. 实时视频带宽的计算过程
  16. badboy设置中文_badboy基本操作
  17. 上海高考物理能不能用计算机,上海高考物理卷并未超纲 但不按套路出牌
  18. GMS2(Gamemaker Studio 2)运行工程时遇到的问题解决
  19. 提取mdx字典文件中的数据
  20. 搜索引擎shodan

热门文章

  1. pc分布使用率情况_如何在不违反法律的情况下获得廉价和免费的PC游戏
  2. 北航计算机组成原理课程设计-2020秋 PreProject-Verilog HDL与ISE-Verilog题目实例与分析
  3. win10查询计算机ip和用户名和密码,win10系统查询电脑ip子网掩码和默认网关的设置教程...
  4. Swift 闪光灯的使用
  5. FileMaker Pro 19 Advanced for mac(数据库工具)
  6. 利用Fiddler抓取手机流量
  7. js正则匹配小数点后2位_js验证是正数且保留2位有效小数点的正则表达式
  8. 更好用的看家工具,智能侦测异常情况,QCY智能摄像机CC1A上手
  9. 现场记录:Nginx重启失败,端口已被使用的可能原因及解决方法
  10. 堆排序【手写小根堆】