Giter Club home page Giter Club logo

jeequan / jeepay Goto Github PK

View Code? Open in Web Editor NEW
4.7K 149.0 1.7K 5.86 MB

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

Home Page: https://www.jeequan.com

License: GNU Lesser General Public License v3.0

Java 98.62% HTML 0.09% FreeMarker 0.31% CSS 0.01% Shell 0.21% Dockerfile 0.25% EJS 0.52%
xxpay jeepay

jeepay's Introduction

计全支付 - 让支付接入更简单

👉 https://www.jeequan.com 👈

star github star



项目介绍

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

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

名称的由来

Jeepay = Jee + pay,是由原XxPay支付系统作者带领团队开发,“Jee”是公司计全科技名称的表示,pay表示支付。中文名称为计全支付,释为:计出万全、支付安全,让支付更加方便安全。

项目特点

  • 支持多渠道对接,多种支付产品
  • 已对接微信服务商和普通商户接口,支持V2V3接口
  • 已对接支付宝服务商和普通商户接口,支持RSA和RSA2签名
  • 已对接云闪付服务商接口,可选择多家支付机构
  • 提供http形式接口,提供各语言的sdk实现,方便对接
  • 接口请求和响应数据采用签名机制,保证交易安全可靠
  • 系统安全,支持分布式部署,高并发
  • 支持多商户模式,商户多应用接入
  • 管理平台操作界面简洁、易用
  • 支付平台到商户系统的订单通知使用MQ实现,保证了高可用,消息可达,支持多个产品MQ
  • 支付渠道的接口参数配置界面自动化生成
  • 使用spring security实现权限管理
  • 前后端分离架构,方便二次开发
  • 由原XxPay团队开发,有着多年支付系统开发经验
  • 支持docker部署,官方发布一键部署脚本,10分钟部署完成

接口市场

计全官方团队基于开源版代码,开发了对接各家三方支付和银行的对接代码。为了让用户能够快速接入支付,目前已将对接好的代码发布到官方接口市场,并不断更新。 如有需要,可前去接口市场购买。

接口市场:https://www.jeequan.com/ifstore/list.html

安装说明:https://docs.jeequan.com/docs/jeepay/jeepay-1ejdnsuhveb16

目前发布接口包括

三方:汇付Adapay、斗拱支付、支付宝直付通、微信收付通、银盛支付、银联条码前置、银联支付、联动优势、国通星驿付、丰付支付、盛付通、乐刷、杉德支付、瑞银信、拉拉卡、汇聚支付、新生支付、河马支付、海科融通、富友支付、易生支付、支付宝云支付、通联支付

银行:工行支付、浦发银行、建行龙支付、交行支付、

四方:付呗支付、米花支付

系统架构

Jeepay计全支付系统架构图

Jeepay系统架构图

Jeepay计全支付聚合码支付流程图

Jeepay计全支付聚合码支付流程图

核心技术栈

软件名称 描述 版本
Jdk Java环境 1.8
Spring Boot 开发框架 2.4.5
Redis 分布式缓存 3.2.8 或 高版本
MySQL 数据库 5.7.X 或 8.0 高版本
MQ 消息中间件 ActiveMQ 或 RabbitMQ 或 RocketMQ
Ant Design Vue Ant Design的Vue实现,前端开发使用 2.1.2
MyBatis-Plus MyBatis增强工具 3.4.2
WxJava 微信开发Java SDK 4.6.0
Hutool Java工具类库 5.8.26

项目结构

jeepay-ui  -- https://gitee.com/jeequan/jeepay-ui

jeepay
├── conf -- 存放系统部署使用的.yml文件
├── docker -- 存放docker相关文件
└── docs -- 存放项目相关文档说明
     ├── intsll -- 项目部署shell脚本
     ├── script -- 项目启动shell脚本
     └── sql -- 初始化sql文件
└── jeepay-components -- 公共组件目录
     ├── jeepay-components-mq -- mq组件
     └── jeepay-components-oss -- oss组件
├── jeepay-core -- 核心依赖包
├── jeepay-manager -- 运营平台服务端[9217]
├── jeepay-merchant -- 商户系统服务端[9218]
├── jeepay-payment -- 支付网关[9216]
├── jeepay-service -- 业务层代码
└── jeepay-z-codegen -- mybatis代码生成

项目体验

支付体验

管理平台

如何使用

最佳实践

将Jeepay作为一个支付模块部署,对外提供支付接入能力,有支付需求的业务都可以接入使用。

一键安装:

CentOS 安装脚本 (推荐Anolis OS 8.8):

yum install -y wget && wget -O install.sh https://gitee.com/jeequan/jeepay/raw/master/docs/install/install.sh && sh install.sh

Ubuntu 安装脚本 (推荐 Ubuntu 22.04 64位):

apt update && apt-get -y install docker.io && apt-get -y install git && wget -O install.sh https://gitee.com/jeequan/jeepay/raw/master/docs/install/install.sh && sh install.sh

视频教程:

项目文档

SDK对接

Jeepay已经开发了java和python的sdk,方便接入方开发对接。

功能模块

Jeepay运营平台功能

Jeepay运营平台功能

Jeepay商户系统功能

Jeepay商户系统功能

系统截图

以下截图是从实际已完成功能界面截取,截图时间为:2021-07-06 08:59

Jeepay演示界面

Jeepay演示界面

Jeepay演示界面

Jeepay演示界面

Jeepay演示界面

Jeepay演示界面

Jeepay演示界面

Jeepay演示界面

Jeepay演示界面

Jeepay演示界面

Jeepay演示界面

Jeepay演示界面

Jeepay演示界面

更多支持


微信扫描下面二维码,关注官方公众号:计全科技,获取更多精彩内容。

计全科技公众号

微信扫描下方二维码,邀请进官方微信交流群。开源不易,进群前请先点Star给与支持。

Jeepay微信交流群

微信客服咨询:https://work.weixin.qq.com/kfid/kfc6de0edce151ee062

jeepay's People

Contributors

15837873964 avatar 491733638 avatar binarywang avatar cbwleft avatar ghostsun avatar jeequan avatar stringke avatar terrfly avatar xiaochangbai avatar xypang avatar yr-test-space avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jeepay's Issues

工程的 docker 发布

这几天在尝试使用 docker 来部署整个项目, 下面是各文件具体内容:

1. docker-compose.yaml 文件的内容:

cloud_eureka:
  build: ./xxpay4spring-cloud/xxpay-server/src/main/docker
  volumes:
      - "./data/log:/app/log"
  hostname: eureka
  ports:
    - "2000:2000"
  net: "host"

cloud_config:
  build: ./xxpay4spring-cloud/xxpay-config/src/main/docker
  volumes:
      - "./data/log:/app/log"
  hostname: config
  environment:
     EUREKA_HOST: eureka
     EUREKA_PORT: 2000
  ports:
      - "2020:2020"
  net: "host"

cloud_service:
  build: ./xxpay4spring-cloud/xxpay-service/src/main/docker
  volumes:
      - "./data/log:/app/log"
  hostname: service
  environment:
     EUREKA_HOST: eureka
     EUREKA_PORT: 2000
     SERVER_PORT: 3000
  ports:
    - "3000:3000"
  net: "host"

cloud_web:
  build: ./xxpay4spring-cloud/xxpay-web/src/main/docker
  volumes:
      - "./data/log:/app/log"
  hostname: web
  environment:
     EUREKA_HOST: eureka
     EUREKA_PORT: 2000
     SERVER_PORT: 3010
  ports:
    - "3010:3010"
  net: "host"

cloud_zuul:
  build: ./xxpay4spring-cloud/xxpay-gateway/src/main/docker
  volumes:
      - "./data/log:/app/log"
  hostname: zuul
  environment:
     EUREKA_HOST: eureka
     EUREKA_PORT: 2000
  ports:
    - "3021:3021"
  net: "host"

dubbo_service:
  build: ./xxpay4dubbo/xxpay4dubbo-service/src/main/docker
  volumes:
      - "./data/log:/app/log"
  hostname: dubbo_service
  environment:
     EUREKA_HOST: eureka
     EUREKA_PORT: 2000
  ports:
    - "20880:20880"
  net: "host"
dubbo_web:
  build: ./xxpay4dubbo/xxpay4dubbo-web/src/main/docker
  volumes:
      - "./data/log:/app/log"
  hostname: dubbo_web
  environment:
     EUREKA_HOST: eureka
     EUREKA_PORT: 2000
  ports:
    - "3020:3020"
  net: "host"

2. 模块中的 Dockerfile 的样例:

FROM registry.docker-cn.com/library/openjdk:8-jre-alpine
ADD alpine-repositories.list /etc/apk/repositories
RUN set -x && \
    apk add --update bash && \
    rm -rf /var/cache/apk/*
VOLUME /tmp
RUN mkdir /app
_#这里对应当前模块的 jar 文件名_
ADD xxpay-config.jar /app/app.jar
ADD runboot.sh /app/
RUN bash -c 'touch /app/app.jar'
WORKDIR /app
RUN chmod a+x runboot.sh
EXPOSE 2020
CMD /app/runboot.sh

3. alpine-repositories.list 文件的内容:

https://mirrors.ustc.edu.cn/alpine/latest-stable/main
https://mirrors.ustc.edu.cn/alpine/latest-stable/community

4. runboot.sh 文件的内容:

#!/usr/bin/env bash
_# 模块的启动间隔时间_
sleep 30
java -Djava.security.egd=file:/dev/./urandom -jar /app/app.jar

如果是在 linux 下, 可以使用以下的自动部署脚本:

1. 根目录下创建 docker-run.sh 脚本, 内容:

#!/bin/sh
_# 一旦出现了返回值非零,整个脚本就会立即退出。_
set -e
_# 取得当前目录绝对路径_
basepath=$(cd `realpath .`; pwd)
_# 取得当前目录名称_
curfolder=${basepath##*/}

_# 创建需要的文件夹_
if [ ! -d ${basepath}/data ]; then
  mkdir -p ${basepath}/data/log
fi

_# 这里先使用 maven 构建项目_
docker build -t ncc-xxpay-img -f Dockerfile.build .
docker ps -a|grep ncc-mvn-builder|awk '{print $1}'|xargs -I {} docker rm "{}"
docker create --name ncc-mvn-builder ncc-xxpay-img
_# 循环复制 mvn 中的 jar 文件到 docker 文件夹路径下_
for file in $(find ./ -name Dockerfile -type f)
  do
  dockerfile_path=${file#./*}
  dockerfolder_path=${dockerfile_path%/*}
  project_path=${dockerfile_path%%/src*}
  project_name=${project_path##*/}
  docker cp ncc-mvn-builder:/usr/src/app/${project_path}/target/${project_name}.jar ${basepath}/${dockerfolder_path}/

  _# 顺便给 alpine 容器源替换成国内镜像_
  touch ${basepath}/${dockerfolder_path}/alpine-repositories.list
  echo "https://mirrors.ustc.edu.cn/alpine/latest-stable/main" >> ${basepath}/${dockerfolder_path}/alpine-repositories.list
  echo "https://mirrors.ustc.edu.cn/alpine/latest-stable/community" >> ${basepath}/${dockerfolder_path}/alpine-repositories.list
done;

_# 判断 docker-compose 是否存在_
if command -v docker-compose >/dev/null 2>&1; then
  echo 'exists docker-compose'
else
  _# 不存在则安装_
  curl -L https://get.daocloud.io/docker/compose/releases/download/1.3.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
  chmod +x /usr/local/bin/docker-compose
fi
_#先 build, 再启动_
docker-compose build
docker-compose up -d

2. Dockerfile.build 的内容:

FROM registry.cn-hangzhou.aliyuncs.com/narlian/maven:3-jdk-8-alpine
ENV MY_HOME=/usr/src/app
RUN mkdir -p $MY_HOME
WORKDIR $MY_HOME
ADD pom.xml $MY_HOME
_# get all the downloads out of the way_
RUN ["/usr/local/bin/mvn-entrypoint.sh","mvn","verify","clean","--fail-never"]
_# add source_
ADD . $MY_HOME
_# run maven verify_
RUN ["/usr/local/bin/mvn-entrypoint.sh","mvn","verify","-Dmaven.test.skip=true"]
CMD ["mvn","clean","package","-Dmaven.test.skip=true"]

Add SECURITY.md

Hey there!

I belong to an open source security research community, and a member (@Veloideu) has found an issue, but doesn’t know the best way to disclose it.

If not a hassle, might you kindly add a SECURITY.md file with an email, or another contact method? GitHub recommends this best practice to ensure security issues are responsibly disclosed, and it would serve as a simple instruction for security researchers in the future.

Thank you for your consideration, and I look forward to hearing from you!

(cc @huntr-helper)

jeepay-manager 服务异常

Bug概述

jeepay-manager服务报错

重现步骤

  1. 使用docker compose 安装所有服务,具体指令如下
docker build -t jeepay-deps:latest -f docs/Dockerfile .
docker-compose up -d
  1. 使用浏览器访问 http://dockerhost:9227/ (运营平台)或者http://dockerhost:9228/ (商户系统)

Bug行为

1.浏览器控制台报错:

"系统异常[Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class io.netty.buffer.ByteBufAllocator]"
image

2.验证码不显示

image

3. jeepay-manager容器内也会报错,日志见附件。

期望行为

使用docker compost安装的程序,验证码可以正常显示,服务不再报错

附件

附上图片或日志,日志请用格式:

       __
      / /___  ___  ____  ____ ___  __
 __  / // _ \/ _ \/ __ \/ __ `/ / / /
/ /_/ //  __/  __/ /_/ / /_/ / /_/ /
\____/ \___/\___/ .___/\__,_/\__, /
               /_/          /____/
 :: Jeepay ::        (v2.2.0.RELEASE)
 适合互联网企业使用的开源支付系统 : https://www.jeequan.com
2023-07-09 14:35:03.829 INFO  [main] [c.j.j.m.b.JeepayMgrApplication] - Starting JeepayMgrApplication v2.2.0 using Java 1.8.0_312 on manager with PID 1 (/workspace/jeepay-app.jar started by root in /workspace)
2023-07-09 14:35:03.838 DEBUG [main] [c.j.j.m.b.JeepayMgrApplication] - Running with Spring Boot v2.4.8, Spring v5.3.8
2023-07-09 14:35:03.839 INFO  [main] [c.j.j.m.b.JeepayMgrApplication] - No active profile set, falling back to default profiles: default
2023-07-09 14:35:07.900 INFO  [main] [o.s.d.r.c.RepositoryConfigurationDelegate] - Multiple Spring Data modules found, entering strict repository configuration mode!
2023-07-09 14:35:07.912 INFO  [main] [o.s.d.r.c.RepositoryConfigurationDelegate] - Bootstrapping Spring Data Redis repositories in DEFAULT mode.
2023-07-09 14:35:07.950 INFO  [main] [o.s.d.r.c.RepositoryConfigurationDelegate] - Finished Spring Data repository scanning in 15 ms. Found 0 Redis repository interfaces.
2023-07-09 14:35:09.686 INFO  [main] [o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker] - Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@6aa8e115' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2023-07-09 14:35:09.698 INFO  [main] [o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker] - Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2023-07-09 14:35:10.796 INFO  [main] [o.s.b.w.e.t.TomcatWebServer] - Tomcat initialized with port(s): 9217 (http)
2023-07-09 14:35:10.818 INFO  [main] [o.a.c.h.Http11NioProtocol] - Initializing ProtocolHandler ["http-nio-9217"]
2023-07-09 14:35:10.823 INFO  [main] [o.a.c.c.StandardService] - Starting service [Tomcat]
2023-07-09 14:35:10.823 INFO  [main] [o.a.c.c.StandardEngine] - Starting Servlet engine: [Apache Tomcat/9.0.48]
2023-07-09 14:35:10.927 INFO  [main] [o.a.c.c.C.[.[.[/]] - Initializing Spring embedded WebApplicationContext
2023-07-09 14:35:10.928 INFO  [main] [o.s.b.w.s.c.ServletWebServerApplicationContext] - Root WebApplicationContext: initialization completed in 6913 ms
2023-07-09 14:35:11.477 INFO  [main] [c.a.d.s.b.a.DruidDataSourceAutoConfigure] - Init DruidDataSource
2023-07-09 14:35:12.223 INFO  [main] [c.a.d.p.DruidDataSource] - {dataSource-1} inited
 _ _   |_  _ _|_. ___ _ |    _ 
| | |\/|_)(_| | |_\  |_)||_|_\ 
     /               |         
                        3.4.2 
2023-07-09 14:35:13.223 WARN  [main] [c.b.m.c.m.TableInfoHelper] - Can not find table primary key in Class: "com.jeequan.jeepay.core.entity.SysUserRoleRela".
2023-07-09 14:35:14.259 INFO  [main] [o.m.p.j.JmsPoolConnectionFactory] - Provided ConnectionFactory implementation is JMS 2.0+ capable.
2023-07-09 14:35:15.858 WARN  [main] [c.b.m.c.m.TableInfoHelper] - Can not find table primary key in Class: "com.jeequan.jeepay.core.entity.SysRoleEntRela".
2023-07-09 14:35:17.974 INFO  [main] [o.s.s.w.DefaultSecurityFilterChain] - Will secure Ant [pattern='/', GET] with []
2023-07-09 14:35:17.975 INFO  [main] [o.s.s.w.DefaultSecurityFilterChain] - Will secure Ant [pattern='/*.html', GET] with []
2023-07-09 14:35:17.978 INFO  [main] [o.s.s.w.DefaultSecurityFilterChain] - Will secure Ant [pattern='/favicon.ico', GET] with []
2023-07-09 14:35:17.979 INFO  [main] [o.s.s.w.DefaultSecurityFilterChain] - Will secure Ant [pattern='/**/*.html', GET] with []
2023-07-09 14:35:17.979 INFO  [main] [o.s.s.w.DefaultSecurityFilterChain] - Will secure Ant [pattern='/**/*.css', GET] with []
2023-07-09 14:35:17.980 INFO  [main] [o.s.s.w.DefaultSecurityFilterChain] - Will secure Ant [pattern='/**/*.js', GET] with []
2023-07-09 14:35:17.980 INFO  [main] [o.s.s.w.DefaultSecurityFilterChain] - Will secure Ant [pattern='/**/*.png', GET] with []
2023-07-09 14:35:17.980 INFO  [main] [o.s.s.w.DefaultSecurityFilterChain] - Will secure Ant [pattern='/**/*.jpg', GET] with []
2023-07-09 14:35:17.980 INFO  [main] [o.s.s.w.DefaultSecurityFilterChain] - Will secure Ant [pattern='/**/*.jpeg', GET] with []
2023-07-09 14:35:17.981 INFO  [main] [o.s.s.w.DefaultSecurityFilterChain] - Will secure Ant [pattern='/**/*.svg', GET] with []
2023-07-09 14:35:17.981 INFO  [main] [o.s.s.w.DefaultSecurityFilterChain] - Will secure Ant [pattern='/**/*.ico', GET] with []
2023-07-09 14:35:17.981 INFO  [main] [o.s.s.w.DefaultSecurityFilterChain] - Will secure Ant [pattern='/**/*.webp', GET] with []
2023-07-09 14:35:17.981 INFO  [main] [o.s.s.w.DefaultSecurityFilterChain] - Will secure Ant [pattern='/*.txt', GET] with []
2023-07-09 14:35:17.982 INFO  [main] [o.s.s.w.DefaultSecurityFilterChain] - Will secure Ant [pattern='/**/*.xls', GET] with []
2023-07-09 14:35:17.983 INFO  [main] [o.s.s.w.DefaultSecurityFilterChain] - Will secure Ant [pattern='/**/*.mp4', GET] with []
2023-07-09 14:35:17.983 INFO  [main] [o.s.s.w.DefaultSecurityFilterChain] - Will secure Ant [pattern='/api/anon/**'] with []
2023-07-09 14:35:17.983 INFO  [main] [o.s.s.w.DefaultSecurityFilterChain] - Will secure Ant [pattern='/swagger-resources/**'] with []
2023-07-09 14:35:17.983 INFO  [main] [o.s.s.w.DefaultSecurityFilterChain] - Will secure Ant [pattern='/v2/api-docs/**'] with []
2023-07-09 14:35:18.025 INFO  [main] [o.s.s.w.DefaultSecurityFilterChain] - Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@117632cf, org.springframework.security.web.context.SecurityContextPersistenceFilter@3be8821f, org.springframework.security.web.header.HeaderWriterFilter@df5f5c0, org.springframework.web.filter.CorsFilter@37ddb69a, org.springframework.security.web.authentication.logout.LogoutFilter@10567255, com.jeequan.jeepay.mgr.secruity.JeeAuthenticationTokenFilter@2fb68ec6, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@3b65e559, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@74a9c4b0, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@d71adc2, org.springframework.security.web.session.SessionManagementFilter@66b72664, org.springframework.security.web.access.ExceptionTranslationFilter@2e6ee0bc, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@51bde877]
2023-07-09 14:35:18.089 INFO  [main] [s.d.s.w.WebMvcPropertySourcedRequestMappingHandlerMapping] - Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2ControllerWebMvc#getDocumentation(String, HttpServletRequest)]
2023-07-09 14:35:18.503 INFO  [main] [o.s.b.a.w.s.WelcomePageHandlerMapping] - Adding welcome page: class path resource [static/index.html]
2023-07-09 14:35:19.291 WARN  [main] [o.s.b.a.f.FreeMarkerAutoConfiguration] - Cannot find template location(s): [classpath:/templates] (please add some templates, check your FreeMarker configuration, or set spring.freemarker.checkTemplateLocation=false)
2023-07-09 14:35:19.549 INFO  [main] [o.a.c.h.Http11NioProtocol] - Starting ProtocolHandler ["http-nio-9217"]
2023-07-09 14:35:19.604 INFO  [main] [o.s.b.w.e.t.TomcatWebServer] - Tomcat started on port(s): 9217 (http) with context path ''
2023-07-09 14:35:19.607 INFO  [main] [s.d.s.w.p.DocumentationPluginsBootstrapper] - Documentation plugins bootstrapped
2023-07-09 14:35:19.619 INFO  [main] [s.d.s.w.p.DocumentationPluginsBootstrapper] - Found 1 custom documentation plugin(s)
2023-07-09 14:35:19.751 INFO  [main] [s.d.s.w.s.ApiListingReferenceScanner] - Scanning for api listing references
2023-07-09 14:35:20.071 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: listUsingGET_1
2023-07-09 14:35:20.121 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: listUsingGET_2
2023-07-09 14:35:20.123 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: addUsingPOST_1
2023-07-09 14:35:20.129 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: deleteUsingDELETE_1
2023-07-09 14:35:20.141 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: detailUsingGET_1
2023-07-09 14:35:20.149 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: updateUsingPUT_1
2023-07-09 14:35:20.183 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: listUsingGET_3
2023-07-09 14:35:20.196 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: addUsingPOST_2
2023-07-09 14:35:20.199 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: deleteUsingDELETE_2
2023-07-09 14:35:20.222 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: detailUsingGET_2
2023-07-09 14:35:20.227 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: updateUsingPUT_2
2023-07-09 14:35:20.268 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: listUsingGET_4
2023-07-09 14:35:20.278 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: detailUsingGET_3
2023-07-09 14:35:20.308 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: saveOrUpdateUsingPOST_1
2023-07-09 14:35:20.332 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: listUsingGET_5
2023-07-09 14:35:20.360 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: listUsingGET_6
2023-07-09 14:35:20.366 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: saveOrUpdateUsingPOST_2
2023-07-09 14:35:20.374 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: addUsingPOST_3
2023-07-09 14:35:20.376 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: deleteUsingDELETE_3
2023-07-09 14:35:20.378 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: detailUsingGET_4
2023-07-09 14:35:20.380 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: updateUsingPUT_3
2023-07-09 14:35:20.382 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: listUsingGET_7
2023-07-09 14:35:20.412 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: listUsingGET_8
2023-07-09 14:35:20.414 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: detailUsingGET_5
2023-07-09 14:35:20.423 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: listUsingGET_9
2023-07-09 14:35:20.425 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: addUsingPOST_4
2023-07-09 14:35:20.428 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: deleteUsingDELETE_4
2023-07-09 14:35:20.431 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: detailUsingGET_6
2023-07-09 14:35:20.434 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: updateUsingPUT_4
2023-07-09 14:35:20.455 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: listUsingGET_10
2023-07-09 14:35:20.459 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: detailUsingGET_7
2023-07-09 14:35:20.465 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: updateUsingPUT_5
2023-07-09 14:35:20.521 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: listUsingGET_11
2023-07-09 14:35:20.524 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: deleteUsingDELETE_5
2023-07-09 14:35:20.526 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: detailUsingGET_8
2023-07-09 14:35:20.536 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: listUsingGET_12
2023-07-09 14:35:20.538 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: addUsingPOST_5
2023-07-09 14:35:20.545 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: detailUsingGET_9
2023-07-09 14:35:20.549 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: updateUsingPUT_6
2023-07-09 14:35:20.556 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: listUsingGET_13
2023-07-09 14:35:20.572 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: listUsingGET_14
2023-07-09 14:35:20.574 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: addUsingPOST_6
2023-07-09 14:35:20.576 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: deleteUsingDELETE_6
2023-07-09 14:35:20.577 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: detailUsingGET_10
2023-07-09 14:35:20.584 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: updateUsingPUT_7
2023-07-09 14:35:20.592 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: listUsingGET_15
2023-07-09 14:35:20.620 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: listUsingGET_16
2023-07-09 14:35:20.630 INFO  [main] [s.d.s.w.r.o.CachingOperationNameGenerator] - Generating unique operation named: detailUsingGET_11
2023-07-09 14:35:20.896 INFO  [ActiveMQ Task-1] [o.a.a.t.f.FailoverTransport] - Successfully connected to tcp://172.20.0.11:61616?wireFormat.maxInactivityDuration=0
2023-07-09 14:35:20.958 INFO  [main] [c.j.j.m.b.JeepayMgrApplication] - Started JeepayMgrApplication in 18.945 seconds (JVM running for 20.937)
2023-07-09 14:42:09.280 INFO  [http-nio-9217-exec-1] [o.a.c.c.C.[.[.[/]] - Initializing Spring DispatcherServlet 'dispatcherServlet'
2023-07-09 14:42:09.280 INFO  [http-nio-9217-exec-1] [o.s.w.s.DispatcherServlet] - Initializing Servlet 'dispatcherServlet'
2023-07-09 14:42:09.287 INFO  [http-nio-9217-exec-1] [o.s.w.s.DispatcherServlet] - Completed initialization in 7 ms
2023-07-09 14:42:10.137 ERROR [http-nio-9217-exec-1] [c.j.j.c.e.BizExceptionResolver] - 公共捕捉[Exception]异常:
org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.ExceptionInInitializerError
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1078)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:655)
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:228)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163)
	at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163)
	at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:204)
	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)
	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)
	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163)
	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163)
	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163)
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1723)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ExceptionInInitializerError: null
	at io.netty.buffer.ByteBufUtil.<clinit>(ByteBufUtil.java:86)
	at io.netty.buffer.ByteBufAllocator.<clinit>(ByteBufAllocator.java:24)
	at io.lettuce.core.AbstractRedisClient.connectionBuilder(AbstractRedisClient.java:222)
	at io.lettuce.core.RedisClient.connectStatefulAsync(RedisClient.java:313)
	at io.lettuce.core.RedisClient.connectStandaloneAsync(RedisClient.java:278)
	at io.lettuce.core.RedisClient.connect(RedisClient.java:211)
	at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.lambda$getConnection$1(StandaloneConnectionProvider.java:115)
	at java.util.Optional.orElseGet(Optional.java:267)
	at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.getConnection(StandaloneConnectionProvider.java:115)
	at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.getConnection(LettuceConnectionFactory.java:1459)
	at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getNativeConnection(LettuceConnectionFactory.java:1247)
	at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getConnection(LettuceConnectionFactory.java:1230)
	at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getSharedConnection(LettuceConnectionFactory.java:979)
	at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getConnection(LettuceConnectionFactory.java:359)
	at org.springframework.data.redis.core.RedisConnectionUtils.fetchConnection(RedisConnectionUtils.java:193)
	at org.springframework.data.redis.core.RedisConnectionUtils.doGetConnection(RedisConnectionUtils.java:144)
	at org.springframework.data.redis.core.RedisConnectionUtils.getConnection(RedisConnectionUtils.java:105)
	at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:209)
	at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:189)
	at org.springframework.data.redis.core.AbstractOperations.execute(AbstractOperations.java:96)
	at org.springframework.data.redis.core.DefaultValueOperations.set(DefaultValueOperations.java:256)
	at com.jeequan.jeepay.core.cache.RedisUtil.setString(RedisUtil.java:74)
	at com.jeequan.jeepay.mgr.ctrl.anon.AuthController.vercode(AuthController.java:96)
	at com.jeequan.jeepay.mgr.ctrl.anon.AuthController$$FastClassBySpringCGLIB$$a10cd589.invoke(<generated>)
	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:779)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)
	at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)
	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:692)
	at com.jeequan.jeepay.mgr.ctrl.anon.AuthController$$EnhancerBySpringCGLIB$$eafa095e.vercode(<generated>)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197)
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141)
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1063)
	... 49 common frames omitted
Caused by: java.lang.IllegalArgumentException: availableProcessors : 0 (expected: > 0)
	at io.netty.util.internal.ObjectUtil.checkPositive(ObjectUtil.java:80)
	at io.netty.util.NettyRuntime$AvailableProcessorsHolder.setAvailableProcessors(NettyRuntime.java:44)
	at io.netty.util.NettyRuntime$AvailableProcessorsHolder.availableProcessors(NettyRuntime.java:70)
	at io.netty.util.NettyRuntime.availableProcessors(NettyRuntime.java:98)
	at io.netty.buffer.PooledByteBufAllocator.<clinit>(PooledByteBufAllocator.java:101)
	... 93 common frames omitted

PayPal

大神把PayPal支付也集成了吧

服务器部署时数据库连不上

看了源码 数据库是8.0 但数据源配置里却是dsc.setDriverName("com.mysql.jdbc.Driver"); 修改为com.jc.mysql.jdbc.Driver依然连接不上 有解决办法吗

paypal集成

微信支付宝有,海外支付的PayPal大神也集成了呗~

严重:支付回调判断逻辑错误

问题:在NotifyPayServiceImpl.java 文件的method
@OverRide
public Map doWxPayNotify(String jsonParam)中的
byte payStatus = payOrder.getStatus(); //
if (payStatus != PayConstant.PAY_STATUS_SUCCESS && payStatus != PayConstant.PAY_STATUS_COMPLETE) {.............................................................}
payOrder.getStatus() 获得的值未被初始化为零,会导致支付失败。

Payment启动报错

Description:

Parameter 0 of constructor in com.jeequan.jeepay.pay.config.SwaggerConfiguration required a bean of type 'com.github.xiaoymin.knife4j.spring.extension.OpenApiExtensionResolver' that could not be found.

Action:

Consider defining a bean of type 'com.github.xiaoymin.knife4j.spring.extension.OpenApiExtensionResolver' in your configuration.

关于ActiveMQ 或 RabbitMQ 或 RocketMQ在linux的安装(一般适用于宝塔用户)(脚本可能有问题)(随便写的)

#!/bin/bash

# 检测是否存在JDK8
if [ ! -d "/usr/local/btjdk/jdk8" ]; then
    echo "未找到JDK8,正在安装..."
    yum install -y java-1.8.0-openjdk
else
    echo "在 /usr/local/btjdk/jdk8 找到了JDK8"
fi

# 询问用户选择要安装的MQ
read -p "您想要安装哪种MQ? (ActiveMQ/RabbitMQ/RocketMQ): " choice

case $choice in
    ActiveMQ)
        # 安装ActiveMQ
        echo "正在安装ActiveMQ..."
        wget https://archive.apache.org/dist/activemq/5.16.0/apache-activemq-5.16.0-bin.tar.gz
        tar xzf apache-activemq-5.16.0-bin.tar.gz
        mv apache-activemq-5.16.0 /opt/activemq
        ;;
    RabbitMQ)
        # 安装RabbitMQ
        echo "正在安装RabbitMQ..."
        yum install -y epel-release
        yum install -y erlang
        yum install -y https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.9/rabbitmq-server-3.7.9-1.el7.noarch.rpm
        systemctl start rabbitmq-server
        systemctl enable rabbitmq-server
        ;;
    RocketMQ)
        # 安装RocketMQ
        echo "正在安装RocketMQ..."
        wget https://archive.apache.org/dist/rocketmq/4.5.0/rocketmq-all-4.5.0-bin-release.zip
        unzip rocketmq-all-4.5.0-bin-release.zip
        mv rocketmq-all-4.5.0-bin-release /opt/rocketmq
        ;;
    *)
        echo "选择无效!"
        exit 1
        ;;
esac

echo "安装完成!"

渠道回调方法每次都设置自动获取微信平台证书,是有特别的场景考虑吗?

渠道回调方法每次都设置自动获取微信平台证书 ,实际上微信支付工具包初始化时已存在自动更新,是有特别的场景考虑吗?
com/jeequan/jeepay/pay/channel/wxpay/WxpayChannelRefundNoticeService.java:190

com.github.binarywang.wxpay.config.WxPayConfig#getVerifier
@SneakyThrows
public Verifier getVerifier() {
if (verifier == null) {
//当改对象为null时,初始化api v3的请求头
initApiV3HttpClient();
}
return verifier;
}

image
image

阿里云rocketMQ相关问题

阿里云rocketMQ做数据推送 同一个group id 下的所有comsumer, topic 和tag需要是一样的,否则会消费不到 ,当前的配置6个topic都在同一个group 下,所以导致异步回调通知大多数时候都是收不到的

Maven Build Warning

Some problems were encountered while building the effective model for org.xxpay:xxpay-dal:jar:1.0.0
'parent.relativePath' of POM org.xxpay:xxpay-dal:1.0.0 (/Users/xxx/Documents/xxpay-master-master/xxpay-dal/pom.xml) points at org.xxpay:xxpay-master instead of org.springframework.boot:spring-boot-starter-parent, please verify your project structure @ line 13, column 10

Some problems were encountered while building the effective model for org.xxpay:xxpay-service:jar:1.0.0
'dependencies.dependency.systemPath' for com.alipay:sdk:jar should not point at files within the project directory, ${basedir}/src/main/webapp/WEB-INF/lib/alipay-sdk-java20170818173712.jar will be unresolvable by dependent projects @ line 51, column 16

Some problems were encountered while building the effective model for org.xxpay:xxpay4dubbo-service:jar:1.0.0
'dependencies.dependency.systemPath' for com.alipay:sdk:jar should not point at files within the project directory, ${basedir}/src/main/webapp/WEB-INF/lib/alipay-sdk-java20170818173712.jar will be unresolvable by dependent projects @ line 68, column 25

Some problems were encountered while building the effective model for org.xxpay:xxpay4spring-boot:jar:1.0.0
'dependencies.dependency.systemPath' for com.alipay:sdk:jar should not point at files within the project directory, ${basedir}/src/main/webapp/WEB-INF/lib/alipay-sdk-java20170818173712.jar will be unresolvable by dependent projects @ line 83, column 25

It is highly recommended to fix these problems because they threaten the stability of your build.
For this reason, future Maven versions might no longer support building such malformed projects.

开源的这里是被删代码了吗?

类: com.jeequan.jeepay.pay.ctrl.payorder.ChannelNoticeController

问题方法

image

这种无意义的调用还有这么多?

image

提问: gitee 那边不维护了吗? issue怎么不处理了?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.