有道无术,术尚可求,有术无道,止于术。

前言

在之前的文档中,我们完成了使用官方SDK集成Native支付的所有API使用案例。

官方SDK作为基础集成平台,为了适应各种应用框架,使用起来还是比较麻烦。比如:

  • 需要自己集成API,提供服务类
  • 请求参数、返回对象没有封装为JAVA对象,需要自己解析
  • V3版本没有提供统一下单API
  • 没有提供Spring Boot启动器,需要自己集成Spring Boot

针对上述问题,简化开发,有许多开源的支付框架可以使用,下面会一一介绍。

开源框架

WxJava【JAVA SDK 推荐】

码云地址

WxJava是一款微信Java开发工具包,支持包括微信支付开放平台、公众号、企业微信/企业号、小程序等微信功能模块的后端开发。

集成微信支付V3时,引入以下依赖:

        <dependency>
            <groupId>com.github.binarywang</groupId>
            <artifactId>wx-java-pay-spring-boot-starter</artifactId>
            <version>4.4.8.B</version>
        </dependency>

添加配置:

wx:
  pay:
    appId: wx74862e0dfcfxxxxxx # 应用ID
    mchId: 15589xxxxx  #商户id
    apiV3Key: UDuLFDcmy5Eb6o0xxxxx #V3密钥
    certSerialNo: 34345964330B66427xxxxx  #商户证书序列
    privateKeyPath: classpath:cert/apiclient_key.pem #apiclient_key.pem证书文件的绝对路径或者以classpath:开头的类路径
    privateCertPath: classpath:cert/apiclient_cert.pem #apiclient_cert.pem证书文件的绝对路径或者以classpath:开头的类路径

然后就可以直接使用框架提供的API进行各种下单、查单、退款操作了。

    @Operation(summary = "统一下单/(V3)")
    @PostMapping("/native")
    public R<?> nativeOrder(String userId, String goodsId) throws Exception {
        try {
            // 1. 创建商户订单
            OrderEntity mchOrder = orderService.saveOrder(userId, goodsId);
            GoodsEntity goods = goodsService.getById(mchOrder.getGoodId());
            // 2. 组装支付参数,创建支付订单
            WxPayUnifiedOrderV3Request orderRequest = new WxPayUnifiedOrderV3Request();
            orderRequest.setDescription(goods.getShopName() + "-" + goods.getName()); // 商品描述:示例值:Image形象店-深圳腾大-QQ公仔
            WxPayUnifiedOrderV3Request.Amount amount = new WxPayUnifiedOrderV3Request.Amount();
            amount.setTotal(1); // 订单金额信息
            orderRequest.setAmount(amount);
            orderRequest.setOutTradeNo(mchOrder.getOutTradeNo()); // 商户订单号,商户系统内部订单号,只能是数字、大小写字母_-*且在同一个商户号下唯一
            orderRequest.setNotifyUrl("https://8da1-120-227-23-190.jp.ngrok.io/pay/wechat/notify"); // 通知地址
            // 3. 发起V3 NATIVE支付
            WxPayUnifiedOrderV3Result wxPayUnifiedOrderV3Result = wxPayService.unifiedOrderV3(TradeTypeEnum.NATIVE, orderRequest);
            log.info("NATIVE支付成功,返回二维码" + wxPayUnifiedOrderV3Result.getCodeUrl());
            // 4. 省略后续操作
            return R.success(wxPayUnifiedOrderV3Result);
        } catch (Exception e) {
            log.error("微信支付失败!,原因:{}", e.getMessage());
            e.printStackTrace();
            return R.fail();
        }
    }

    @Operation(summary = "查询订单/(V3)")
    @GetMapping("/queryOrder")
    public R<WxPayOrderQueryV3Result> queryOrder(@RequestParam(required = false) String transactionId,
                                                 @RequestParam(required = false) String outTradeNo)
            throws WxPayException {
        WxPayOrderQueryV3Result wxPayOrderQueryV3Result = this.wxPayService.queryOrderV3(transactionId, outTradeNo);
        return R.success(wxPayOrderQueryV3Result);
    }

打印日志如下:
在这里插入图片描述

pay-java-parent【JAVA SDK】

码云地址

全能第三方支付对接Java开发工具包,优雅的轻量级支付模块集成支付对接支付整合:微信、支付宝、银联、友店、富友、跨境支付、paypal、payoneer、易极付

支持多种支付类型多支付账户,支付与业务完全剥离,简单几行代码即可实现支付,简单快速完成支付模块的开发,可轻松嵌入到任何系统里。

目前仅是一个开发工具包,只提供简单Web实现,建议使用mavengradle引用本项目即可使用本SDK提供的各种支付相关的功能。

IJPay【JAVA SDK】

码云地址

不依赖任何第三方MVC框架,仅仅作为工具使用简单快速完成支付模块的开发,可轻松嵌入到任何系统里。

微信支付支持多商户多应用,普通商户模式与服务商商模式当然也支持境外商户、同时支持Api-v3Api-v2版本的接口。

支付宝支付支持多商户多应用,签名同时支持普通公钥方式与公钥证书方式。

jeepay【系统】

码云地址

Jeepay是一套适合互联网企业使用的开源支付系统,支持多渠道服务商和普通商户模式。已对接微信支付,支付宝,云闪付官方接口,支持聚合码支付

使用Spring BootAnt Design Vue开发,集成Spring Security实现权限管理功能,是一套非常实用的web开发框架。

WeChatDeveloper【PHP】

码云地址

WeChatDeveloper 是一款PHP集成支付框架,基于 wechat-php-sdk 重构,优化并完善。

功能描述:

  • 微信小程序,服务端接口支持
  • 微信认证服务号,服务端接口支持
  • 微信支付(账单、卡券、红包、退款、转账、App支付、JSAPI支付、Web支付、扫码支付等)
  • 支付宝支付(账单、转账、App支付、刷卡支付、扫码支付、Web支付、Wap支付等)

WeiXinMPSDK【.NET】

码云地址

Senparc.Weixin SDK 是目前使用率最高的微信 .NET SDK,也是国内最受欢迎的 .NET 开源项目之一。

可以方便快速地开发微信全平台的应用(包括微信公众号、小程序、小游戏、企业号、开放平台微信支付、JS-SDK、微信硬件/蓝牙,等等)。

目前已经支持几乎所有微信平台模块和接口,并同时支持.NET 3.5 / 4.0 / 4.5 / .NET Standard 2.x / .NET Core 2.x / .NET Core 3.x / .NET 6.0多种框架,同时兼容所有 MVC、Razor、WebApi、Console(命令行)、桌面应用(.exe)、Blazor、MAUI、后台服务等环境,和外部框架完全解耦。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐