登录页面验证码不显示

【问题描述】运营平台或商户系统登录界面,验证码不能显示。

【解决思路】

  • 检查是否开启跨域设置,修改yml文件配置
  • 验证码需要存入redis,检查redis连接是否正常
  • 如果以上都正常,前端谷歌浏览器F12键,查看请求接口是否报错。如果接口报错表明服务端接口连接失败,请检查服务是否正常,连接服务端接口地址是否正确。

系统启动成功,点击登录提示:NoClassDefFoundError: javax/xml/bind/DatatypeConverter

【问题描述】

【问题解答】

  • 一般是由于JDK编译版本导致, 项目要求为1.8的版本; 出现该问题可能是11或者更高版本导致;
  • 解决: 打开IDEA –> 选中jeepay项目 –> File –> Project Structure –> 切换Project SDK 和 Project language lebvel 对应jdk8

系统部署后的默认密码是多少

【问题描述】 运营平台或商户系统登部署后的默认密码是多少。

【问题解答】

  • 运营平台默认账号为:jeepay,默认密码为:jeepay123
  • 商户系统账号需要[运营平台-商户管理]增加商户时指定账号名称,默认密码为:jeepay666

修改yml配置中的数据库连接不生效

【问题描述】本地开发环境修改了application.yml配置中的数据库连接,但依然连不上数据库

【解决思路】

  • 确保数据正常,网络可访问,配置参数正确
  • 开发环境下请阅读conf/readme.txt文件,更改 conf/devCommons/config/application.yml 文件内的配

项目maven编译报错

【问题描述】服务端项目使用maven编译时报错,提示

【解决思路】

  • maven编译失败会有很多种情况,具体问题要根据日志查看
  • 上图中错误提示,maven版本过低,需要升级到新版。建议直接使用3.6.1版本
  • 编译提示: Could not resolve dependencies for project com.jeequan:jeepay-service ... 解决: 请在最外层的pom.xml文件同级执行 >mvn package 命令进行打包。 由于项目互相依赖,不可在子项目中进行打包操作。

项目编译时报jdk问题

【问题描述】服务端项目maven编译时报错,提示信息:com\alibaba\druid\1.2.6/lib/openjdk-1.8-tools.jar

【解决思路】

  • 该错误是由于jeepay目前不支持openjdk导致,请切换oracle jdk 1.8 版本

前端vue编译报错

【问题描述】前端项目编译时,错误提示:compiling ERROR TypeError: Cannot read property ‘get’ of undefined

【解决思路】

  • 该问题一般是使用cnpm编译导致,请使用命令 npm install
  • 参考命令
    npm config set registry https://registry.npm.taobao.org
    npm install

【问题描述】前端项目编译时,错误提示:ERR! configure error gyp ERR! stack Error: Can’t find Python executable “python”, you can set the PYTHON env variable.

【解决】

  • 安装 windows-build-tools ( !! 切记使用 【以管理员身份进入】 CMD !! )
    C:\WINDOWS\system32> npm install --global --production windows-build-tools
    由于会请求国外安装包地址, 若卡住不动,请耐心等待。或切换网络重试。
    或者尝试以下命令
    C:\WINDOWS\system32> npm --vs2015 install --global windows-build-tools

参考: https://cloud.tencent.com/developer/article/1343373
参考:https://developer.aliyun.com/article/797172
参考: https://blog.csdn.net/notejs/article/details/49681517

【问题描述】前端项目编译没有问题, 运行时npm run serve出现: 【error:0308010C:digital envelope routines::unsupported】

【解决】

导入sql语句报错

【问题描述】导入数据库sql语句,出现错误提示

【解决思路】

  • 一般是 init.sqlpatch.sql 都导入,导致错误。初始安装只需导入init.sql文件即可,patch.sql文件是记录每次版本升级的sql语句,根据对应版本选择导入。
  • 由于jeepay中使用到了json数据格式,所以要求msyql版本不能低于5.7

切换RabbitMQ后启动报错

【问题描述】切换了mq,然后重新启动项目,会报各种错误,无法启动项目

【解决思路】

  • 确保application.yml文件中的mq配置正确,空格占位符要对
  • 确保mq服务正常启动,rabbitmq需要安装延迟插件
  • 确保安装的延迟插件版本是匹配版本: 参考: https://gitee.com/jeequan/jeepay/issues/I5G1T5
  • 确保pom.xml中mq依赖的jar都正常开启(修改jeepay-components/jeepay-components-mq中的pom.xml文件,将mq需要依赖的jar,去掉<scope>provided</scope>配置)
  • 切换后,本地环境重新编译下项目,再启动
  • 确保以上每步都理解,然后自己检查核对

前端页面刷新报404错误

【问题描述】前端项目已经正常部署,可以登录访问,但是页面刷新后提示404错误

【解决思路】

  • 该问题是由于vue导致,更多原理可百度搜vue 404 了解
  • 在nginx中的解决方案,可配置 try_files $uri $uri/ /index.html; 解决
  • 更多配置可参考部署文档中的nginx配置:https://docs.jeequan.com/docs/jeepay/deploy

发起支付测试页面没有反应

【问题描述】商户系统侧发起支付测试,已经支付成功,但是页面没有任何反应

【解决思路】

  • 首先排查该订单当前的支付状态,是否为支付成功
  • 如果订单支付成功,但是页面没有提示成功,则检查websocket连接是否正常
  • 支付页面和服务端通信使用了websocket协议,如果使用nginx,注意nginx配置是否增加了如下配置
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";

打开收银台页面空白

【问题描述】通过手机打开收银台时,显示空白页面

【解决思路】

  • 出现该问题一般是前端收银台界面部署问题导致,参考部署文档排查:https://docs.jeequan.com/docs/jeepay/deploy
  • 多是因为部署后,依赖的js和css加载失败导致,cashier项目生成dist时,尝试修改.evn文件中VUE_APP_BASE_URL=./ 后重新部署
  • 同时也可以查看下payment项目日志,看后台有没有异常日志信息,辅助排查

收银台页面报404错误

【问题描述】访问收银台项目,页面报404错误提示

【解决思路】

支付参数修改后不生效

【问题描述】在支付通道参数配置,已经将参数修改为最新,但是请求到支付通道的参数还是修改之前的

【解决思路】

  • 检查mq是否正常,修改参数时服务端会有参数同步更新的日志输出
  • jeepay将通道配置缓存在了内存中,通过后台修改时通过mq通知修改内存中的参数
  • 其他现象,如下单提示签名不对时,也要考虑是否配置已生效

订单支付后好久才成功

【问题描述】订单已经支付了,但是订单状态没有成功,大概过了10分钟后订单又成功了

【解决思路】

  • 该问题大部分都是因为回调地址错误,导致支付通道回调请求不到,然后jeepay的自动补单机制会主动去支付通道查询订单状态
  • 在 [运营平台 - 系统管理 - 系统设置] 中,检查支付网关地址配置是否正确
  • 确保支付网关地址,公网是可以访问的(微信支付V3接口要求是https地址)
  • 保存成功后,确保内存中参数也会修改(mq确保正常,如果还不生效,尝试重启应用)
  • 如果以上都检查,还是回调不正常,需要查看payment日志,检查是否有验证签名错误等问题

微信支付提示 Illegal key size

【问题描述】调用微信支付时,payment项目错误日志:

java.security.InvalidKeyException: Illegal key size

【解决思路】

原文如下:


如果在加解密的过程中出现java.security.InvalidKeyException: Illegal key size,则需要下载一个东西:

JRE/JDK 6http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html
JRE/JDK 7http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
JRE/JDK 8u151 之前版本:http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
JRE/JDK 8u151 之后版本已经内置无限制权限策略文件,只需将$JAVA_HOME/jre/lib/security/java.security文件中的#crypto.policy=unlimited解除注释即可
如果安装了JRE,将两个jar文件放到$JAVA_HOME/lib/security目录下覆盖原来的文件

如果安装了JDK,将两个jar文件放到$JAVA_HOME/jre/lib/security目录下覆盖原来文件

如果是使用了工具可能内置了JRE,需要在工具引用的目录下面将两个jar文件放到/jre/lib/security目录下覆盖原来的文件

HuTool提示: Illegal key size or default parameters

【问题描述】生成聚合码时,payment项目错误日志:

cn.hutool.crypto.CryptoException: InvalidKeyException: Illegal key size or default parameters

at cn.hutool.crypto.asymmetric.AsymmetricCrypto.encrypt(AsymmetricCrypto.java:250)
at cn.hutool.crypto.asymmetric.AbstractAsymmetricCrypto.encrypt(AbstractAsymmetricCrypto.java:109)
at cn.hutool.crypto.asymmetric.AbstractAsymmetricCrypto.encryptBase64(AbstractAsymmetricCrypto.java:146)

【解决思路】

  1. 参考Hutool官方解决方案: https://github.com/dromara/hutool/issues/1660
  2. 参考: 【微信支付提示 Illegal key size】问题解决。

微信支付配置参数oauth2的作用

【问题描述】在微信支付参数配置中,有个oauth2的参数,该参数的作用是什么

【问题解答】

  • 一般时该参数留空即可,那么微信跳转获取openid用到的域名,配置payment项目域名即可
  • 当有多个系统使用同一个公众号时,可以使用该参数,配置一个跳转的地址。那么获取openid时会先跳转oauth2的地址,成功后再调回payment项目。

微信条码支付好久才成功

【问题描述】使用微信条码支付,已经付款成功,但是要过10分钟左右订单才显示成功

【解决思路】

  • 是因为没有配置mq的延迟配置导致,jeepay的自动补单任务去微信查订单,再把订单改为成功
  • mq延迟配置参考:待出一个mq延迟配置文档

【深入解析】微信条码支付,需要请求微信查单接口,查询微信订单状态。jeepay使用mq的延迟消息机制,延迟发起查询。每隔5秒发起一次订单查询,一共查询6次。当查询6次或订单非支付中状态时,就不再发起查询。如果没有配置mq的延迟配置,则会瞬间查询6次,此时该订单还没有支付。然后jeepay的补单机制10分钟后,会再对该订单进行查询,进行状态更改。

微信H5支付提示错误

【问题描述】微信H5下单成功,访问返回的H5地址报错。提示:商家参数格式有误,请联系商家解决

【解决思路】

微信提示域名与后台配置不一致

【问题描述】使用微信公众号支付时,提示微信登录失败,redirect_uri域名与后台配置不一致,错误码:10003

【解决思路】

  • 配置微信公众号授权域名,登录微信公众号: 头像 –》 功能设置 –》 网页授权域名 与当前支付平台的域名进行绑定即可。
  • 绑定域名为payment项目域名,如:pay.jeepay.com
  • 检查 [运营平台 - 系统设置 - 支付网关] 域名配置是否正确,确保更新到内存(保证mq正常)

微信支付提示当前页面的URL未注册

【问题描述】使用微信公众号支付时,提示当前页面的URL未注册

【解决思路】

  • 进入微信支付平台-产品中心-开发配置。
  • 添加支付授权目录,一般为payment项目域名,如:http://pay.jeepay.com/

微信支付提示 [ sub_mch_id与sub_appid不匹配 ]

【问题描述】服务商模式下:使用微信小程序或者公众号时提示: sub_mch_id与sub_appid不匹配

【解决思路】


  • PS: 服务商模式下 appId 和 sub_appId的关联关系说明:
    appid为和服务商商户号绑定的服务商appid,一般情况为认证的服务号appid;
    mch_id为服务商商户号,目前仅在认证服务号后台(mp.weixin.qq.com)开放申请服务商商户号,申请开通后即在微信支付系统创建绑定关系;
    sub_mch_id为和服务商商户号有父子绑定关系的子商户号;
    sub_appid为服务商模式的场景appid,在小程序中拉起支付时该字段必传;
    trade_type请填写JSAPI;
    openid为appid对应的微信用户标识;
    sub_openid为sub_appid对应的微信用户标识,小程序服务商模式下单中的openid和sub_openid必须至少传其中一个,在小程序中拉起支付一般情况下只能获取到sub_openid,即使用wx.login接口获得的openid
  • https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_sl_api.php?chapter=7_11&index=2

支付宝沙箱支付二维码扫码后提示 “二维码已失效”

【问题描述】商户配置了沙箱, 并且接口正常,用户支付时提示 “二维码已失效”

【解决思路】支付宝沙箱支付, 需要使用支付宝的沙箱专用APP进行支付。
沙箱管理: https://openhome.alipay.com/develop/sandbox/tool/alipayclint
下载地址:

支付宝测试不显示二维码

【问题描述】在商户系统发起支付宝二维码下单,页面显示等待支付,然而并没有出现二维码

【解决思路】

  • 支付宝二维码使用的是支付宝当面付接口,确保该接口已经开通
  • 查看payment项目日志,根据错误提示排查
  • 前端使用谷歌浏览器F12查看接口请求是否正常

支付宝应用回调地址配置

【问题描述】支付宝应用中授权回调地址,配置是多少

【问题解答】

  • 配置地址 https://{payment项目域名}/api/channelbiz/alipay/appToAppAuthCallback 即可,然后勾选下面的只验证域名

  • 该授权回调目前在获取支付用户ID及特约商户授权获取access_token时使用

支付宝提示签名数据错误

【问题描述】支付宝下单,提示错误:sign check fail:check Sign and Data Fail!JSON also!

【解决思路】

  • 一般是支付宝公钥配置错误,导致对支付宝响应数据验签时报错误
  • 制作支付宝秘钥时密钥长度选择RSA2,密钥格式选择PKCS8(JAVA使用)
  • 切记在jeepay中配置支付宝参数时,接口签名方式也要选择RSA2

支付宝扫码提示页面不存在

【问题描述】使用jeepay生成的聚合码,用支付宝扫码后提示:页面不存在!对不起,访问出错了

支付宝扫码提示页面不存在
  • 需要配置支付宝应用的授权回调地址
  • 授权回调地址配置payment项目域名即可,然后勾选下面的只验证域名

jeepay-sdk-java 的apiKey在哪里获取?

【问题描述】https://gitee.com/jeequan/jeepay-sdk-java 中的apiKey在哪里获取?
【解决思路】

  • sdk中的apiKey是与jeepay统一下单的标准接口( https://docs.jeequan.com/docs/jeepay/api_rule ) 中的key是对应的。
  • 设置路径:
    商户系统 : 商户中心 –》 应用管理 –》新建/修改 –》 私钥 AppSecret
    运营平台 : 商户管理 –》 –》商户列表 –》 应用配置 –》新建/修改 –》 私钥 AppSecret

*注意: 安全起见, 应用新建后不可查询到api秘钥, 只能重置。*

同一个企业主体是否可同时申请服务商和特约商户?

【以下来自Jeepay交流群】

  • 微信支付服务商是不能给自己企业申请特约商户的,那自己的支付业务如何在服务商+特约商户模式下进行?

  • A: 服务商主体不能申请成为自己企业的【特约商户】,但是可以在其他服务商下进件。
  • B:一个主体可以是服务商同时也可以是【普通商户】,所以服务商在去申请普通商户(不同商户号)就可以了。
    https://developers.weixin.qq.com/community/develop/doc/0002a482200f40a6c07a21d3a54400
    微信原文:
    【一个主体可以申请服务商号,直连商户号和子商户(子商户不能在自己主体的服务商下申请) 但是,同一商户号,不能既是服务商,又是普通商户】
  • 另外普通商户不能直接和服务商进行绑定操作。

分账业务: 是否可以退款不退分账(商家垫资)?

【以下来自Jeepay QQ交流群】

系统中的订单号都指什么?

  • 支付订单号:Jeepay支付系统生成的订单号,再请求支付通道(如微信支付)会把单号传过去
  • 渠道订单号:指的是该笔订单对应的支付渠道那边的单号
  • 商户订单号:是请求jeepay支付系统的商户侧的订单号

微信支付 提示 “签名错误,请检查后再试”

提示该错误,请围绕: 【秘钥】找问题。

    1. 检查商户/服务商的 秘钥Key是否配置的正确; V2/V3 是否正确; 缓存是否生效?
    1. 若确保秘钥配置正确, 并且通过 微信工具: https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=20_1 也提示验签通过。检查以下:
      微信私钥的要求格式是:【微信支付密钥需要是32个字符,并且只允许输入数字和英文大小写字母的组合】
      32位32位32位 重要的事情说三遍。
    2. 使用新证书, 证书序列号也需要变更为最新的。 若使用新证书+旧序列号仍然提示:【验签失败】

访问pay项目的图片提示404

一般是安装宝塔的默认配置导致, 删除pay项目的以下配置:

文档更新时间: 2023-12-30 13:56   作者:大森林