mirror of
https://gitee.com/dromara/dax-pay
synced 2026-08-10 23:01:58 +08:00
feat(i18n): 新增 zh-TW/zh-HK 繁体语言包与 locale 别名映射
支持 Accept-Language 变体(zh-Hant/zh-MO 等)映射到主资源目录,台港互不回退,缺 key 统一回退 zh-CN;补齐后端 enum/error 繁体与简英词条。
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"authFailed": "換取支付寶用户標識失敗: {0}",
|
||||
"clientInitFailed": "支付寶 OpenAPI 初始化失敗: {0}"
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"authFailed": "換取支付寶使用者標識失敗: {0}",
|
||||
"clientInitFailed": "支付寶 OpenAPI 初始化失敗: {0}"
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"authFailed": "抖音: 獲取用户標識失敗: {0}"
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"authFailed": "抖音: 獲取使用者標識失敗: {0}"
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"configNotExist": "平台配置不存在或未啓用",
|
||||
"unsupportedSource": "不支持的平台",
|
||||
"unsupportedClient": "社交登錄僅支持運營端(admin)與商户端(merchant)",
|
||||
"configDuplicated": "該平台配置已存在",
|
||||
"notConfigured": "平台尚未配置,無法啓停",
|
||||
"authCodeBlank": "授權碼不能為空",
|
||||
"endpointNotConfigured": "端點配置中缺少對應前端訪問地址,無法生成回調 URL",
|
||||
"adminEndpointNotConfigured": "請先在端點配置中設置「管理端訪問地址」(adminBaseUrl)",
|
||||
"merchantEndpointNotConfigured": "請先在端點配置中設置「商户端訪問地址」(merchantBaseUrl),商户社交登錄依賴該地址生成回調",
|
||||
"alipayNotConfigured": "平台級支付寶配置不完整,請先在「三方平台管理」中配置",
|
||||
"wechatMpNotConfigured": "平台級微信公眾號配置不完整,請先在「三方平台管理」中配置",
|
||||
"douyinH5NotConfigured": "平台級抖音 H5 應用配置不完整,請先在「三方平台管理」中配置",
|
||||
"weCom": {
|
||||
"notCorpMember": "非本企業成員,不支持登錄"
|
||||
},
|
||||
"bind": {
|
||||
"alreadyBoundByOther": "該第三方賬號已被其他用户綁定",
|
||||
"alreadyBoundPlatform": "您已綁定該平台,請先解綁後再綁定新賬號",
|
||||
"clientMismatch": "當前登錄用户不屬於該終端,無法完成綁定"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"configNotExist": "平臺配置不存在或未啟用",
|
||||
"unsupportedSource": "不支援的平臺",
|
||||
"unsupportedClient": "社交登入僅支援運營端(admin)與商戶端(merchant)",
|
||||
"configDuplicated": "該平臺配置已存在",
|
||||
"notConfigured": "平臺尚未配置,無法啟停",
|
||||
"authCodeBlank": "授權碼不能為空",
|
||||
"endpointNotConfigured": "端點配置中缺少對應前端訪問地址,無法生成回撥 URL",
|
||||
"adminEndpointNotConfigured": "請先在端點配置中設定「管理端訪問地址」(adminBaseUrl)",
|
||||
"merchantEndpointNotConfigured": "請先在端點配置中設定「商戶端訪問地址」(merchantBaseUrl),商戶社交登入依賴該地址生成回撥",
|
||||
"alipayNotConfigured": "平臺級支付寶配置不完整,請先在「三方平臺管理」中配置",
|
||||
"wechatMpNotConfigured": "平臺級微信公眾號配置不完整,請先在「三方平臺管理」中配置",
|
||||
"douyinH5NotConfigured": "平臺級抖音 H5 應用配置不完整,請先在「三方平臺管理」中配置",
|
||||
"weCom": {
|
||||
"notCorpMember": "非本企業成員,不支援登入"
|
||||
},
|
||||
"bind": {
|
||||
"alreadyBoundByOther": "該第三方賬號已被其他使用者繫結",
|
||||
"alreadyBoundPlatform": "您已繫結該平臺,請先解綁後再繫結新賬號",
|
||||
"clientMismatch": "當前登入使用者不屬於該終端,無法完成繫結"
|
||||
}
|
||||
}
|
||||
@@ -25,6 +25,13 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||
/// 扫描规则: 扫描 classpath*:i18n/{locale}/**\/*.json, 文件路径映射为 key 前缀
|
||||
/// 例如: i18n/zh-CN/channel/enum.json → key 前缀 "channel.enum"
|
||||
/// JSON 内容: { "alipay": "支付宝" } → 完整 key: "channel.enum.alipay"
|
||||
///
|
||||
/// ## 地区别名
|
||||
/// 无独立资源目录的 Accept-Language 变体会先映射到主资源 locale:
|
||||
/// - `zh-Hant` / `zh-Hant-TW` → `zh-TW`
|
||||
/// - `zh-HK` / `zh-Hant-HK` / `zh-MO` / `zh-Hant-MO` → `zh-HK`
|
||||
/// - `zh-Hans` / `zh-Hans-CN` → `zh-CN`
|
||||
/// 缺 key 时: 精确资源 → 默认 `zh-CN`(台港互不为 fallback)
|
||||
@Slf4j
|
||||
public class JsonMessageSource extends AbstractMessageSource {
|
||||
|
||||
@@ -40,10 +47,26 @@ public class JsonMessageSource extends AbstractMessageSource {
|
||||
/// 已加载的可用 locale 标签集合(如 en-US, zh-CN),启动时扫描
|
||||
private final Set<String> availableLocaleTags = new HashSet<>();
|
||||
|
||||
/// 语言码 → 首个匹配的地区 locale 标签(如 en → en-US, zh → zh-CN),用于反向回退
|
||||
/// 当请求纯语言码(如 en)而无对应资源目录时, 据此映射到同语言的地区资源
|
||||
/// 语言码 → 地区 locale 标签(如 en → en-US, zh → zh-CN),用于反向回退
|
||||
private final Map<String, String> languageToRegionLocale = new HashMap<>();
|
||||
|
||||
/// Accept-Language / 客户端变体 → 资源目录 locale 标签
|
||||
private static final Map<String, String> LOCALE_ALIASES = Map.ofEntries(
|
||||
Map.entry("zh-hans", "zh-CN"),
|
||||
Map.entry("zh-hans-cn", "zh-CN"),
|
||||
Map.entry("zh-cn", "zh-CN"),
|
||||
Map.entry("zh-hant", "zh-TW"),
|
||||
Map.entry("zh-hant-tw", "zh-TW"),
|
||||
Map.entry("zh-tw", "zh-TW"),
|
||||
Map.entry("zh-hant-hk", "zh-HK"),
|
||||
Map.entry("zh-hk", "zh-HK"),
|
||||
Map.entry("zh-hant-mo", "zh-HK"),
|
||||
Map.entry("zh-mo", "zh-HK"),
|
||||
Map.entry("en", "en-US"),
|
||||
Map.entry("en-us", "en-US"),
|
||||
Map.entry("en-gb", "en-US")
|
||||
);
|
||||
|
||||
public JsonMessageSource(ResourcePatternResolver resourceResolver) {
|
||||
this.resourceResolver = resourceResolver;
|
||||
this.scanAvailableLocales();
|
||||
@@ -51,38 +74,56 @@ public class JsonMessageSource extends AbstractMessageSource {
|
||||
|
||||
@Override
|
||||
protected MessageFormat resolveCode(String code, Locale locale) {
|
||||
Map<String, String> messages = this.loadMessages(locale);
|
||||
Locale resolved = this.resolveResourceLocale(locale);
|
||||
Map<String, String> messages = this.loadMessages(resolved);
|
||||
String message = messages.get(code);
|
||||
// 未命中则按语言(不含地区)回退: zh-CN -> zh
|
||||
|
||||
// 未命中则按语言反向匹配地区: en -> en-US;zh 优先 zh-CN
|
||||
if (message == null) {
|
||||
Locale langOnly = Locale.of(locale.getLanguage());
|
||||
if (!langOnly.equals(locale)) {
|
||||
messages = this.loadMessages(langOnly);
|
||||
message = messages.get(code);
|
||||
}
|
||||
}
|
||||
// 仍未命中则按语言反向匹配地区: en -> en-US, zh -> zh-CN, zh-Hans -> zh-CN
|
||||
if (message == null) {
|
||||
String lang = locale.getLanguage();
|
||||
String lang = resolved.getLanguage();
|
||||
if (!lang.isEmpty()) {
|
||||
String regionTag = this.languageToRegionLocale.get(lang);
|
||||
if (regionTag != null) {
|
||||
Locale regionLocale = Locale.forLanguageTag(regionTag);
|
||||
if (!regionLocale.equals(locale)) {
|
||||
if (!regionLocale.equals(resolved)) {
|
||||
messages = this.loadMessages(regionLocale);
|
||||
message = messages.get(code);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// 仍未命中则用默认 locale 回退
|
||||
if (message == null && !locale.equals(this.defaultLocale)) {
|
||||
|
||||
// 仍未命中则用默认 locale 回退(台港互不回退,统一可回 zh-CN)
|
||||
if (message == null && !resolved.equals(this.defaultLocale)) {
|
||||
messages = this.loadMessages(this.defaultLocale);
|
||||
message = messages.get(code);
|
||||
}
|
||||
return message != null ? new MessageFormat(message, locale) : null;
|
||||
}
|
||||
|
||||
/// 将请求 locale 规范为资源目录标签对应的 Locale
|
||||
private Locale resolveResourceLocale(Locale locale) {
|
||||
if (locale == null) {
|
||||
return this.defaultLocale;
|
||||
}
|
||||
String tag = locale.toLanguageTag();
|
||||
String lower = tag.toLowerCase(Locale.ROOT);
|
||||
String alias = LOCALE_ALIASES.get(lower);
|
||||
if (alias != null) {
|
||||
return Locale.forLanguageTag(alias);
|
||||
}
|
||||
// 脚本 Hant 无地区 → 台湾
|
||||
if ("zh".equals(locale.getLanguage()) && "Hant".equalsIgnoreCase(locale.getScript())
|
||||
&& (locale.getCountry() == null || locale.getCountry().isEmpty())) {
|
||||
return Locale.forLanguageTag("zh-TW");
|
||||
}
|
||||
// 脚本 Hans → 简体
|
||||
if ("zh".equals(locale.getLanguage()) && "Hans".equalsIgnoreCase(locale.getScript())) {
|
||||
return Locale.forLanguageTag("zh-CN");
|
||||
}
|
||||
return locale;
|
||||
}
|
||||
|
||||
private Map<String, String> loadMessages(Locale locale) {
|
||||
return this.cachedMessages.computeIfAbsent(locale, this::loadFromFiles);
|
||||
}
|
||||
@@ -90,25 +131,20 @@ public class JsonMessageSource extends AbstractMessageSource {
|
||||
private Map<String, String> loadFromFiles(Locale locale) {
|
||||
Map<String, String> result = new HashMap<>();
|
||||
String localeTag = locale.toLanguageTag();
|
||||
// 兼容 zh-CN 和 zh_CN 两种格式
|
||||
String basePath = "classpath*:i18n/" + localeTag + "/**/*.json";
|
||||
try {
|
||||
Resource[] resources = this.resourceResolver.getResources(basePath);
|
||||
for (Resource resource : resources) {
|
||||
String filePath = resource.getURL().toString();
|
||||
// 提取相对路径: 从 i18n/{locale}/ 之后到 .json 之前
|
||||
String relativePath = this.extractRelativePath(filePath, localeTag);
|
||||
if (relativePath == null) {
|
||||
continue;
|
||||
}
|
||||
// 读取文件内容
|
||||
String content = this.readResourceContent(resource);
|
||||
if (content == null || content.isBlank()) {
|
||||
continue;
|
||||
}
|
||||
// 解析 JSON
|
||||
JSONObject jsonObj = JSONUtil.parseObj(content);
|
||||
// 递归展平
|
||||
this.flattenJson(relativePath, jsonObj, result);
|
||||
}
|
||||
log.debug("加载国际化文件完成, locale={}, 条目数={}", localeTag, result.size());
|
||||
@@ -121,7 +157,6 @@ public class JsonMessageSource extends AbstractMessageSource {
|
||||
|
||||
/// 从完整 URL 路径中提取 locale 后的相对路径
|
||||
/// 例如: .../i18n/zh-CN/channel/enum.json → channel.enum
|
||||
/// 从资源 URL 解析 i18n 相对路径前缀(供单测校验)
|
||||
String extractRelativePath(String fileUrl, String localeTag) {
|
||||
String decoded = URLDecoder.decode(fileUrl, StandardCharsets.UTF_8);
|
||||
String marker = "i18n/" + localeTag + "/";
|
||||
@@ -130,23 +165,19 @@ public class JsonMessageSource extends AbstractMessageSource {
|
||||
return null;
|
||||
}
|
||||
String relative = decoded.substring(idx + marker.length());
|
||||
// 去掉 .json 后缀
|
||||
if (relative.endsWith(".json")) {
|
||||
relative = relative.substring(0, relative.length() - 5);
|
||||
}
|
||||
// 路径分隔符替换为 .
|
||||
return relative.replace('/', '.').replace('\\', '.');
|
||||
}
|
||||
|
||||
/// 启动时扫描 i18n 目录下所有 locale 子目录,建立「语言码 → 地区 locale」反向映射
|
||||
/// 用于支持请求纯语言码(如 en)时反向匹配到地区资源(如 en-US)
|
||||
private void scanAvailableLocales() {
|
||||
try {
|
||||
Resource[] resources = this.resourceResolver.getResources("classpath*:i18n/**/*.json");
|
||||
for (Resource resource : resources) {
|
||||
String localeTag = this.extractLocaleTag(resource.getURL().toString());
|
||||
if (localeTag != null && this.availableLocaleTags.add(localeTag)) {
|
||||
// 首次发现该 locale, 记录语言 → 地区映射
|
||||
Locale locale = Locale.forLanguageTag(localeTag);
|
||||
String lang = locale.getLanguage();
|
||||
if (!lang.isEmpty()) {
|
||||
@@ -154,14 +185,21 @@ public class JsonMessageSource extends AbstractMessageSource {
|
||||
}
|
||||
}
|
||||
}
|
||||
// 多中文地区并存时,纯语言码 zh 固定落到简体,避免扫序导致落到 zh-TW/zh-HK
|
||||
if (this.availableLocaleTags.contains("zh-CN")) {
|
||||
this.languageToRegionLocale.put("zh", "zh-CN");
|
||||
}
|
||||
if (this.availableLocaleTags.contains("en-US")) {
|
||||
this.languageToRegionLocale.put("en", "en-US");
|
||||
}
|
||||
log.debug("扫描到可用 locale: {}, 语言→地区映射: {}", this.availableLocaleTags, this.languageToRegionLocale);
|
||||
} catch (IOException e) {
|
||||
}
|
||||
catch (IOException e) {
|
||||
log.warn("扫描可用 locale 失败, 语言→地区反向回退将不可用", e);
|
||||
}
|
||||
}
|
||||
|
||||
/// 从资源 URL 提取 locale 标签
|
||||
/// .../i18n/en-US/enum/xxx.json → "en-US"
|
||||
private String extractLocaleTag(String fileUrl) {
|
||||
String decoded = URLDecoder.decode(fileUrl, StandardCharsets.UTF_8);
|
||||
String marker = "i18n/";
|
||||
@@ -174,9 +212,6 @@ public class JsonMessageSource extends AbstractMessageSource {
|
||||
return slash > 0 ? after.substring(0, slash) : null;
|
||||
}
|
||||
|
||||
/// 递归展平 JSON 对象
|
||||
/// 例如: { "alipay": "支付宝", "amount": { "exceed": "金额超限" } }
|
||||
/// 前缀 "channel.enum" → channel.enum.alipay="支付宝", channel.enum.amount.exceed="金额超限"
|
||||
private void flattenJson(String prefix, JSONObject json, Map<String, String> result) {
|
||||
for (Map.Entry<String, Object> entry : json.entrySet()) {
|
||||
String key = prefix.isEmpty() ? entry.getKey() : prefix + "." + entry.getKey();
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"cny": "CNY",
|
||||
"usd": "USD",
|
||||
"jpy": "JPY",
|
||||
"eur": "EUR",
|
||||
"hkd": "HKD",
|
||||
"gbp": "GBP"
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"normal": "Normal Pay",
|
||||
"gateway": "Gateway Pay",
|
||||
"authorize": "Authorize",
|
||||
"capture": "Capture",
|
||||
"recurring": "Recurring",
|
||||
"combine_sub": "Combine Sub-order"
|
||||
}
|
||||
@@ -28,5 +28,6 @@
|
||||
"beReplaced": "Account signed in on another device",
|
||||
"kickOut": "Session no longer valid, please log in again",
|
||||
"tokenFreeze": "Authentication credential frozen",
|
||||
"concurrentLimitExceeded": "Concurrent login limit reached, please sign out from another device first"
|
||||
"concurrentLimitExceeded": "Concurrent login limit reached, please sign out from another device first",
|
||||
"contextNotInit": "Auth context is not initialized. Please sign in again or refresh the page."
|
||||
}
|
||||
|
||||
@@ -36,5 +36,10 @@
|
||||
"gatewayPayTypeNotExist": "Gateway pay type not found: {0}",
|
||||
"aggregateConfigLevelNotExist": "Aggregate config level not found: {0}",
|
||||
"gatewayCashierTypeNotExist": "Gateway cashier type not found: {0}",
|
||||
"cashierItemResolveModeNotExist": "Cashier item resolve mode not found: {0}"
|
||||
"cashierItemResolveModeNotExist": "Cashier item resolve mode not found: {0}",
|
||||
"currencyNotExist": "Currency not found: {0}",
|
||||
"payTradeTypeNotExist": "Pay trade type not found: {0}",
|
||||
"payFundStatusNotExist": "Pay fund status not found: {0}",
|
||||
"normalOrderStatusNotExist": "Normal pay order status not found: {0}",
|
||||
"gatewayOrderStatusNotExist": "Gateway order status not found: {0}"
|
||||
}
|
||||
|
||||
@@ -5,5 +5,6 @@
|
||||
"permissionDbError": "User has no permission",
|
||||
"internalCannotDelete": "Built-in role cannot be deleted",
|
||||
"assignOutOfScope": "Role assignment exceeds the assignable scope",
|
||||
"assignCrossClient": "Cannot assign a role across terminals: user client [{0}], role client [{1}]",
|
||||
"notExist": "Role not found"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"cny": "人民币",
|
||||
"usd": "美元",
|
||||
"jpy": "日元",
|
||||
"eur": "欧元",
|
||||
"hkd": "港元",
|
||||
"gbp": "英镑"
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"normal": "普通支付",
|
||||
"gateway": "网关支付",
|
||||
"authorize": "预授权冻结",
|
||||
"capture": "预授权捕获",
|
||||
"recurring": "周期代扣",
|
||||
"combine_sub": "合单子单"
|
||||
}
|
||||
@@ -28,5 +28,6 @@
|
||||
"beReplaced": "账号已在其他设备登录",
|
||||
"kickOut": "登录状态已失效,请重新登录",
|
||||
"tokenFreeze": "登录凭证已被冻结",
|
||||
"concurrentLimitExceeded": "并发登录数已达上限,请先退出其他设备"
|
||||
"concurrentLimitExceeded": "并发登录数已达上限,请先退出其他设备",
|
||||
"contextNotInit": "认证上下文未初始化,请重新登录或刷新页面"
|
||||
}
|
||||
|
||||
@@ -36,5 +36,10 @@
|
||||
"gatewayPayTypeNotExist": "网关支付类型不存在: {0}",
|
||||
"aggregateConfigLevelNotExist": "聚合扫码配置深度不存在: {0}",
|
||||
"gatewayCashierTypeNotExist": "收银台类型不存在: {0}",
|
||||
"cashierItemResolveModeNotExist": "收银台支付项解析模式不存在: {0}"
|
||||
"cashierItemResolveModeNotExist": "收银台支付项解析模式不存在: {0}",
|
||||
"currencyNotExist": "币种不存在: {0}",
|
||||
"payTradeTypeNotExist": "资金交易形态不存在: {0}",
|
||||
"payFundStatusNotExist": "资金交易状态不存在: {0}",
|
||||
"normalOrderStatusNotExist": "普通支付订单状态不存在: {0}",
|
||||
"gatewayOrderStatusNotExist": "网关支付订单状态不存在: {0}"
|
||||
}
|
||||
|
||||
@@ -5,5 +5,6 @@
|
||||
"permissionDbError": "用户没有权限",
|
||||
"internalCannotDelete": "内置角色不允许删除",
|
||||
"assignOutOfScope": "角色分配超出了可分配的范围",
|
||||
"assignCrossClient": "禁止为用户分配跨终端角色:用户归属终端[{0}],角色归属终端[{1}]",
|
||||
"notExist": "角色不存在"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"success": "success",
|
||||
"channelNotFound": "不支持的通道編碼",
|
||||
"channelNotFoundWithDetail": "不支持的通道編碼: {0}",
|
||||
"invalidConfig": "通道配置無效",
|
||||
"sdkCallFailed": "SDK 調用失敗",
|
||||
"sdkCallFailedWithDetail": "SDK 調用失敗: {0}",
|
||||
"callbackVerifyFailed": "回調驗籤失敗",
|
||||
"cacheConcurrentConflict": "併發衝突",
|
||||
"systemError": "系統內部錯誤",
|
||||
"validateParams": "參數校驗失敗",
|
||||
"wechatOrderQueryFailed": "微信訂單查詢異常: {0}",
|
||||
"wechatRefundQueryFailed": "微信退款查詢異常: {0}",
|
||||
"wechatRefundCallFailed": "微信退款調用異常: {0}",
|
||||
"wechatPayCallFailed": "微信支付調用異常: {0}",
|
||||
"wechatCloseOrderFailed": "微信關閉訂單異常: {0}",
|
||||
"alipayOrderQueryFailed": "支付寶訂單查詢異常: {0}",
|
||||
"alipayRefundQueryFailed": "支付寶退款查詢異常: {0}",
|
||||
"alipayRefundFailed": "支付寶退款異常: {0}",
|
||||
"alipayRefundCallFailed": "支付寶退款調用異常: {0}",
|
||||
"alipayPreCreateFailed": "支付寶預創建訂單異常: {0}",
|
||||
"alipayPayCallFailed": "支付寶支付調用異常: {0}",
|
||||
"alipayCloseOrderFailed": "支付寶關閉訂單異常: {0}",
|
||||
"alipayClientCreateFailed": "創建AlipayClient異常: {0}",
|
||||
"lakalaIsvKeyNotConfigured": "拉卡拉服務商密鑰未配置",
|
||||
"lakalaMerchantDuplicate": "該商户下已存在此拉卡拉商户號",
|
||||
"lakalaPayFailed": "支付異常: {0}",
|
||||
"lakalaRefundFailed": "退款異常: {0}",
|
||||
"lakalaSyncFailed": "訂單同步異常: {0}",
|
||||
"lakalaCloseFailed": "關閉訂單異常: {0}",
|
||||
"lakalaUnsupportedPayMethod": "拉卡拉不支持的支付方式: {0}",
|
||||
"yeepayPayFailed": "易寶支付下單失敗",
|
||||
"yeepayCloseFailed": "易寶關閉訂單失敗",
|
||||
"yeepayUnsupportedPayMethod": "易寶不支持該支付方式: {0}"
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"save": "保存",
|
||||
"delete": "刪除",
|
||||
"confirm": "確認",
|
||||
"cancel": "取消",
|
||||
"submit": "提交",
|
||||
"enable": "啓用",
|
||||
"disable": "停用",
|
||||
"operation": "操作",
|
||||
"createTime": "創建時間",
|
||||
"updateTime": "更新時間"
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"auto": "跟隨通道路由",
|
||||
"method": "指定支付方式",
|
||||
"direct": "指定通道商户"
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"merchant": "商户進件",
|
||||
"enterprise": "企業進件",
|
||||
"micro": "小微進件"
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"system": "系統回調"
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"method": "指定支付方式",
|
||||
"direct": "指定通道商户"
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"browser": "瀏覽器環境",
|
||||
"wechat_pay": "微信環境",
|
||||
"alipay": "支付寶環境",
|
||||
"union_pay": "雲閃付環境",
|
||||
"douyin": "抖音環境"
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"alipay": "支付寶",
|
||||
"wechat": "微信支付",
|
||||
"union_pay": "雲閃付",
|
||||
"leshua_pay": "樂刷",
|
||||
"vbill_pay": "隨行付",
|
||||
"ada_pay": "匯付天下",
|
||||
"dougong_pay": "斗拱",
|
||||
"hkrt_pay": "海科融通",
|
||||
"lakala_pay": "拉卡拉",
|
||||
"fuyou_pay": "富友",
|
||||
"sheng_pay": "盛付通",
|
||||
"ysep_pay": "銀盛",
|
||||
"quick_pay": "快錢",
|
||||
"sand_pay": "杉德",
|
||||
"yee_pay": "易寶",
|
||||
"ums_pay": "銀聯商務",
|
||||
"douyin_pay": "抖音支付",
|
||||
"jee_pay": "jeepay"
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"mch": "標準商户",
|
||||
"isv": "服務商",
|
||||
"mix": "混合調用"
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"wechat": "微信",
|
||||
"alipay": "支付寶",
|
||||
"union_pay": "銀聯",
|
||||
"douyin": "抖音"
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"mch_info": "商户信息"
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"manual": "手動創建"
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"mch": "商户號",
|
||||
"identity": "身份標識"
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"init": "初始化",
|
||||
"wait": "未報送",
|
||||
"submit": "已報送",
|
||||
"logged": "已註銷",
|
||||
"error": "錯誤"
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"gateway": "支付網關",
|
||||
"admin": "運營端",
|
||||
"merchant": "商户端"
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"cny": "人民幣",
|
||||
"usd": "美元",
|
||||
"jpy": "日元",
|
||||
"eur": "歐元",
|
||||
"hkd": "港元",
|
||||
"gbp": "英鎊"
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"mini_program": "小程序",
|
||||
"mobile_app": "移動應用",
|
||||
"web_app": "網站應用"
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"oss": "對象存儲配置",
|
||||
"alipay_auth": "支付寶開放平台認證配置",
|
||||
"wechat_mp_auth": "微信公眾號 H5 認證配置",
|
||||
"douyin_h5_auth": "抖音開放平台 H5 應用認證配置"
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"pending": "待上傳",
|
||||
"uploaded": "已上傳"
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"qr_code": "掃碼支付",
|
||||
"link": "跳轉鏈接",
|
||||
"mini_app": "小程序跳轉鏈接",
|
||||
"jsapi": "JSAPI",
|
||||
"from": "表單方式",
|
||||
"app": "APP支付方式"
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"h5": "H5收銀台",
|
||||
"web": "WEB收銀台"
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"wait_pay": "待支付",
|
||||
"paying": "支付中",
|
||||
"paid": "已支付",
|
||||
"closed": "已關閉",
|
||||
"expired": "已過期"
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"cashier": "統一收銀台",
|
||||
"aggregate": "聚合掃碼"
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"disabled": "禁用",
|
||||
"enable": "啓用"
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"catalog": "目錄",
|
||||
"menu": "菜單",
|
||||
"subpage": "子頁面",
|
||||
"subpage_group": "子頁面分組",
|
||||
"embedded": "內嵌頁面",
|
||||
"link": "外鏈"
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"disabled": "禁用",
|
||||
"enable": "啓用"
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"merchant": "商户端",
|
||||
"admin": "管理端",
|
||||
"cashier": "收銀台小程序"
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"wx_h5": "微信公眾號",
|
||||
"wx_mini": "微信小程序",
|
||||
"alipay_mini": "支付寶小程序",
|
||||
"dy_mini": "抖音小程序",
|
||||
"android": "安卓APP",
|
||||
"ios": "iOS APP"
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"wait_pay": "待支付",
|
||||
"paid": "已支付",
|
||||
"closed": "已關閉",
|
||||
"expired": "已過期"
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"auto": "自動發送",
|
||||
"manual": "手動發送"
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"pay": "支付訂單變動通知",
|
||||
"refund": "退款訂單變動通知"
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"normal": "普通",
|
||||
"important": "重要"
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"draft": "草稿",
|
||||
"published": "發佈",
|
||||
"offline": "下線"
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"notice": "公告",
|
||||
"message": "消息"
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"other": "其它",
|
||||
"add": "新增",
|
||||
"update": "修改",
|
||||
"delete": "刪除",
|
||||
"grant": "授權",
|
||||
"sync": "同步",
|
||||
"export": "導出",
|
||||
"import": "導入",
|
||||
"force": "強退",
|
||||
"clean": "清空"
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"link": "支付鏈接",
|
||||
"jsapi": "JSAPI對象",
|
||||
"from": "表單數據",
|
||||
"identifier": "標識碼",
|
||||
"qr_code": "二維碼",
|
||||
"json": "JSON對象"
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"aggregate_pay_qrcode": "聚合掃碼",
|
||||
"aggregate_pay_barcode": "聚合付款碼",
|
||||
"wechat_cashier": "微信小程序收銀台",
|
||||
"wechat_jsapi": "微信 JSAPI",
|
||||
"wechat_app": "微信 APP",
|
||||
"wechat_h5": "微信 H5",
|
||||
"wechat_qr": "微信掃碼",
|
||||
"wechat_mini": "微信小程序",
|
||||
"wechat_barcode": "微信付款碼",
|
||||
"alipay_barcode": "支付寶付款碼",
|
||||
"alipay_qr": "支付寶掃碼",
|
||||
"alipay_app": "支付寶 APP",
|
||||
"alipay_h5": "支付寶 H5",
|
||||
"alipay_pc": "支付寶電腦",
|
||||
"alipay_jsapi": "支付寶 JSAPI",
|
||||
"alipay_mini": "支付寶小程序",
|
||||
"union_pay_qr": "銀聯掃碼",
|
||||
"union_pay_barcode": "銀聯付款碼",
|
||||
"union_pay_h5": "銀聯 H5",
|
||||
"union_pay_jsapi": "銀聯 JSAPI",
|
||||
"douyin_qr": "抖音掃碼",
|
||||
"douyin_jsapi": "抖音 JSAPI",
|
||||
"douyin_h5": "抖音 H5",
|
||||
"douyin_app": "抖音 APP",
|
||||
"visa_card_gateway": "Visa 網關",
|
||||
"visa_card_present": "Visa 線下",
|
||||
"mastercard_card_gateway": "萬事達網關",
|
||||
"mastercard_card_present": "萬事達線下"
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"prod": "生產環境",
|
||||
"sandbox": "沙箱環境",
|
||||
"none": "未啓用"
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"init": "待支付",
|
||||
"processing": "處理中",
|
||||
"success": "成功",
|
||||
"fail": "失敗",
|
||||
"close": "已關閉",
|
||||
"cancel": "已撤銷"
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"no_credit": "信用卡支付"
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"aggregate_pay_qrcode": "聚合掃碼",
|
||||
"aggregate_pay_barcode": "聚合付款碼",
|
||||
"wechat_cashier": "微信小程序收銀台",
|
||||
"wechat_qr": "微信Native",
|
||||
"wechat_jsapi": "微信JSAPI",
|
||||
"wechat_mini": "微信小程序",
|
||||
"wechat_h5": "微信H5",
|
||||
"wechat_app": "微信APP",
|
||||
"wechat_barcode": "微信付款碼",
|
||||
"alipay_qr": "支付寶掃碼",
|
||||
"alipay_jsapi": "支付寶JSAPI",
|
||||
"alipay_mini": "支付寶小程序",
|
||||
"alipay_pc": "支付寶PC",
|
||||
"alipay_h5": "支付寶H5",
|
||||
"alipay_app": "支付寶APP",
|
||||
"alipay_barcode": "支付寶付款碼",
|
||||
"union_qr": "銀聯掃碼",
|
||||
"union_jsapi": "銀聯JSAPI",
|
||||
"union_h5": "銀聯H5",
|
||||
"union_pay_barcode": "銀聯付款碼",
|
||||
"douyin_qr": "抖音掃碼",
|
||||
"douyin_jsapi": "抖音JSAPI",
|
||||
"douyin_h5": "抖音H5",
|
||||
"douyin_app": "抖音APP",
|
||||
"visa_card_gateway": "Visa網關",
|
||||
"visa_card_present": "Visa刷卡",
|
||||
"mastercard_card_gateway": "萬事達網關",
|
||||
"mastercard_card_present": "萬事達刷卡",
|
||||
"other": "其他"
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"aggregate_pay": "聚合支付",
|
||||
"wechat": "微信支付",
|
||||
"alipay": "支付寶",
|
||||
"union_pay": "銀聯",
|
||||
"visa": "Visa",
|
||||
"mastercard": "萬事達",
|
||||
"douyin": "抖音支付"
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"no_refund": "未退款",
|
||||
"refunding": "退款中",
|
||||
"partial_refund": "部分退款",
|
||||
"refunded": "全部退款"
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"basic": "按渠道默認",
|
||||
"scene": "按支付方式"
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"wait": "待支付",
|
||||
"progress": "支付中",
|
||||
"success": "成功",
|
||||
"close": "支付關閉",
|
||||
"cancel": "支付撤銷",
|
||||
"fail": "失敗",
|
||||
"timeout": "支付超時"
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"normal": "普通支付",
|
||||
"gateway": "網關支付",
|
||||
"authorize": "預授權凍結",
|
||||
"capture": "預授權捕獲",
|
||||
"recurring": "週期代扣",
|
||||
"combine_sub": "合單子單"
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"security_password_policy": "密碼策略配置",
|
||||
"security_login": "登錄安全配置",
|
||||
"security_session": "會話管理配置",
|
||||
"security_two_factor_auth": "雙因素認證配置",
|
||||
"url": "系統訪問地址配置",
|
||||
"website": "站點顯示內容配置",
|
||||
"wechat_notify": "微信消息通知模板配置"
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"alipay_isv": "支付寶(服務商)",
|
||||
"alipay": "支付寶(直連)",
|
||||
"wechat_isv": "微信支付(服務商)",
|
||||
"wechat_pay": "微信支付(直連)",
|
||||
"douyin_pay": "抖音支付(直連)",
|
||||
"ums_qrcode": "銀聯商務(C掃B)",
|
||||
"ums_jsapi": "銀聯商務(公眾號)",
|
||||
"ums_app": "銀聯商務(APP)",
|
||||
"ums_mini": "銀聯商務(小程序)",
|
||||
"ums_h5": "銀聯商務(H5)",
|
||||
"ums_barcode": "銀聯商務(B掃C)",
|
||||
"lakala_pay": "拉卡拉支付",
|
||||
"leshua_pay": "樂刷支付",
|
||||
"ada_pay": "匯付天下",
|
||||
"dougong_pay": "斗拱支付",
|
||||
"hkrt_pay": "海科融通",
|
||||
"vbill_pay": "隨行付",
|
||||
"fuyou_pay": "富友支付",
|
||||
"sheng_pay": "盛付通",
|
||||
"ysep_pay": "銀盛支付",
|
||||
"quick_pay": "快錢支付",
|
||||
"hm_pay": "河馬付",
|
||||
"sand_pay": "杉德支付",
|
||||
"yee_pay": "易寶支付",
|
||||
"jee_pay": "Jeepay"
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"random": "自定義金額",
|
||||
"fixed": "固定金額"
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"enabled": "啓用",
|
||||
"disabled": "停用"
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"init": "初始化",
|
||||
"progress": "退款中",
|
||||
"success": "退款成功",
|
||||
"fail": "退款失敗",
|
||||
"close": "退款關閉"
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"H5": "H5頁面",
|
||||
"MINI_APP": "小程序",
|
||||
"ADMIN": "後台創建",
|
||||
"PC": "PC端"
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"merchant_admin": "商户管理員"
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"weChat": "微信開放平台",
|
||||
"weCom": "企業微信",
|
||||
"qq": "QQ",
|
||||
"github": "GitHub",
|
||||
"gitee": "Gitee",
|
||||
"google": "Google",
|
||||
"feishu": "飛書",
|
||||
"dingTalk": "釘釘",
|
||||
"douyin": "抖音",
|
||||
"alipay": "支付寶"
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"disabled": "停用",
|
||||
"enable": "啓用"
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"micro": "小微商户",
|
||||
"individual": "個體工商户",
|
||||
"enterprise": "企業"
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"pay": "支付",
|
||||
"refund": "退款",
|
||||
"transfer": "轉賬"
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"user": "用户操作",
|
||||
"mch_api": "商户API",
|
||||
"cashier_code": "碼牌",
|
||||
"checkout": "收銀台支付",
|
||||
"aggress_pay": "聚合/收銀台支付"
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"progress": "執行中",
|
||||
"success": "成功",
|
||||
"fail": "失敗",
|
||||
"closed": "關閉",
|
||||
"revoked": "撤銷",
|
||||
"exception": "異常"
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"pay": "支付",
|
||||
"refund": "退款",
|
||||
"cashouts": "提現",
|
||||
"settle": "結算"
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"public": "公開文件",
|
||||
"private": "私有文件"
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"WEB": "Web端",
|
||||
"APP": "App端",
|
||||
"MINIAPP": "小程序端"
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"MARKDOWN": "Markdown"
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"DRAFT": "草稿",
|
||||
"PUBLISHED": "已發佈",
|
||||
"ARCHIVED": "已歸檔"
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"USER_AGREEMENT": "用户協議",
|
||||
"PRIVACY_POLICY": "隱私政策",
|
||||
"THIRD_PARTY_INFO": "第三方信息共享清單",
|
||||
"CHILDREN_POLICY": "未成年人隱私説明"
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"normal": "正常",
|
||||
"lock": "鎖定",
|
||||
"ban": "封禁"
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"withdraw": "提現",
|
||||
"adjust": "人工調賬"
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"SP_APP": "服務商應用",
|
||||
"SUB_APP": "子商户應用"
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"sp": "服務商用户標識",
|
||||
"sub": "子商户應用用户標識"
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"official_account": "公眾號",
|
||||
"mini_program": "小程序",
|
||||
"mobile_app": "移動應用"
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"official_account": "公眾號",
|
||||
"mini_program": "小程序",
|
||||
"mobile_app": "移動應用"
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"official_account": "公眾號",
|
||||
"miniprogram": "小程序"
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"sendFailed": "消息發送失敗: {0}",
|
||||
"delaySendFailed": "延時消息發送失敗: {0}",
|
||||
"serializeFailed": "消息序列化失敗: {0}",
|
||||
"parseBodyFailed": "消息體解析失敗: {0}",
|
||||
"typeConvertFailed": "消息類型轉換失敗: {0}"
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"accountOrPasswordError": "賬號或密碼不正確",
|
||||
"notLogin": "用户未登錄",
|
||||
"passwordExpired": "密碼已過期,請先修改密碼",
|
||||
"captchaError": "驗證碼錯誤",
|
||||
"captchaRequired": "請輸入驗證碼",
|
||||
"userNotFound": "用户未找到",
|
||||
"routerCheck": "沒有對應請求路徑的權限",
|
||||
"applicationNotFound": "未找到對應的應用",
|
||||
"applicationNotEnable": "指定應用已被停用",
|
||||
"clientNotFound": "未找到對應的終端",
|
||||
"clientNotEnable": "指定終端方式已被停用",
|
||||
"clientMismatch": "該第三方賬號綁定的用户不屬於當前登錄終端",
|
||||
"userStatusError": "用户狀態異常",
|
||||
"privateKeyNotConfigured": "平台私鑰未配置,無法解密密碼",
|
||||
"passwordDecryptFailed": "密碼解密失敗,請檢查密碼傳輸方式",
|
||||
"loginMethodNotSupported": "當前終端不支持該登錄方式",
|
||||
"loginAuthenticatorNotFound": "未找到對應的登錄認證器",
|
||||
"builtinAdminLoginDisabled": "當前終端未開啓內置超管登錄能力",
|
||||
"userDisabled": "該用户已被禁用",
|
||||
"twoFactorRequired": "需要雙因素認證",
|
||||
"twoFactorCodeError": "動態碼或備用碼錯誤",
|
||||
"twoFactorPreAuthExpired": "預認證令牌無效或已過期,請重新登錄",
|
||||
"loginRetryLock": "登錄失敗次數過多,請{0}分鐘後重試",
|
||||
"notToken": "未提供登錄憑證",
|
||||
"invalidToken": "登錄憑證無效",
|
||||
"tokenTimeout": "登錄已過期,請重新登錄",
|
||||
"beReplaced": "賬號已在其他設備登錄",
|
||||
"kickOut": "登錄狀態已失效,請重新登錄",
|
||||
"tokenFreeze": "登錄憑證已被凍結",
|
||||
"concurrentLimitExceeded": "併發登錄數已達上限,請先退出其他設備",
|
||||
"contextNotInit": "認證上下文未初始化,請重新登錄或刷新頁面"
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"envMismatch": "通道商户環境與支付產品當前生效環境不一致"
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
{
|
||||
"alipayNotEnabled": "支付寶通道未啓用",
|
||||
"wechatNotEnabled": "商户或服務商微信支付通道未啓用",
|
||||
"productConfigNotExist": "服務商產品支付配置不存在",
|
||||
"noSubMchPerm": "你沒有權限配置此子商户號",
|
||||
"closeFailed": "支付寶關閉訂單異常: {0}",
|
||||
"closeFailedReason": "關閉失敗, 原因: {0}",
|
||||
"cannotCloseSyncFirst": "當前交易無法關閉操作, 請對訂單同步狀態後再進行操作",
|
||||
"refundQueryInterval": "間隔10秒以上再發起退款查詢請求",
|
||||
"alipayRefundFailed": "支付寶退款失敗: {0}",
|
||||
"wechatRefundV3Failed": "微信退款V3失敗",
|
||||
"alipayH5Failed": "支付寶手機支付失敗",
|
||||
"alipayAppFailed": "支付寶APP支付失敗",
|
||||
"alipayPcFailed": "支付寶PC支付失敗",
|
||||
"alipayJsapiFailed": "支付寶JsApi支付失敗",
|
||||
"alipayScanFailed": "支付寶掃碼支付失敗",
|
||||
"alipayBscanFailed": "主動掃碼支付失敗",
|
||||
"payFailed": "支付寶支付異常: {0}",
|
||||
"notSupportCancel": "該訂單不支持撤銷操作",
|
||||
"notSupportMethod": "暫不支持的支付寶支付方式: {0}",
|
||||
"wechatJsapiNeedOpenid": "微信JSAPI支付必須傳入openId參數",
|
||||
"wechatH5Failed": "微信V3手機網站支付失敗",
|
||||
"wechatAppFailed": "微信V3程序支付失敗",
|
||||
"wechatJsapiFailed": "微信V3JsApi支付失敗",
|
||||
"wechatScanFailed": "微信V3掃碼支付失敗",
|
||||
"wechatCancelV3Failed": "微信撤銷支付V3失敗",
|
||||
"privateKeyRequired": "應用私鑰不可為空",
|
||||
"alipayPublicKeyRequired": "支付寶公鑰不可為空",
|
||||
"appCertRequired": "應用公鑰證書不可為空",
|
||||
"alipayCertRequired": "支付寶公鑰證書不可為空",
|
||||
"alipayRootCertRequired": "支付寶CA根證書不可為空",
|
||||
"apiV3KeyRequired": "API V3密鑰不可為空",
|
||||
"subConfigNotExist": "支付寶子商户配置不存在",
|
||||
"mchProductConfigNotExist": "支付寶產品支付配置不存在",
|
||||
"appIdDuplicate": "同一服務商下應用ID已存在",
|
||||
"appNotFound": "支付寶服務商應用不存在",
|
||||
"mchAppNotFound": "支付寶通道商户應用不存在",
|
||||
"subMerchantDuplicate": "該支付寶應用下已存在此子商户號",
|
||||
"directMchDuplicate": "同一商户下該支付寶商户已存在",
|
||||
"userIdTypeInvalid": "用户標識類型不合法",
|
||||
"capabilityDuplicate": "支付能力[{0}]重複配置",
|
||||
"authUserIdMismatch": "授權返回的商户號與通道商户綁定的子商户號不一致,已拒絕綁定",
|
||||
"subMerchantNoRequired": "請先配置子商户號(2088)後再發起代運營授權",
|
||||
"authCodeInvalid": "支付寶授權碼無效或已過期",
|
||||
"authTokenExchangeFailed": "換取應用授權令牌失敗: {0}",
|
||||
"paymentGatewayUrlRequired": "平台支付網關地址(paymentGatewayBaseUrl)未配置,無法生成授權回調地址"
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"mchAppNotFound": "抖音通道商户應用不存在",
|
||||
"appIdDuplicate": "同一通道商户下抖音應用ID已存在",
|
||||
"directMchDuplicate": "同一商户下該抖音直連商户已存在",
|
||||
"appTypeInvalid": "抖音應用類型無效",
|
||||
"capabilityDuplicate": "同一通道商户下支付能力[{0}]重複配置",
|
||||
"payFailed": "抖音支付異常: {0}",
|
||||
"closeFailed": "抖音關閉訂單異常: {0}",
|
||||
"notSupportMethod": "暫不支持的抖音支付方式: {0}"
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"privateKeyRequired": "應用私鑰不可為空",
|
||||
"publicKeyRequired": "應用公鑰不可為空",
|
||||
"lklAppIdRequired": "拉卡拉應用編號不可為空",
|
||||
"mchSerialNoRequired": "商户證書序列號不可為空",
|
||||
"termNoNotConfigured": "終端號未配置, 請在商户配置中填寫"
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"isvKeyNotConfigured": "樂刷服務商密鑰未配置",
|
||||
"merchantDuplicate": "該商户下已存在此樂刷商户號"
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"payFailed": "銀聯商務支付異常: {0}",
|
||||
"closeFailed": "銀聯商務關閉訂單異常: {0}",
|
||||
"notSupportMethod": "暫不支持的銀聯商務支付方式: {0}"
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"isvKeyNotConfigured": "隨行付服務商密鑰未配置",
|
||||
"mnoNotConfigured": "天闕商户號(mno)未配置, 請在商户配置中填寫",
|
||||
"merchantDuplicate": "該商户下已存在此天闕商户號"
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
{
|
||||
"notEnabled": "微信支付未啓用",
|
||||
"refundV3Failed": "微信退款V3失敗: {0}",
|
||||
"jsapiNeedOpenid": "微信JSAPI支付需要傳入openId",
|
||||
"h5Failed": "微信H5支付失敗: {0}",
|
||||
"appFailed": "微信APP支付失敗: {0}",
|
||||
"jsapiFailed": "微信JSAPI支付失敗: {0}",
|
||||
"scanFailed": "微信掃碼支付失敗: {0}",
|
||||
"cancelV3Failed": "微信撤銷V3失敗: {0}",
|
||||
"apiV3KeyRequired": "API V3密鑰未配置",
|
||||
"privateKeyRequired": "商户私鑰未配置",
|
||||
"messageRecordNotExist": "消息記錄不存在",
|
||||
"onlyFailedCanResend": "只能重發失敗的消息",
|
||||
"platformConfigNotExist": "微信消息通知配置不存在",
|
||||
"mpAuthConfigIncomplete": "三方平台微信公眾號憑據未配置(AppId/AppSecret)",
|
||||
"configParamsRequired": "微信配置參數不能為空",
|
||||
"mpTemplateMessageFailed": "發送公眾號模板消息失敗: {0}",
|
||||
"mpTemplateMessageError": "發送公眾號模板消息異常: {0}",
|
||||
"maUniformMessageFailed": "發送小程序統一服務消息失敗: {0}",
|
||||
"maUniformMessageError": "發送小程序統一服務消息異常: {0}",
|
||||
"unsupportedMessageType": "不支持的消息類型: {0}",
|
||||
"messageResendFailed": "重發消息失敗: {0}",
|
||||
"userInfoFetchFailed": "獲取用户信息失敗: {0}",
|
||||
"userInfoFetchError": "獲取用户信息異常: {0}",
|
||||
"paramsRequired": "參數不能為空",
|
||||
"phoneFetchFailed": "獲取手機號失敗: {0}",
|
||||
"phoneFetchError": "獲取手機號異常: {0}",
|
||||
"userInfoNotFound": "未獲取到微信用户信息",
|
||||
"userNotSubscribed": "用户未關注公眾號",
|
||||
"phoneNotFound": "未獲取到微信手機號",
|
||||
"mpAuthFailed": "微信公眾號認證失敗: {0}",
|
||||
"mpAuthConfigError": "微信公眾號認證配置錯誤: {0}",
|
||||
"maAuthFailed": "微信小程序認證失敗: {0}",
|
||||
"maAuthConfigError": "微信小程序認證配置錯誤: {0}",
|
||||
"subConfigNotExist": "微信子商户配置不存在",
|
||||
"productConfigNotExist": "微信服務商密鑰配置不存在",
|
||||
"appNotFound": "微信服務商應用不存在",
|
||||
"mchAppNotFound": "微信通道商户應用不存在",
|
||||
"mchAppWxAppIdDuplicate": "該通道商户下微信應用AppId已存在",
|
||||
"appIdDuplicate": "該服務商下微信應用AppId已存在",
|
||||
"appTypeInvalid": "微信應用類型無效",
|
||||
"authAppTypeInvalid": "微信認證應用類型無效",
|
||||
"appSecretRequired": "應用密鑰不可為空",
|
||||
"publicKeyRequired": "支付公鑰未配置",
|
||||
"privateCertRequired": "API證書未配置",
|
||||
"subMerchantDuplicate": "該微信應用下已存在此特約商户號",
|
||||
"directMchDuplicate": "同一商户下該微信商户已存在",
|
||||
"capabilityDuplicate": "微信支付能力[{0}]重複配置",
|
||||
"payFailed": "微信支付異常: {0}",
|
||||
"closeFailed": "微信關閉訂單異常: {0}",
|
||||
"unsupportedPayMethod": "暫不支持的微信支付方式: {0}",
|
||||
"accessTokenLockFailed": "獲取AccessToken失敗:無法獲取分佈式鎖",
|
||||
"refreshAccessTokenFailed": "刷新AccessToken失敗: {0}",
|
||||
"refreshAccessTokenEmpty": "刷新AccessToken失敗:返回的Token為空",
|
||||
"isvKeyNotConfigured": "微信服務商密鑰未配置或不完整,請先完成服務商密鑰配置",
|
||||
"authUrlFailed": "獲取授權鏈接失敗: {0}",
|
||||
"authFailed": "獲取用户標識(openId)失敗: {0}",
|
||||
"opAppIdNotFound": "指定的應用AppId[{0}]未在系統中配置"
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
{
|
||||
"system": "系統錯誤",
|
||||
"authFail": "認證失敗",
|
||||
"notFound": "資源不存在",
|
||||
"dataNotExist": "數據不存在",
|
||||
"validateParams": "參數驗證失敗: {0}",
|
||||
"parseParams": "參數處理失敗",
|
||||
"unsupportedOperate": "不支持的操作",
|
||||
"repetitiveOperation": "重複操作",
|
||||
"dangerSql": "檢測到危險SQL",
|
||||
"dangerSqlWithValue": "請注意,值可能存在SQL注入風險!--->{0}",
|
||||
"rsaPrivateKeyParseFailed": "私鑰解析失敗,需要為 PKCS#8 格式的Rsa私鑰",
|
||||
"rsaPublicKeyParseFailed": "公鑰解析失敗,需要為 PKCS#8 格式的Rsa公鑰",
|
||||
"internalForbidden": "內部接口不允許普通用户進行調用",
|
||||
"dbTypeNotFound": "獲取數據庫類型失敗",
|
||||
"nonceMissing": "請求缺少防重放驗證參數",
|
||||
"nonceInvalid": "請求驗證已失效,請重試",
|
||||
"timestampExpired": "請求時間戳已過期,請重試",
|
||||
"translateColumnNotFound": "實體類 {0} 中未找到屬性 {1} 的列映射",
|
||||
"enumUnknown": "未知類型: {0}",
|
||||
"fileOperationFailed": "文件操作失敗: {0}",
|
||||
"payStatusNotExist": "該支付狀態不存在",
|
||||
"payEnvNotExist": "支付環境不存在",
|
||||
"tradeTypeNotExist": "交易類型不存在: {0}",
|
||||
"tradeStatusNotExist": "交易狀態不存在: {0}",
|
||||
"refundStatusNotExist": "退款狀態不存在: {0}",
|
||||
"payRefundStatusNotExist": "該退款狀態不存在: {0}",
|
||||
"payCallTypeNotSupported": "不支持的收銀台類型: {0}",
|
||||
"channelAuthTypeNotExist": "認證類型不存在: {0}",
|
||||
"mchAppStatusNotFound": "未找到對應的商户應用狀態類型: {0}",
|
||||
"storeStatusNotFound": "未找到對應的門店狀態類型: {0}",
|
||||
"backendBaseUrlNotConfigured": "平台後端訪問地址(backendBaseUrl)未配置, 無法生成回調地址",
|
||||
"requestContextMissing": "無法獲取請求上下文",
|
||||
"gatewayUrlNotConfigured": "支付網關前端地址(paymentGatewayBaseUrl)未配置, 無法生成認證回調地址",
|
||||
"cashierSceneNotExist": "收銀場景不存在: {0}",
|
||||
"gatewayPayTypeNotExist": "網關支付類型不存在: {0}",
|
||||
"aggregateConfigLevelNotExist": "聚合掃碼配置深度不存在: {0}",
|
||||
"gatewayCashierTypeNotExist": "收銀台類型不存在: {0}",
|
||||
"cashierItemResolveModeNotExist": "收銀台支付項解析模式不存在: {0}",
|
||||
"currencyNotExist": "幣種不存在: {0}",
|
||||
"payTradeTypeNotExist": "資金交易形態不存在: {0}",
|
||||
"payFundStatusNotExist": "資金交易狀態不存在: {0}",
|
||||
"normalOrderStatusNotExist": "普通支付訂單狀態不存在: {0}",
|
||||
"gatewayOrderStatusNotExist": "網關支付訂單狀態不存在: {0}"
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user