diff --git a/apps/daxpay-admin/src/api/payment/merchant/easypay-credential.api.ts b/apps/daxpay-admin/src/api/payment/merchant/easypay-credential.api.ts new file mode 100644 index 000000000..693effbfd --- /dev/null +++ b/apps/daxpay-admin/src/api/payment/merchant/easypay-credential.api.ts @@ -0,0 +1,46 @@ +import type { BaseEntity, Result } from '#/types/web'; + +import { defHttp } from '#/api/request'; + +/** + * 易支付凭证 API(应用级) + */ +export const EasyPayCredentialApi = { + /** + * 按应用号查询(不存在则自动创建) + */ + getByAppId(appId: string): Promise> { + return defHttp.get({ url: '/admin/easypay/credential/get-by-app-id', params: { appId } }); + }, + /** + * 更新凭证 + */ + update(data: EasyPayCredentialParam): Promise> { + return defHttp.post({ url: '/admin/easypay/credential/update', data }); + }, +}; + +export interface EasyPayCredentialResult extends BaseEntity { + pid?: number; + appId?: string; + enable?: boolean; + enableV1?: boolean; + enableV2?: boolean; + md5Key?: string; + useSystemKey?: boolean; + publicKey?: string; + platformPublicKey?: string; + easyPayV1ApiUrl?: string; + easyPayV2ApiUrl?: string; +} + +export interface EasyPayCredentialParam { + id?: string; + appId: string; + enable?: boolean; + enableV1?: boolean; + enableV2?: boolean; + md5Key?: string; + useSystemKey?: boolean; + publicKey?: string; +} diff --git a/apps/daxpay-admin/src/constants/perm-codes.ts b/apps/daxpay-admin/src/constants/perm-codes.ts index c5fba01df..c1a7fd73d 100644 --- a/apps/daxpay-admin/src/constants/perm-codes.ts +++ b/apps/daxpay-admin/src/constants/perm-codes.ts @@ -71,6 +71,11 @@ export const PermCodes = { VIEW: 'merchant:gateway-cashier:view', MANAGE: 'merchant:gateway-cashier:manage', }, + /** 易支付协议配置 menuCode=merchant:easypay */ + EasyPay: { + VIEW: 'merchant:easypay:view', + MANAGE: 'merchant:easypay:manage', + }, Store: { VIEW: 'merchant:store:view', MANAGE: 'merchant:store:manage', diff --git a/apps/daxpay-admin/src/locales/langs/en-US/payment/merchant/app.json b/apps/daxpay-admin/src/locales/langs/en-US/payment/merchant/app.json index 57bc6ede5..dcaf86a7d 100644 --- a/apps/daxpay-admin/src/locales/langs/en-US/payment/merchant/app.json +++ b/apps/daxpay-admin/src/locales/langs/en-US/payment/merchant/app.json @@ -47,5 +47,38 @@ "deleteDesc": "This cannot be undone. Proceed with caution", "noActions": "No actions available", "openActionAria": "Open app configuration" + }, + "easypay": { + "v1Hint": "V1 is weakly secured; enable only for legacy clients", + "useSystemKey": "Use system key pair", + "v2Url": "V2 API base URL", + "desc": "Expose EasyPay V1/V2 protocol APIs", + "title": "EasyPay Config", + "notifyHint": "Async notify is not sent in this release; poll query API", + "platformPublicKey": "Platform RSA public key", + "enableV1": "Enable V1", + "confirmSave": "Save EasyPay configuration?", + "md5Key": "V1 MD5 key", + "pid": "EasyPay merchant id (pid)", + "enableV2": "Enable V2", + "md5KeyPh": "Enter MD5 key", + "publicKey": "Merchant RSA public key", + "v1Url": "V1 API base URL", + "enable": "Enable", + "section": { + "endpoint": "Basics", + "v1": "V1 protocol", + "v2": "V2 protocol" + }, + "pidDesc": "App-assigned EasyPay merchant id used as pid by integrators", + "v2UrlDesc": "V2 protocol API base URL to share with integrators", + "v1UrlDesc": "V1 protocol API base URL for legacy clients only", + "enableDesc": "When off, this app rejects EasyPay protocol requests", + "enableV2Desc": "Recommended; use V2 for new integrations", + "enableV1Desc": "V1 is weakly secured; enable only for legacy clients", + "md5KeyDesc": "MD5 key used for V1 request signing", + "useSystemKeyDesc": "Use the platform key pair so merchant public key is not required", + "publicKeyDesc": "Merchant RSA public key when using a custom key pair", + "platformPublicKeyDesc": "Platform public key for integrator signature verification" } -} +} \ No newline at end of file diff --git a/apps/daxpay-admin/src/locales/langs/id-ID/payment/merchant/app.json b/apps/daxpay-admin/src/locales/langs/id-ID/payment/merchant/app.json index a52089974..01379f537 100644 --- a/apps/daxpay-admin/src/locales/langs/id-ID/payment/merchant/app.json +++ b/apps/daxpay-admin/src/locales/langs/id-ID/payment/merchant/app.json @@ -47,5 +47,38 @@ "deleteDesc": "Hal ini tidak dapat dibatalkan. Lanjutkan dengan hati-hati", "noActions": "Tidak ada tindakan yang tersedia", "openActionAria": "Buka konfigurasi aplikasi" + }, + "easypay": { + "v1Hint": "V1 memiliki keamanan lemah; aktifkan hanya untuk klien lama", + "useSystemKey": "Gunakan pasangan kunci sistem", + "v2Url": "URL dasar API V2", + "desc": "Menyediakan API protokol EasyPay V1/V2", + "title": "Konfigurasi EasyPay", + "notifyHint": "Notifikasi async tidak dikirim pada rilis ini; lakukan polling API query", + "platformPublicKey": "Kunci publik RSA platform", + "enableV1": "Aktifkan V1", + "confirmSave": "Simpan konfigurasi EasyPay?", + "md5Key": "Kunci MD5 V1", + "pid": "ID merchant EasyPay (pid)", + "enableV2": "Aktifkan V2", + "md5KeyPh": "Masukkan kunci MD5", + "publicKey": "Kunci publik RSA merchant", + "v1Url": "URL dasar API V1", + "enable": "Aktifkan", + "section": { + "endpoint": "Dasar", + "v1": "Protokol V1", + "v2": "Protokol V2" + }, + "pidDesc": "ID merchant EasyPay yang ditetapkan per aplikasi, digunakan sebagai pid oleh integrator", + "v2UrlDesc": "URL dasar API protokol V2 untuk dibagikan ke integrator", + "v1UrlDesc": "URL dasar API protokol V1, hanya untuk klien lama", + "enableDesc": "Saat nonaktif, aplikasi ini menolak permintaan protokol EasyPay", + "enableV2Desc": "Direkomendasikan; gunakan V2 untuk integrasi baru", + "enableV1Desc": "V1 memiliki keamanan lemah; aktifkan hanya untuk klien lama", + "md5KeyDesc": "Kunci MD5 untuk penandatanganan permintaan V1", + "useSystemKeyDesc": "Gunakan pasangan kunci platform sehingga kunci publik merchant tidak diperlukan", + "publicKeyDesc": "Kunci publik RSA merchant saat menggunakan pasangan kunci kustom", + "platformPublicKeyDesc": "Kunci publik platform untuk verifikasi tanda tangan integrator" } } diff --git a/apps/daxpay-admin/src/locales/langs/ja-JP/payment/merchant/app.json b/apps/daxpay-admin/src/locales/langs/ja-JP/payment/merchant/app.json index cb412b5f2..67bb2c805 100644 --- a/apps/daxpay-admin/src/locales/langs/ja-JP/payment/merchant/app.json +++ b/apps/daxpay-admin/src/locales/langs/ja-JP/payment/merchant/app.json @@ -47,5 +47,38 @@ "deleteDesc": "これを元に戻すことはできません。慎重に進めてください", "noActions": "利用可能なアクションはありません", "openActionAria": "アプリ設定を開く" + }, + "easypay": { + "v1Hint": "V1 は安全性が低いため、旧システム互換時のみ有効にしてください", + "useSystemKey": "システム鍵ペアを使用", + "v2Url": "V2 接続URL", + "desc": "EasyPay V1/V2 プロトコルによる外部連携", + "title": "EasyPay設定", + "notifyHint": "本バージョンでは非同期通知を送信しません。query で注文状態をポーリングしてください", + "platformPublicKey": "プラットフォーム RSA 公開鍵", + "enableV1": "V1 を有効化", + "confirmSave": "EasyPay 設定を保存しますか?", + "md5Key": "V1 MD5 鍵", + "pid": "EasyPay 加盟店番号 (pid)", + "enableV2": "V2 を有効化", + "md5KeyPh": "MD5 鍵を入力", + "publicKey": "加盟店 RSA 公開鍵", + "v1Url": "V1 接続URL", + "enable": "有効", + "section": { + "endpoint": "基本接続", + "v1": "V1 プロトコル設定", + "v2": "V2 プロトコル設定" + }, + "pidDesc": "アプリ単位で割り当てられる EasyPay 加盟店番号。連携側は pid として使用", + "v2UrlDesc": "V2 プロトコル API のルートURL。連携側へ共有", + "v1UrlDesc": "V1 プロトコル API のルートURL。旧システム互換時のみ", + "enableDesc": "無効にすると当該アプリは EasyPay リクエストを拒否します", + "enableV2Desc": "推奨。新規連携は V2 を利用してください", + "enableV1Desc": "V1 は安全性が低いため、旧システム互換時のみ有効にしてください", + "md5KeyDesc": "V1 署名用の MD5 鍵", + "useSystemKeyDesc": "プラットフォーム鍵ペアを使う場合、加盟店公開鍵の入力は不要です", + "publicKeyDesc": "独自鍵ペア利用時の加盟店 RSA 公開鍵", + "platformPublicKeyDesc": "連携側の署名検証用プラットフォーム公開鍵" } -} +} \ No newline at end of file diff --git a/apps/daxpay-admin/src/locales/langs/ko-KR/payment/merchant/app.json b/apps/daxpay-admin/src/locales/langs/ko-KR/payment/merchant/app.json index ca6f2490b..a84a4e046 100644 --- a/apps/daxpay-admin/src/locales/langs/ko-KR/payment/merchant/app.json +++ b/apps/daxpay-admin/src/locales/langs/ko-KR/payment/merchant/app.json @@ -47,5 +47,38 @@ "deleteDesc": "이 작업은 취소할 수 없습니다. 주의해서 진행하세요", "noActions": "사용 가능한 작업이 없습니다.", "openActionAria": "앱 구성 열기" + }, + "easypay": { + "v1Hint": "V1은 보안이 약하므로 레거시 호환 시에만 활성화하세요", + "useSystemKey": "시스템 키 쌍 사용", + "v2Url": "V2 연동 주소", + "desc": "EasyPay V1/V2 프로토콜 외부 연동", + "title": "EasyPay 설정", + "notifyHint": "이번 버전에서는 비동기 알림을 보내지 않습니다. query로 주문 상태를 폴링하세요", + "platformPublicKey": "플랫폼 RSA 공개키", + "enableV1": "V1 사용", + "confirmSave": "EasyPay 설정을 저장하시겠습니까?", + "md5Key": "V1 MD5 키", + "pid": "EasyPay 가맹점 번호(pid)", + "enableV2": "V2 사용", + "md5KeyPh": "MD5 키 입력", + "publicKey": "가맹점 RSA 공개키", + "v1Url": "V1 연동 주소", + "enable": "사용", + "section": { + "endpoint": "기본 연동", + "v1": "V1 프로토콜 설정", + "v2": "V2 프로토콜 설정" + }, + "pidDesc": "앱별로 할당된 EasyPay 가맹점 번호. 연동측에서 pid로 사용", + "v2UrlDesc": "V2 프로토콜 API 루트 URL. 연동측에 공유", + "v1UrlDesc": "V1 프로토콜 API 루트 URL. 레거시 호환 전용", + "enableDesc": "끄면 해당 앱은 EasyPay 요청을 거부합니다", + "enableV2Desc": "권장. 신규 연동은 V2를 사용하세요", + "enableV1Desc": "V1은 보안이 약하므로 레거시 호환 시에만 활성화하세요", + "md5KeyDesc": "V1 서명용 MD5 키", + "useSystemKeyDesc": "플랫폼 키 쌍을 사용하면 가맹점 공개키를 입력할 필요가 없습니다", + "publicKeyDesc": "자체 키 쌍 사용 시 가맹점 RSA 공개키", + "platformPublicKeyDesc": "연동측 서명 검증용 플랫폼 공개키" } -} +} \ No newline at end of file diff --git a/apps/daxpay-admin/src/locales/langs/ms-MY/payment/merchant/app.json b/apps/daxpay-admin/src/locales/langs/ms-MY/payment/merchant/app.json index cab0a3abf..41355c2a0 100644 --- a/apps/daxpay-admin/src/locales/langs/ms-MY/payment/merchant/app.json +++ b/apps/daxpay-admin/src/locales/langs/ms-MY/payment/merchant/app.json @@ -47,5 +47,38 @@ "deleteDesc": "Ini tidak boleh dibuat asal. Teruskan dengan berhati-hati", "noActions": "Tiada tindakan tersedia", "openActionAria": "Buka konfigurasi apl" + }, + "easypay": { + "v1Hint": "V1 mempunyai keselamatan yang lemah; aktifkan hanya untuk klien lama", + "useSystemKey": "Gunakan pasangan kunci sistem", + "v2Url": "URL asas API V2", + "desc": "Mendedahkan API protokol EasyPay V1/V2", + "title": "Konfigurasi EasyPay", + "notifyHint": "Pemberitahuan async tidak dihantar dalam keluaran ini; tinjau API query", + "platformPublicKey": "Kunci awam RSA platform", + "enableV1": "Aktifkan V1", + "confirmSave": "Simpan konfigurasi EasyPay?", + "md5Key": "Kunci MD5 V1", + "pid": "ID pedagang EasyPay (pid)", + "enableV2": "Aktifkan V2", + "md5KeyPh": "Masukkan kunci MD5", + "publicKey": "Kunci awam RSA pedagang", + "v1Url": "URL asas API V1", + "enable": "Aktifkan", + "section": { + "endpoint": "Asas", + "v1": "Protokol V1", + "v2": "Protokol V2" + }, + "pidDesc": "ID pedagang EasyPay yang ditetapkan setiap aplikasi, digunakan sebagai pid oleh pengintegrasi", + "v2UrlDesc": "URL asas API protokol V2 untuk dikongsi dengan pengintegrasi", + "v1UrlDesc": "URL asas API protokol V1, hanya untuk klien lama", + "enableDesc": "Apabila dimatikan, aplikasi ini menolak permintaan protokol EasyPay", + "enableV2Desc": "Disyorkan; gunakan V2 untuk integrasi baharu", + "enableV1Desc": "V1 mempunyai keselamatan yang lemah; aktifkan hanya untuk klien lama", + "md5KeyDesc": "Kunci MD5 untuk penandatanganan permintaan V1", + "useSystemKeyDesc": "Gunakan pasangan kunci platform supaya kunci awam pedagang tidak diperlukan", + "publicKeyDesc": "Kunci awam RSA pedagang apabila menggunakan pasangan kunci tersuai", + "platformPublicKeyDesc": "Kunci awam platform untuk pengesahan tandatangan pengintegrasi" } } diff --git a/apps/daxpay-admin/src/locales/langs/th-TH/payment/merchant/app.json b/apps/daxpay-admin/src/locales/langs/th-TH/payment/merchant/app.json index 07a8a34eb..6d0b4e33c 100644 --- a/apps/daxpay-admin/src/locales/langs/th-TH/payment/merchant/app.json +++ b/apps/daxpay-admin/src/locales/langs/th-TH/payment/merchant/app.json @@ -47,5 +47,38 @@ "deleteDesc": "สิ่งนี้ไม่สามารถยกเลิกได้ ดำเนินการด้วยความระมัดระวัง", "noActions": "ไม่มีการดำเนินการใดๆ", "openActionAria": "เปิดการกำหนดค่าแอป" + }, + "easypay": { + "v1Hint": "V1 มีความปลอดภัยต่ำ; เปิดใช้งานเฉพาะไคลเอนต์เก่า", + "useSystemKey": "ใช้คู่คีย์ของระบบ", + "v2Url": "URL ฐาน API V2", + "desc": "เปิดเผย API โปรโตคอล EasyPay V1/V2", + "title": "การตั้งค่า EasyPay", + "notifyHint": "รุ่นนี้ยังไม่ส่งการแจ้งเตือนแบบ async; ให้สอบถาม query API", + "platformPublicKey": "รหัสสาธารณะ RSA ของแพลตฟอร์ม", + "enableV1": "เปิดใช้งาน V1", + "confirmSave": "บันทึกการตั้งค่า EasyPay?", + "md5Key": "คีย์ MD5 V1", + "pid": "รหัสผู้ค้า EasyPay (pid)", + "enableV2": "เปิดใช้งาน V2", + "md5KeyPh": "กรอกคีย์ MD5", + "publicKey": "รหัสสาธารณะ RSA ของผู้ค้า", + "v1Url": "URL ฐาน API V1", + "enable": "เปิดใช้งาน", + "section": { + "endpoint": "พื้นฐาน", + "v1": "โปรโตคอล V1", + "v2": "โปรโตคอล V2" + }, + "pidDesc": "รหัสผู้ค้า EasyPay ที่กำหนดให้แต่ละแอป ใช้เป็น pid โดยผู้เชื่อมต่อ", + "v2UrlDesc": "URL ฐาน API โปรโตคอล V2 สำหรับแชร์ให้ผู้เชื่อมต่อ", + "v1UrlDesc": "URL ฐาน API โปรโตคอล V1 สำหรับไคลเอนต์เก่าเท่านั้น", + "enableDesc": "เมื่อปิด แอปนี้จะปฏิเสธคำขอโปรโตคอล EasyPay", + "enableV2Desc": "แนะนำ; ใช้ V2 สำหรับการเชื่อมต่อใหม่", + "enableV1Desc": "V1 มีความปลอดภัยต่ำ; เปิดใช้งานเฉพาะไคลเอนต์เก่า", + "md5KeyDesc": "คีย์ MD5 สำหรับการเซ็นคำขอ V1", + "useSystemKeyDesc": "ใช้คู่คีย์ของแพลตฟอร์มจึงไม่ต้องกรอกรหัสสาธารณะผู้ค้า", + "publicKeyDesc": "รหัสสาธารณะ RSA ของผู้ค้า เมื่อใช้คู่คีย์ที่กำหนดเอง", + "platformPublicKeyDesc": "รหัสสาธารณะของแพลตฟอร์มสำหรับการตรวจสอบลายเซ็นผู้เชื่อมต่อ" } } diff --git a/apps/daxpay-admin/src/locales/langs/vi-VN/payment/merchant/app.json b/apps/daxpay-admin/src/locales/langs/vi-VN/payment/merchant/app.json index b6eea618a..abad5a94a 100644 --- a/apps/daxpay-admin/src/locales/langs/vi-VN/payment/merchant/app.json +++ b/apps/daxpay-admin/src/locales/langs/vi-VN/payment/merchant/app.json @@ -47,5 +47,38 @@ "deleteDesc": "Điều này không thể hoàn tác được. Tiến hành thận trọng", "noActions": "Không có hành động nào", "openActionAria": "Mở cấu hình ứng dụng" + }, + "easypay": { + "v1Hint": "V1 có bảo mật yếu; chỉ bật cho khách hàng cũ", + "useSystemKey": "Dùng cặp khóa hệ thống", + "v2Url": "URL cơ sở API V2", + "desc": "Cung cấp API giao thức EasyPay V1/V2", + "title": "Cấu hình EasyPay", + "notifyHint": "Bản này chưa gửi thông báo async; hãy polling query API", + "platformPublicKey": "Khóa công khai RSA nền tảng", + "enableV1": "Bật V1", + "confirmSave": "Lưu cấu hình EasyPay?", + "md5Key": "Khóa MD5 V1", + "pid": "ID merchant EasyPay (pid)", + "enableV2": "Bật V2", + "md5KeyPh": "Nhập khóa MD5", + "publicKey": "Khóa công khai RSA merchant", + "v1Url": "URL cơ sở API V1", + "enable": "Bật", + "section": { + "endpoint": "Cơ bản", + "v1": "Giao thức V1", + "v2": "Giao thức V2" + }, + "pidDesc": "ID merchant EasyPay cấp theo ứng dụng, dùng làm pid bởi bên tích hợp", + "v2UrlDesc": "URL cơ sở API giao thức V2 để chia sẻ với bên tích hợp", + "v1UrlDesc": "URL cơ sở API giao thức V1, chỉ cho khách hàng cũ", + "enableDesc": "Khi tắt, ứng dụng này từ chối yêu cầu giao thức EasyPay", + "enableV2Desc": "Đề nghị; dùng V2 cho tích hợp mới", + "enableV1Desc": "V1 có bảo mật yếu; chỉ bật cho khách hàng cũ", + "md5KeyDesc": "Khóa MD5 dùng để ký yêu cầu V1", + "useSystemKeyDesc": "Dùng cặp khóa nền tảng nên không cần khóa công khai merchant", + "publicKeyDesc": "Khóa công khai RSA merchant khi dùng cặp khóa tùy chỉnh", + "platformPublicKeyDesc": "Khóa công khai nền tảng để bên tích hợp xác minh chữ ký" } } diff --git a/apps/daxpay-admin/src/locales/langs/zh-CN/payment/merchant/app.json b/apps/daxpay-admin/src/locales/langs/zh-CN/payment/merchant/app.json index e1791eebb..6f3ab0083 100644 --- a/apps/daxpay-admin/src/locales/langs/zh-CN/payment/merchant/app.json +++ b/apps/daxpay-admin/src/locales/langs/zh-CN/payment/merchant/app.json @@ -47,5 +47,38 @@ "deleteDesc": "删除后不可恢复,请谨慎操作", "noActions": "暂无可用操作", "openActionAria": "进入应用配置" + }, + "easypay": { + "v1Hint": "V1 安全性较弱,仅兼容旧系统时开启", + "useSystemKey": "使用系统密钥", + "v2Url": "V2 对接地址", + "desc": "对外兼容易支付 V1/V2 协议接入", + "title": "易支付配置", + "notifyHint": "本期暂不发送异步通知,请使用 query 轮询订单状态", + "platformPublicKey": "平台 RSA 公钥", + "enableV1": "开启 V1", + "confirmSave": "确定保存易支付配置吗?", + "md5Key": "V1 MD5 密钥", + "pid": "易支付商户号(pid)", + "enableV2": "开启 V2", + "md5KeyPh": "请输入 MD5 密钥", + "publicKey": "商户 RSA 公钥", + "v1Url": "V1 对接地址", + "enable": "启用", + "section": { + "endpoint": "基础对接", + "v1": "V1 协议配置", + "v2": "V2 协议配置" + }, + "pidDesc": "系统按应用分配的易支付商户号,对接方作为 pid 使用", + "v2UrlDesc": "V2 协议 API 根地址,复制给对接方", + "v1UrlDesc": "V1 协议 API 根地址,仅兼容旧系统时使用", + "enableDesc": "关闭后该应用将拒绝易支付协议请求", + "enableV2Desc": "推荐开启;新对接请走 V2", + "enableV1Desc": "V1 安全性较弱,仅兼容旧系统时开启", + "md5KeyDesc": "V1 签名用 MD5 密钥", + "useSystemKeyDesc": "使用平台密钥对时无需填写商户公钥", + "publicKeyDesc": "商户侧 RSA 公钥(自签时填写)", + "platformPublicKeyDesc": "平台公钥,对接方验签使用" } -} +} \ No newline at end of file diff --git a/apps/daxpay-admin/src/locales/langs/zh-HK/payment/merchant/app.json b/apps/daxpay-admin/src/locales/langs/zh-HK/payment/merchant/app.json index 5013cdd33..7e7fb3f65 100644 --- a/apps/daxpay-admin/src/locales/langs/zh-HK/payment/merchant/app.json +++ b/apps/daxpay-admin/src/locales/langs/zh-HK/payment/merchant/app.json @@ -47,5 +47,38 @@ "deleteDesc": "刪除後不可恢復,請謹慎操作", "noActions": "暫無可用操作", "openActionAria": "進入應用配置" + }, + "easypay": { + "v1Hint": "V1 安全性較弱,僅兼容舊系統時開啟", + "useSystemKey": "使用系統密鑰", + "v2Url": "V2 對接地址", + "desc": "對外兼容易支付 V1/V2 協議接入", + "title": "易支付配置", + "notifyHint": "本期暫不發送異步通知,請使用 query 輪詢訂單狀態", + "platformPublicKey": "平台 RSA 公鑰", + "enableV1": "開啟 V1", + "confirmSave": "確定保存易支付配置嗎?", + "md5Key": "V1 MD5 密鑰", + "pid": "易支付商戶號(pid)", + "enableV2": "開啟 V2", + "md5KeyPh": "請輸入 MD5 密鑰", + "publicKey": "商戶 RSA 公鑰", + "v1Url": "V1 對接地址", + "enable": "啟用", + "section": { + "endpoint": "基礎對接", + "v1": "V1 協議配置", + "v2": "V2 協議配置" + }, + "pidDesc": "系統按應用分配的易支付商戶號,對接方作為 pid 使用", + "v2UrlDesc": "V2 協議 API 根位址,複製給對接方", + "v1UrlDesc": "V1 協議 API 根位址,僅兼容舊系統時使用", + "enableDesc": "關閉後該應用將拒絕易支付協議請求", + "enableV2Desc": "建議開啟;新對接請走 V2", + "enableV1Desc": "V1 安全性較弱,僅兼容舊系統時開啟", + "md5KeyDesc": "V1 簽名用 MD5 密鑰", + "useSystemKeyDesc": "使用平台密鑰對時無需填寫商戶公鑰", + "publicKeyDesc": "商戶側 RSA 公鑰(自簽時填寫)", + "platformPublicKeyDesc": "平台公鑰,對接方驗簽使用" } -} +} \ No newline at end of file diff --git a/apps/daxpay-admin/src/locales/langs/zh-TW/payment/merchant/app.json b/apps/daxpay-admin/src/locales/langs/zh-TW/payment/merchant/app.json index 8ca230674..037ec2d18 100644 --- a/apps/daxpay-admin/src/locales/langs/zh-TW/payment/merchant/app.json +++ b/apps/daxpay-admin/src/locales/langs/zh-TW/payment/merchant/app.json @@ -47,5 +47,38 @@ "deleteDesc": "刪除後不可恢復,請謹慎操作", "noActions": "暫無可用操作", "openActionAria": "進入應用配置" + }, + "easypay": { + "v1Hint": "V1 安全性較弱,僅兼容舊系統時開啟", + "useSystemKey": "使用系統密鑰", + "v2Url": "V2 對接地址", + "desc": "對外兼容易支付 V1/V2 協議接入", + "title": "易支付配置", + "notifyHint": "本期暫不發送異步通知,請使用 query 輪詢訂單狀態", + "platformPublicKey": "平台 RSA 公鑰", + "enableV1": "開啟 V1", + "confirmSave": "確定保存易支付配置嗎?", + "md5Key": "V1 MD5 密鑰", + "pid": "易支付商戶號(pid)", + "enableV2": "開啟 V2", + "md5KeyPh": "請輸入 MD5 密鑰", + "publicKey": "商戶 RSA 公鑰", + "v1Url": "V1 對接地址", + "enable": "啟用", + "section": { + "endpoint": "基礎對接", + "v1": "V1 協議配置", + "v2": "V2 協議配置" + }, + "pidDesc": "系統按應用分配的易支付商戶號,對接方作為 pid 使用", + "v2UrlDesc": "V2 協議 API 根位址,複製給對接方", + "v1UrlDesc": "V1 協議 API 根位址,僅兼容舊系統時使用", + "enableDesc": "關閉後該應用將拒絕易支付協議請求", + "enableV2Desc": "建議開啟;新對接請走 V2", + "enableV1Desc": "V1 安全性較弱,僅兼容舊系統時開啟", + "md5KeyDesc": "V1 簽名用 MD5 密鑰", + "useSystemKeyDesc": "使用平台密鑰對時無需填寫商戶公鑰", + "publicKeyDesc": "商戶側 RSA 公鑰(自簽時填寫)", + "platformPublicKeyDesc": "平台公鑰,對接方驗簽使用" } -} +} \ No newline at end of file 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 8480b48d8..264968a24 100644 --- a/apps/daxpay-admin/src/locales/menu-titles/en-US.json +++ b/apps/daxpay-admin/src/locales/menu-titles/en-US.json @@ -78,5 +78,6 @@ "menu.payment.merchant.appWorkbench": "App Configuration", "menu.payment.lakala.config": "Lakala ISV Configuration", "menu.payment.merchant.group.channelApp": "Channel App Config", - "menu.payment.config.group.channelIsv": "Channel ISV Config" + "menu.payment.config.group.channelIsv": "Channel ISV Config", + "menu.payment.merchant.easypay": "EasyPay Config" } 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 e4e9c8ff3..ce20a8214 100644 --- a/apps/daxpay-admin/src/locales/menu-titles/id-ID.json +++ b/apps/daxpay-admin/src/locales/menu-titles/id-ID.json @@ -78,5 +78,6 @@ "menu.payment.merchant.appWorkbench": "Konfigurasi Aplikasi", "menu.payment.lakala.config": "Konfigurasi ISV Lakala", "menu.payment.merchant.group.channelApp": "Konfigurasi Aplikasi Saluran", - "menu.payment.config.group.channelIsv": "Konfigurasi ISV Saluran" + "menu.payment.config.group.channelIsv": "Konfigurasi ISV Saluran", + "menu.payment.merchant.easypay": "EasyPay Config" } 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 3fa080e25..e0a9555e8 100644 --- a/apps/daxpay-admin/src/locales/menu-titles/ja-JP.json +++ b/apps/daxpay-admin/src/locales/menu-titles/ja-JP.json @@ -78,5 +78,6 @@ "menu.payment.merchant.appWorkbench": "アプリの構成", "menu.payment.lakala.config": "Lakala ISV 構成", "menu.payment.merchant.group.channelApp": "チャネルアプリ構成", - "menu.payment.config.group.channelIsv": "チャネル ISV 構成" + "menu.payment.config.group.channelIsv": "チャネル ISV 構成", + "menu.payment.merchant.easypay": "EasyPay設定" } 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 1f4186b8c..d62fe0c37 100644 --- a/apps/daxpay-admin/src/locales/menu-titles/ko-KR.json +++ b/apps/daxpay-admin/src/locales/menu-titles/ko-KR.json @@ -78,5 +78,6 @@ "menu.payment.merchant.appWorkbench": "앱 구성", "menu.payment.lakala.config": "Lakala ISV 구성", "menu.payment.merchant.group.channelApp": "채널 앱 구성", - "menu.payment.config.group.channelIsv": "채널 ISV 구성" + "menu.payment.config.group.channelIsv": "채널 ISV 구성", + "menu.payment.merchant.easypay": "EasyPay 설정" } 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 f2dc4fa96..38f6fa8dd 100644 --- a/apps/daxpay-admin/src/locales/menu-titles/ms-MY.json +++ b/apps/daxpay-admin/src/locales/menu-titles/ms-MY.json @@ -78,5 +78,6 @@ "menu.payment.merchant.appWorkbench": "Konfigurasi Apl", "menu.payment.lakala.config": "Konfigurasi ISV Lakala", "menu.payment.merchant.group.channelApp": "Konfigurasi Apl Saluran", - "menu.payment.config.group.channelIsv": "Saluran ISV Config" + "menu.payment.config.group.channelIsv": "Saluran ISV Config", + "menu.payment.merchant.easypay": "EasyPay Config" } 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 6419b9dd8..0dee1ba6b 100644 --- a/apps/daxpay-admin/src/locales/menu-titles/th-TH.json +++ b/apps/daxpay-admin/src/locales/menu-titles/th-TH.json @@ -78,5 +78,6 @@ "menu.payment.merchant.appWorkbench": "การกำหนดค่าแอป", "menu.payment.lakala.config": "การกำหนดค่า Lakala ISV", "menu.payment.merchant.group.channelApp": "การกำหนดค่าแอปช่อง", - "menu.payment.config.group.channelIsv": "การกำหนดค่า ISV ของช่องสัญญาณ" + "menu.payment.config.group.channelIsv": "การกำหนดค่า ISV ของช่องสัญญาณ", + "menu.payment.merchant.easypay": "EasyPay Config" } 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 4ec337b02..34cd5f9da 100644 --- a/apps/daxpay-admin/src/locales/menu-titles/vi-VN.json +++ b/apps/daxpay-admin/src/locales/menu-titles/vi-VN.json @@ -78,5 +78,6 @@ "menu.payment.merchant.appWorkbench": "Cấu hình ứng dụng", "menu.payment.lakala.config": "Cấu hình Lakala ISV", "menu.payment.merchant.group.channelApp": "Cấu hình ứng dụng kênh", - "menu.payment.config.group.channelIsv": "Cấu hình ISV kênh" + "menu.payment.config.group.channelIsv": "Cấu hình ISV kênh", + "menu.payment.merchant.easypay": "EasyPay Config" } 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 e527b41dc..8e0aab126 100644 --- a/apps/daxpay-admin/src/locales/menu-titles/zh-CN.json +++ b/apps/daxpay-admin/src/locales/menu-titles/zh-CN.json @@ -78,5 +78,6 @@ "menu.payment.merchant.appWorkbench": "应用配置", "menu.payment.lakala.config": "拉卡拉服务商配置", "menu.payment.merchant.group.channelApp": "通道应用配置", - "menu.payment.config.group.channelIsv": "通道服务商配置" + "menu.payment.config.group.channelIsv": "通道服务商配置", + "menu.payment.merchant.easypay": "易支付配置" } 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 701011c59..38a53efc0 100644 --- a/apps/daxpay-admin/src/locales/menu-titles/zh-HK.json +++ b/apps/daxpay-admin/src/locales/menu-titles/zh-HK.json @@ -78,5 +78,6 @@ "menu.payment.merchant.appWorkbench": "應用配置", "menu.payment.lakala.config": "拉卡拉服務商配置", "menu.payment.merchant.group.channelApp": "通道應用配置", - "menu.payment.config.group.channelIsv": "通道服務商配置" + "menu.payment.config.group.channelIsv": "通道服務商配置", + "menu.payment.merchant.easypay": "易支付配置" } 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 0e268f1d5..36e8078a1 100644 --- a/apps/daxpay-admin/src/locales/menu-titles/zh-TW.json +++ b/apps/daxpay-admin/src/locales/menu-titles/zh-TW.json @@ -78,5 +78,6 @@ "menu.payment.merchant.appWorkbench": "應用配置", "menu.payment.lakala.config": "拉卡拉服務商配置", "menu.payment.merchant.group.channelApp": "通道應用配置", - "menu.payment.config.group.channelIsv": "通道服務商配置" + "menu.payment.config.group.channelIsv": "通道服務商配置", + "menu.payment.merchant.easypay": "易支付配置" } diff --git a/apps/daxpay-admin/src/views/payment/merchant/app/MchAppWorkbench.vue b/apps/daxpay-admin/src/views/payment/merchant/app/MchAppWorkbench.vue index 11890b2ab..b57ca332d 100644 --- a/apps/daxpay-admin/src/views/payment/merchant/app/MchAppWorkbench.vue +++ b/apps/daxpay-admin/src/views/payment/merchant/app/MchAppWorkbench.vue @@ -106,6 +106,17 @@ action: 'notify', }); } + // 易支付协议配置:subpage /payment/merchant/easypay?mchNo&appId + if (hasPermission(PermCodes.Merchant.EasyPay.VIEW)) { + paymentCards.push({ + key: 'easypay', + // 卡片标题与菜单 i18n_key 一致 + title: $t('menu.payment.merchant.easypay'), + icon: 'ant-design:api-outlined', + description: $t('payment.merchant.app.easypay.desc'), + route: '/payment/merchant/easypay', + }); + } if (paymentCards.length > 0) { groups.push({ group: $t('payment.merchant.app.app.groupConfig'), diff --git a/apps/daxpay-admin/src/views/payment/merchant/easypay/EasyPayConfig.vue b/apps/daxpay-admin/src/views/payment/merchant/easypay/EasyPayConfig.vue new file mode 100644 index 000000000..ad58c8e1b --- /dev/null +++ b/apps/daxpay-admin/src/views/payment/merchant/easypay/EasyPayConfig.vue @@ -0,0 +1,754 @@ + + + + +