1、商户系统登录问题
添加商户的时候有设置登录名,但是没有设置账号密码的位置,好不容易找到对商户重置密码的地方,但是那个勾选重置密码的复选框又超级容易被理解为用户下次登录需重置密码的配置项。
勾选后有提示重置为默认密码,但是又没有说明默认密码是什么,然后非得要查看源码才知道是通过常量设置的默认密码为:jeepay666
2、证书文件不存在问题
好不容易登录商户系统了,进行支付测试的功能验证,提示证书文件不存在:
整个应用部署过程完全是基于官方提供的 docker-compose.yml 文件,最后发现默认配置的 /home/jeepay/upload 目录根本就没有挂载到宿主机,修改 docker-compose.yml ,payment、manager、merchant 应用的 volumes 应用均挂载 /home/jeepay
目录,如:
volumes:
- ./jeepayData:/home/jeepay
3、支付测试不显示二维码的问题
支付测试时不显示支付二维码,发现HTTP请求中有个 404 请求:
检查代码,确定应用存在对应的接口路径:
查看docker 日志复现如下 error 信息:
基于该信息可得知,nginx在接收到二维码图片请求时根本就没有请求到 jeepay-payment 这个后端服务,而是直接请求了root 目录中的文件,由此我们调整一下 代理的api接口的优先级,修改 jeepay-ui 根目录下的 default.conf.template 文件,在/api/ 前添加 ^~
,nginx的路径匹配规则如下:
/
:通用匹配,任何请求都可以匹配=
:用于不含正则表达式的uri前,要求请求字符串与uri严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。~
:用于表示uri包含正则表达式,并且区分大小写。~*
:用于表示uri包含正则表达式,并且不区分大小写。^~
:用于不包含正则表达式的uri前,要求nginx服务器找到标识uri和请求字符串匹配度最高的location后,立即使用此location处理请求,而不再使用location块中的正则uri与请求字符串做匹配。!~和!~*
:分别表示区分大小写不匹配和不区分大小写不匹配的正则- 优先级:= --> ^~ --> /* #当有多个包含/进行正则匹配时,选择正则表达式最长的location配置执行。
- 多个location配置的情况下匹配顺序为: 首先匹配 =,其次匹配^~, 其次是按文件中顺序的正则匹配,最后是交给 /通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。
- 注意:如果uri包含正则表达式,则必须要有 ~ 或者 ~ 标识。
修改后的 default.conf.template 文件如下所示:
server {
listen 80;
listen [::]:80;
server_name localhost;
root /workspace/;
try_files $uri $uri/ /index.html;
location ^~ /api/ {
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_pass http://$BACKEND_HOST;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
# favicon.ico
location = /favicon.ico {
log_not_found off;
access_log off;
}
# robots.txt
location = /robots.txt {
log_not_found off;
access_log off;
}
# assets, media
location ~* \.(?:css(\.map)?|js(\.map)?|jpe?g|png|gif|ico|cur|heic|webp|tiff?|mp3|m4a|aac|ogg|midi?|wav|mp4|mov|webm|mpe?g|avi|ogv|flv|wmv)$ {
expires 7d;
access_log off;
}
# svg, fonts
location ~* \.(?:svgz?|ttf|ttc|otf|eot|woff2?)$ {
add_header Access-Control-Allow-Origin "*";
expires 7d;
access_log off;
}
# gzip
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml application/json application/javascript application/rss+xml application/atom+xml image/svg+xml;
}
4、公众号/小程序支付的URL多了一级/cashier
应用部署完毕,进行支付测试时,采用「微信支付二维码」的方式已支付成功,但是采用「公众号/小程序」的支付方式,在扫码后,发现扫码后的页面显示空白,进一步排查,发现是由于页面的css和js资源文件404导致的,进一步排查,是由于请求的资源多了一级path,一下是问题排查过程:
系统配置中的支付网关地址填写的是 https://jeepay-cashier.work.zhuzhilong.com
:
但是在使用支付测试功能,支付方式采用「公众号/小程序」进行支付测试时,生成的二维码如下:
二维码识别后的地址为:https://jeepay-cashier.work.zhuzhilong.com/cashier/index.html#/hub/78d439f3140fe4047c7f8f6cda1048313636890021b83c0c167270dbce4fc2ff
根据应用部署情况,比预期的访问路径多了 /cashier
,查看源代码后,发现这个路径是写死在 com.jeequan.jeepay.core.model.DBApplicationConfig.java
中的:
去掉相关方法中的 /cashier 后,根据 docker-compose.yml
重新构建镜像及重启服务后,可正常支付。
评论 (0)