常见问题汇总 [系列一]

登录页面验证码不显示

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

【解决思路】

  • 检查是否开启跨域设置,修改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不匹配

【解决思路】

如果是微信直连通道:

如果是微信间联通道:
一般去对接的通道平台,将该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生成的聚合码,用支付宝扫码后提示:页面不存在!对不起,访问出错了。E004:AUTH_REDIRECT_URL_NOT_IN_WHITE

  • 需要配置支付宝应用的授权回调地址
  • 授权回调地址配置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项目的以下配置:

商户传入的appid参数不正确,请联系商户处理

该问题一般是由于下单时的小程序appid和当前支付的小程序appid不一致导致。需要检查下时的appid是否传入正确

常见问题汇总 [系列二]

Q:拓展码如何获取?服务商配置渠道参数认证二维码地址/拓展码地址/开户意愿地址是什么?怎么配置?

A:
1.打开微信/支付宝服务商平台,登录后(使用渠道下发的商户号登录)进入服务商管理,下载拓展码。
2.登录渠道申请下发的微信、支付宝账户,同上述方式找到拓展码。
3.使用草料二维码或其他二维码解析工具,解析上述二维码图片,将解析结果填写到对应位置。

Q:如何获取支付宝服务商拓展码?

A: 登录支付宝服务商平台https://p.alipay.com/,进入银行服务商商户管理下载即可。

如没有以下<银行服务商商户>菜单,则可联系三方支付公司咨询,一般需在三方入网成功后第二天出现该菜单。

Q:如何获取微信服务商拓展码?

A: 登录微信支付合作伙伴平台,https://pay.weixin.qq.com/partner/public/home,进入合作伙伴工功能页面,下载拓展二维码。

如没有以下<特约商户管理>菜单,则可联系三方支付公司咨询,一般需在三方入网成功后第二天出现该菜单。

Q:微信如何查看已关联的商户?

A:
登录https://pay.weixin.qq.com/partner/public/home,可查看已关联商户号。

Q:服务商oauth2配置是干嘛的?

A:
1.oauth2配置用于用户支付宝、微信公众号小程序下单时,获取用户支付userId。
2.支付下单接口上送相关公众号APPID及小程序APPID。
3.该配置下微信、支付宝各有两套参数,分别为三方应用参数和小程序参数;三方应用配置用于非小程序支付相关,小程序参数即收银台小程序配置(需申请小程序参数),收银台发布并配置合法域名后即可使用。
参考文档:https://docs.jeequan.com/docs/jeepay-plus/jeepay-plus-1e6m5uhedivj5
4.如何查看微信appid:https://developers.weixin.qq.com/community/develop/article/doc/0002ea97958958f87389d9a2b5fc13

Q:oauth2中服务商小程序原始ID及路径是什么?

A:
此配置为收银台小程序配置,其中小程序路径可默认配置:pages/hub/lite

Q:小程序码牌支付扫码后显示空白页面,或标题提示undefind?

A:
码牌支付需上传及配置收银台小程序,请使用开发工具发行微信/支付宝小程序(cashier项目)。

Q:商户提交进件成功了,状态显示<进件成功>,为什么商户支付功能还是无法使用?

A:
1.商户进件成功状态为商户已经在渠道方进件成功。不同渠道对应不同的流程,但在jeepay-plus中流程大抵是相同的。
2.商户进件成功状态后操作流程:签约开通->参数配置。
3.签约开通:签约支付宝、微信实名认证。
4.参数配置:(此时渠道方已返回商户对应进件的商户号->用于支付下单)配置支付参数至应用、配置费率至应用。
5.配置微信参数:用于微信小程序、公众号支付下单(默认显示为服务商oauth2配置参数、支付域名地址,若商户使用自己的appid,请关联商户自己的appid)。
6.此时商户进件流程基本完成,可在本系统配置支付费率及支付方式进行下单。
7.按文档流程配置,检查遗漏项:https://docs.jeequan.com/docs/jeepay-plus/jeepay-plus-1dpam5esvhie0

Q:使用云闪付扫码支付提示[以下链接内容非云闪付提供,使用时请注意安全!]/获取二维码参数失败?

A:
此提示为云闪付安全校验,需将支付域名添加到云闪付白名单,可联系三方渠道帮忙添加。

Q:收银台微信/支付宝小程序发布需要配置什么?

A:
1.配置服务器域名
    进入微信平台【开发-开发管理开发配置-服务器域名】,把payment项目域名配置request合法域名。如: https://pay.jeepay.vip
2.配置链接二维码
    进入微信平台【开发-开发管理-开发配置-扫通链接二维码打开小程序】
    二维码地址: https://payment项目域名/cashier/pages/hub/lite/ (如: https://pay.jeepay.vip/cashier/pages/hub/lite/)
    小程序路径: pages/hub/lite
    前缀占用规则:占用
    体验版需配置测试链接/功能页,配置参数为后台生成配置的小程序码牌地址(使用二维码解析地址)
    详见文档:https://docs.jeequan.com/docs/jeepay-plus/jeepay-plus-1dpb6aqdll7kr

Q:商户进件费率是什么?怎么配置?

A:
您与渠道方签约的费率即为服务商费率(请务必与服务商费率配置对应的渠道一致),代理商即您的发展下级。
所以代理商的费率需大于等于服务商的费率配置(等于即无手续费0分润),商户进件时的支付方式费率配置需大于代理商费率配置。
此时进件时会按照已填写的费率在渠道方开通支付方式。

Q:数据库报错:nested exception is java.sql.SQLSyntaxErrorException: In aggregated query without GROUP BY, expression #2 of SELECT list contains nonaggregated column ‘total.amount’; this is incompatible with sql_mode=only_full_group_by?

A:
此Q由数据统计sql引发,需关闭数据库only_full_group_by规则:
先查一下规则
SELECT @@GLOBAL.sql_mode;
SELECT @@SESSION.sql_mode;
关闭only_full_group_by后重启数据库后重试。

Q:数据库数据为什么是加密的?怎么解密?

A:
数据库加解密采用hutool的SM4加解密:
// 初始化
SM4 sm4 = SmUtil.sm4("1111111111111111".getBytes());
// 加密方法
sm4.encryptBase64("123123".getBytes())
// 解密方法
sm4.decryptStr("CpvdG2XeLgv6tekentpT2A==")

Q:微信、支付宝校验文件怎么配置?

A:
打开payment的nginx配置,添加如下配置:
微信收银台小程序:
location /cashier/pages/hub/lite/文件名.txt {
    return 200 '文件内容';
}
支付宝收银台小程序:
location /文件名.html {
    return 200 '文件内容';
}

授权文件:(配置路径看官方问题描述提示)
location /文件名.txt {
    return 200 '文件内容';
}

Q:二维码规则和小程序功能页面如何配置?

A:
二维码规则地址:支付域名 + /cashier/pages/hub/lite/
小程序路径:pages/hub/lite

Q:订单列表中的回调状态是什么?有什么作用?支付成功后为什么还是未发送状态?

A:
1.该状态作用为订单支付成功后向商户系统(即订单发起方)发送支付结果通知。
2.如商户拥有自己的小程序/app等,此时商户调用接口下单,传入支付 回调地址参数后,当订单支付成功后,系统会通过mq调起向商户系统发送支付结果通知的任务,将支付结果通知到商户系统。
3.任务执行说明:一笔订单支付成功后,mq执行推送商户通知默认执行6次,时间:0 30 60 90 120 150 秒依次增加,6次后将不再通知。
4.支付成功后显示未发送,复制订单号,打开商户通知菜单,搜索该订单号,详情检查回调地址以及回调响应结果,是否为商户端地址;
5.检查回调地址无误,可复制该地址,使用工具请求,测试是否可以接收到商户端响应,如不能接收到响应结果,联系商户端回调接口是否可公网访问或其他限制条件
6.若可以正常接收响应,检查服务器mq配置是否正确
7.注该支付方式不会发送回调通知给商户系统:使用系统码牌绑定给商户,使用码牌扫码付款的方式。(由于码牌可换绑等因素创建订单时无法确定商户回调地址)

Q:商户通、展业宝是否支持上架支付宝小程序端?

A:
暂只支持微信小程序以及APP

Q:小程序上传大小超限怎么办?

A:
将项目基本设置es6编译成es5勾选去掉,Hbuilder 和 微信开发工具都设置一下。

Q:服务商支付配置中公钥与私钥怎么配置?

A:
1.渠道配置一般需要配置应用私钥,支付渠道会要到你生成的一对公私钥中的公钥,以用于渠道侧解密验签等操作,私钥需要自己留存备份好;
2.同样渠道会给你一份渠道侧的公钥,以用于接收渠道侧支付回调等操作的验签;
3.公私钥怎么生成?依据渠道侧要求,生成对应的密钥对;
4.可参考支付宝公私钥生成及说明;支付宝文档:https://opendocs.alipay.com/support/05l6nw?pathHash=748e60aa

Q:微信支付参数V2/V3参数如何获取?

A:
1.可百度查询微信支付参数说明参考网上文档:https://blog.csdn.net/guochunyun/article/details/130217954
2.微信官方V2仅支付功能,V3方可发起进件。

Q:下单支付页提示“商户应用不支持该支付方式”是怎么回事?

A:
支付配置流程未完成,查阅文档,按文档流程配置:https://docs.jeequan.com/docs/jeepay-plus/jeepay-plus-1dpam5esvhie0

Q:商户系统登录后没有支付测试等菜单操作?

A:
1.设置商户为M1类型,可操作更多菜单及功能
2.如何切换:
    ① 商户系统-系统管理-系统设置-功能配置 商户等级切换为M1后重新登录商户系统
    ② 运营平台-商户管理-商户列表-对应商户-修改商户信息 商户等级切换为M1后重新登录商户系统
3.说明:M0商户:简单模式(页面简洁,仅基础收款功能)、M1商户:高级模式(支持api调用, 支持配置应用及分账、转账功能)

Q:普通商户和特约商户有什么区别?

A:
普通商户:商户自行申请入驻微信或支付宝,无服务商协助,单独调接口。
特约商户:由微信或支付宝的服务商协助商户完成入驻(即商户进件),商户下单走的是服务商接口。

Q:代理商列表是否可以看到所有下级代理商?

A:
1.代理商平台只能看到下一级代理商信息。
2.运营平台编辑代理商,可控制代理商是否可发展下级代理。

Q:用户类型为商户拓展员是什么?怎么创建新的角色并关联?

A:
1.商户拓展员为平台创建发展商户的业务员,可代商户发起进件等操作。
2.商户拓展员为非角色方式类型,如需扩展新的角色并关联,可参考服务端代码自行实现。

Q:新建用户,登录时提示“当前用户未分配任何菜单权限,请联系管理员进行分配后再登录”

A:
1.检查该新用户是否分配了角色。
2.检查已分配的角色是否分配了所需权限。
3.系统默认的普通操作员没有分配权限,需要自行分配权限后再使用。
4.用户类型为普通操作员才可分配角色权限,其他用户类型为固定权限。

Q:服务端代码部署启动项目报错: java.lang.NoClassDefFoundError: javafx/util/Pair

A:
1.检查一下系统环境是否使用了open jdk,由于openjdk缺少很多项目启动必要的类,无法使用该类型jdk,请切换为oracle jdk。
2.系统jdk版本目前支持的版本:JDK1.8 且版本大于1.8_121(121会存在: SSLException: Received fatal alert: internal_error)
3.推荐使用:http://xxpayvip.oss-cn-beijing.aliyuncs.com/soft/jdk-8u261-linux-x64.tar.gz
4.如果使用docker镜像,检查docker环境是否符合运行环境

Q:前端项目打包失败

A:
1.查看部署流程文档:https://docs.jeequan.com/docs/jeepay-plus/jeepay-plus-1doq3ag6c2ktf
2.进入到对应目录下如: /jeepay-ui-manager
3.服务端接口地址修改:修改文件 .env 中的 VITE_API_BASE_URL 配置,如果前端和服务端部署在同一域名下,该值留空,否则需要设置为服务端接口地址。
4.修改为manager服务地址,如:http://mgr.xxx.com 或 http://202.112.102.18:9217 (域名和ip端口以你服务端真实部署为准)。
5.在 jeepay-ui-manager 根目录下,执行编译打包。
    参考如下命令:
        # 安装依赖 (每个前端项目web端以及uni前端均需执行此操作,依赖于manager中components组件库)
        npm install

        # 打包文件
        npm run build
6.打包后,生成dist目录,将dist目录下所有文件上传至服务器,如: /home/jeepay/html/manager下。
7.其他前端打包参考上述流程
注意事项:node 版本需要 >= v16.7.0

Q:web码牌字体乱码

A:
1.找到字体文件夹:jeepay-plus/docs/fonts 解压后按安装说明放到对应目录下。
2.重启运营、代理、商户等服务端。

Q:已配置公私钥是否还需要配置证书?

A:
1.支付宝公钥证书配置项勾选不使用证书时,不用配置证书即可使用。
2.微信退款时需要证书文件,配置微信官方时需配置相应证书。

Q:证书类文件上传是上传到哪里?是否安全?

A:
1.依据当前系统配置中存储配置来存储。
2.本地存储:将文件、图片等上传存储到本地服务器,存储路径在对应yml配置文件中修改。
3.阿里云oss:证书文件等存储到私有读权限的bucket,图片、头像等会存储到公共读权限的bucket。
4.进件上传的身份证等信息将存储至公共读权限桶,进件发起时支付渠道方也会要求上送证件信息等图片。

Q:为什么支付成功后订单还是支付中的状态?过了一段时间之后订单又成功了是为什么?

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

Q:自动补单机制是怎样运行的?怎么管理补单机制?相关代码在哪里?

A:
1.支付中的订单系统会在10分钟后(默认),进行定时任务补单,每分钟执行一次,调用渠道查单接口查询上游订单状态,直到订单终态(成功/失败)或者订单超过支付时间(系统默认2小时,订单生成时定义),2小时后将更新订单状态为订单关闭,此时订单不再执行定时任务,以订单终态结束。
2.定时任务使用xxljob,系统启动的task-center就是定时任务模块。
访问默认登录地址(http://服务器IP:9300/xxl-job-admin/toLogin),默认登录账号及密码可以管理相关定时任务(admin / 1234563.代码位置:jeepay-payment/src/main/java/com/jeequan/jeepay/pay/task/RefundOrderReissueTask.java

Q:商户WEB页操作支付测试,下单跳转的returnUrl跳转到了www.jeequan.com 在哪里更改?

A:支付测试下单部分参数默认在代码中写死,可以在对应文件中修改:jeepay-merchant/src/main/java/com/jeequan/jeepay/mch/ctrl/paytest/PaytestController.java

Q:前端涉及到的公司logo网页图标等是否可以替换?在哪里替换?

A:
1.前端展示的企业logo以及网站图标等信息均为动态参数,可随时更换。
2.运营平台-系统配置-平台配置 相关logo图标、备案信息、主题色等均可替换。

Q:支付订单有效期是多久?上送渠道的订单支付有效期是多久?

A:
1.订单的支付超时时间由两种方式定义:一种是由接口下单上传expiredTime字段,另外就是系统默认订单超时时间。(支付接口文档:https://docs.jeequan.com/docs/jeepay_api/jeepay_api-1dabshnfu814r)
2.若接口未上传订单失效时间,则默认为系统默认订单超时时间,2个小时。(AbstractPayOrderController中搜索"订单过期时间"3.系统内上送渠道的订单超时时间为,已生成的订单中超时时间,具体可查看对应渠道下某支付方式中代码逻辑
4.说明:订单超时时间暂无系统配置方式,代码逻辑中默认2小时

Q:微信官方支付已配置V3参数,但是使用条码支付方式会签名错误?

A:
1.微信V3不支持条码支付方式
2.服务商微信官方配置需配置V2key用于支持条码支付

Q:关于账户中心、佣金钱包、在途利润、提现中金额、入账金额、待入账、利润等详细说明

假定当前费率配置为:(基于此费率进行以下说明)
服务商 0.25%    代理商:0.32    商户:0.38
------------------------------------------------------------------------------------------------------------------------------
此时商户产生一笔订单,订单金额:100.00 元。运营端打开该支付订单详情,展示如下:

商户(初始商户) 手续费 : 0.38 元
代理商( 初始代理商)分润 : 0.06 元
平台三方入账 (不扣减代理商分润): 0.13 元
平台利润: 0.07 元

上述计算说明:
商户(初始商户) 手续费 : 0.38 元    (100 x 0.38%)由商户承担支付费率0.38%
代理商( 初始代理商)分润 : 0.06 元    (100 x 0.38% - 100 x 0.32%)代理商利润
平台三方入账 (不扣减代理商分润): 0.13 元    (100 x 0.38% - 100 x 0.25%)服务商基础费用(平台利润+代理商分润)
平台利润: 0.07 元    (0.13 - 0.06)    服务商利润
渠道手续费:0.25 元
------------------------------------------------------------------------------------------------------------------------------
代理商佣金钱包:
钱包余额--->可提现的余额
在途利润--->订单未结算完成的金额(结算时间配置为服务商列表-支付配置-对应渠道结算周期配置)
提现中金额--->代理商发起提现,未通过结算审核的金额
钱包流水可查看钱包余额流水以及平台手动调账变动流水
------------------------------------------------------------------------------------------------------------------------------
运营-佣金管理说明:(点击对应金额可进入记录列表)
入账金额--->三方支付平台计算费率后,结算至服务商账户中的佣金金额。(为上述中平台三方入账 0.13元)
待入账金额--->处于结算周期中的订单金额(订单结算周期为:服务商列表-支付配置-对应渠道结算周期配置)

利润--->减去代理商佣金后的实际利润金额 (为上述中平台利润 0.07)
在途利润--->订单处于结算周期中的实际利润金额 (订单结算周期为:服务商列表-支付配置-对应渠道结算周期配置)
------------------------------------------------------------------------------------------------------------------------------
注:
1.运营可根据实际情况对代理商钱包进行手动调账,调账记录可在钱包流水查询。(用于运营与代理协商结算等业务)
2.钱包提现操作最终由运营方通过对公/其他方式结算给代理商,jeepay系统目前没有结算至账户功能

Q:进件成功后,下单支付提示:当前商户需补齐相关资料后,才可进行支付,请商户联系服务商

A:
1.此提示信息为商户还未进行支付宝/微信侧实名认证
2.引导商户扫描对应渠道侧商户拓展码,完成认证后再下单支付

Q:API调用接口提示:商户无此接口[API_PAY_ORDER]权限!

A:
1.商户侧接口调用,权限是可配置的。此提示为未配置该接口权限。
2.配置地址:运营端-商户列表-高级功能配置-接口权限;针对该商户所需勾选对应接口进行配置。

Q:小程序启动图在哪里更改?

A:
1.此图标暂未支持动态配置。
2.文件位置:/pages/adStart/components/StartPage.vue
3.image标签内容替换或注释即可。

Q:提示 认证服务出现异常

A:
1.检查MQ是否正在正常运行
2.检查yml配置文件中db-encrypt-secrethttp-message-encrypt-secret是否有所更改及前端env文件中VITE_HTTP_MESSAGE_ENCRYPT_KEY是否一致,如KEY、私钥不一致将导致数据错乱,前后端部分数据无法解析。

tips:
1.如果mq启动显示正常启动,查询启动状态为未启动。可能为端口冲突。
2.如果安装过rabbitmq,后续改为activemq,此时activemq启动不成功为端口占用。
3.占用问题解决方法:打开activemq.xml,找到5672端口号,修改为其他如5673,保存后重启mq,再次检查启动状态。

Q:如何切换mq配置?

A:
1.配置对应服务端application.yml文件中所要用到的mq,activemq/rabbitmq/rocketmq/aliyun-rocketmq(配置其中一种),文件最下方配置mq.vender,配置对应的MQ名称配置
2.打开mq配置pom:jeepay-components/jeepay-components-mq/pom.xml,在对应mq注释掉<scope>provided</scope>(将不需要的mq下方注释放开,即仅注释掉所需要的mq类型)
3.启动mq,启动服务

tips:
1.aliyun-rocketmq配置文档参考:https://docs.jeequan.com/docs/jeepay-plus/jeepay-plus-1e6mhs7shqv0p
2.除aliyun-rocketmq外,其他mq会自动创建消息队列
3.由RabbitMQ切换至activemq(两种mq环境都有的情况),切换后会导致activemq启动失败,无法正常启动。具体原因为端口占用,请将activemq配置文件中5672端口号修改为其他如5673后,即可正常启动。
4.其他问题参考文档:https://docs.jeequan.com/docs/jeepay/jeepay-1d99ciatu11h5#9zt7gr

Q:小程序违规收集隐私信息。请参照《微信小程序平台运营规范》15.用户隐私和数据规范-15.1 数据收集和存储修改内容。


A:
1.修改用户隐私保护指引,将其中为了手机用户手机号修改为符合业务场景的描述信息。
2.如服务内容声明中没有《用户隐私保护指引》则小程序为代开发小程序

tips:
1.非代开发的小程序可通过登陆微信公众平台在【小程序管理后台-设置-功能设置-用户隐私保护指引】进行配置,而代开发的小程序则只能通过接口进行配置。
2.微信开放社区帖:https://developers.weixin.qq.com/community/develop/doc/00028ef67d43c82ca0dfa49a25b000
3.配置小程序用户隐私保护指引:https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/product/privacy_setting.html

Q:支付宝[buyerUserId]不可为空/微信[openId]不可为空

A:
1.调起小程序、公众号支付方式需要传入支付用户的userId,查看payment服务器日志,具体某一个支付渠道,会有详细的日志输出,多数情况为公私钥配置不正确,导致获取支付用户userId失败。
2.日志产生:用户扫码牌/聚合码时调起获取支付用户id的sdk。
3.检查服务商/普通商户,oauth2参数中支付宝/微信公众号or小程序配置是否正确。
4.公众号/小程序appid配置需为同一个服务商主体下申请的。
5.sdk接口下单,可查按文档接口获取参数:https://docs.jeequan.com/docs/jeepay_api/jeepay_api-1dabshnfu814r (获取渠道用户ID接口)
6.若下单方式为聚合码方式等主扫方式(公众号、小程序),需在下单调起时同步传入userid,注意调起时获取支付用户id并按支付文档传入对应参数。
7.若日志无报错信息,支付宝请求也无异常信息,但仍日志输出获取到channelUserId=null,检查当前是否为userId标准,如果不是,则需退回至userId标准。

支付宝userId/openid说明文档:https://opendocs.alipay.com/mini/0ai2i6?pathHash=13dd5946 
回退userId文档:https://opendocs.alipay.com/mini/0ai736?pathHash=e4af54b3

Q:什么是MFA认证?

A:
1.多重要素验证(英语:Multi-factor authentication,缩写为 MFA),又译多因子认证、多因素验证、多因素认证,
是一种计算机访问控制的方法用户要通过两种以上的认证机制之后,才能得到授权,使用计算机资源,这种认证方式可以提高安全性。
2.可使用的MFA认证软件,阿里云或腾讯云手机客户端或者微信小程序中MFA工具等。

Q:uniPush2.0,unicloud云空间,云函数怎么配置?在哪里会用到?

A:
1.商户通app推送使用uniPush实现,目前支持1.02.0版本,2.0版本支持小程序端推送。
2.推送主要使用在支付订单通知,当商户有订单收款时,会有语音播报。
3.需要提前注册dcloud的账号,地址:https://dev.dcloud.net.cn 。
4.配置说明地址-app推送配置:https://docs.jeequan.com/docs/jeepay-plus/jeepay-plus-1dp923619964b#7qsrq7
5.按上述配置文档进行配置并检查且依旧不能播报的,可按以下提示进行检查:
    ->云函数URL地址是否已在运营后台进行配置
    ->打包是否关联上传云函数
    ->如微信小程序调试工具中则需要在 我的页 设置 系统设置 开启小程序推送播报
    ->如以上没有问题,可检查云函数推送日志是否成功,如未成功检查未成功原因
6.APP安装如需推送消息播报则需要百度语音相关配置,且百度语音业务充值后可使用
7.APP消息推送需打开消息推送、自启动权限等

Q:高德地图配置,地图定位在哪里使用了?

A:
1.当前高德地图配置使用场景如下:
    ->商户-门店创建-地图选点
    ->特殊渠道进件-地图选点
    ->移动端-渠道进件-地图选点
2.移动端内-门店创建-地图选点,此处微信小程序内为腾讯地图,非高德地图

Q:博实结打印机如何切换网络模式?

A:
1.长按音量减可以切换到移动网络模式/WIFI网络。
2.移动网络下长按音量减可以切换到WiFi模式,在WiFi模式下长按设置键可以切换到快联配网模式,在快联配网模式再次长按设置键可以切换到热点配网模式。

Q:对不起,访问出错了(E004:PARAM_NOEXIST_APPID) –>支付宝

A:
1.由于用户信息授权链接的 appid 错误导致(非第三方应用授权)。
2.拼接链接网关和 app_id 不匹配。
3.检查 APPID 配置的是否正确,不可存在空格、随意设置等问题。正式环境查看 正式APPID,沙箱环境查看 沙箱APPID
4.检查授权请求网关是否正确。
5.支付宝问题文档:https://opendocs.alipay.com/support/04z0et
正式:https://openauth.alipay.com/oauth2/appToAppAuth.htm?app_id=APPID&scope=SCOPE&redirect_uri=ENCODED_URL
测试:https://openauth.alipaydev.com/oauth2/appToAppAuth.htm?app_id=APPID&scope=SCOPE&redirect_uri=ENCODED_URL

Q:支付宝菜单【银行服务商商户】/微信菜单【特约商户管理】缺少/没有

A:
1.该对应菜单需要对应登录的支付宝/微信在已关联的三方支付渠道进行商户入驻(商户进件)成功后才会出现。
2.一般为入驻成功后第二天会显示该对应菜单。
3.如隔天未出现该菜单可咨询三方渠道,此菜单为三方渠道协助处理。
4.如成功入驻三方渠道测试环境,具体以三方渠道为准。

Q:服务商支付宝oauth2参数没有配置

A:
1.oauth2具体使用场景可查看以上说明<服务商oauth2配置是干嘛的?>
2.该配置位置为:运营平台-服务商列表-oauth2
3.微信配置说明:配置服务商对应公众号、小程序配置
4.支付宝配置说明:配置支付宝三方应用信息,可选证书或非证书方式,创建三方应用需为企业支付宝支付宝账号。
5.条目名称不建议过长,导致展示不全排查不出具体是使用的哪个条目未配置。

Q:支付宝APPID如何获取?

A:
1.三方应用创建/APPID获取详见支付宝文档:https://opendocs.alipay.com/support/01rau9?pathHash=e6b6fb3f

Q:支付宝/微信商家扫认证码后商家助手内找不到商户

A:
1.如遇扫码后找不到对应进件商户信息时,可查看当前进件记录中【签约开通】页面
2.页面中对应展示支付宝/微信签约信息说明是否有展示对应子商户号,可根据【子商户号】在支付宝/微信【商家助手】中使用【子商户号】查询商户信息签约。

Q:阿里云OSS配置中endpoint在哪查看

Q:订单列表信息中的<实际手续费>和<收单手续费>是什么意思

A:
1.实际手续费=收单手续费-退款产生的退款手续费
2.收单手续费=商户每笔订单对应配置交易方式的手续费(订单金额与商家费率计算出的手续费)

Q:商户、应用之间的关系及应用和支付参数、支付通道配置的关系介绍

A:
1.可以理解为xxx公司就是一个商户,而应用一般是主体下的不同业务,不同场景的区分, 当然一个主体非要创建多个商户也是没有关系的
2.应用则是你的业务下收款的基本模块,可以配置不同的应用在不同的业务下进行收款
3.不同业务,多个应用收上来的钱最终都是由三方渠道结算到一个商户主体下/依进件填写的结算账号下
补充说明:
    .应用下参数配置为当前商户的商户号或其他配置参数
    .配置后费率配置需配置且开启后,支付渠道选择中才可选择该支付渠道
    .如上一个费率配置未显示费率,则检查上级(逐级代理/服务商)是否开启并配置

Q:渠道进件时银联/云闪付进件费率如何填写<阶梯费率><银联模式>

A:
1.此费率配置支持单笔配置和银联&阶梯模式配置,即支持单笔%配置和费率区间/ 金额>1000 金额<=1000及封顶和保底费率的配置
2.系统内已对接的渠道已按照API方式进行发起填写。(注:系统内对接为未区分借记卡及贷记卡费率,默认以借记卡费率上传,及按渠道API实际需上传银联费率为准)
3.如需自行开发对接三方渠道且上送银联费率,可根据当前代码中已有逻辑进行获取区分借记卡、贷记卡/阶梯费率&银联模式费率并上送实际配置参数
4.系统内下单后订单费率计算并未区分借记卡/贷记卡费率,具体实现可根据已对接的三方支付渠道响应来区分当前支付是借记卡/贷记卡,进行费率的重新计算(系统内方法)
5.此费率配置页为公共组件配置页,涉及各端费率配置页,如需改动,建议先进行代码预研及涉及的业务是否需要进行改动

Q:提示:收银台订单不存在或状态不正确

A:
1.出现这个错误,其中用户至少点击过一次确认支付按钮
2.当前支付订单的状态不是初始状态了,已经变成了支付中(确定了支付方式 或者微信,或者支付宝)了,此时不可再次下单,服务端校验并响应

Q:收银台如何本地调试打开

A:
详见以下文档:
https://docs.jeequan.com/docs/jeepay-plus/jeepay-plus-1fkgb6q6j138s

Q:微信小程序支付时,提示“效用支付JSAPI缺少参数:total_fee”

A:
出现该问题时需要检测:
1. 计全返回的数据中,是否正确返回了打开小程序支付所需的参数,且不为空
2. 如果使用商户自有小程序支付,那么下单时需要通过channelExtra传递subAppid字段(如果没传递,会导致下单和实际支付不是同一个小程序appid,也会报该错误)

Q:服务端启动报错(JCE cannot authenticate the provider BC/bcprov-jdk15to18-1.64.jar!/ has unsigned entries - org/bouncycastle/LICENSE.class)

A:
1.此问题为bcprov-jdk15to18相关引用包有所冲突,冲突包为部分渠道依赖版本不一致导致的。
2.解决方案如下:
    >第一种:相关依赖当前bcprov-jdk15to18修改为1.64版本兼容当前渠道,且当前java环境jdk使用推荐8u_261版本
    >第二种:移除当前不需要的通道引用jar,及修复引用依赖报错,pom中移除相关jar依赖导入,本地测试支付并编译无误后再使用(jar目录为根目录下/libs文件夹内)

Q:前端及后端加密秘钥相关说明

A:
1.VITE_HTTP_MESSAGE_ENCRYPT_KEY:
    位置> 前端项目.env配置
    说明> 需要与对应服务端yml配置文件中http-message-encrypt-secret值保持一致。
    作用> 前端请求与服务端数据传输加解密使用,如不一致可能导致加解密失败,数据显示异常
2.http-message-encrypt-secret:
    位置> 各服务端 application.yml
    说明> 需要与对应前端.env配置文件中VITE_HTTP_MESSAGE_ENCRYPT_KEY值保持一致。
    作用> 前端请求与服务端数据传输加解密使用,如不一致可能导致加解密失败,数据显示异常
注:上述1、2相关加解密具体体现方式开关:运营平台-系统配置-安全配置-HTTP传输应用层加密开关
3.db-encrypt-secret:
    位置> 各服务端 application.yml
    作用> 加密串将与数据库数据存取进行加解密(加解密秘钥串,数据库加密方式为国密SM4)。
注:若当前生产环境已有数据,不建议修改此秘钥串。修改后将出现数据库数据解密失败,后续存入的数据与存量数据非相同加密串导致数据错乱,无法恢复。

Q:微信官方渠道条码支付方式提示签名错误,其他支付方式无异常

<![CDATA[签名错误,请检查后再试]]>

A:
1.微信官方渠道配置为V3的API版本则需配置V2的APIv2密钥。
说明:官方V3接口不支持条码支付,需配置V2秘钥调起支付。

Q:Android包名和插件安卓保活套装(通用、常驻通知、电池优化、自启管理、后台运行等)绑定的不一致,请确认!

A:
1.安卓打包使用uni保活插件,以用于应用后台时 订单语音播报功能。(并非支持全部机型)
2.如不需要该插件可删除相关引用。
3.下图为引用插件及代码


Q:移动端小程序/APP主页右上角扫码功能?

A:
1.移动端首页右上角扫码功能是用于登录WEB端扫码登录使用


文档更新时间: 2024-10-18 12:11   作者:大森林