diff --git a/apps/daxpay-admin/src/api/payment/develop/developGateway.api.ts b/apps/daxpay-admin/src/api/payment/develop/developGateway.api.ts index e5ac391b1..3b3ed6b3f 100644 --- a/apps/daxpay-admin/src/api/payment/develop/developGateway.api.ts +++ b/apps/daxpay-admin/src/api/payment/develop/developGateway.api.ts @@ -60,6 +60,8 @@ export interface GatewayPrePayParam { expiredTime?: string; /** 门店号 */ storeNo?: string; + /** 请求ID(商户生成, 审计索引, 必填) */ + reqId?: string; /** 随机串 */ nonceStr?: string; /** 请求时间(北京时间 yyyy-MM-dd HH:mm:ss) */ diff --git a/apps/daxpay-admin/src/api/payment/develop/developTrade.api.ts b/apps/daxpay-admin/src/api/payment/develop/developTrade.api.ts index af29272a8..15a2570c4 100644 --- a/apps/daxpay-admin/src/api/payment/develop/developTrade.api.ts +++ b/apps/daxpay-admin/src/api/payment/develop/developTrade.api.ts @@ -86,6 +86,8 @@ export interface PayParam { expiredTime?: string; /** 客户端 IP(可选, 未传时由 unipay 从 HTTP 请求提取) */ clientIp?: string; + /** 请求ID(商户生成, 审计索引, 必填) */ + reqId?: string; /** 随机串 */ nonceStr?: string; /** 请求时间(北京时间 yyyy-MM-dd HH:mm:ss) */ diff --git a/apps/daxpay-admin/src/api/payment/unipay/unipay-request.ts b/apps/daxpay-admin/src/api/payment/unipay/unipay-request.ts index 8005ce389..dc9a5bf7a 100644 --- a/apps/daxpay-admin/src/api/payment/unipay/unipay-request.ts +++ b/apps/daxpay-admin/src/api/payment/unipay/unipay-request.ts @@ -21,6 +21,8 @@ export interface DaxResult { data?: T; sign?: string; resTime?: string; + /** 请求ID(回显) */ + reqId?: string; traceId?: string; } diff --git a/apps/daxpay-admin/src/api/payment/unipay/unipay-trade.api.ts b/apps/daxpay-admin/src/api/payment/unipay/unipay-trade.api.ts index f008cb2ce..30292ab26 100644 --- a/apps/daxpay-admin/src/api/payment/unipay/unipay-trade.api.ts +++ b/apps/daxpay-admin/src/api/payment/unipay/unipay-trade.api.ts @@ -16,7 +16,7 @@ import { unipayPost } from './unipay-request'; * 统一支付下单 * * POST /unipay/pay - * 请求体须含完整商户签名字段(reqTime/nonceStr/sign 等) + * 请求体须含完整商户签名字段(reqId/reqTime/nonceStr/sign 等) */ export function uniPay(data: PayParam): Promise> { return unipayPost('/unipay/pay', data); @@ -26,7 +26,7 @@ export function uniPay(data: PayParam): Promise> { * 网关预下单 * * POST /unipay/gateway/pre-pay - * 请求体须含完整商户签名字段(reqTime/nonceStr/sign 等) + * 请求体须含完整商户签名字段(reqId/reqTime/nonceStr/sign 等) */ export function uniGatewayPrePay(data: GatewayPrePayParam): Promise> { return unipayPost('/unipay/gateway/pre-pay', data); diff --git a/apps/daxpay-admin/src/api/system/log/unipay-api-log.api.ts b/apps/daxpay-admin/src/api/system/log/unipay-api-log.api.ts new file mode 100644 index 000000000..e1c6c7033 --- /dev/null +++ b/apps/daxpay-admin/src/api/system/log/unipay-api-log.api.ts @@ -0,0 +1,65 @@ +import type { BaseEntity, PageResult, Result } from '#/types/web'; + +import { defHttp } from '#/api/request'; + +/** + * 支付接口日志 API + */ +export const UnipayApiLogApi = { + /** + * 分页查询支付接口日志 + */ + page(params: any): Promise>> { + return defHttp.get({ url: '/log/unipay/page', params }); + }, + /** + * 获取支付接口日志详情 + */ + findById(id: string): Promise> { + return defHttp.get({ url: '/log/unipay/get', params: { id } }); + }, + /** + * 清除指定天数之前的支付接口日志 + */ + deleteByDay(deleteDay: number): Promise> { + return defHttp.post({ url: '/log/unipay/delete-by-day', params: { deleteDay } }); + }, +}; + +/** + * 支付接口日志 + */ +export interface UnipayApiLog extends BaseEntity { + /** 商户号 */ + mchNo?: string; + /** 请求ID */ + reqId?: string; + /** 接口路径 */ + apiPath?: string; + /** 接口标题 */ + apiTitle?: string; + /** HTTP 方法 */ + requestMethod?: string; + /** 商户声明客户端 IP */ + clientIp?: string; + /** 真实接入 IP */ + requestIp?: string; + /** 接入 IP 归属地 */ + requestLocation?: string; + /** 是否成功 */ + success?: boolean; + /** 业务错误码 */ + errorCode?: number; + /** 错误信息 */ + errorMsg?: string; + /** 耗时毫秒 */ + durationMs?: number; + /** 链路追踪 ID */ + traceId?: string; + /** 请求参数 */ + reqParam?: string; + /** 响应体 */ + resBody?: string; + /** 操作时间 */ + operateTime?: string; +} diff --git a/apps/daxpay-admin/src/constants/perm-codes.ts b/apps/daxpay-admin/src/constants/perm-codes.ts index 1da428008..f7f4e388c 100644 --- a/apps/daxpay-admin/src/constants/perm-codes.ts +++ b/apps/daxpay-admin/src/constants/perm-codes.ts @@ -220,6 +220,10 @@ export const PermCodes = { VIEW: 'system:log:operate:view', MANAGE: 'system:log:operate:manage', }, + Unipay: { + VIEW: 'system:log:unipay:view', + MANAGE: 'system:log:unipay:manage', + }, }, Notify: { VIEW: 'system:notify:notice:view', diff --git a/apps/daxpay-admin/src/locales/langs/en-US/system/log/unipay-api-log.json b/apps/daxpay-admin/src/locales/langs/en-US/system/log/unipay-api-log.json new file mode 100644 index 000000000..2c4fbc863 --- /dev/null +++ b/apps/daxpay-admin/src/locales/langs/en-US/system/log/unipay-api-log.json @@ -0,0 +1,27 @@ +{ + "mchNo": "Merchant No.", + "reqId": "Request ID", + "apiPath": "API Path", + "apiTitle": "API Name", + "requestMethod": "HTTP Method", + "clientIp": "Client IP (declared)", + "requestIp": "Request IP", + "requestLocation": "Location", + "status": "Status", + "errorCode": "Error Code", + "errorMsg": "Error Message", + "durationMs": "Duration (ms)", + "traceId": "Trace ID", + "reqParam": "Request Body", + "resBody": "Response Body", + "operateTime": "Time", + "inputMchNo": "Enter merchant no.", + "inputReqId": "Enter request ID", + "inputApiPath": "Enter API path", + "inputTraceId": "Enter trace ID", + "detailTitle": "Payment API Log Detail", + "selectCleanDay": "Clear logs older than", + "cleanWarning": "Warning", + "cleanConfirm": "Clear payment API logs older than the selected days? This cannot be undone.", + "cleanSuccess": "Logs cleared successfully" +} diff --git a/apps/daxpay-admin/src/locales/langs/id-ID/system/log/unipay-api-log.json b/apps/daxpay-admin/src/locales/langs/id-ID/system/log/unipay-api-log.json new file mode 100644 index 000000000..a9efb5d74 --- /dev/null +++ b/apps/daxpay-admin/src/locales/langs/id-ID/system/log/unipay-api-log.json @@ -0,0 +1,27 @@ +{ + "mchNo": "Merchant No.", + "reqId": "Request ID", + "apiPath": "API Path", + "apiTitle": "API Name", + "requestMethod": "HTTP Method", + "clientIp": "Client IP (declared)", + "requestIp": "Request IP", + "requestLocation": "Location", + "status": "Status", + "errorCode": "Error Code", + "errorMsg": "Error Message", + "durationMs": "Duration (ms)", + "traceId": "Trace ID", + "reqParam": "Request Body", + "resBody": "Response Body", + "operateTime": "Time", + "inputMchNo": "Enter merchant no.", + "inputReqId": "Masukkan request ID", + "inputApiPath": "Enter API path", + "inputTraceId": "Enter trace ID", + "detailTitle": "Payment API Log Detail", + "selectCleanDay": "Clear logs older than", + "cleanWarning": "Warning", + "cleanConfirm": "Clear payment API logs older than the selected days? This cannot be undone.", + "cleanSuccess": "Logs cleared successfully" +} diff --git a/apps/daxpay-admin/src/locales/langs/ja-JP/system/log/unipay-api-log.json b/apps/daxpay-admin/src/locales/langs/ja-JP/system/log/unipay-api-log.json new file mode 100644 index 000000000..935a837a9 --- /dev/null +++ b/apps/daxpay-admin/src/locales/langs/ja-JP/system/log/unipay-api-log.json @@ -0,0 +1,27 @@ +{ + "mchNo": "加盟店番号", + "reqId": "リクエストID", + "apiPath": "APIパス", + "apiTitle": "API名", + "requestMethod": "HTTPメソッド", + "clientIp": "申告クライアントIP", + "requestIp": "接続IP", + "requestLocation": "接続地域", + "status": "状態", + "errorCode": "エラーコード", + "errorMsg": "エラーメッセージ", + "durationMs": "所要時間(ms)", + "traceId": "トレースID", + "reqParam": "リクエスト", + "resBody": "レスポンス", + "operateTime": "呼び出し時刻", + "inputMchNo": "加盟店番号を入力", + "inputReqId": "リクエストIDを入力", + "inputApiPath": "APIパスを入力", + "inputTraceId": "トレースIDを入力", + "detailTitle": "決済APIログ詳細", + "selectCleanDay": "削除する期間", + "cleanWarning": "警告", + "cleanConfirm": "指定日数より前の決済APIログを削除します。元に戻せません。", + "cleanSuccess": "ログを削除しました" +} diff --git a/apps/daxpay-admin/src/locales/langs/ko-KR/system/log/unipay-api-log.json b/apps/daxpay-admin/src/locales/langs/ko-KR/system/log/unipay-api-log.json new file mode 100644 index 000000000..fef1a367a --- /dev/null +++ b/apps/daxpay-admin/src/locales/langs/ko-KR/system/log/unipay-api-log.json @@ -0,0 +1,27 @@ +{ + "mchNo": "가맹점 번호", + "reqId": "요청 ID", + "apiPath": "API 경로", + "apiTitle": "API 이름", + "requestMethod": "요청 방식", + "clientIp": "가맹점 선언 IP", + "requestIp": "접속 IP", + "requestLocation": "접속 지역", + "status": "호출 상태", + "errorCode": "오류 코드", + "errorMsg": "오류 메시지", + "durationMs": "소요 시간(ms)", + "traceId": "추적 ID", + "reqParam": "요청 파라미터", + "resBody": "응답 본문", + "operateTime": "호출 시간", + "inputMchNo": "가맹점 번호 입력", + "inputReqId": "요청 ID 입력", + "inputApiPath": "API 경로 입력", + "inputTraceId": "추적 ID 입력", + "detailTitle": "결제 API 로그 상세", + "selectCleanDay": "삭제 기간 선택", + "cleanWarning": "경고", + "cleanConfirm": "지정 일수 이전의 결제 API 로그를 삭제합니다. 되돌릴 수 없습니다.", + "cleanSuccess": "로그 삭제 완료" +} diff --git a/apps/daxpay-admin/src/locales/langs/ms-MY/system/log/unipay-api-log.json b/apps/daxpay-admin/src/locales/langs/ms-MY/system/log/unipay-api-log.json new file mode 100644 index 000000000..a9efb5d74 --- /dev/null +++ b/apps/daxpay-admin/src/locales/langs/ms-MY/system/log/unipay-api-log.json @@ -0,0 +1,27 @@ +{ + "mchNo": "Merchant No.", + "reqId": "Request ID", + "apiPath": "API Path", + "apiTitle": "API Name", + "requestMethod": "HTTP Method", + "clientIp": "Client IP (declared)", + "requestIp": "Request IP", + "requestLocation": "Location", + "status": "Status", + "errorCode": "Error Code", + "errorMsg": "Error Message", + "durationMs": "Duration (ms)", + "traceId": "Trace ID", + "reqParam": "Request Body", + "resBody": "Response Body", + "operateTime": "Time", + "inputMchNo": "Enter merchant no.", + "inputReqId": "Masukkan request ID", + "inputApiPath": "Enter API path", + "inputTraceId": "Enter trace ID", + "detailTitle": "Payment API Log Detail", + "selectCleanDay": "Clear logs older than", + "cleanWarning": "Warning", + "cleanConfirm": "Clear payment API logs older than the selected days? This cannot be undone.", + "cleanSuccess": "Logs cleared successfully" +} diff --git a/apps/daxpay-admin/src/locales/langs/th-TH/system/log/unipay-api-log.json b/apps/daxpay-admin/src/locales/langs/th-TH/system/log/unipay-api-log.json new file mode 100644 index 000000000..c7120f4fc --- /dev/null +++ b/apps/daxpay-admin/src/locales/langs/th-TH/system/log/unipay-api-log.json @@ -0,0 +1,27 @@ +{ + "mchNo": "Merchant No.", + "reqId": "Request ID", + "apiPath": "API Path", + "apiTitle": "API Name", + "requestMethod": "HTTP Method", + "clientIp": "Client IP (declared)", + "requestIp": "Request IP", + "requestLocation": "Location", + "status": "Status", + "errorCode": "Error Code", + "errorMsg": "Error Message", + "durationMs": "Duration (ms)", + "traceId": "Trace ID", + "reqParam": "Request Body", + "resBody": "Response Body", + "operateTime": "Time", + "inputMchNo": "Enter merchant no.", + "inputReqId": "กรอก Request ID", + "inputApiPath": "Enter API path", + "inputTraceId": "Enter trace ID", + "detailTitle": "Payment API Log Detail", + "selectCleanDay": "Clear logs older than", + "cleanWarning": "Warning", + "cleanConfirm": "Clear payment API logs older than the selected days? This cannot be undone.", + "cleanSuccess": "Logs cleared successfully" +} diff --git a/apps/daxpay-admin/src/locales/langs/vi-VN/system/log/unipay-api-log.json b/apps/daxpay-admin/src/locales/langs/vi-VN/system/log/unipay-api-log.json new file mode 100644 index 000000000..61b4f357a --- /dev/null +++ b/apps/daxpay-admin/src/locales/langs/vi-VN/system/log/unipay-api-log.json @@ -0,0 +1,27 @@ +{ + "mchNo": "Mã thương nhân", + "reqId": "Request ID", + "apiPath": "Đường dẫn API", + "apiTitle": "Tên API", + "requestMethod": "HTTP Method", + "clientIp": "Client IP (declared)", + "requestIp": "Request IP", + "requestLocation": "Location", + "status": "Trạng thái", + "errorCode": "Error Code", + "errorMsg": "Error Message", + "durationMs": "Duration (ms)", + "traceId": "Trace ID", + "reqParam": "Request Body", + "resBody": "Response Body", + "operateTime": "Time", + "inputMchNo": "Enter merchant no.", + "inputReqId": "Nhập request ID", + "inputApiPath": "Enter API path", + "inputTraceId": "Enter trace ID", + "detailTitle": "Chi tiết nhật ký API thanh toán", + "selectCleanDay": "Clear logs older than", + "cleanWarning": "Warning", + "cleanConfirm": "Clear payment API logs older than the selected days? This cannot be undone.", + "cleanSuccess": "Logs cleared successfully" +} diff --git a/apps/daxpay-admin/src/locales/langs/zh-CN/system/log/unipay-api-log.json b/apps/daxpay-admin/src/locales/langs/zh-CN/system/log/unipay-api-log.json new file mode 100644 index 000000000..425dddb78 --- /dev/null +++ b/apps/daxpay-admin/src/locales/langs/zh-CN/system/log/unipay-api-log.json @@ -0,0 +1,27 @@ +{ + "mchNo": "商户号", + "reqId": "请求ID", + "apiPath": "接口路径", + "apiTitle": "接口名称", + "requestMethod": "请求方式", + "clientIp": "商户声明IP", + "requestIp": "接入IP", + "requestLocation": "接入地点", + "status": "调用状态", + "errorCode": "错误码", + "errorMsg": "错误提示", + "durationMs": "耗时(ms)", + "traceId": "追踪ID", + "reqParam": "请求参数", + "resBody": "响应内容", + "operateTime": "调用时间", + "inputMchNo": "请输入商户号", + "inputReqId": "请输入请求ID", + "inputApiPath": "请输入接口路径", + "inputTraceId": "请输入追踪ID", + "detailTitle": "支付接口日志详情", + "selectCleanDay": "清除多久前的日志", + "cleanWarning": "警告", + "cleanConfirm": "是否清除指定日期前的支付接口日志,该操作不可撤回", + "cleanSuccess": "清理日志成功" +} diff --git a/apps/daxpay-admin/src/locales/langs/zh-HK/system/log/unipay-api-log.json b/apps/daxpay-admin/src/locales/langs/zh-HK/system/log/unipay-api-log.json new file mode 100644 index 000000000..14f33c975 --- /dev/null +++ b/apps/daxpay-admin/src/locales/langs/zh-HK/system/log/unipay-api-log.json @@ -0,0 +1,27 @@ +{ + "mchNo": "商户号", + "reqId": "請求ID", + "apiPath": "接口路径", + "apiTitle": "接口名称", + "requestMethod": "请求方式", + "clientIp": "商户声明IP", + "requestIp": "接入IP", + "requestLocation": "接入地点", + "status": "调用状态", + "errorCode": "错误码", + "errorMsg": "错误提示", + "durationMs": "耗时(ms)", + "traceId": "追踪ID", + "reqParam": "请求参数", + "resBody": "响应内容", + "operateTime": "调用时间", + "inputMchNo": "请输入商户号", + "inputReqId": "請輸入請求ID", + "inputApiPath": "请输入接口路径", + "inputTraceId": "请输入追踪ID", + "detailTitle": "支付接口日志详情", + "selectCleanDay": "清除多久前的日志", + "cleanWarning": "警告", + "cleanConfirm": "是否清除指定日期前的支付接口日志,该操作不可撤回", + "cleanSuccess": "清理日志成功" +} diff --git a/apps/daxpay-admin/src/locales/langs/zh-TW/system/log/unipay-api-log.json b/apps/daxpay-admin/src/locales/langs/zh-TW/system/log/unipay-api-log.json new file mode 100644 index 000000000..142f99a20 --- /dev/null +++ b/apps/daxpay-admin/src/locales/langs/zh-TW/system/log/unipay-api-log.json @@ -0,0 +1,27 @@ +{ + "mchNo": "商戶號", + "reqId": "請求ID", + "apiPath": "介面路徑", + "apiTitle": "介面名稱", + "requestMethod": "請求方式", + "clientIp": "商戶聲明IP", + "requestIp": "接入IP", + "requestLocation": "接入地點", + "status": "呼叫狀態", + "errorCode": "錯誤碼", + "errorMsg": "錯誤提示", + "durationMs": "耗時(ms)", + "traceId": "追蹤ID", + "reqParam": "請求參數", + "resBody": "回應內容", + "operateTime": "呼叫時間", + "inputMchNo": "請輸入商戶號", + "inputReqId": "請輸入請求ID", + "inputApiPath": "請輸入介面路徑", + "inputTraceId": "請輸入追蹤ID", + "detailTitle": "支付介面日誌詳情", + "selectCleanDay": "清除多久前的日誌", + "cleanWarning": "警告", + "cleanConfirm": "是否清除指定日期前的支付介面日誌,該操作不可撤回", + "cleanSuccess": "清理日誌成功" +} diff --git a/apps/daxpay-admin/src/locales/menu-titles/en-US.json b/apps/daxpay-admin/src/locales/menu-titles/en-US.json index d130ed86f..3aa78cc85 100644 --- a/apps/daxpay-admin/src/locales/menu-titles/en-US.json +++ b/apps/daxpay-admin/src/locales/menu-titles/en-US.json @@ -16,6 +16,7 @@ "menu.demos": "Demos", "menu.dashboard": "Dashboard", "menu.system.log.operate": "Operate Log", + "menu.system.log.unipay": "Payment API Log", "menu.platform": "Payment Management", "menu.system.log.login": "Login Log", "menu.dashboard.workspace": "Workspace", diff --git a/apps/daxpay-admin/src/locales/menu-titles/id-ID.json b/apps/daxpay-admin/src/locales/menu-titles/id-ID.json index cfba3f68d..a4e4dc2f6 100644 --- a/apps/daxpay-admin/src/locales/menu-titles/id-ID.json +++ b/apps/daxpay-admin/src/locales/menu-titles/id-ID.json @@ -16,6 +16,7 @@ "menu.demos": "Demo", "menu.dashboard": "Dasbor", "menu.system.log.operate": "Operasikan Log", + "menu.system.log.unipay": "Log API Pembayaran", "menu.platform": "Manajemen Pembayaran", "menu.system.log.login": "Catatan Masuk", "menu.dashboard.workspace": "Ruang kerja", diff --git a/apps/daxpay-admin/src/locales/menu-titles/ja-JP.json b/apps/daxpay-admin/src/locales/menu-titles/ja-JP.json index d1534202b..0c82a5e31 100644 --- a/apps/daxpay-admin/src/locales/menu-titles/ja-JP.json +++ b/apps/daxpay-admin/src/locales/menu-titles/ja-JP.json @@ -16,6 +16,7 @@ "menu.demos": "デモ", "menu.dashboard": "ダッシュボード", "menu.system.log.operate": "操作ログ", + "menu.system.log.unipay": "決済APIログ", "menu.platform": "支払い管理", "menu.system.log.login": "ログインログ", "menu.dashboard.workspace": "ワークスペース", diff --git a/apps/daxpay-admin/src/locales/menu-titles/ko-KR.json b/apps/daxpay-admin/src/locales/menu-titles/ko-KR.json index 8abbb2713..963962872 100644 --- a/apps/daxpay-admin/src/locales/menu-titles/ko-KR.json +++ b/apps/daxpay-admin/src/locales/menu-titles/ko-KR.json @@ -16,6 +16,7 @@ "menu.demos": "시민", "menu.dashboard": "계기반", "menu.system.log.operate": "운영 로그", + "menu.system.log.unipay": "결제 API 로그", "menu.platform": "결제관리", "menu.system.log.login": "로그인 로그", "menu.dashboard.workspace": "작업공간", diff --git a/apps/daxpay-admin/src/locales/menu-titles/ms-MY.json b/apps/daxpay-admin/src/locales/menu-titles/ms-MY.json index 034d50d9d..0910af6c6 100644 --- a/apps/daxpay-admin/src/locales/menu-titles/ms-MY.json +++ b/apps/daxpay-admin/src/locales/menu-titles/ms-MY.json @@ -16,6 +16,7 @@ "menu.demos": "tunjuk cara", "menu.dashboard": "Papan pemuka", "menu.system.log.operate": "Kendalikan Log", + "menu.system.log.unipay": "Log API Pembayaran", "menu.platform": "Pengurusan Pembayaran", "menu.system.log.login": "Log Masuk", "menu.dashboard.workspace": "Ruang kerja", diff --git a/apps/daxpay-admin/src/locales/menu-titles/th-TH.json b/apps/daxpay-admin/src/locales/menu-titles/th-TH.json index 00c3047d1..15cf2d9db 100644 --- a/apps/daxpay-admin/src/locales/menu-titles/th-TH.json +++ b/apps/daxpay-admin/src/locales/menu-titles/th-TH.json @@ -16,6 +16,7 @@ "menu.demos": "การสาธิต", "menu.dashboard": "แดชบอร์ด", "menu.system.log.operate": "ดำเนินการบันทึก", + "menu.system.log.unipay": "ล็อก API ชำระเงิน", "menu.platform": "การจัดการการชำระเงิน", "menu.system.log.login": "เข้าสู่ระบบ", "menu.dashboard.workspace": "พื้นที่ทำงาน", diff --git a/apps/daxpay-admin/src/locales/menu-titles/vi-VN.json b/apps/daxpay-admin/src/locales/menu-titles/vi-VN.json index eb3304e8b..e357d41f9 100644 --- a/apps/daxpay-admin/src/locales/menu-titles/vi-VN.json +++ b/apps/daxpay-admin/src/locales/menu-titles/vi-VN.json @@ -16,6 +16,7 @@ "menu.demos": "Bản demo", "menu.dashboard": "Trang tổng quan", "menu.system.log.operate": "Nhật ký vận hành", + "menu.system.log.unipay": "Nhật ký API thanh toán", "menu.platform": "Quản lý thanh toán", "menu.system.log.login": "Đăng nhập Nhật ký", "menu.dashboard.workspace": "Không gian làm việc", diff --git a/apps/daxpay-admin/src/locales/menu-titles/zh-CN.json b/apps/daxpay-admin/src/locales/menu-titles/zh-CN.json index d2554e025..303b6d328 100644 --- a/apps/daxpay-admin/src/locales/menu-titles/zh-CN.json +++ b/apps/daxpay-admin/src/locales/menu-titles/zh-CN.json @@ -16,6 +16,7 @@ "menu.demos": "演示", "menu.dashboard": "仪表板", "menu.system.log.operate": "操作日志", + "menu.system.log.unipay": "支付接口日志", "menu.platform": "支付管理", "menu.system.log.login": "登录日志", "menu.dashboard.workspace": "工作台", diff --git a/apps/daxpay-admin/src/locales/menu-titles/zh-HK.json b/apps/daxpay-admin/src/locales/menu-titles/zh-HK.json index 00a9f95e5..d987daf0f 100644 --- a/apps/daxpay-admin/src/locales/menu-titles/zh-HK.json +++ b/apps/daxpay-admin/src/locales/menu-titles/zh-HK.json @@ -16,6 +16,7 @@ "menu.demos": "演示", "menu.dashboard": "儀表板", "menu.system.log.operate": "操作日誌", + "menu.system.log.unipay": "支付接口日誌", "menu.platform": "支付管理", "menu.system.log.login": "登錄日誌", "menu.dashboard.workspace": "工作台", diff --git a/apps/daxpay-admin/src/locales/menu-titles/zh-TW.json b/apps/daxpay-admin/src/locales/menu-titles/zh-TW.json index 1abdcf5e4..7b73863ab 100644 --- a/apps/daxpay-admin/src/locales/menu-titles/zh-TW.json +++ b/apps/daxpay-admin/src/locales/menu-titles/zh-TW.json @@ -16,6 +16,7 @@ "menu.demos": "演示", "menu.dashboard": "儀表板", "menu.system.log.operate": "操作日誌", + "menu.system.log.unipay": "支付介面日誌", "menu.platform": "支付管理", "menu.system.log.login": "登入日誌", "menu.dashboard.workspace": "工作臺", diff --git a/apps/daxpay-admin/src/views/payment/develop/gateway/DevelopGateway.vue b/apps/daxpay-admin/src/views/payment/develop/gateway/DevelopGateway.vue index 14a91f748..4ba1f602c 100644 --- a/apps/daxpay-admin/src/views/payment/develop/gateway/DevelopGateway.vue +++ b/apps/daxpay-admin/src/views/payment/develop/gateway/DevelopGateway.vue @@ -192,6 +192,16 @@ return s; } + /** 生成请求 ID(审计索引用, 32 位) */ + function genReqId(): string { + const chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; + let s = ''; + for (let i = 0; i < 32; i++) { + s += chars[Math.floor(Math.random() * chars.length)]; + } + return s; + } + /** 剔除空串/null/undefined, 避免参与签名或污染请求体 */ function cleanPayload(raw: GatewayPrePayParam): GatewayPrePayParam { const cleaned: Record = {}; @@ -204,12 +214,13 @@ } /** - * 组装提交参数(含公共字段 reqTime/nonceStr) + * 组装提交参数(含公共字段 reqId/reqTime/nonceStr) */ function buildPayload(): GatewayPrePayParam { const payload: GatewayPrePayParam = { ...form, // 每次组参刷新公共字段, 贴近真实商户 SDK + reqId: genReqId(), reqTime: formatReqTimeCst(), nonceStr: genNonceStr(), // 签名由后续步骤写入, 预览阶段不带旧 sign diff --git a/apps/daxpay-admin/src/views/payment/develop/trade/DevelopTrade.vue b/apps/daxpay-admin/src/views/payment/develop/trade/DevelopTrade.vue index bfb16faec..67808597c 100644 --- a/apps/daxpay-admin/src/views/payment/develop/trade/DevelopTrade.vue +++ b/apps/daxpay-admin/src/views/payment/develop/trade/DevelopTrade.vue @@ -256,6 +256,16 @@ return s; } + /** 生成请求 ID(审计索引用, 32 位) */ + function genReqId(): string { + const chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; + let s = ''; + for (let i = 0; i < 32; i++) { + s += chars[Math.floor(Math.random() * chars.length)]; + } + return s; + } + /** 剔除空串/null/undefined, 避免参与签名或污染请求体 */ function cleanPayload(raw: PayParam): PayParam { const cleaned: Record = {}; @@ -268,13 +278,14 @@ } /** - * 按当前模式组装提交参数(含公共字段 reqTime/nonceStr) + * 按当前模式组装提交参数(含公共字段 reqId/reqTime/nonceStr) * 各模式只透传自身字段; 直接指定 method 由 unipay 路由反推 */ function buildPayload(): PayParam { const payload: PayParam = { ...form, // 每次组参刷新公共字段, 贴近真实商户 SDK + reqId: genReqId(), reqTime: formatReqTimeCst(), nonceStr: genNonceStr(), // 签名由后续步骤写入, 预览阶段不带旧 sign diff --git a/apps/daxpay-admin/src/views/system/log/unipay/UnipayApiLogInfo.vue b/apps/daxpay-admin/src/views/system/log/unipay/UnipayApiLogInfo.vue new file mode 100644 index 000000000..930371dd1 --- /dev/null +++ b/apps/daxpay-admin/src/views/system/log/unipay/UnipayApiLogInfo.vue @@ -0,0 +1,110 @@ + + + diff --git a/apps/daxpay-admin/src/views/system/log/unipay/UnipayApiLogList.vue b/apps/daxpay-admin/src/views/system/log/unipay/UnipayApiLogList.vue new file mode 100644 index 000000000..9c26f2dc6 --- /dev/null +++ b/apps/daxpay-admin/src/views/system/log/unipay/UnipayApiLogList.vue @@ -0,0 +1,264 @@ + + +