• 为了Java微信支付V3开发包,我找出了微信支付文档至少六个错误


    1. 前言

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

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

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

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

    2. Maven 中央仓库

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

    <dependency>
        <groupId>cn.felord</groupId>
        <artifactId>payment-spring-boot-starter</artifactId>
        <version>1.0.1.RELEASE</version>
    </dependency>
    

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

    3. 功能更加完善

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

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

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

    4. 完善样例

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

        /**
         * 微信支付成功回调.
         * <p>
         * 无需开发者判断,只有扣款成功微信才会回调此接口
         *
         * @param wechatpaySerial    the wechatpay serial
         * @param wechatpaySignature the wechatpay signature
         * @param wechatpayTimestamp the wechatpay timestamp
         * @param wechatpayNonce     the wechatpay nonce
         * @param request            the request
         * @return the map
         */
        @SneakyThrows
        @PostMapping("/transaction")
        public Map<String, ?> transactionCallback(
                @RequestHeader("Wechatpay-Serial") String wechatpaySerial,
                @RequestHeader("Wechatpay-Signature") String wechatpaySignature,
                @RequestHeader("Wechatpay-Timestamp") String wechatpayTimestamp,
                @RequestHeader("Wechatpay-Nonce") String wechatpayNonce,
                HttpServletRequest request) {
            String body = request.getReader().lines().collect(Collectors.joining());
            // 对请求头进行验签 以确保是微信服务器的调用
            ResponseSignVerifyParams params = new ResponseSignVerifyParams();
            params.setWechatpaySerial(wechatpaySerial);
            params.setWechatpaySignature(wechatpaySignature);
            params.setWechatpayTimestamp(wechatpayTimestamp);
            params.setWechatpayNonce(wechatpayNonce);
            params.setBody(body);
            return wechatApiProvider.callback(TENANT_ID).transactionCallback(params, data -> {
                //TODO 对回调解析的结果进行消费
            });
        }
     
    

    基本就是抄来就能用的。还有更多请参阅 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

  • 相关阅读:
    使用vue vantUi框架 根字体是37.5 和默认根字体75不一致,导致页面组件样式变小
    html2canvas ---- canvas里的width和style里面的width区别
    禁止浏览器记住密码操作
    微信小程序的学习和应用
    关于swiper的使用 安卓没有反应
    iconfont阿里云的使用
    Node.js与MongoDB的合作
    Hacker2
    SR选取公式
    树莓派设置静态ip2
  • 原文地址:https://www.cnblogs.com/felordcn/p/14137971.html
Copyright © 2020-2023  润新知