1. 前言

最近忙的一批,难得今天有喘气的机会就赶紧把最近在开发中的一些成果分享出来。前几日分享了自己写的一个微信支付V3的开发包payment-spring-boot-starter,就忙里偷闲完善了一波。

项目地址: https://github.com/NotFound403/payment-spring-boot

别忘记给个Star啊,有问题提ISSUE。

那么都完善了哪些内容呢?我来一一介绍。

2. Maven 中央仓库

是的,不用再自行编译打包部署了,我已经提交到Maven中央仓库了。最新的坐标是:

  1. <dependency>
  2. <groupId>cn.felord</groupId>
  3. <artifactId>payment-spring-boot-starter</artifactId>
  4. <version>1.0.1.RELEASE</version>
  5. </dependency>

这才算有了点正经开源项目的样子。

3. 功能更加完善

在上次分享中仅仅实现了微信支付的代金券能力,这次加入了更多的微信支付能力:

  • 微信支付V3的基础支付-直连模式优化。
  • 实现微信支付V3的合单支付。

同时自行实现了多商户、多APPID的多租户模式。后续微信支付分等功能也将接入进来。

4. 完善样例

大部分同学还是喜欢拿来就用,那么我又编写了一个DEMO项目,比如微信支付回调的控制器代码:

  1. /**
  2. * 微信支付成功回调.
  3. * <p>
  4. * 无需开发者判断,只有扣款成功微信才会回调此接口
  5. *
  6. * @param wechatpaySerial the wechatpay serial
  7. * @param wechatpaySignature the wechatpay signature
  8. * @param wechatpayTimestamp the wechatpay timestamp
  9. * @param wechatpayNonce the wechatpay nonce
  10. * @param request the request
  11. * @return the map
  12. */
  13. @SneakyThrows
  14. @PostMapping("/transaction")
  15. public Map<String, ?> transactionCallback(
  16. @RequestHeader("Wechatpay-Serial") String wechatpaySerial,
  17. @RequestHeader("Wechatpay-Signature") String wechatpaySignature,
  18. @RequestHeader("Wechatpay-Timestamp") String wechatpayTimestamp,
  19. @RequestHeader("Wechatpay-Nonce") String wechatpayNonce,
  20. HttpServletRequest request) {
  21. String body = request.getReader().lines().collect(Collectors.joining());
  22. // 对请求头进行验签 以确保是微信服务器的调用
  23. ResponseSignVerifyParams params = new ResponseSignVerifyParams();
  24. params.setWechatpaySerial(wechatpaySerial);
  25. params.setWechatpaySignature(wechatpaySignature);
  26. params.setWechatpayTimestamp(wechatpayTimestamp);
  27. params.setWechatpayNonce(wechatpayNonce);
  28. params.setBody(body);
  29. return wechatApiProvider.callback(TENANT_ID).transactionCallback(params, data -> {
  30. //TODO 对回调解析的结果进行消费
  31. });
  32. }

基本就是抄来就能用的。还有更多请参阅 payment-spring-boot-samples项目:

地址:https://github.com/NotFound403/payment-spring-boot-samples

请注意保护敏感参数的安全,不要泄露出去。

5. 文档

写文档确实是一个枯燥的事情,参考了其它一些开源项目的样子弄了个像模像样的文档:

地址是:https://notfound403.github.io/payment-spring-boot

快速接入指南、JavaDoc、踩坑分享都在文档里面了。如果有什么需要完善的地方可以提交ISSUE。

今天的分享就到这里,如果你在微信支付中遇到了什么问题可以留言提问,我愿意提供力所能及的帮助,分享使我快乐。

关注公众号:Felordcn 获取更多资讯

个人博客:https://felord.cn

为了Java微信支付V3开发包,我找出了微信支付文档至少六个错误的更多相关文章

  1. DBImport v3.44 中文版发布:数据库数据互导及文档生成工具(IT人员必备)

    前言: 距离上一个版本V3.3版本的文章发布,已经是1年10个月前的事了. 其实版本一直在更新,但也没什么大的功能更新,总体比较稳定,所以也不怎么写文介绍了. 至于工作上的事,之前有半年时间跑去学英语 ...

  2. 微信支付v3开发(5) 扫码并输入金额支付

    关键字:微信支付 微信支付v3 动态native支付 统一支付 Native支付 prepay_id 作者:方倍工作室 本文介绍微信支付下的扫描二维码并输入自定义金额的支付的开发过程. 注意 微信支付 ...

  3. DBImport v3.3 中文版发布:数据库数据互导及文档生成工具(IT人员必备)

    前言: 好久没写文了, 距离上一篇文章是3个月前的事了,虽然工作很忙,主要还是缺少写作的内容和激情,所以没怎么动手. 之前有一个来月不断面试不同层次来应聘的人员,很有想写文的冲动,后来还是忍住了. 估 ...

  4. Effective Java 第三版——19. 如果使用继承则设计,并文档说明,否则不该使用

    Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...

  5. java 在MySQL中存储文件,读取文件(包括图片,word文档,excel表格,ppt,zip文件等)

    转自:https://blog.csdn.net/u014475796/article/details/49893261 在设计到数据库的开发中,难免要将图片或文档文件(如word)插入到数据库中的情 ...

  6. java从键盘输入学生成绩,找出最高分,并输出学生成绩等级。

    /*从键盘输入学生成绩,找出最高分,并输出学生成绩等级:成绩 >=最高分-10 等级为A成绩 >=最高分-20 等级为B成绩 >=最高分-30 等级为C其余为 等级为D 提示:先输入 ...

  7. JAVA Asponse.Word Office 操作神器,借助 word 模板生成 word 文档,并转化为 pdf,png 等多种格式的文件

    一,由于该 jar 包不是免费的, maven 仓库一般不会有,需要我们去官网下载并安装到本地 maven 仓库 1,用地址   https://www-evget-com/product/564  ...

  8. JAVA中让Swagger产出更加符合我们诉求的描述文档,按需决定显示或者隐藏指定内容

    大家好,又见面啦. 在前一篇文档<JAVA中自定义扩展Swagger的能力,自动生成参数取值含义说明,提升开发效率>中,我们探讨了如何通过自定义注解的方式扩展swagger的能力让Swag ...

  9. java平台利用jsoup开发包,抓取优酷视频播放地址与图片地址等信息。

    /********************************************************************************************  * aut ...

随机推荐

  1. Vector和ArrayList的联系和区别

    Vector和ArrayList的联系和区别 1.联系: 实用原理相同 功能相同 都是长度可变的数组结构,很多情况下可以互用 2.两者的主要区别:

  2. IDM下载器的队列功能有什么用?

    使用IDM下载器中的队列功能,可以帮助大家快速分类下载任务,这样,就可以统一管理有同样下载需求的内容. 一.队列的添加及设置 打开IDM下载器,单击菜单中的"队列",可以看到在左侧 ...

  3. Wine和CrossOver之间的关系简单介绍

    相信有些小伙伴们不太了解Wine和CrossOver之间的关系与区别,然而对此又很好奇,所以小编今天将给大家介绍一下这两者之间的关系与区别. Wine是什么? Windows.Linux和macOS是 ...

  4. 精尽MyBatis源码分析 - SQL执行过程(四)之延迟加载

    该系列文档是本人在学习 Mybatis 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释(Mybatis源码分析 GitHub 地址.Mybatis-Spring 源码分析 GitHub ...

  5. 电脑装MySQL免安装版配置失败提示系统错误2怎么解决?

    一·准备工作 我下载安装的版本是:mysql-8.0.16-winx64(免安装版) 下载地址:https://www.mysql.com/ (官网地址)https://cdn2.lmonkey.co ...

  6. [题解] 洛谷 P3393 逃离僵尸岛

    题目TP门 很明显是一个最短路,但是如何建图才是关键. 对于每一个不可遍历到的点,可以向外扩散,找到危险城市. 若是对于每一个这样的城市进行搜索,时间复杂度就为\(O(n^2)\),显然过不了.不妨把 ...

  7. Spring与Web环境集成

    1. Spring与Web环境集成 1.1 ApplicationContext应用上下文获取方式 应用上下文对象是通过new ClasspathXmlApplicationContext(sprin ...

  8. 转载的一篇文章eclipse添加插件

    eclipse没有(添加)"Dynamic Web Project"选项的方法 转载海边的第八只螃蟹 最后发布于2015-11-24 21:24:15 阅读数 40814  收藏 ...

  9. C和指针---结构和联合

    一.结构 1.C提供了两种类型的聚合数据类型---数组.结构.数组是相同类型的元素集合,它的每个元素长度相同,故可以通过下标引用或指针间接访问来选择的;而结构可以把不同类型的值存储在一起,由于结构的成 ...

  10. 软件安全----警惕缓冲区溢出(C中那些不安全的库函数)

    原文链接:https://blog.csdn.net/yang_yulei/article/details/45314177 链接:http://www.360doc.com/content/11/0 ...