fix(develop): 支付/网关调试业务失败时用失败标题与 Alert 区分结果弹窗

保留完整 DaxResult 联调展示,避免失败时仍显示「预下单/支付结果」造成误导。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
DaxPay Dev
2026-07-21 12:24:30 +08:00
parent b183ded8f6
commit 76ee778632
12 changed files with 56 additions and 4 deletions

View File

@@ -125,6 +125,7 @@
},
"result": {
"modalTitle": "Payment Result (unipay)",
"failModalTitle": "Payment Failed (unipay)",
"payLink": "Payment Link",
"jsapiParam": "JSAPI Params",
"formData": "Form Data",
@@ -289,6 +290,7 @@
},
"result": {
"modalTitle": "Pre-pay Result (unipay)",
"failModalTitle": "Pre-pay Failed (unipay)",
"url": "Gateway Landing Page URL",
"copyUrl": "Copy URL",
"openUrl": "Open",

View File

@@ -125,6 +125,7 @@
},
"result": {
"modalTitle": "Hasil Pembayaran (unipay)",
"failModalTitle": "Pembayaran Gagal (unipay)",
"payLink": "Tautan Pembayaran",
"jsapiParam": "Param JSAPI",
"formData": "Data Formulir",
@@ -288,6 +289,7 @@
},
"result": {
"modalTitle": "Hasil Pre-pay (unipay)",
"failModalTitle": "Pre-pay Gagal (unipay)",
"url": "URL Halaman Gateway",
"copyUrl": "Salin URL",
"openUrl": "Buka",

View File

@@ -125,6 +125,7 @@
},
"result": {
"modalTitle": "支払結果unipay",
"failModalTitle": "支払失敗unipay",
"payLink": "支払いリンク",
"jsapiParam": "JSAPIパラメータ",
"formData": "フォームデータ",
@@ -289,6 +290,7 @@
},
"result": {
"modalTitle": "事前注文結果 (unipay)",
"failModalTitle": "事前注文失敗 (unipay)",
"url": "ゲートウェイランディングURL",
"copyUrl": "URLコピー",
"openUrl": "開く",

View File

@@ -125,6 +125,7 @@
},
"result": {
"modalTitle": "결제결과(유니페이)",
"failModalTitle": "결제실패(유니페이)",
"payLink": "결제 링크",
"jsapiParam": "JSAPI 매개변수",
"formData": "양식 데이터",
@@ -289,6 +290,7 @@
},
"result": {
"modalTitle": "사전 주문 결과 (unipay)",
"failModalTitle": "사전 주문 실패 (unipay)",
"url": "게이트웨이 랜딩 URL",
"copyUrl": "URL 복사",
"openUrl": "열기",

View File

@@ -125,6 +125,7 @@
},
"result": {
"modalTitle": "Keputusan Pembayaran (unipay)",
"failModalTitle": "Pembayaran Gagal (unipay)",
"payLink": "Pautan Pembayaran",
"jsapiParam": "JSAPI Params",
"formData": "Data Borang",
@@ -288,6 +289,7 @@
},
"result": {
"modalTitle": "Keputusan Pra-bayar (unipay)",
"failModalTitle": "Pra-bayar Gagal (unipay)",
"url": "URL Halaman Pendarat Gateway",
"copyUrl": "Salin URL",
"openUrl": "Buka",

View File

@@ -125,6 +125,7 @@
},
"result": {
"modalTitle": "ผลการชำระเงิน (unipay)",
"failModalTitle": "การชำระเงินล้มเหลว (unipay)",
"payLink": "ลิงค์ชำระเงิน",
"jsapiParam": "พารามิเตอร์ JSAPI",
"formData": "ข้อมูลแบบฟอร์ม",
@@ -288,6 +289,7 @@
},
"result": {
"modalTitle": "ผลคำสั่งซื้อล่วงหน้า (unipay)",
"failModalTitle": "คำสั่งซื้อล่วงหน้าล้มเหลว (unipay)",
"url": "URL หน้าเกตเวย์",
"copyUrl": "คัดลอก URL",
"openUrl": "เปิด",

View File

@@ -125,6 +125,7 @@
},
"result": {
"modalTitle": "Kết quả thanh toán (unipay)",
"failModalTitle": "Thanh toán thất bại (unipay)",
"payLink": "Liên kết thanh toán",
"jsapiParam": "Thông số JSAPI",
"formData": "Dữ liệu biểu mẫu",
@@ -288,6 +289,7 @@
},
"result": {
"modalTitle": "Kết quả đặt trước (unipay)",
"failModalTitle": "Đặt trước thất bại (unipay)",
"url": "URL trang đích cổng",
"copyUrl": "Sao chép URL",
"openUrl": "Mở",

View File

@@ -125,6 +125,7 @@
},
"result": {
"modalTitle": "支付结果 (unipay)",
"failModalTitle": "支付失败 (unipay)",
"payLink": "支付链接",
"jsapiParam": "JSAPI 参数",
"formData": "表单数据",
@@ -289,6 +290,7 @@
},
"result": {
"modalTitle": "预下单结果 (unipay)",
"failModalTitle": "预下单失败 (unipay)",
"url": "网关落地页 URL",
"copyUrl": "复制链接",
"openUrl": "打开",

View File

@@ -125,6 +125,7 @@
},
"result": {
"modalTitle": "支付結果 (unipay)",
"failModalTitle": "支付失敗 (unipay)",
"payLink": "支付鏈接",
"jsapiParam": "JSAPI 參數",
"formData": "表單數據",
@@ -289,6 +290,7 @@
},
"result": {
"modalTitle": "預下單結果 (unipay)",
"failModalTitle": "預下單失敗 (unipay)",
"url": "網關落地頁 URL",
"copyUrl": "複製連結",
"openUrl": "打開",

View File

@@ -125,6 +125,7 @@
},
"result": {
"modalTitle": "支付結果 (unipay)",
"failModalTitle": "支付失敗 (unipay)",
"payLink": "支付連結",
"jsapiParam": "JSAPI 引數",
"formData": "表單資料",
@@ -289,6 +290,7 @@
},
"result": {
"modalTitle": "預下單結果 (unipay)",
"failModalTitle": "預下單失敗 (unipay)",
"url": "網關落地頁 URL",
"copyUrl": "複製連結",
"openUrl": "開啟",

View File

@@ -75,6 +75,14 @@
// ===== 调试结果(完整 unipay DaxResult) =====
const resultVisible = ref(false);
const resultData = ref<DaxResult<GatewayPrePayResult>>({ code: 0 });
// 业务失败(code≠0)时仍弹窗看完整响应, 用失败标题/Alert 区分成功态
const resultSuccess = computed(() => resultData.value?.code === 0);
// 结果弹窗标题: 成功「预下单结果」/ 失败「预下单失败」
const resultModalTitle = computed(() =>
resultSuccess.value
? $t('payment.develop.gateway.result.modalTitle')
: $t('payment.develop.gateway.result.failModalTitle'),
);
// ===== 签名预览(请求预览卡内联展示) =====
const signPreview = reactive({
@@ -677,14 +685,22 @@
/>
</a-modal>
<!-- 调试结果弹窗(完整 unipay DaxResult) -->
<!-- 调试结果弹窗(完整 unipay DaxResult; 失败也弹窗便于联调) -->
<a-modal
v-model:open="resultVisible"
:title="$t('payment.develop.gateway.result.modalTitle')"
:title="resultModalTitle"
:footer="null"
:width="640"
destroy-on-hidden
>
<!-- 业务失败: 顶部错误提示(文案取 DaxResult.msg) -->
<div v-if="!resultSuccess" class="mb-3">
<a-alert
type="error"
show-icon
:message="resultData.msg || $t('payment.develop.gateway.msg.prePayFail')"
/>
</div>
<template v-if="gatewayUrl">
<div class="flex flex-col items-center">
<!-- 落地页 URL 二维码(扫码进入收银台/聚合页测试) -->

View File

@@ -94,6 +94,14 @@
// ===== 调试结果(完整 unipay DaxResult) =====
const resultVisible = ref(false);
const resultData = ref<DaxResult<PayResult>>({ code: 0 });
// 业务失败(code≠0)时仍弹窗看完整响应, 用失败标题/Alert 区分成功态
const resultSuccess = computed(() => resultData.value?.code === 0);
// 结果弹窗标题: 成功「支付结果」/ 失败「支付失败」
const resultModalTitle = computed(() =>
resultSuccess.value
? $t('payment.develop.trade.result.modalTitle')
: $t('payment.develop.trade.result.failModalTitle'),
);
// 完整 DaxResult(展示用): 把 resTime 从 ISO 8601 (如 2026-07-19T13:34:58.8753181Z)
// 格式化为本地 yyyy-MM-dd HH:mm:ss, 便于联调阅读; 格式化失败保留原值
@@ -789,14 +797,22 @@
/>
</a-modal>
<!-- 调试结果弹窗(完整 unipay DaxResult) -->
<!-- 调试结果弹窗(完整 unipay DaxResult; 失败也弹窗便于联调) -->
<a-modal
v-model:open="resultVisible"
:title="$t('payment.develop.trade.result.modalTitle')"
:title="resultModalTitle"
:footer="null"
:width="640"
destroy-on-hidden
>
<!-- 业务失败: 顶部错误提示(文案取 DaxResult.msg) -->
<div v-if="!resultSuccess" class="mb-3">
<a-alert
type="error"
show-icon
:message="resultData.msg || $t('payment.develop.trade.msg.payFail')"
/>
</div>
<template v-if="hasPayBody">
<div class="flex flex-col items-center">
<!-- 扫码支付/支付链接: qr_code + link 渲染二维码 -->