From 87648e255c28d7c4009168929dd559b7ecc2a318 Mon Sep 17 00:00:00 2001
From: nws <3239709711@qq.com>
Date: Sun, 14 Jan 2024 01:37:56 +0800
Subject: [PATCH] =?UTF-8?q?feat=20=E6=94=AF=E4=BB=98=E5=B9=B3=E5=8F=B0?=
=?UTF-8?q?=E9=85=8D=E7=BD=AE/=E9=80=9A=E9=81=93=E9=85=8D=E7=BD=AE?=
=?UTF-8?q?=E5=AF=B9=E6=8E=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/Basic/src/BasicTitle.vue | 3 +-
.../modules/monitor/login/LoginLogList.vue | 1 -
src/views/modules/system/menu/MenuEdit.vue | 3 -
.../channel/alipay/config/AlipayConfig.api.ts | 4 +-
.../alipay/config/AlipayConfigEdit.vue | 56 +++++---
.../wechat/config/WechatPayConfig.api.ts | 90 ++----------
.../wechat/config/WechatPayConfigEdit.vue | 117 +++++++---------
src/views/payment/order/pay/PayOrder.api.ts | 2 +-
src/views/payment/order/pay/PayOrderInfo.vue | 2 +-
src/views/payment/order/pay/RefundModel.vue | 5 +-
.../payment/order/refund/RefundRecord.api.ts | 2 +-
.../payment/order/refund/RefundRecordInfo.vue | 17 +--
.../payment/record/sync/PaySyncRecord.api.ts | 12 +-
.../payment/record/sync/PaySyncRecordInfo.vue | 18 ++-
.../payment/record/sync/PaySyncRecordList.vue | 4 +-
.../system/platform/PayPlatformConfig.api.ts | 40 ++++++
.../system/platform/PayPlatformConfig.vue | 130 ++++++++++++++++++
17 files changed, 298 insertions(+), 208 deletions(-)
create mode 100644 src/views/payment/system/platform/PayPlatformConfig.api.ts
create mode 100644 src/views/payment/system/platform/PayPlatformConfig.vue
diff --git a/src/components/Basic/src/BasicTitle.vue b/src/components/Basic/src/BasicTitle.vue
index 41ec3d8d..f788374d 100644
--- a/src/components/Basic/src/BasicTitle.vue
+++ b/src/components/Basic/src/BasicTitle.vue
@@ -41,12 +41,11 @@
diff --git a/src/views/payment/channel/alipay/config/AlipayConfig.api.ts b/src/views/payment/channel/alipay/config/AlipayConfig.api.ts
index d46227b7..5730ccb1 100644
--- a/src/views/payment/channel/alipay/config/AlipayConfig.api.ts
+++ b/src/views/payment/channel/alipay/config/AlipayConfig.api.ts
@@ -34,10 +34,10 @@ export function findPayWays() {
* 支付宝配置
*/
export interface AlipayConfig extends BaseEntity {
- // 是否启用
- enable?: boolean
// 支付宝商户appId
appId?: string
+ // 是否启用
+ enable: boolean
// 服务器异步通知页面路径
notifyUrl?: string
// 页面跳转同步通知页面路径
diff --git a/src/views/payment/channel/alipay/config/AlipayConfigEdit.vue b/src/views/payment/channel/alipay/config/AlipayConfigEdit.vue
index cfe9e4aa..ffe25611 100644
--- a/src/views/payment/channel/alipay/config/AlipayConfigEdit.vue
+++ b/src/views/payment/channel/alipay/config/AlipayConfigEdit.vue
@@ -1,5 +1,5 @@
-
+
-
+
-
-
-
-
+
-
-
+
+
+
+
+
+ 异步通知地址
+
+
+
+
+
+ 同步通知地址
+
+
-
+
-
+
-
+
-
+
公钥模式
证书模式
-
+
RSA2秘钥
-
+
-
+
-
+
@@ -148,6 +157,7 @@
import { useUpload } from '/@/hooks/bootx/useUpload'
import { useMessage } from '/@/hooks/web/useMessage'
import Icon from '/@/components/Icon/src/Icon.vue'
+ import BasicTitle from "/@/components/Basic/src/BasicTitle.vue";
const {
initFormEditType,
handleCancel,
@@ -173,6 +183,7 @@
let payWayList = $ref([])
let form = $ref({
appId: '',
+ enable: false,
notifyUrl: '',
returnUrl: '',
serverUrl: '',
@@ -183,7 +194,6 @@
alipayCert: '',
alipayRootCert: '',
privateKey: '',
- expireTime: 15,
payWays: [],
sandbox: false,
remark: '',
@@ -192,9 +202,10 @@
// 校验
const rules = computed(() => {
return {
- // name: [{ required: true, message: '请输入配置名称' }],
appId: [{ required: true, message: '请输入AppId' }],
+ enable: [{ required: true, message: '请选择是否启用' }],
notifyUrl: [{ required: true, message: '请输入异步通知页面地址' }],
+ returnUrl: [{ required: true, message: '请输入同步通知页面地址' }],
serverUrl: [{ required: true, message: '请输入请求网关地址' }],
authType: [{ required: true, message: '请选择认证方式' }],
signType: [{ required: true, message: '请选择加密类型' }],
@@ -205,7 +216,7 @@
privateKey: [{ required: true, message: '请输入支付私钥' }],
sandbox: [{ required: true, message: '请选择是否为沙箱环境' }],
expireTime: [{ required: true, message: '请输入默认超时配置' }],
- payWayList: [{ required: true, message: '请选择支持的支付类型' }],
+ payWays: [{ required: true, message: '请选择支持的支付类型' }],
} as Record
})
// 事件
@@ -242,10 +253,11 @@
...form,
...diffForm(rawForm, form, 'appId', 'alipayPublicKey', 'appCert', 'alipayCert', 'alipayRootCert', 'privateKey'),
})
+ confirmLoading.value = false
+ createMessage.success('保存成功')
+ handleCancel()
+ emits('ok')
})
- confirmLoading.value = false
- handleCancel()
- emits('ok')
}
/**
* 文件上传
diff --git a/src/views/payment/channel/wechat/config/WechatPayConfig.api.ts b/src/views/payment/channel/wechat/config/WechatPayConfig.api.ts
index 562d6682..1a96aff5 100644
--- a/src/views/payment/channel/wechat/config/WechatPayConfig.api.ts
+++ b/src/views/payment/channel/wechat/config/WechatPayConfig.api.ts
@@ -1,43 +1,13 @@
import { defHttp } from '/@/utils/http/axios'
-import { PageResult, Result } from '/#/axios'
+import { Result } from '/#/axios'
import { BaseEntity, KeyValue } from '/#/web'
-/**
- * 分页
- */
-export function page(params) {
- return defHttp.get>>({
- url: '/wechat/pay/page',
- params,
- })
-}
-
-/**
- * 查询全部
- */
-export function findAll() {
- return defHttp.get>({
- url: '/wechat/pay/findAll',
- })
-}
-
/**
* 获取单条
*/
-export function get(id) {
+export function getConfig() {
return defHttp.get>({
- url: '/wechat/pay/findById',
- params: { id },
- })
-}
-
-/**
- * 添加
- */
-export function add(obj: WechatPayConfig) {
- return defHttp.post({
- url: '/wechat/pay/add',
- data: obj,
+ url: '/wechat/pay/config/getConfig',
})
}
@@ -46,47 +16,17 @@ export function add(obj: WechatPayConfig) {
*/
export function update(obj: WechatPayConfig) {
return defHttp.post({
- url: '/wechat/pay/update',
+ url: '/wechat/pay/config/update',
data: obj,
})
}
-/**
- * 删除
- */
-export function del(id) {
- return defHttp.delete({
- url: '/wechat/pay/delete',
- params: { id },
- })
-}
-
/**
* 获取微信支持支付方式
*/
export function findPayWayList() {
return defHttp.get>({
- url: '/wechat/pay/findPayWayList',
- })
-}
-
-/**
- * 启用指定的微信配置
- */
-export function setUpActivity(id) {
- return defHttp.post({
- url: '/wechat/pay/setUpActivity',
- params: { id },
- })
-}
-
-/**
- * 清除指定的微信配置
- */
-export function clearActivity(id) {
- return defHttp.post({
- url: '/wechat/pay/clearActivity',
- params: { id },
+ url: '/wechat/pay/config/findPayWays',
})
}
@@ -94,18 +34,12 @@ export function clearActivity(id) {
* 微信支付配置
*/
export interface WechatPayConfig extends BaseEntity {
- // 名称
- name?: string
- // 商户编码
- mchCode?: string
- // 商户应用编码
- mchAppCode?: string
// 微信应用AppId
wxAppId?: string
// 微信商户号
wxMchId?: string
- // 服务商应用编号
- apiVersion?: string
+ // 是否启用
+ enable: boolean
// 商户平台「API安全」中的 APIv2 密钥
apiKeyV2?: string
// 商户平台「API安全」中的 APIv3 密钥
@@ -120,18 +54,10 @@ export interface WechatPayConfig extends BaseEntity {
notifyUrl?: string
// 页面跳转同步通知页面路径
returnUrl?: string
- // 支持的支付类型
- payWays?: string
// 是否沙箱环境
sandbox?: boolean
- // 超时配置
- expireTime?: number
// 支持的支付类型
- payWayList?: KeyValue[]
- // 是否启用
- activity?: boolean
- // 状态
- state?: string
+ payWays?: string[]
// 备注
remark?: string
}
diff --git a/src/views/payment/channel/wechat/config/WechatPayConfigEdit.vue b/src/views/payment/channel/wechat/config/WechatPayConfigEdit.vue
index f7655146..875a858e 100644
--- a/src/views/payment/channel/wechat/config/WechatPayConfigEdit.vue
+++ b/src/views/payment/channel/wechat/config/WechatPayConfigEdit.vue
@@ -1,5 +1,5 @@
-
+
-
-
- Api_V2
- Api_V3
-
-
-
-
+
+
-
-
+
+
+ 异步通知地址
+
+
-
-
+
+
+ 同步通知地址
+
+
-
+
-
- {{ form.activity ? '启用' : '未启用' }}
-
-
+
+
+ p12证书
+
()
// 表单
const formRef = $ref()
- let rawForm
+ let rawForm: any
let form = $ref({
id: null,
+ enable: false,
wxMchId: '',
wxAppId: '',
appSecret: '',
p12: null,
apiKeyV2: '',
apiKeyV3: '',
- apiVersion: 'apiV2',
notifyUrl: '',
returnUrl: '',
- expireTime: 15,
- payWayList: [],
- // sandbox: false,
+ payWays: [],
+ sandbox: false,
remark: '',
})
// 校验
@@ -160,14 +153,14 @@
wxMchId: [{ required: true, message: '请输入商户号' }],
wxAppId: [{ required: true, message: '请输入应用编号' }],
appSecret: [{ required: true, message: '请输入AppSecret' }],
+ enable: [{ required: true, message: '请选择是否启用' }],
notifyUrl: [{ required: true, message: '请输入异步通知页面地址' }],
returnUrl: [{ required: true, message: '请输入同步通知页面地址' }],
apiVersion: [{ required: true, message: '请选择支付API版本' }],
- apiKeyV2: [{ required: form.apiVersion === 'apiV2', message: '请输入V2秘钥' }],
- apiKeyV3: [{ required: form.apiVersion === 'apiV3', message: '请输入V3秘钥' }],
- p12: [{ required: form.apiVersion === 'apiV3', message: '请上传p12证书' }],
- expireTime: [{ required: true, message: '请输入默认超时配置' }],
- payWayList: [{ required: true, message: '请选择支持的支付类型' }],
+ apiKeyV2: [{ required: true, message: '请输入V2秘钥' }],
+ // apiKeyV3: [{ required: true, message: '请输入V3秘钥' }],
+ // p12: [{ required: true, message: '请上传p12证书' }],
+ payWays: [{ required: true, message: '请选择支持的支付类型' }],
} as Record
})
@@ -175,45 +168,37 @@
// 事件
const emits = defineEmits(['ok'])
- // 入口
- function init(record) {
+ /**
+ * 入口
+ */
+ function init() {
+ visible.value = true
+ resetForm()
+ getInfo()
+ }
+ // 获取信息
+ function getInfo() {
+ confirmLoading.value = true
findPayWayList().then(({ data }) => {
payWayList = data
})
- editType = record.configId ? FormEditType.Edit : FormEditType.Add
- initFormEditType(editType)
- resetForm()
- form.mchCode = record.mchCode
- form.mchAppCode = record.mchAppCode
- getInfo(record.configId, editType)
- }
- // 获取信息
- function getInfo(id, editType: FormEditType) {
- if ([FormEditType.Edit].includes(editType)) {
- confirmLoading.value = true
- get(id).then(({ data }) => {
- rawForm = { ...data }
- form = data
- confirmLoading.value = false
- })
- } else {
+ getConfig().then(({ data }) => {
+ rawForm = { ...data }
+ form = data
confirmLoading.value = false
- }
+ })
}
// 保存
function handleOk() {
formRef?.validate().then(async () => {
confirmLoading.value = true
- if (formEditType.value === FormEditType.Add) {
- await add(form)
- } else if (formEditType.value === FormEditType.Edit) {
- await update({
- ...form,
- ...diffForm(rawForm, form, 'wxMchId', 'wxAppId', 'p12', 'appSecret', 'apiKeyV2', 'apiKeyV3', 'keyPem', 'certPem'),
- })
- }
+ await update({
+ ...form,
+ ...diffForm(rawForm, form, 'wxMchId', 'wxAppId', 'p12', 'appSecret', 'apiKeyV2', 'apiKeyV3'),
+ })
confirmLoading.value = false
handleCancel()
+ createMessage.success('保存成功')
emits('ok')
})
}
diff --git a/src/views/payment/order/pay/PayOrder.api.ts b/src/views/payment/order/pay/PayOrder.api.ts
index 94f52d8c..cb88c74f 100644
--- a/src/views/payment/order/pay/PayOrder.api.ts
+++ b/src/views/payment/order/pay/PayOrder.api.ts
@@ -84,7 +84,7 @@ export interface PayOrder extends BaseEntity {
// 可退款信息
refundableInfos?: RefundableInfo[]
// 支付状态
- payStatus?: number
+ status?: number
// 支付时间
payTime?: string
// 过期时间
diff --git a/src/views/payment/order/pay/PayOrderInfo.vue b/src/views/payment/order/pay/PayOrderInfo.vue
index c08caf55..490b9724 100644
--- a/src/views/payment/order/pay/PayOrderInfo.vue
+++ b/src/views/payment/order/pay/PayOrderInfo.vue
@@ -29,7 +29,7 @@
{{ order.refundableBalance }}
- {{ dictConvert('PayStatus', order.payStatus) }}
+ {{ dictConvert('PayStatus', order.status) }}
{{ order.asyncPay ? '是' : '否' }}
diff --git a/src/views/payment/order/pay/RefundModel.vue b/src/views/payment/order/pay/RefundModel.vue
index c51f8679..155c43ba 100644
--- a/src/views/payment/order/pay/RefundModel.vue
+++ b/src/views/payment/order/pay/RefundModel.vue
@@ -15,7 +15,7 @@
-
+
@@ -36,7 +36,7 @@
import BasicModal from '/@/components/Modal/src/BasicModal.vue'
import { FormInstance } from 'ant-design-vue/lib/form'
import { useMessage } from '/@/hooks/web/useMessage'
- import { nextTick } from "vue";
+ import { nextTick } from 'vue'
const {
initFormEditType,
@@ -76,7 +76,6 @@
getOrder(id).then(({ data }) => {
const { id, refundableInfos } = data
form.paymentId = id as string
- console.log(data)
form.refundChannels = [...(refundableInfos as RefundableInfo[])]
confirmLoading.value = false
})
diff --git a/src/views/payment/order/refund/RefundRecord.api.ts b/src/views/payment/order/refund/RefundRecord.api.ts
index bdce4101..29750fbf 100644
--- a/src/views/payment/order/refund/RefundRecord.api.ts
+++ b/src/views/payment/order/refund/RefundRecord.api.ts
@@ -53,7 +53,7 @@ export interface RefundRecord extends BaseEntity {
// 可退款信息
refundableInfo?: RefundableInfo[]
// 退款状态
- refundStatus?: number
+ status?: number
// 支付时间
refundTime?: string
// 客户ip
diff --git a/src/views/payment/order/refund/RefundRecordInfo.vue b/src/views/payment/order/refund/RefundRecordInfo.vue
index fbdc98f7..b3bb2968 100644
--- a/src/views/payment/order/refund/RefundRecordInfo.vue
+++ b/src/views/payment/order/refund/RefundRecordInfo.vue
@@ -31,7 +31,7 @@
{{ form.refundTime }}
- {{ dictConvert('PayRefundStatus', form.refundStatus) }}
+ {{ dictConvert('PayRefundStatus', form.status) }}
{{ form.clientIp }}
@@ -77,20 +77,7 @@
const { dictConvert } = useDict()
// 表单
const formRef = $ref()
- let form = $ref({
- id: null,
- paymentId: '',
- refundRequestNo: '',
- userId: '',
- title: '',
- amount: 0,
- refundableInfo: [],
- refundStatus: 0,
- refundTime: '',
- clientIp: '',
- errorCode: '',
- errorMsg: '',
- })
+ let form = $ref({})
// 事件
const emits = defineEmits(['ok'])
diff --git a/src/views/payment/record/sync/PaySyncRecord.api.ts b/src/views/payment/record/sync/PaySyncRecord.api.ts
index 1970210b..43341aae 100644
--- a/src/views/payment/record/sync/PaySyncRecord.api.ts
+++ b/src/views/payment/record/sync/PaySyncRecord.api.ts
@@ -34,14 +34,22 @@ export interface SyncRecord extends BaseEntity {
asyncChannel?: string
// 通知消息
syncInfo?: string
- // 同步状态
- status?: string
+ // 网关返回状态
+ gatewayStatus?: string
// 是否进行修复
repairOrder?: boolean
+ // 支付单修复前状态
+ beforeStatus?: string
+ // 支付单修复后状态
+ afterStatus?: string
// 错误消息
errorMsg?: string
// 同步时间
syncTime?: string
+ // 终端ip
+ clientIp?: string
+ // 请求链路ID
+ reqId?: string
}
/**
* 支付同步结果
diff --git a/src/views/payment/record/sync/PaySyncRecordInfo.vue b/src/views/payment/record/sync/PaySyncRecordInfo.vue
index 4a50ebd0..7ad55ac4 100644
--- a/src/views/payment/record/sync/PaySyncRecordInfo.vue
+++ b/src/views/payment/record/sync/PaySyncRecordInfo.vue
@@ -20,20 +20,24 @@
{{ dictConvert('AsyncPayChannel', form.asyncChannel) }}
-
+
-
+
+ {{ dictConvert('PaySyncResult', form.gatewayStatus) }}
+
+
{{ form.repairOrder ? '是' : '否' }}
-
- {{ form.errorMsg }}
-
{{ dictConvert('PayStatus', form.afterStatus) }}
{{ form.syncTime }}
+
+
+ {{ form.errorMsg }}
+
{{ form.clientIp }}
@@ -53,6 +57,8 @@
import { BasicModal } from '/@/components/Modal'
import { useDict } from '/@/hooks/bootx/useDict'
import JsonPreview from '/@/components/CodeEditor/src/json-preview/JsonPreview.vue'
+ import XEUtils from 'xe-utils'
+
const {
initFormEditType,
handleCancel,
@@ -78,6 +84,8 @@
confirmLoading.value = true
get(id).then(({ data }) => {
form = data
+ console.log(XEUtils.toStringJSON(data.syncInfo))
+ console.log(JSON.parse(data.syncInfo))
confirmLoading.value = false
})
}
diff --git a/src/views/payment/record/sync/PaySyncRecordList.vue b/src/views/payment/record/sync/PaySyncRecordList.vue
index b21b1007..369ee7aa 100644
--- a/src/views/payment/record/sync/PaySyncRecordList.vue
+++ b/src/views/payment/record/sync/PaySyncRecordList.vue
@@ -14,9 +14,9 @@
{{ dictConvert('AsyncPayChannel', row.asyncChannel) }}
-
+
- {{ dictConvert('PaySyncStatus', row.status) }}
+ {{ dictConvert('PaySyncStatus', row.gatewayStatus) }}
diff --git a/src/views/payment/system/platform/PayPlatformConfig.api.ts b/src/views/payment/system/platform/PayPlatformConfig.api.ts
new file mode 100644
index 00000000..654d9ea7
--- /dev/null
+++ b/src/views/payment/system/platform/PayPlatformConfig.api.ts
@@ -0,0 +1,40 @@
+import { defHttp } from '/@/utils/http/axios'
+import { Result } from '/#/axios'
+import { BaseEntity } from '/#/web'
+
+/**
+ * 获取平台配置项
+ */
+export function getConfig() {
+ return defHttp.get>({
+ url: '/platform/config/getConfig',
+ })
+}
+
+/**
+ * 更新平台配置
+ */
+export function update(param: PayPlatformConfig) {
+ return defHttp.post>({
+ url: '/platform/config/update',
+ data: param,
+ })
+}
+
+/**
+ * 支付平台配置
+ */
+export interface PayPlatformConfig extends BaseEntity {
+ // 网站地址
+ websiteUrl?: string
+ // 签名方式
+ signType?: string
+ // 签名秘钥
+ signSecret?: string
+ // 异步支付通知地址
+ notifyUrl?: string
+ // 同步支付通知地址
+ returnUrl?: string
+ // 订单默认超时时间(分钟)
+ orderTimeout?: number
+}
diff --git a/src/views/payment/system/platform/PayPlatformConfig.vue b/src/views/payment/system/platform/PayPlatformConfig.vue
new file mode 100644
index 00000000..4744834d
--- /dev/null
+++ b/src/views/payment/system/platform/PayPlatformConfig.vue
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MD5
+ SHA256
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 异步支付通知地址
+
+
+
+
+
+
+
+
+
+ 同步支付通知地址
+
+
+
+
+
+
+
+
+ 取消
+ 更新
+ 编辑信息
+
+
+
+
+
+
+
+
+
+
+