Compare commits
28 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
04e4a3f407 | |
|
|
7400a45a4d | |
|
|
a0f1f2ad94 | |
|
|
c0a90482c0 | |
|
|
24b70acb75 | |
|
|
a5eab29e4a | |
|
|
61dd91dbc2 | |
|
|
1c96e5e8f7 | |
|
|
25b6f2d3f1 | |
|
|
6c511ac26c | |
|
|
2e2a78dcb7 | |
|
|
a4a5ef9bd0 | |
|
|
b6c9b5646a | |
|
|
f9882824f9 | |
|
|
af82979538 | |
|
|
eee7122e77 | |
|
|
6efb7c7893 | |
|
|
e20d7f8dda | |
|
|
148dd4f368 | |
|
|
817bbdf896 | |
|
|
9faf41d174 | |
|
|
ebe38dabf9 | |
|
|
40c62219fc | |
|
|
f48c063667 | |
|
|
6cb3dbf176 | |
|
|
2e23da7c66 | |
|
|
4cbd8a6f1c | |
|
|
9111ce544e |
|
|
@ -53,3 +53,4 @@ unpackage/
|
|||
|
||||
# [package-lock.json。 已放开,请添加到假定未更改文件 ]
|
||||
# package-lock.json
|
||||
/.history/
|
||||
|
|
|
|||
|
|
@ -0,0 +1,47 @@
|
|||
# syntax = docker/dockerfile:experimental
|
||||
# 使用了 Docker 特性 Buildx 请开启相关特性
|
||||
|
||||
FROM node:16-alpine AS builder
|
||||
|
||||
ARG PLATFORM=$PLATFORM
|
||||
|
||||
WORKDIR /workspace
|
||||
|
||||
COPY . /workspace
|
||||
|
||||
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
|
||||
RUN apk update
|
||||
RUN apk add --no-cache --virtual .build-deps alpine-sdk python3
|
||||
|
||||
RUN npm config set registry https://registry.npmmirror.com
|
||||
|
||||
RUN cd /workspace/jeepay-ui-${PLATFORM} && npm install && npm run build
|
||||
|
||||
|
||||
FROM nginx:alpine
|
||||
|
||||
ARG PLATFORM=$PLATFORM
|
||||
|
||||
ENV BACKEND_HOST $BACKEND_HOST
|
||||
|
||||
WORKDIR /workspace
|
||||
|
||||
COPY --from=builder /workspace/jeepay-ui-${PLATFORM}/dist /workspace
|
||||
RUN chmod a+r /workspace
|
||||
|
||||
RUN rm -rf /etc/nginx/conf.d/default.conf
|
||||
|
||||
COPY --from=builder /workspace/default.conf.template /etc/nginx/templates/default.conf.template
|
||||
|
||||
# 编译命令
|
||||
# docker buildx build . --build-arg PLATFORM=cashier -t jeepay-payment:latest
|
||||
# docker buildx build . --build-arg PLATFORM=manager -t jeepay-manager:latest
|
||||
# docker buildx build . --build-arg PLATFORM=merchant -t jeepay-merchant:latest
|
||||
#
|
||||
# 如果你需要多平台镜像,你可以使用 --platform linux/amd64,linux/arm64
|
||||
# 比如 docker buildx build . --build-arg PLATFORM=cashier -t jeepay-ui-cashier:latest --platform linux/amd64,linux/arm64
|
||||
#
|
||||
# 启动命令
|
||||
# docker run -d -p 9226:80 -e BACKEND_HOST=172.20.0.9216 jeepay-ui-cashier:latest
|
||||
# docker run -d -p 9227:80 -e BACKEND_HOST=172.20.0.9217 jeepay-ui-manager:latest
|
||||
# docker run -d -p 9228:80 -e BACKEND_HOST=172.20.0.9218 jeepay-ui-merchant:latest
|
||||
156
README.md
156
README.md
|
|
@ -1,152 +1,42 @@
|
|||
<p align="center">
|
||||
<a href="https://www.jeepay.vip"><img src="https://jeequan.oss-cn-beijing.aliyuncs.com/jeepay/img/jeepay_logo.svg"></a>
|
||||
</p>
|
||||
<p align="center">
|
||||
<strong>适合互联网企业使用的开源支付系统</strong>
|
||||
</p>
|
||||
<p align="center">
|
||||
👉 <a href="https://www.jeepay.vip">https://www.jeepay.vip</a> 👈
|
||||
</p>
|
||||
# Jeepay UI
|
||||
为Jeepay对应的前端项目,包括运营平台、商户系统、聚合码收银台。前端技术以vue为主,框架使用Ant Design Vue开发。
|
||||
|
||||
<p align="center">
|
||||
<a target="_blank" href="https://spring.io/projects/spring-boot">
|
||||
<img src="https://img.shields.io/badge/spring%20boot-2.4.5-yellowgreen" />
|
||||
</a>
|
||||
<a target="_blank" href="https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html">
|
||||
<img src="https://img.shields.io/badge/JDK-8+-green.svg" />
|
||||
</a>
|
||||
<a target="_blank" href="http://www.gnu.org/licenses/lgpl.html">
|
||||
<img src="https://img.shields.io/badge/license-LGPL--3.0-blue" />
|
||||
</a>
|
||||
<a href='https://gitee.com/jeequan/jeepay/stargazers' target="_blank">
|
||||
<img src='https://gitee.com/jeequan/jeepay/badge/star.svg?theme=gvp' alt='star'></img>
|
||||
</a>
|
||||
<a target="_blank" href='https://github.com/jeequan/jeepay'>
|
||||
<img src="https://img.shields.io/github/stars/jeequan/jeepay.svg?style=social" alt="github star"/>
|
||||
</a>
|
||||
</p>
|
||||
Java服务端项目:https://gitee.com/jeequan/jeepay
|
||||
|
||||
<br/>
|
||||
<p align="center">
|
||||
<a href="https://jq.qq.com/?_wv=1027&k=94WnXmdL">
|
||||
<img src="https://img.shields.io/badge/qq%E7%BE%A4%E2%91%A0-635647058-critical"/>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
## 📚 项目介绍
|
||||
|
||||
Jeepay是一套适合互联网企业使用的开源支付系统,支持多渠道服务商和普通商户模式。已对接`微信支付`,`支付宝`,`云闪付`官方接口,支持聚合码支付。
|
||||
|
||||
Jeepay使用`Spring Boot`和`Ant Design Vue`开发,集成`Spring Security`实现权限管理功能,是一套非常实用的web开发框架。
|
||||
|
||||
### 🎁 名称的由来
|
||||
|
||||
Jeepay = Jee + pay,是由原XxPay支付系统作者带领团队开发,“Jee”是公司计全科技名称的表示,pay表示支付。中文名称为计全支付,释为:计出万全、支付安全,让支付更加方便安全。
|
||||
|
||||
|
||||
### 🍟 项目体验
|
||||
|
||||
- Jeepay支付流程体验:[https://www.jeequan.com/demo/jeepay_cashier.html](https://www.jeequan.com/demo/jeepay_cashier.html "Jeepay支付体验")
|
||||
- Jeepay运营平台和商户系统演体验:[https://www.jeequan.com/doc/detail_84.html](https://www.jeequan.com/doc/detail_84.html "Jeepay支付系统体验")
|
||||
- Jeepay项目文档:[https://www.jeepay.vip](https://www.jeepay.vip "Jeepay项目文档")
|
||||
|
||||
### 🍎 项目特点
|
||||
|
||||
* 支持多渠道对接,支付网关自动路由
|
||||
* 已对接`微信`服务商和普通商户接口,支持`V2`和`V3`接口
|
||||
* 已对接`支付宝`服务商和普通商户接口,支持RSA和RSA2签名
|
||||
* 已对接`云闪付`服务商接口,可选择多家支付机构
|
||||
* 提供http形式接口,提供各语言的`sdk`实现,方便对接
|
||||
* 接口请求和响应数据采用签名机制,保证交易安全可靠
|
||||
* 系统安全,支持`分布式`部署,`高并发`
|
||||
* 管理端包括`运营平台`和`商户系统`
|
||||
* 管理平台操作界面简洁、易用
|
||||
* 支付平台到商户系统的订单通知使用MQ实现,保证了高可用,消息可达
|
||||
* 支付渠道的接口参数配置界面自动化生成
|
||||
* 使用`spring security`实现权限管理
|
||||
* 前后端分离架构,方便二次开发
|
||||
* 由原`XxPay`团队开发,有着多年支付系统开发经验
|
||||
|
||||
## 🥞 系统架构
|
||||
|
||||
> Jeepay计全支付系统架构图
|
||||
|
||||

|
||||
|
||||
> 核心技术栈
|
||||
|
||||
| 软件名称 | 描述 | 版本
|
||||
|---|---|---
|
||||
|Jdk | Java环境 | 1.8
|
||||
|Spring Boot | 开发框架 | 2.4.5
|
||||
|Redis | 分布式缓存 | 3.2.8 或 高版本
|
||||
|MySQL | 数据库 | 5.7.X
|
||||
|ActiveMQ | 消息中间件 | 5.15.8 或 高版本
|
||||
|[Ant Design Vue](https://www.antdv.com/docs/vue/introduce-cn/) | Ant Design的Vue实现,前端开发使用 | 2.1.2
|
||||
|[MyBatis-Plus](https://mp.baomidou.com/) | MyBatis增强工具 | 3.4.2
|
||||
|[WxJava](https://gitee.com/binary/weixin-java-tools) | 微新开发Java SDK | 4.0.0
|
||||
|[Hutool](https://www.hutool.cn/) | Java工具类库 | 5.6.6
|
||||
|
||||
> 项目结构
|
||||
> 目录结构
|
||||
|
||||
```lua
|
||||
jeepay -- https://gitee.com/jeequan/jeepay
|
||||
|
||||
jeepay-ui
|
||||
├── jeepay-ui-manager -- 运营平台前端vue代码
|
||||
├── jeepay-ui-merchant -- 商户系统前端vue代码
|
||||
└── jeepay-ui-cashier -- 支付收银台vue代码
|
||||
├── jeepay-ui-cashier -- 聚合收银台项目
|
||||
├── jeepay-ui-manager -- 运营平台web管理端
|
||||
└── jeepay-ui-merchant -- 商户系统web管理端
|
||||
```
|
||||
> 参考命令
|
||||
|
||||
> 开发部署
|
||||
node版本要求:`<= 16 `
|
||||
|
||||
- 系统开发:[https://www.jeepay.vip/#/develop/dev_serv](https://www.jeepay.vip/#/develop/dev_serv)
|
||||
- 通道对接:[https://www.jeepay.vip/#/develop/dev_channel](https://www.jeepay.vip/#/develop/dev_channel)
|
||||
- 线上部署:[https://www.jeepay.vip/#/develop/deploy](https://www.jeepay.vip/#/develop/deploy)
|
||||
- 接口文档:[https://www.jeepay.vip/#/interface/payment_api](https://www.jeepay.vip/#/interface/payment_api)
|
||||
#### 参考命令
|
||||
|
||||
## 🍿 功能模块
|
||||
``` bash
|
||||
# 拉取源码完毕后请先安装依赖, 进入项目根目录命令行执行:
|
||||
|
||||
> Jeepay运营平台功能
|
||||
> npm install
|
||||
|
||||

|
||||
# 本地启动项目(开发环境):
|
||||
|
||||
> Jeepay商户系统功能
|
||||
1. 打开根目录下文件".env.development", 修改请求服务器地址"VUE_APP_API_BASE_URL";
|
||||
|
||||

|
||||
2. 在项目根目录命令行执行:
|
||||
|
||||
## 🍯 系统截图
|
||||
> npm run serve
|
||||
|
||||
`以下截图是从实际已完成功能界面截取,截图时间为:2021-05-29 02:05`
|
||||
# 打包(生产环境):
|
||||
|
||||

|
||||
1. 打开根目录下文件".env", 修改请求服务器地址"VUE_APP_API_BASE_URL";
|
||||
|
||||

|
||||
2. 在项目根目录命令行执行:
|
||||
|
||||

|
||||
> npm run build
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

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

|
||||
3. 文件将输出到 [/dist]目录, 拷贝到web服务器即可。
|
||||
```
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
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;
|
||||
}
|
||||
|
|
@ -1,3 +1,3 @@
|
|||
NODE_ENV=production
|
||||
VUE_APP_BASE_URL=/
|
||||
VUE_APP_BASE_URL=
|
||||
VUE_APP_API_BASE_URL=
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "jeepay-ui-cashier",
|
||||
"version": "0.1.0",
|
||||
"version": "1.10.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
|
@ -1949,6 +1949,44 @@
|
|||
"integrity": "sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=",
|
||||
"dev": true
|
||||
},
|
||||
"ansi-styles": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.nlark.com/ansi-styles/download/ansi-styles-4.3.0.tgz?cache=0&sync_timestamp=1618995547052&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fansi-styles%2Fdownload%2Fansi-styles-4.3.0.tgz",
|
||||
"integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"color-convert": "^2.0.1"
|
||||
}
|
||||
},
|
||||
"chalk": {
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.nlark.com/chalk/download/chalk-4.1.2.tgz?cache=0&sync_timestamp=1627646734234&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-4.1.2.tgz",
|
||||
"integrity": "sha1-qsTit3NKdAhnrrFr8CqtVWoeegE=",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"ansi-styles": "^4.1.0",
|
||||
"supports-color": "^7.1.0"
|
||||
}
|
||||
},
|
||||
"color-convert": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.nlark.com/color-convert/download/color-convert-2.0.1.tgz",
|
||||
"integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"color-name": "~1.1.4"
|
||||
}
|
||||
},
|
||||
"color-name": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.nlark.com/color-name/download/color-name-1.1.4.tgz",
|
||||
"integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"debug": {
|
||||
"version": "4.3.1",
|
||||
"resolved": "https://registry.npm.taobao.org/debug/download/debug-4.3.1.tgz?cache=0&sync_timestamp=1607566551397&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-4.3.1.tgz",
|
||||
|
|
@ -1975,6 +2013,23 @@
|
|||
"integrity": "sha1-/wQLKwhTsjw9MQJ1I3BvGIXXa+4=",
|
||||
"dev": true
|
||||
},
|
||||
"has-flag": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.nlark.com/has-flag/download/has-flag-4.0.0.tgz",
|
||||
"integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"json5": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.nlark.com/json5/download/json5-2.2.0.tgz",
|
||||
"integrity": "sha1-Lf7+cgxrpSXZ69kJlQ8FFTFsiaM=",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"minimist": "^1.2.5"
|
||||
}
|
||||
},
|
||||
"jsonfile": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npm.taobao.org/jsonfile/download/jsonfile-4.0.0.tgz?cache=0&sync_timestamp=1604161937969&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjsonfile%2Fdownload%2Fjsonfile-4.0.0.tgz",
|
||||
|
|
@ -1984,6 +2039,18 @@
|
|||
"graceful-fs": "^4.1.6"
|
||||
}
|
||||
},
|
||||
"loader-utils": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-2.0.0.tgz",
|
||||
"integrity": "sha1-5MrOW4FtQloWa18JfhDNErNgZLA=",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"big.js": "^5.2.2",
|
||||
"emojis-list": "^3.0.0",
|
||||
"json5": "^2.1.2"
|
||||
}
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz?cache=0&sync_timestamp=1607433856030&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.1.2.tgz",
|
||||
|
|
@ -1998,6 +2065,28 @@
|
|||
"requires": {
|
||||
"minipass": "^3.1.1"
|
||||
}
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.nlark.com/supports-color/download/supports-color-7.2.0.tgz?cache=0&sync_timestamp=1626703414084&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsupports-color%2Fdownload%2Fsupports-color-7.2.0.tgz",
|
||||
"integrity": "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"has-flag": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"vue-loader-v16": {
|
||||
"version": "npm:vue-loader@16.6.0",
|
||||
"resolved": "https://registry.nlark.com/vue-loader/download/vue-loader-16.6.0.tgz?cache=0&sync_timestamp=1632217703123&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fvue-loader%2Fdownload%2Fvue-loader-16.6.0.tgz",
|
||||
"integrity": "sha1-B03Rs97jCTfQpawi3GP+86nPoV8=",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"chalk": "^4.1.0",
|
||||
"hash-sum": "^2.0.0",
|
||||
"loader-utils": "^2.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
@ -14254,97 +14343,6 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"vue-loader-v16": {
|
||||
"version": "npm:vue-loader@16.2.0",
|
||||
"resolved": "https://registry.nlark.com/vue-loader/download/vue-loader-16.2.0.tgz?cache=0&sync_timestamp=1620717743226&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fvue-loader%2Fdownload%2Fvue-loader-16.2.0.tgz",
|
||||
"integrity": "sha1-BGpTMI3Ufljv4g3ewe3sAnzjtG4=",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"chalk": "^4.1.0",
|
||||
"hash-sum": "^2.0.0",
|
||||
"loader-utils": "^2.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"ansi-styles": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.nlark.com/ansi-styles/download/ansi-styles-4.3.0.tgz?cache=0&sync_timestamp=1618995547052&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fansi-styles%2Fdownload%2Fansi-styles-4.3.0.tgz",
|
||||
"integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"color-convert": "^2.0.1"
|
||||
}
|
||||
},
|
||||
"chalk": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.nlark.com/chalk/download/chalk-4.1.1.tgz?cache=0&sync_timestamp=1618995354302&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-4.1.1.tgz",
|
||||
"integrity": "sha1-yAs/qyi/Y3HmhjMl7uZ+YYt35q0=",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"ansi-styles": "^4.1.0",
|
||||
"supports-color": "^7.1.0"
|
||||
}
|
||||
},
|
||||
"color-convert": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz",
|
||||
"integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"color-name": "~1.1.4"
|
||||
}
|
||||
},
|
||||
"color-name": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz",
|
||||
"integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"has-flag": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz?cache=0&sync_timestamp=1618559744568&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhas-flag%2Fdownload%2Fhas-flag-4.0.0.tgz",
|
||||
"integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"json5": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npm.taobao.org/json5/download/json5-2.2.0.tgz",
|
||||
"integrity": "sha1-Lf7+cgxrpSXZ69kJlQ8FFTFsiaM=",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"minimist": "^1.2.5"
|
||||
}
|
||||
},
|
||||
"loader-utils": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-2.0.0.tgz",
|
||||
"integrity": "sha1-5MrOW4FtQloWa18JfhDNErNgZLA=",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"big.js": "^5.2.2",
|
||||
"emojis-list": "^3.0.0",
|
||||
"json5": "^2.1.2"
|
||||
}
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.nlark.com/supports-color/download/supports-color-7.2.0.tgz?cache=0&sync_timestamp=1622293630895&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsupports-color%2Fdownload%2Fsupports-color-7.2.0.tgz",
|
||||
"integrity": "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"has-flag": "^4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"vue-router": {
|
||||
"version": "3.5.1",
|
||||
"resolved": "https://registry.nlark.com/vue-router/download/vue-router-3.5.1.tgz",
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -3,7 +3,7 @@
|
|||
<template v-slot:links>
|
||||
</template>
|
||||
<template v-slot:copyright>
|
||||
<a href="http://www.jeequan.com" target="_blank">@计全科技</a>
|
||||
Copyright © 2023 <a href="http://www.jeequan.com" target="_blank">jeequan.com</a>. All rights reserved.
|
||||
</template>
|
||||
</global-footer>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -117,7 +117,7 @@ export default {
|
|||
}
|
||||
.jeepay-card-add-text {
|
||||
padding-top: 5px;
|
||||
font-size: 16px;
|
||||
font-size: 13px;
|
||||
color: rgba(0, 0, 0, 0.35);
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -35,6 +35,8 @@
|
|||
|
||||
<template v-slot:rightContentRender>
|
||||
<right-content :top-menu="settings.layout === 'topmenu'" :is-mobile="isMobile" :theme="settings.theme" />
|
||||
<a style="color: red; float: right; padding-right: 10px;" href="https://www.jeequan.com/product/jeepay4plus.html" target="_blank">Plus商业版</a>
|
||||
<a style="color: red; float: right; padding-right: 10px;" href="https://www.jeequan.com/ifstore/list.html" target="_blank">接口市场</a>
|
||||
</template>
|
||||
<!-- custom footer / 自定义Footer -->
|
||||
<template v-slot:footerRender>
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@ export const printANSI = () => {
|
|||
/ /_/ // __/ __/ /_/ / /_/ / /_/ /
|
||||
\\____/ \\___/\\___/ .___/\\__,_/\\__, /
|
||||
/_/ /____/
|
||||
:: Jeepay :: (v1.7.0.RELEASE)
|
||||
适合互联网企业使用的开源支付系统 : https://www.jeequan.com
|
||||
:: Jeepay :: (v2.2.2.RELEASE)
|
||||
让支付接入更简单 : https://www.jeequan.com
|
||||
`
|
||||
|
||||
console.log(`%c${text}`, 'color: #fc4d50')
|
||||
|
|
|
|||
|
|
@ -244,7 +244,9 @@ export default {
|
|||
|
||||
if (item.star === '1') {
|
||||
that.ifParams[item.name + '_ph'] = that.ifParams[item.name] ? that.ifParams[item.name] : '请输入'
|
||||
that.ifParams[item.name] = ''
|
||||
if (that.ifParams[item.name]) {
|
||||
that.ifParams[item.name] = ''
|
||||
}
|
||||
}
|
||||
|
||||
newItems.push({
|
||||
|
|
|
|||
|
|
@ -61,11 +61,6 @@
|
|||
<a-input v-model="ifParams.oauth2Url" placeholder="请输入" />
|
||||
</a-form-model-item>
|
||||
</a-col>
|
||||
<a-col span="24">
|
||||
<a-form-model-item label="API密钥" prop="key">
|
||||
<a-input v-model="ifParams.key" :placeholder="ifParams.key_ph" type="textarea" />
|
||||
</a-form-model-item>
|
||||
</a-col>
|
||||
<a-col span="12">
|
||||
<a-form-model-item label="微信支付API版本" prop="apiVersion">
|
||||
<a-radio-group v-model="ifParams.apiVersion" defaultValue="V2">
|
||||
|
|
@ -75,7 +70,12 @@
|
|||
</a-form-model-item>
|
||||
</a-col>
|
||||
<a-col span="24">
|
||||
<a-form-model-item label="API V3秘钥" prop="apiV3Key">
|
||||
<a-form-model-item label="APIv2密钥" prop="key">
|
||||
<a-input v-model="ifParams.key" :placeholder="ifParams.key_ph" type="textarea" />
|
||||
</a-form-model-item>
|
||||
</a-col>
|
||||
<a-col span="24">
|
||||
<a-form-model-item label="APIv3密钥" prop="apiV3Key">
|
||||
<a-input v-model="ifParams.apiV3Key" :placeholder="ifParams.apiV3Key_ph" type="textarea" />
|
||||
</a-form-model-item>
|
||||
</a-col>
|
||||
|
|
@ -85,7 +85,7 @@
|
|||
</a-form-model-item>
|
||||
</a-col>
|
||||
<a-col span="24">
|
||||
<a-form-model-item label="API证书(.p12格式)" prop="cert">
|
||||
<a-form-model-item label="API证书(apiclient_cert.p12)" prop="cert">
|
||||
<a-input v-model="ifParams.cert" disabled="disabled" />
|
||||
<JeepayUpload
|
||||
:action="action"
|
||||
|
|
@ -99,7 +99,21 @@
|
|||
</a-form-model-item>
|
||||
</a-col>
|
||||
<a-col span="24">
|
||||
<a-form-model-item label="私钥文件(.pem格式)" prop="apiClientKey">
|
||||
<a-form-model-item label="证书文件(apiclient_cert.pem)" prop="apiClientCert">
|
||||
<a-input v-model="ifParams.apiClientCert" disabled="disabled" />
|
||||
<JeepayUpload
|
||||
:action="action"
|
||||
:fileUrl="ifParams.apiClientCert"
|
||||
@uploadSuccess="uploadSuccess($event, 'apiClientCert')"
|
||||
>
|
||||
<template slot="uploadSlot" slot-scope="{loading}">
|
||||
<a-button style="marginTop:5px;"> <a-icon :type="loading ? 'loading' : 'upload'" /> {{ loading ? '正在上传' : '点击上传' }} </a-button>
|
||||
</template>
|
||||
</JeepayUpload>
|
||||
</a-form-model-item>
|
||||
</a-col>
|
||||
<a-col span="24">
|
||||
<a-form-model-item label="私钥文件(apiclient_key.pem)" prop="apiClientKey">
|
||||
<a-input v-model="ifParams.apiClientKey" disabled="disabled" />
|
||||
<JeepayUpload
|
||||
:action="action"
|
||||
|
|
@ -177,10 +191,24 @@ export default {
|
|||
}
|
||||
callback()
|
||||
} }],
|
||||
cert: [{ trigger: 'blur',
|
||||
validator: (rule, value, callback) => {
|
||||
if (this.ifParams.apiVersion === 'V3' && this.isAdd && !value) {
|
||||
callback(new Error('请上传API证书(apiclient_cert.p12)'))
|
||||
}
|
||||
callback()
|
||||
} }],
|
||||
apiClientCert: [{ trigger: 'blur',
|
||||
validator: (rule, value, callback) => {
|
||||
if (this.ifParams.apiVersion === 'V3' && this.isAdd && !value) {
|
||||
callback(new Error('请上传证书文件(apiclient_cert.pem)'))
|
||||
}
|
||||
callback()
|
||||
} }],
|
||||
apiClientKey: [{ trigger: 'blur',
|
||||
validator: (rule, value, callback) => {
|
||||
if (this.ifParams.apiVersion === 'V3' && !this.ifParams.apiClientKey) {
|
||||
callback(new Error('请上传私钥文件'))
|
||||
if (this.ifParams.apiVersion === 'V3' && !value) {
|
||||
callback(new Error('请上传私钥文件(apiclient_key.pem)'))
|
||||
}
|
||||
callback()
|
||||
} }]
|
||||
|
|
|
|||
|
|
@ -38,8 +38,7 @@
|
|||
<a-row :gutter="16">
|
||||
<a-col v-for="(item, key) in mchParams" :key="key" :span="item.type === 'text' ? 12 : 24">
|
||||
<a-form-model-item :label="item.desc" :prop="item.name" v-if="item.type === 'text' || item.type === 'textarea'">
|
||||
<a-input v-if="item.star === '1'" v-model="ifParams[item.name]" :placeholder="ifParams[item.name + '_ph']" :type="item.type" />
|
||||
<a-input v-else v-model="ifParams[item.name]" placeholder="请输入" :type="item.type" />
|
||||
<a-input v-model="ifParams[item.name]" :placeholder="item.star === '1' ? ifParams[item.name + '_ph'] : '请输入'" :type="item.type" />
|
||||
</a-form-model-item>
|
||||
<a-form-model-item :label="item.desc" :prop="item.name" v-else-if="item.type === 'radio'">
|
||||
<a-radio-group v-model="ifParams[item.name]">
|
||||
|
|
@ -156,7 +155,9 @@ export default {
|
|||
|
||||
if (item.star === '1') {
|
||||
that.ifParams[item.name + '_ph'] = that.ifParams[item.name] ? that.ifParams[item.name] : '请输入'
|
||||
that.ifParams[item.name] = ''
|
||||
if (that.ifParams[item.name]) {
|
||||
that.ifParams[item.name] = ''
|
||||
}
|
||||
}
|
||||
|
||||
newItems.push({
|
||||
|
|
|
|||
|
|
@ -56,11 +56,6 @@
|
|||
<a-input v-model="ifParams.oauth2Url" placeholder="请输入" />
|
||||
</a-form-model-item>
|
||||
</a-col>
|
||||
<a-col span="24">
|
||||
<a-form-model-item label="API密钥" prop="key">
|
||||
<a-input v-model="ifParams.key" :placeholder="ifParams.key_ph" type="textarea" />
|
||||
</a-form-model-item>
|
||||
</a-col>
|
||||
<a-col span="12">
|
||||
<a-form-model-item label="微信支付API版本" prop="apiVersion">
|
||||
<a-radio-group v-model="ifParams.apiVersion" defaultValue="V2">
|
||||
|
|
@ -70,7 +65,12 @@
|
|||
</a-form-model-item>
|
||||
</a-col>
|
||||
<a-col span="24">
|
||||
<a-form-model-item label="API V3秘钥" prop="apiV3Key">
|
||||
<a-form-model-item label="APIv2密钥" prop="key">
|
||||
<a-input v-model="ifParams.key" :placeholder="ifParams.key_ph" type="textarea" />
|
||||
</a-form-model-item>
|
||||
</a-col>
|
||||
<a-col span="24">
|
||||
<a-form-model-item label="APIv3秘钥" prop="apiV3Key">
|
||||
<a-input v-model="ifParams.apiV3Key" :placeholder="ifParams.apiV3Key_ph" type="textarea" />
|
||||
</a-form-model-item>
|
||||
</a-col>
|
||||
|
|
@ -80,7 +80,7 @@
|
|||
</a-form-model-item>
|
||||
</a-col>
|
||||
<a-col span="24">
|
||||
<a-form-model-item label="API证书(.p12格式)" prop="cert">
|
||||
<a-form-model-item label="API证书(apiclient_cert.p12)" prop="cert">
|
||||
<a-input v-model="ifParams.cert" disabled="disabled" />
|
||||
<JeepayUpload
|
||||
:action="action"
|
||||
|
|
@ -94,7 +94,21 @@
|
|||
</a-form-model-item>
|
||||
</a-col>
|
||||
<a-col span="24">
|
||||
<a-form-model-item label="私钥文件(.pem格式)" prop="apiClientKey">
|
||||
<a-form-model-item label="证书文件(apiclient_cert.pem)" prop="apiClientCert">
|
||||
<a-input v-model="ifParams.apiClientCert" disabled="disabled" />
|
||||
<JeepayUpload
|
||||
:action="action"
|
||||
:fileUrl="ifParams.apiClientCert"
|
||||
@uploadSuccess="uploadSuccess($event, 'apiClientCert')"
|
||||
>
|
||||
<template slot="uploadSlot" slot-scope="{loading}">
|
||||
<a-button style="marginTop:5px;"> <a-icon :type="loading ? 'loading' : 'upload'" /> {{ loading ? '正在上传' : '点击上传' }} </a-button>
|
||||
</template>
|
||||
</JeepayUpload>
|
||||
</a-form-model-item>
|
||||
</a-col>
|
||||
<a-col span="24">
|
||||
<a-form-model-item label="私钥文件(apiclient_key.pem)" prop="apiClientKey">
|
||||
<a-input v-model="ifParams.apiClientKey" disabled="disabled" />
|
||||
<JeepayUpload
|
||||
:action="action"
|
||||
|
|
@ -197,10 +211,24 @@ export default {
|
|||
}
|
||||
callback()
|
||||
} }],
|
||||
cert: [{ trigger: 'blur',
|
||||
validator: (rule, value, callback) => {
|
||||
if (this.ifParams.apiVersion === 'V3' && this.isAdd && !value) {
|
||||
callback(new Error('请上传API证书(apiclient_cert.p12)'))
|
||||
}
|
||||
callback()
|
||||
} }],
|
||||
apiClientCert: [{ trigger: 'blur',
|
||||
validator: (rule, value, callback) => {
|
||||
if (this.ifParams.apiVersion === 'V3' && this.isAdd && !value) {
|
||||
callback(new Error('请上传证书文件(apiclient_cert.pem)'))
|
||||
}
|
||||
callback()
|
||||
} }],
|
||||
apiClientKey: [{ trigger: 'blur',
|
||||
validator: (rule, value, callback) => {
|
||||
if (this.ifParams.apiVersion === 'V3' && this.mchType === 1 && !this.ifParams.apiClientKey) {
|
||||
callback(new Error('请上传私钥文件'))
|
||||
callback(new Error('请上传私钥文件(apiclient_key.pem)'))
|
||||
}
|
||||
callback()
|
||||
} }],
|
||||
|
|
|
|||
|
|
@ -15,8 +15,8 @@
|
|||
</a-range-picker>
|
||||
</a-form-item>
|
||||
<jeepay-text-up :placeholder="'支付/商户/渠道订单号'" :msg="searchData.unionOrderId" v-model="searchData.unionOrderId" />
|
||||
<!-- <jeepay-text-up :placeholder="'支付订单号'" :msg="searchData.payOrderId" v-model="searchData.payOrderId" />-->
|
||||
<!-- <jeepay-text-up :placeholder="'商户订单号'" :msg="searchData.mchOrderNo" v-model="searchData.mchOrderNo" />-->
|
||||
<!-- <jeepay-text-up :placeholder="'支付订单号'" :msg="searchData.payOrderId" v-model="searchData.payOrderId" />-->
|
||||
<!-- <jeepay-text-up :placeholder="'商户订单号'" :msg="searchData.mchOrderNo" v-model="searchData.mchOrderNo" />-->
|
||||
<jeepay-text-up :placeholder="'商户号'" :msg="searchData.mchNo" v-model="searchData.mchNo" />
|
||||
<jeepay-text-up :placeholder="'服务商号'" :msg="searchData.isvNo" v-model="searchData.isvNo" />
|
||||
<jeepay-text-up :placeholder="'应用AppId'" :msg="searchData.appId" v-model="searchData.appId"/>
|
||||
|
|
@ -459,7 +459,7 @@ export default {
|
|||
return req.list(API_URL_PAY_ORDER_LIST, params)
|
||||
},
|
||||
searchFunc: function () { // 点击【查询】按钮点击事件
|
||||
this.$refs.infoTable.refTable(true)
|
||||
this.$refs.infoTable.refTable(false)
|
||||
},
|
||||
|
||||
// 打开退款弹出框
|
||||
|
|
|
|||
|
|
@ -14,10 +14,10 @@
|
|||
<a-icon slot="suffixIcon" type="sync" />
|
||||
</a-range-picker>
|
||||
</a-form-item>
|
||||
<jeepay-text-up :placeholder="'退款/支付/渠道/商户退款订单号'" :msg="searchData.unionOrderId" v-model="searchData.unionOrderId" />
|
||||
<!-- <jeepay-text-up :placeholder="'退款订单号'" :msg="searchData.refundOrderId" v-model="searchData.refundOrderId" />-->
|
||||
<!-- <jeepay-text-up :placeholder="'支付订单号'" :msg="searchData.payOrderId" v-model="searchData.payOrderId" />-->
|
||||
<!-- <jeepay-text-up :placeholder="'渠道支付订单号'" :msg="searchData.channelPayOrderNo" v-model="searchData.channelPayOrderNo" />-->
|
||||
<jeepay-text-up :placeholder="'支付/退款列订单号'" :msg="searchData.unionOrderId" v-model="searchData.unionOrderId" />
|
||||
<!-- <jeepay-text-up :placeholder="'退款订单号'" :msg="searchData.refundOrderId" v-model="searchData.refundOrderId" />-->
|
||||
<!-- <jeepay-text-up :placeholder="'支付订单号'" :msg="searchData.payOrderId" v-model="searchData.payOrderId" />-->
|
||||
<!-- <jeepay-text-up :placeholder="'渠道支付订单号'" :msg="searchData.channelPayOrderNo" v-model="searchData.channelPayOrderNo" />-->
|
||||
<jeepay-text-up :placeholder="'商户号'" :msg="searchData.mchNo" v-model="searchData.mchNo" />
|
||||
<jeepay-text-up :placeholder="'服务商号'" :msg="searchData.isvNo" v-model="searchData.isvNo" />
|
||||
<jeepay-text-up :placeholder="'应用AppId'" :msg="searchData.appId" v-model="searchData.appId"/>
|
||||
|
|
|
|||
|
|
@ -107,9 +107,9 @@
|
|||
const tableColumns = [
|
||||
{ title: '转账金额', scopedSlots: { customRender: 'transferAmountSlot' }, width: 108 },
|
||||
{ title: '商户名称', dataIndex: 'mchName' },
|
||||
{ key: 'orderNo', title: '订单号', scopedSlots: { customRender: 'orderSlot' }, width: 210 },
|
||||
{ key: 'orderNo', title: '订单号', scopedSlots: { customRender: 'orderSlot' }, width: 260 },
|
||||
// { title: '渠道订单号', dataIndex: 'channelOrderNo' },
|
||||
{ title: '收款账号', dataIndex: 'accountNo' },
|
||||
{ title: '收款账号', dataIndex: 'accountNo', width: 200 },
|
||||
{ title: '收款人姓名', dataIndex: 'accountName' },
|
||||
{ title: '转账备注', dataIndex: 'transferDesc' },
|
||||
{ title: '状态', scopedSlots: { customRender: 'stateSlot' }, width: 100 },
|
||||
|
|
|
|||
|
|
@ -1,5 +1,17 @@
|
|||
<template>
|
||||
<page-header-wrapper>
|
||||
<template>
|
||||
<a-card style="width: calc(100% - 24px);margin-bottom: 20px;">
|
||||
<a-alert message="" type="info">
|
||||
<template #description>
|
||||
<p style="display: flex; justify-content: space-between; margin: 0 0 4px;">
|
||||
计全科技已开放支付接口购买渠道,官方团队开发、源码提供、下载后直接使用。<a href="https://docs.jeequan.com/docs/jeepay/jeepay-1ejdnsuhveb16" target="_blank">接口下载、安装说明。</a>
|
||||
<a href="https://www.jeequan.com/ifstore/list.html" target="_blank">前往接口市场 ></a>
|
||||
</p>
|
||||
</template>
|
||||
</a-alert>
|
||||
</a-card>
|
||||
</template>
|
||||
<JeepayCard
|
||||
ref="infoCard"
|
||||
:reqCardListFunc="reqCardListFunc"
|
||||
|
|
@ -53,8 +65,8 @@ export default {
|
|||
return {
|
||||
jeepayCard: {
|
||||
name: '支付接口',
|
||||
height: 300,
|
||||
span: { xxl: 6, xl: 4, lg: 4, md: 3, sm: 2, xs: 1 },
|
||||
height: 200,
|
||||
span: { xxl: 8, xl: 4, lg: 4, md: 3, sm: 2, xs: 1 },
|
||||
addAuthority: this.$access('ENT_PC_IF_DEFINE_ADD')
|
||||
}
|
||||
}
|
||||
|
|
@ -118,7 +130,7 @@ export default {
|
|||
align-items: center;
|
||||
}
|
||||
.title {
|
||||
font-size: 16px;
|
||||
font-size: 13px;
|
||||
font-family: PingFang SC, PingFang SC-Bold;
|
||||
font-weight: 700;
|
||||
color: #1a1a1a;
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -297,3 +297,11 @@ export function payOrderRefund (payOrderId, refundAmount, refundReason) {
|
|||
data: { refundAmount, refundReason }
|
||||
})
|
||||
}
|
||||
|
||||
/** 分账重试 */
|
||||
export function resendDivision (recordId) {
|
||||
return request.request({
|
||||
url: '/api/division/records/resend/' + recordId,
|
||||
method: 'POST'
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,19 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="40" height="40" viewBox="0 0 40 40">
|
||||
<defs>
|
||||
<clipPath id="clip-path">
|
||||
<rect id="矩形_3796" data-name="矩形 3796" width="17" height="20" transform="translate(7694 5293)" fill="#fff" stroke="#707070" stroke-width="1"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g id="PayPal" transform="translate(-7454 -5095)">
|
||||
<path id="路径_4159" data-name="路径 4159" d="M190.218,137.3l-.02-.02-.02-.02c-1.442-1.442-3.6-2.176-6.511-2.561a91.682,91.682,0,0,0-10.426-.453,91.64,91.64,0,0,0-10.426.453c-2.929.387-5.089,1.126-6.531,2.582s-2.2,3.6-2.581,6.531a91.665,91.665,0,0,0-.453,10.426,91.651,91.651,0,0,0,.453,10.426c.385,2.916,1.12,5.069,2.562,6.511l.02.02.02.02c1.442,1.442,3.6,2.176,6.511,2.561a91.679,91.679,0,0,0,10.426.453,91.64,91.64,0,0,0,10.426-.453c2.929-.387,5.089-1.126,6.531-2.582s2.2-3.6,2.581-6.531a91.69,91.69,0,0,0,.453-10.426,91.64,91.64,0,0,0-.453-10.426c-.385-2.916-1.12-5.069-2.562-6.511Z" transform="translate(7300.76 4960.764)" fill="#c3cbe6"/>
|
||||
<path id="矩形_2559" data-name="矩形 2559" d="M1,0H11a1,1,0,0,1,1,1V4H0V1A1,1,0,0,1,1,0Z" transform="translate(7468.001 5109.007)" fill="#e60012"/>
|
||||
<g id="蒙版组_330" data-name="蒙版组 330" transform="translate(-228.5 -188)" clip-path="url(#clip-path)">
|
||||
<g id="组_1372" data-name="组 1372" transform="translate(7694 5293)">
|
||||
<path id="路径_11885" data-name="路径 11885" d="M302.719,129.325l.345-2.136H298.75l2.416-15.7c0-.058,0-.058.057-.173a.252.252,0,0,1,.173-.058h5.983c2.013,0,3.337.462,4.084,1.27a4.157,4.157,0,0,1,.69,1.212,8.721,8.721,0,0,1,0,1.732v.519l.345.173a3.1,3.1,0,0,1,.69.519,2.356,2.356,0,0,1,.575,1.27,6.219,6.219,0,0,1-.058,1.789,6.092,6.092,0,0,1-.748,2.02,3.2,3.2,0,0,1-1.208,1.27,7.716,7.716,0,0,1-1.553.75,7.418,7.418,0,0,1-1.9.231h-.69a1.419,1.419,0,0,0-1.381,1.212v.231l-.575,3.694v.173a.056.056,0,0,1-.057.058h-.058a22.977,22.977,0,0,0-2.819-.058Z" transform="translate(-298.051 -110.452)" fill="#253b80"/>
|
||||
<path id="路径_11886" data-name="路径 11886" d="M420.32,248.293c0,.173-.058.231-.058.4-.863,4.329-3.624,5.714-7.191,5.714H411.23a.865.865,0,0,0-.863.75l-.92,6-.23,1.732c-.058.231.173.462.4.519h3.337a.752.752,0,0,0,.748-.693v-.173l.633-3.925.058-.231a.8.8,0,0,1,.748-.693h.46c3.164,0,5.523-1.328,6.328-5.021.288-1.558.173-2.886-.633-3.752a5.7,5.7,0,0,0-.978-.635Z" transform="translate(-405.066 -243.214)" fill="#179bd7"/>
|
||||
<path id="路径_11887" data-name="路径 11887" d="M459.074,228.212c-.173,0-.23-.058-.4-.058s-.288-.058-.4-.058a15.249,15.249,0,0,0-1.611-.173h-4.832a.752.752,0,0,0-.748.693l-.978,6.637v.173a.865.865,0,0,1,.863-.75H452.8c3.567,0,6.386-1.443,7.191-5.714,0-.173.057-.231.057-.4-.23-.058-.46-.231-.69-.289l-.288-.058Z" transform="translate(-444.684 -223.479)" fill="#222d65"/>
|
||||
<path id="路径_11888" data-name="路径 11888" d="M282.712,90.528a.8.8,0,0,1,.748-.693h4.832a5.112,5.112,0,0,1,1.611.173c.173,0,.288.058.4.058.173,0,.23.058.4.058l.173.058a3.516,3.516,0,0,1,.69.289,3.938,3.938,0,0,0-.863-3.578c-.92-1.1-2.646-1.558-4.775-1.558h-6.213a.866.866,0,0,0-.863.75l-2.531,16.507c-.057.289.173.52.46.635H280.7l.978-6.118c.058,0,1.035-6.58,1.035-6.58Z" transform="translate(-276.318 -85.333)" fill="#253b80"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.2 KiB |
|
|
@ -3,7 +3,7 @@
|
|||
<template v-slot:links>
|
||||
</template>
|
||||
<template v-slot:copyright>
|
||||
<a href="http://www.jeequan.com" target="_blank">@计全科技</a>
|
||||
Copyright © 2023 <a href="http://www.jeequan.com" target="_blank">jeequan.com</a>. All rights reserved.
|
||||
</template>
|
||||
</global-footer>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -35,6 +35,8 @@
|
|||
|
||||
<template v-slot:rightContentRender>
|
||||
<right-content :top-menu="settings.layout === 'topmenu'" :is-mobile="isMobile" :theme="settings.theme" />
|
||||
<a style="color: red; float: right; padding-right: 10px;" href="https://www.jeequan.com/product/jeepay4plus.html" target="_blank">Plus商业版</a>
|
||||
<a style="color: red; float: right; padding-right: 10px;" href="https://www.jeequan.com/ifstore/list.html" target="_blank">接口市场</a>
|
||||
</template>
|
||||
<!-- custom footer / 自定义Footer -->
|
||||
<template v-slot:footerRender>
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@ export const printANSI = () => {
|
|||
/ /_/ // __/ __/ /_/ / /_/ / /_/ /
|
||||
\\____/ \\___/\\___/ .___/\\__,_/\\__, /
|
||||
/_/ /____/
|
||||
:: Jeepay :: (v1.7.0.RELEASE)
|
||||
适合互联网企业使用的开源支付系统 : https://www.jeequan.com
|
||||
:: Jeepay :: (v2.2.2.RELEASE)
|
||||
让支付接入更简单 : https://www.jeequan.com
|
||||
`
|
||||
|
||||
console.log(`%c${text}`, 'color: #fc4d50')
|
||||
|
|
|
|||
|
|
@ -129,7 +129,7 @@
|
|||
<template slot="accTypeSlot" slot-scope="record">
|
||||
<a-select style="width: 110px" v-model="record.accType" placeholder="账号类型" default-value="0">
|
||||
<a-select-option value="0">个人</a-select-option>
|
||||
<a-select-option value="1">微信商户</a-select-option>
|
||||
<a-select-option value="1">商户</a-select-option>
|
||||
</a-select>
|
||||
</template>
|
||||
|
||||
|
|
|
|||
|
|
@ -14,14 +14,17 @@
|
|||
<a-col :sm="12"><a-descriptions><a-descriptions-item label="支付接口代码">{{ detailData.ifCode }}</a-descriptions-item></a-descriptions></a-col>
|
||||
<a-col :sm="12"><a-descriptions><a-descriptions-item label="系统支付订单号">{{ detailData.payOrderId }}</a-descriptions-item></a-descriptions></a-col>
|
||||
<a-col :sm="12"><a-descriptions><a-descriptions-item label="支付订单渠道支付订单号">{{ detailData.payOrderChannelOrderNo }}</a-descriptions-item></a-descriptions></a-col>
|
||||
<a-col :sm="12"><a-descriptions><a-descriptions-item label="订单金额">{{ detailData.payOrderAmount / 100}}</a-descriptions-item></a-descriptions></a-col>
|
||||
<a-col :sm="12"><a-descriptions><a-descriptions-item label="订单金额">{{ detailData.payOrderAmount / 100 }}</a-descriptions-item></a-descriptions></a-col>
|
||||
<a-col :sm="12"><a-descriptions><a-descriptions-item label="分账基数">{{ detailData.payOrderDivisionAmount / 100 }} (订单金额-手续费-退款金额)</a-descriptions-item></a-descriptions></a-col>
|
||||
<a-col :sm="12"><a-descriptions><a-descriptions-item label="系统分账批次号">{{ detailData.batchOrderId }}</a-descriptions-item></a-descriptions></a-col>
|
||||
<a-col :sm="12"><a-descriptions><a-descriptions-item label="上游分账批次号">{{ detailData.channelBatchOrderId }}</a-descriptions-item></a-descriptions></a-col>
|
||||
<a-col :sm="12"><a-descriptions><a-descriptions-item label="状态">
|
||||
<a-tag :key="detailData.state" :color="detailData.state === 0?'orange':detailData.state === 1?'blue':detailData.state === 2?'volcano':'volcano'">
|
||||
{{ detailData.state === 0?'分账中':detailData.state === 1?'分账成功':detailData.state === 2?'分账失败' : '未知' }}
|
||||
</a-tag>
|
||||
|
||||
<a-tag v-if="detailData.state === 0" :key="detailData.state" color="orange">分账中</a-tag>
|
||||
<a-tag v-if="detailData.state === 1" :key="detailData.state" color="blue">分账成功</a-tag>
|
||||
<a-tag v-if="detailData.state === 2" :key="detailData.state" color="volcano">分账失败</a-tag>
|
||||
<a-tag v-if="detailData.state === 3" :key="detailData.state" color="purple">已受理</a-tag>
|
||||
|
||||
</a-descriptions-item></a-descriptions></a-col>
|
||||
<a-col :sm="12"><a-descriptions><a-descriptions-item label="分账接收者ID">{{ detailData.receiverId }}</a-descriptions-item></a-descriptions></a-col>
|
||||
<a-col :sm="12"><a-descriptions><a-descriptions-item label="收款账号组ID">{{ detailData.receiverGroupId }}</a-descriptions-item></a-descriptions></a-col>
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@
|
|||
<a-select-option value="0">待分账</a-select-option>
|
||||
<a-select-option value="1">分账成功</a-select-option>
|
||||
<a-select-option value="2">分账失败</a-select-option>
|
||||
<a-select-option value="3">已受理</a-select-option>
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
|
||||
|
|
@ -49,16 +50,17 @@
|
|||
>
|
||||
<template slot="amountSlot" slot-scope="{record}"><b>¥{{ record.calDivisionAmount/100 }}</b></template> <!-- 自定义插槽 -->
|
||||
<template slot="stateSlot" slot-scope="{record}">
|
||||
<a-tag
|
||||
:key="record.state"
|
||||
:color="record.state === 0?'orange':record.state === 1?'blue':record.state === 2?'volcano':'volcano'"
|
||||
>
|
||||
{{ record.state === 0?'分账中':record.state === 1?'分账成功':record.state === 2?'分账失败' : '未知' }}
|
||||
</a-tag>
|
||||
|
||||
<a-tag v-if="record.state === 0" :key="record.state" color="orange">分账中</a-tag>
|
||||
<a-tag v-if="record.state === 1" :key="record.state" color="blue">分账成功</a-tag>
|
||||
<a-tag v-if="record.state === 2" :key="record.state" color="volcano">分账失败</a-tag>
|
||||
<a-tag v-if="record.state === 3" :key="record.state" color="purple">已受理</a-tag>
|
||||
|
||||
</template>
|
||||
<template slot="opSlot" slot-scope="{record}"> <!-- 操作列插槽 -->
|
||||
<JeepayTableColumns>
|
||||
<a-button type="link" v-if="$access('ENT_DIVISION_RECORD_VIEW')" @click="detailFunc(record.recordId)">详情</a-button>
|
||||
<a-button type="link" v-if="record.state == 2 && $access('ENT_DIVISION_RECORD_RESEND')" @click="redivFunc(record.recordId)">重试</a-button>
|
||||
</JeepayTableColumns>
|
||||
</template>
|
||||
</JeepayTable>
|
||||
|
|
@ -72,7 +74,7 @@
|
|||
import JeepayTextUp from '@/components/JeepayTextUp/JeepayTextUp' // 文字上移组件
|
||||
import JeepayTable from '@/components/JeepayTable/JeepayTable'
|
||||
import JeepayTableColumns from '@/components/JeepayTable/JeepayTableColumns'
|
||||
import { API_URL_PAY_ORDER_DIVISION_RECORD_LIST, req } from '@/api/manage'
|
||||
import { API_URL_PAY_ORDER_DIVISION_RECORD_LIST, req, resendDivision } from '@/api/manage'
|
||||
import moment from 'moment'
|
||||
import Detail from './Detail'
|
||||
|
||||
|
|
@ -124,6 +126,16 @@ export default {
|
|||
detailFunc: function (recordId) {
|
||||
this.$refs.recordDetail.show(recordId)
|
||||
},
|
||||
// 重新发起分账
|
||||
redivFunc: function (recordId) {
|
||||
const that = this
|
||||
this.$infoBox.confirmPrimary('确认重新分账?', '重新分账将按照订单维度重新发起(仅限分账失败订单)。', () => {
|
||||
resendDivision(recordId).then(res => {
|
||||
that.$refs.infoTable.refTable(false)
|
||||
that.$message.warning('请等待接口最新状态')
|
||||
})
|
||||
})
|
||||
},
|
||||
moment,
|
||||
onChange (date, dateString) {
|
||||
this.searchData.createdStart = dateString[0] // 开始时间
|
||||
|
|
|
|||
|
|
@ -56,11 +56,6 @@
|
|||
<a-input v-model="ifParams.oauth2Url" placeholder="请输入" />
|
||||
</a-form-model-item>
|
||||
</a-col>
|
||||
<a-col span="24">
|
||||
<a-form-model-item label="API密钥" prop="key">
|
||||
<a-input v-model="ifParams.key" :placeholder="ifParams.key_ph" type="textarea" />
|
||||
</a-form-model-item>
|
||||
</a-col>
|
||||
<a-col span="12">
|
||||
<a-form-model-item label="微信支付API版本" prop="apiVersion">
|
||||
<a-radio-group v-model="ifParams.apiVersion" defaultValue="V2">
|
||||
|
|
@ -70,7 +65,12 @@
|
|||
</a-form-model-item>
|
||||
</a-col>
|
||||
<a-col span="24">
|
||||
<a-form-model-item label="API V3秘钥" prop="apiV3Key">
|
||||
<a-form-model-item label="APIv2密钥" prop="key">
|
||||
<a-input v-model="ifParams.key" :placeholder="ifParams.key_ph" type="textarea" />
|
||||
</a-form-model-item>
|
||||
</a-col>
|
||||
<a-col span="24">
|
||||
<a-form-model-item label="APIv3秘钥" prop="apiV3Key">
|
||||
<a-input v-model="ifParams.apiV3Key" :placeholder="ifParams.apiV3Key_ph" type="textarea" />
|
||||
</a-form-model-item>
|
||||
</a-col>
|
||||
|
|
@ -80,7 +80,7 @@
|
|||
</a-form-model-item>
|
||||
</a-col>
|
||||
<a-col span="24">
|
||||
<a-form-model-item label="API证书(.p12格式)" prop="cert">
|
||||
<a-form-model-item label="API证书(apiclient_cert.p12)" prop="cert">
|
||||
<a-input v-model="ifParams.cert" disabled="disabled" />
|
||||
<JeepayUpload
|
||||
:action="action"
|
||||
|
|
@ -94,7 +94,21 @@
|
|||
</a-form-model-item>
|
||||
</a-col>
|
||||
<a-col span="24">
|
||||
<a-form-model-item label="私钥文件(.pem格式)" prop="apiClientKey">
|
||||
<a-form-model-item label="证书文件(apiclient_cert.pem)" prop="apiClientCert">
|
||||
<a-input v-model="ifParams.apiClientCert" disabled="disabled" />
|
||||
<JeepayUpload
|
||||
:action="action"
|
||||
:fileUrl="ifParams.apiClientCert"
|
||||
@uploadSuccess="uploadSuccess($event, 'apiClientCert')"
|
||||
>
|
||||
<template slot="uploadSlot" slot-scope="{loading}">
|
||||
<a-button style="marginTop:5px;"> <a-icon :type="loading ? 'loading' : 'upload'" /> {{ loading ? '正在上传' : '点击上传' }} </a-button>
|
||||
</template>
|
||||
</JeepayUpload>
|
||||
</a-form-model-item>
|
||||
</a-col>
|
||||
<a-col span="24">
|
||||
<a-form-model-item label="私钥文件(apiclient_key.pem)" prop="apiClientKey">
|
||||
<a-input v-model="ifParams.apiClientKey" disabled="disabled" />
|
||||
<JeepayUpload
|
||||
:action="action"
|
||||
|
|
@ -197,10 +211,24 @@ export default {
|
|||
}
|
||||
callback()
|
||||
} }],
|
||||
cert: [{ trigger: 'blur',
|
||||
validator: (rule, value, callback) => {
|
||||
if (this.ifParams.apiVersion === 'V3' && this.isAdd && !value) {
|
||||
callback(new Error('请上传API证书(apiclient_cert.p12)'))
|
||||
}
|
||||
callback()
|
||||
} }],
|
||||
apiClientCert: [{ trigger: 'blur',
|
||||
validator: (rule, value, callback) => {
|
||||
if (this.ifParams.apiVersion === 'V3' && this.isAdd && !value) {
|
||||
callback(new Error('请上传证书文件(apiclient_cert.pem)'))
|
||||
}
|
||||
callback()
|
||||
} }],
|
||||
apiClientKey: [{ trigger: 'blur',
|
||||
validator: (rule, value, callback) => {
|
||||
if (this.ifParams.apiVersion === 'V3' && this.mchType === 1 && !this.ifParams.apiClientKey) {
|
||||
callback(new Error('请上传私钥文件'))
|
||||
callback(new Error('请上传私钥文件(apiclient_key.pem)'))
|
||||
}
|
||||
callback()
|
||||
} }],
|
||||
|
|
|
|||
|
|
@ -15,8 +15,8 @@
|
|||
</a-range-picker>
|
||||
</a-form-item>
|
||||
<jeepay-text-up :placeholder="'支付/商户/渠道订单号'" :msg="searchData.unionOrderId" v-model="searchData.unionOrderId" />
|
||||
<!-- <jeepay-text-up :placeholder="'支付订单号'" :msg="searchData.payOrderId" v-model="searchData.payOrderId" />-->
|
||||
<!-- <jeepay-text-up :placeholder="'商户订单号'" :msg="searchData.mchOrderNo" v-model="searchData.mchOrderNo" />-->
|
||||
<!-- <jeepay-text-up :placeholder="'支付订单号'" :msg="searchData.payOrderId" v-model="searchData.payOrderId" />-->
|
||||
<!-- <jeepay-text-up :placeholder="'商户订单号'" :msg="searchData.mchOrderNo" v-model="searchData.mchOrderNo" />-->
|
||||
<jeepay-text-up :placeholder="'应用AppId'" :msg="searchData.appId" v-model="searchData.appId"/>
|
||||
<a-form-item v-if="$access('ENT_PAY_ORDER_SEARCH_PAY_WAY')" label="" class="table-head-layout">
|
||||
<a-select v-model="searchData.wayCode" placeholder="支付方式" default-value="">
|
||||
|
|
@ -113,14 +113,6 @@
|
|||
</div>
|
||||
</template>
|
||||
|
||||
<template slot="orderSlot" slot-scope="{record}">
|
||||
<div class="order-list">
|
||||
<p><span style="color:#729ED5;background:#e7f5f7">支付</span>{{ record.payOrderId }}</p>
|
||||
<p><span style="color:#56cf56;background:#d8eadf">商户</span>{{ record.mchOrderNo }}</p>
|
||||
<p v-if="record.channelOrderNo"><span style="color:#fff;background:#E09C4D">渠道</span>{{ record.channelOrderNo }}</p>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<template slot="opSlot" slot-scope="{record}"> <!-- 操作列插槽 -->
|
||||
<JeepayTableColumns>
|
||||
<a-button type="link" v-if="$access('ENT_PAY_ORDER_VIEW')" @click="detailFunc(record.payOrderId)">详情</a-button>
|
||||
|
|
@ -434,7 +426,7 @@ export default {
|
|||
return req.list(API_URL_PAY_ORDER_LIST, params)
|
||||
},
|
||||
searchFunc: function () { // 点击【查询】按钮点击事件
|
||||
this.$refs.infoTable.refTable(true)
|
||||
this.$refs.infoTable.refTable(false)
|
||||
},
|
||||
// 打开退款弹出框
|
||||
openFunc (record, recordId) {
|
||||
|
|
|
|||
|
|
@ -14,11 +14,11 @@
|
|||
<a-icon slot="suffixIcon" type="sync" />
|
||||
</a-range-picker>
|
||||
</a-form-item>
|
||||
<jeepay-text-up :placeholder="'退款/支付/渠道/商户退款订单号'" :msg="searchData.unionOrderId" v-model="searchData.unionOrderId" />
|
||||
<!-- <jeepay-text-up :placeholder="'退款订单号'" :msg="searchData.refundOrderId" v-model="searchData.refundOrderId" />-->
|
||||
<!-- <jeepay-text-up :placeholder="'商户退款单号'" :msg="searchData.mchRefundNo" v-model="searchData.mchRefundNo" />-->
|
||||
<!-- <jeepay-text-up :placeholder="'支付订单号'" :msg="searchData.payOrderId" v-model="searchData.payOrderId" />-->
|
||||
<!-- <jeepay-text-up :placeholder="'渠道订单号'" :msg="searchData.channelPayOrderNo" v-model="searchData.channelPayOrderNo" />-->
|
||||
<jeepay-text-up :placeholder="'支付/退款列订单号'" :msg="searchData.unionOrderId" v-model="searchData.unionOrderId" />
|
||||
<!-- <jeepay-text-up :placeholder="'退款订单号'" :msg="searchData.refundOrderId" v-model="searchData.refundOrderId" />-->
|
||||
<!-- <jeepay-text-up :placeholder="'商户退款单号'" :msg="searchData.mchRefundNo" v-model="searchData.mchRefundNo" />-->
|
||||
<!-- <jeepay-text-up :placeholder="'支付订单号'" :msg="searchData.payOrderId" v-model="searchData.payOrderId" />-->
|
||||
<!-- <jeepay-text-up :placeholder="'渠道订单号'" :msg="searchData.channelPayOrderNo" v-model="searchData.channelPayOrderNo" />-->
|
||||
<jeepay-text-up :placeholder="'应用AppId'" :msg="searchData.appId" v-model="searchData.appId"/>
|
||||
<a-form-item label="" class="table-head-layout">
|
||||
<a-select v-model="searchData.state" placeholder="退款状态" default-value="">
|
||||
|
|
|
|||
|
|
@ -105,11 +105,11 @@
|
|||
// eslint-disable-next-line no-unused-vars
|
||||
const tableColumns = [
|
||||
{ title: '转账金额', scopedSlots: { customRender: 'transferAmountSlot' } },
|
||||
{ key: 'orderNo', title: '订单号', scopedSlots: { customRender: 'orderSlot' }, width: '260px' },
|
||||
{ key: 'orderNo', title: '订单号', scopedSlots: { customRender: 'orderSlot' }, width: 260 },
|
||||
// { title: '转账订单号', dataIndex: 'transferId' },
|
||||
// { title: '商户转账单号', dataIndex: 'mchOrderNo' },
|
||||
// { title: '渠道订单号', dataIndex: 'channelOrderNo' },
|
||||
{ title: '收款账号', dataIndex: 'accountNo' },
|
||||
{ title: '收款账号', dataIndex: 'accountNo', width: 200 },
|
||||
{ title: '收款人姓名', dataIndex: 'accountName' },
|
||||
{ title: '转账备注', dataIndex: 'transferDesc' },
|
||||
{ title: '状态', scopedSlots: { customRender: 'stateSlot' }, width: 100 },
|
||||
|
|
|
|||
|
|
@ -69,14 +69,18 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="paydemo-type-name article-title" v-show="showJhTitle()">聚合支付</div>
|
||||
<div class="paydemo-type-name article-title" v-show="showQtTitle()">其它支付</div>
|
||||
<div class="paydemo-type-body">
|
||||
<div class="paydemo-type color-change" v-show="appPaywayList.indexOf('WX_JSAPI') >= 0 || appPaywayList.indexOf('ALI_JSAPI') >= 0" @click="changeCurrentWayCode('QR_CASHIER', 'codeImgUrl')" :class="{this:(currentWayCode === 'QR_CASHIER')}">
|
||||
<img src="@/assets/payTestImg/qr_cashier.svg" class="paydemo-type-img"><span class="color-change">聚合扫码(用户扫商家)</span>
|
||||
<img src="@/assets/payTestImg/qr_cashier.svg" class="paydemo-type-img"><span class="color-change">聚合主扫</span>
|
||||
</div>
|
||||
|
||||
<div class="paydemo-type color-change" v-show="appPaywayList.indexOf('WX_BAR') >= 0 || appPaywayList.indexOf('ALI_BAR') >= 0" @click="changeCurrentWayCode('AUTO_BAR', 'codeImgUrl')" :class="{this:(currentWayCode === 'AUTO_BAR')}">
|
||||
<img src="@/assets/payTestImg/auto_bar.svg" class="paydemo-type-img"><span class="color-change">聚合条码(商家扫用户)</span>
|
||||
<img src="@/assets/payTestImg/auto_bar.svg" class="paydemo-type-img"><span class="color-change">聚合被扫</span>
|
||||
</div>
|
||||
|
||||
<div class="paydemo-type color-change" v-show="appPaywayList.indexOf('PP_PC') >= 0" @click="changeCurrentWayCode('PP_PC', 'payurl')" :class="{this:(currentWayCode === 'PP_PC')}">
|
||||
<img src="@/assets/payTestImg/pp_pc.svg" class="paydemo-type-img"><span class="color-change">PayPal支付</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
|
@ -298,8 +302,8 @@ export default {
|
|||
}
|
||||
},
|
||||
// 聚合支付标题显示
|
||||
showJhTitle () {
|
||||
if (this.appPaywayList.toString().indexOf('WX') !== -1 || this.appPaywayList.toString().indexOf('ALI') !== -1) {
|
||||
showQtTitle () {
|
||||
if (this.appPaywayList.toString().indexOf('WX') !== -1 || this.appPaywayList.toString().indexOf('ALI') !== -1 || this.appPaywayList.toString().indexOf('PP_PC') !== -1) {
|
||||
return true
|
||||
} else {
|
||||
return false
|
||||
|
|
|
|||
|
|
@ -187,9 +187,13 @@ export default {
|
|||
if (apiRes.state === 2) {
|
||||
const succModal = that.$infoBox.modalSuccess('转账成功', <div>2s后自动关闭...</div>)
|
||||
setTimeout(() => { succModal.destroy() }, 2000)
|
||||
} else {
|
||||
that.$infoBox.modalError('支付失败', <div><div>错误码:{ apiRes.errCode}</div>
|
||||
} else if (apiRes.state === 1) {
|
||||
that.$infoBox.modalWarning('转账处理中', <div>请前往转账订单列表查看最终状态</div>)
|
||||
} else if (apiRes.state === 3) {
|
||||
that.$infoBox.modalError('转账处理失败', <div><div>错误码:{ apiRes.errCode}</div>
|
||||
<div>错误信息:{ apiRes.errMsg}</div></div>)
|
||||
} else {
|
||||
return this.$message.error('转账异常')
|
||||
}
|
||||
}).catch(() => {
|
||||
that.randomOrderNo() // 刷新订单号
|
||||
|
|
|
|||
Loading…
Reference in New Issue