mirror of
https://gitee.com/dromara/dax-pay
synced 2026-08-15 09:46:17 +08:00
- 新增 pay_md 通道元数据字典全量(能力/通道/产品映射)与增量刷新脚本 - iam_perm_menu 菜单全量快照: 标题/i18n_key 归一, 新增移动端应用管理/微信服务商子商户 - update-tables 新增拉卡拉(2表)+银联商务(2表)建表, 均含 COMMENT ON - ProductEnum 新增10个第三方聚合通道枚举(汇付/斗拱/海科/富友/盛付通/银盛/快钱/杉德/易宝/jeepay) - i18n product/validation 中英文同步 - 微信回调验签解析能力: 主应用通过声明式HTTP客户端转发子应用验签(支付/退款回调)
473 lines
31 KiB
SQL
473 lines
31 KiB
SQL
-- 用户工作台快捷入口偏好表: 用户个性化工作台快捷入口(显隐+排序), PC与移动按 client_code 分开管理
|
|
|
|
CREATE TABLE IF NOT EXISTS "public"."iam_user_dashboard_preference" (
|
|
"id" bigint NOT NULL PRIMARY KEY,
|
|
"user_id" bigint NOT NULL,
|
|
"client_code" varchar(32) NOT NULL,
|
|
"entries" jsonb NOT NULL DEFAULT '[]'::jsonb,
|
|
"creator" bigint,
|
|
"create_time" timestamptz(6),
|
|
"last_modifier" bigint,
|
|
"last_modified_time" timestamptz(6),
|
|
"version" integer NOT NULL DEFAULT 0,
|
|
"deleted" boolean NOT NULL DEFAULT false
|
|
);
|
|
|
|
COMMENT ON TABLE "public"."iam_user_dashboard_preference" IS '用户工作台快捷入口偏好';
|
|
COMMENT ON COLUMN "public"."iam_user_dashboard_preference"."id" IS '主键';
|
|
COMMENT ON COLUMN "public"."iam_user_dashboard_preference"."user_id" IS '用户ID';
|
|
COMMENT ON COLUMN "public"."iam_user_dashboard_preference"."client_code" IS '终端编码(WEB/MOBILE), PC与移动分开管理';
|
|
COMMENT ON COLUMN "public"."iam_user_dashboard_preference"."entries" IS '已选快捷入口有序序列(纯key数组), 如 ["merchant","notify"]';
|
|
COMMENT ON COLUMN "public"."iam_user_dashboard_preference"."creator" IS '创建人ID';
|
|
COMMENT ON COLUMN "public"."iam_user_dashboard_preference"."create_time" IS '创建时间(UTC)';
|
|
COMMENT ON COLUMN "public"."iam_user_dashboard_preference"."last_modifier" IS '最后修改人ID';
|
|
COMMENT ON COLUMN "public"."iam_user_dashboard_preference"."last_modified_time" IS '最后修改时间(UTC)';
|
|
COMMENT ON COLUMN "public"."iam_user_dashboard_preference"."version" IS '乐观锁版本号';
|
|
COMMENT ON COLUMN "public"."iam_user_dashboard_preference"."deleted" IS '逻辑删除标志';
|
|
|
|
-- 每用户每终端唯一一份配置(仅在未逻辑删除时生效, 允许删后重建)
|
|
CREATE UNIQUE INDEX IF NOT EXISTS "uk_user_das_pref_user_client"
|
|
ON "public"."iam_user_dashboard_preference" ("user_id", "client_code")
|
|
WHERE "deleted" = false;
|
|
|
|
-- ============================================================
|
|
-- 微信服务商子商户应用 / 能力绑定 / 授权配置
|
|
-- ============================================================
|
|
|
|
-- 微信服务商通道商户应用(子商户自己的微信应用, channelMchNo 维度)
|
|
CREATE TABLE IF NOT EXISTS "public"."wechat_isv_mch_app" (
|
|
"id" bigint NOT NULL PRIMARY KEY,
|
|
"mch_no" varchar(32) NOT NULL,
|
|
"channel_mch_no" varchar(64) NOT NULL,
|
|
"app_name" varchar(128) NOT NULL,
|
|
"app_type" varchar(32) NOT NULL,
|
|
"wx_app_id" varchar(64) NOT NULL,
|
|
"creator" bigint,
|
|
"create_time" timestamptz(6),
|
|
"last_modifier" bigint,
|
|
"last_modified_time" timestamptz(6),
|
|
"version" integer NOT NULL DEFAULT 0,
|
|
"deleted" boolean NOT NULL DEFAULT false
|
|
);
|
|
COMMENT ON TABLE "public"."wechat_isv_mch_app" IS '微信服务商通道商户应用(子商户自己的微信应用)';
|
|
COMMENT ON COLUMN "public"."wechat_isv_mch_app"."id" IS '主键';
|
|
COMMENT ON COLUMN "public"."wechat_isv_mch_app"."mch_no" IS '商户号';
|
|
COMMENT ON COLUMN "public"."wechat_isv_mch_app"."channel_mch_no" IS '通道商户号(服务商特约商户)';
|
|
COMMENT ON COLUMN "public"."wechat_isv_mch_app"."app_name" IS '应用名称';
|
|
COMMENT ON COLUMN "public"."wechat_isv_mch_app"."app_type" IS '应用类型(official_account/mini_program/mobile_app)';
|
|
COMMENT ON COLUMN "public"."wechat_isv_mch_app"."wx_app_id" IS '微信应用AppId(对应微信支付sub_appid)';
|
|
COMMENT ON COLUMN "public"."wechat_isv_mch_app"."creator" IS '创建人ID';
|
|
COMMENT ON COLUMN "public"."wechat_isv_mch_app"."create_time" IS '创建时间(UTC)';
|
|
COMMENT ON COLUMN "public"."wechat_isv_mch_app"."last_modifier" IS '最后修改人ID';
|
|
COMMENT ON COLUMN "public"."wechat_isv_mch_app"."last_modified_time" IS '最后修改时间(UTC)';
|
|
COMMENT ON COLUMN "public"."wechat_isv_mch_app"."version" IS '乐观锁版本号';
|
|
COMMENT ON COLUMN "public"."wechat_isv_mch_app"."deleted" IS '逻辑删除标志';
|
|
CREATE UNIQUE INDEX IF NOT EXISTS "uk_wechat_isv_mch_app_channel_wxappid"
|
|
ON "public"."wechat_isv_mch_app" ("channel_mch_no", "wx_app_id")
|
|
WHERE "deleted" = false;
|
|
|
|
-- 微信服务商通道商户应用支付能力关联(channelMchNo 维度, 仅存子商户显式选自己应用的记录)
|
|
CREATE TABLE IF NOT EXISTS "public"."wechat_isv_mch_app_capability" (
|
|
"id" bigint NOT NULL PRIMARY KEY,
|
|
"mch_no" varchar(32) NOT NULL,
|
|
"channel_mch_no" varchar(64) NOT NULL,
|
|
"capability" varchar(64) NOT NULL,
|
|
"wechat_isv_mch_app_id" bigint NOT NULL,
|
|
"creator" bigint,
|
|
"create_time" timestamptz(6),
|
|
"last_modifier" bigint,
|
|
"last_modified_time" timestamptz(6),
|
|
"version" integer NOT NULL DEFAULT 0,
|
|
"deleted" boolean NOT NULL DEFAULT false
|
|
);
|
|
COMMENT ON TABLE "public"."wechat_isv_mch_app_capability" IS '微信服务商通道商户应用支付能力关联';
|
|
COMMENT ON COLUMN "public"."wechat_isv_mch_app_capability"."id" IS '主键';
|
|
COMMENT ON COLUMN "public"."wechat_isv_mch_app_capability"."mch_no" IS '商户号';
|
|
COMMENT ON COLUMN "public"."wechat_isv_mch_app_capability"."channel_mch_no" IS '通道商户号(服务商特约商户)';
|
|
COMMENT ON COLUMN "public"."wechat_isv_mch_app_capability"."capability" IS '支付能力编码';
|
|
COMMENT ON COLUMN "public"."wechat_isv_mch_app_capability"."wechat_isv_mch_app_id" IS '关联服务商通道商户应用ID(指向wechat_isv_mch_app.id)';
|
|
COMMENT ON COLUMN "public"."wechat_isv_mch_app_capability"."creator" IS '创建人ID';
|
|
COMMENT ON COLUMN "public"."wechat_isv_mch_app_capability"."create_time" IS '创建时间(UTC)';
|
|
COMMENT ON COLUMN "public"."wechat_isv_mch_app_capability"."last_modifier" IS '最后修改人ID';
|
|
COMMENT ON COLUMN "public"."wechat_isv_mch_app_capability"."last_modified_time" IS '最后修改时间(UTC)';
|
|
COMMENT ON COLUMN "public"."wechat_isv_mch_app_capability"."version" IS '乐观锁版本号';
|
|
COMMENT ON COLUMN "public"."wechat_isv_mch_app_capability"."deleted" IS '逻辑删除标志';
|
|
CREATE UNIQUE INDEX IF NOT EXISTS "uk_wechat_isv_mch_app_cap_channel_cap"
|
|
ON "public"."wechat_isv_mch_app_capability" ("channel_mch_no", "capability")
|
|
WHERE "deleted" = false;
|
|
|
|
-- 微信服务商通道商户应用授权配置(appSecret等, 一对一)
|
|
CREATE TABLE IF NOT EXISTS "public"."wechat_isv_mch_app_auth_config" (
|
|
"id" bigint NOT NULL PRIMARY KEY,
|
|
"mch_no" varchar(32) NOT NULL,
|
|
"channel_mch_no" varchar(64) NOT NULL,
|
|
"wechat_isv_mch_app_id" bigint NOT NULL,
|
|
"app_secret" varchar(512),
|
|
"auth_callback_url" varchar(512),
|
|
"creator" bigint,
|
|
"create_time" timestamptz(6),
|
|
"last_modifier" bigint,
|
|
"last_modified_time" timestamptz(6),
|
|
"version" integer NOT NULL DEFAULT 0,
|
|
"deleted" boolean NOT NULL DEFAULT false
|
|
);
|
|
COMMENT ON TABLE "public"."wechat_isv_mch_app_auth_config" IS '微信服务商通道商户应用授权配置';
|
|
COMMENT ON COLUMN "public"."wechat_isv_mch_app_auth_config"."id" IS '主键';
|
|
COMMENT ON COLUMN "public"."wechat_isv_mch_app_auth_config"."mch_no" IS '商户号';
|
|
COMMENT ON COLUMN "public"."wechat_isv_mch_app_auth_config"."channel_mch_no" IS '通道商户号(服务商特约商户)';
|
|
COMMENT ON COLUMN "public"."wechat_isv_mch_app_auth_config"."wechat_isv_mch_app_id" IS '关联服务商通道商户应用ID';
|
|
COMMENT ON COLUMN "public"."wechat_isv_mch_app_auth_config"."app_secret" IS '应用密钥(加密存储)';
|
|
COMMENT ON COLUMN "public"."wechat_isv_mch_app_auth_config"."auth_callback_url" IS '授权回调地址(仅公众号)';
|
|
COMMENT ON COLUMN "public"."wechat_isv_mch_app_auth_config"."creator" IS '创建人ID';
|
|
COMMENT ON COLUMN "public"."wechat_isv_mch_app_auth_config"."create_time" IS '创建时间(UTC)';
|
|
COMMENT ON COLUMN "public"."wechat_isv_mch_app_auth_config"."last_modifier" IS '最后修改人ID';
|
|
COMMENT ON COLUMN "public"."wechat_isv_mch_app_auth_config"."last_modified_time" IS '最后修改时间(UTC)';
|
|
COMMENT ON COLUMN "public"."wechat_isv_mch_app_auth_config"."version" IS '乐观锁版本号';
|
|
COMMENT ON COLUMN "public"."wechat_isv_mch_app_auth_config"."deleted" IS '逻辑删除标志';
|
|
CREATE UNIQUE INDEX IF NOT EXISTS "uk_wechat_isv_mch_app_auth_channel_app"
|
|
ON "public"."wechat_isv_mch_app_auth_config" ("channel_mch_no", "wechat_isv_mch_app_id")
|
|
WHERE "deleted" = false;
|
|
|
|
-- 移动端应用配置(平台级, 按端类型+移动平台维度, 每组合一条)
|
|
CREATE TABLE IF NOT EXISTS "public"."pay_platform_mobile_app" (
|
|
"id" bigint NOT NULL PRIMARY KEY,
|
|
"app_type" varchar(20) NOT NULL,
|
|
"platform" varchar(20) NOT NULL,
|
|
"app_name" varchar(100),
|
|
"app_config" jsonb,
|
|
"notify_config" jsonb,
|
|
"binding_enabled" boolean NOT NULL DEFAULT false,
|
|
"enabled" boolean NOT NULL DEFAULT true,
|
|
"remark" varchar(500),
|
|
"creator" bigint,
|
|
"create_time" timestamptz(6),
|
|
"last_modifier" bigint,
|
|
"last_modified_time" timestamptz(6),
|
|
"version" integer NOT NULL DEFAULT 0,
|
|
"deleted" boolean NOT NULL DEFAULT false
|
|
);
|
|
COMMENT ON TABLE "public"."pay_platform_mobile_app" IS '移动端应用配置(平台级, 按端+平台维度)';
|
|
COMMENT ON COLUMN "public"."pay_platform_mobile_app"."id" IS '主键';
|
|
COMMENT ON COLUMN "public"."pay_platform_mobile_app"."app_type" IS '端类型(merchant商户端/admin管理端/cashier收银台)';
|
|
COMMENT ON COLUMN "public"."pay_platform_mobile_app"."platform" IS '移动平台(wx_h5微信公众号/wx_mini微信小程序/alipay_mini支付宝小程序/dy_mini抖音小程序/android安卓/ios iOS)';
|
|
COMMENT ON COLUMN "public"."pay_platform_mobile_app"."app_name" IS '应用名称(展示用)';
|
|
COMMENT ON COLUMN "public"."pay_platform_mobile_app"."app_config" IS '平台特有密钥配置(jsonb, 敏感字段加密存储)';
|
|
COMMENT ON COLUMN "public"."pay_platform_mobile_app"."notify_config" IS '消息通知配置(jsonb)';
|
|
COMMENT ON COLUMN "public"."pay_platform_mobile_app"."binding_enabled" IS '是否启用第三方账号用户绑定';
|
|
COMMENT ON COLUMN "public"."pay_platform_mobile_app"."enabled" IS '是否启用';
|
|
COMMENT ON COLUMN "public"."pay_platform_mobile_app"."remark" IS '备注';
|
|
COMMENT ON COLUMN "public"."pay_platform_mobile_app"."creator" IS '创建人ID';
|
|
COMMENT ON COLUMN "public"."pay_platform_mobile_app"."create_time" IS '创建时间(UTC)';
|
|
COMMENT ON COLUMN "public"."pay_platform_mobile_app"."last_modifier" IS '最后修改人ID';
|
|
COMMENT ON COLUMN "public"."pay_platform_mobile_app"."last_modified_time" IS '最后修改时间(UTC)';
|
|
COMMENT ON COLUMN "public"."pay_platform_mobile_app"."version" IS '乐观锁版本号';
|
|
COMMENT ON COLUMN "public"."pay_platform_mobile_app"."deleted" IS '逻辑删除标志';
|
|
CREATE UNIQUE INDEX IF NOT EXISTS "uk_pay_mobile_app_type_platform"
|
|
ON "public"."pay_platform_mobile_app" ("app_type", "platform")
|
|
WHERE "deleted" = false;
|
|
|
|
-- ============================================================
|
|
-- 抖音支付直连: 通道商户绑定 / 应用 / 密钥 / 能力 / 授权配置
|
|
-- ============================================================
|
|
|
|
-- 抖音直连通道商户绑定(一个抖音商户号 dy_mch_id 对应一个 channel_mch_no)
|
|
CREATE TABLE IF NOT EXISTS "public"."douyin_direct_channel_merchant" (
|
|
"id" bigint NOT NULL PRIMARY KEY,
|
|
"mch_no" varchar(32) NOT NULL,
|
|
"channel_mch_no" varchar(64) NOT NULL,
|
|
"product" varchar(32) NOT NULL,
|
|
"dy_mch_id" varchar(64) NOT NULL,
|
|
"creator" bigint,
|
|
"create_time" timestamptz(6),
|
|
"last_modifier" bigint,
|
|
"last_modified_time" timestamptz(6),
|
|
"version" integer NOT NULL DEFAULT 0,
|
|
"deleted" boolean NOT NULL DEFAULT false
|
|
);
|
|
COMMENT ON TABLE "public"."douyin_direct_channel_merchant" IS '抖音直连通道商户绑定';
|
|
COMMENT ON COLUMN "public"."douyin_direct_channel_merchant"."mch_no" IS '商户号';
|
|
COMMENT ON COLUMN "public"."douyin_direct_channel_merchant"."channel_mch_no" IS '通道商户号(系统生成雪花号)';
|
|
COMMENT ON COLUMN "public"."douyin_direct_channel_merchant"."product" IS '所属支付产品(如 douyin_pay)';
|
|
COMMENT ON COLUMN "public"."douyin_direct_channel_merchant"."dy_mch_id" IS '抖音商户号(MCHID)';
|
|
COMMENT ON COLUMN "public"."douyin_direct_channel_merchant"."creator" IS '创建人ID';
|
|
COMMENT ON COLUMN "public"."douyin_direct_channel_merchant"."create_time" IS '创建时间(UTC)';
|
|
COMMENT ON COLUMN "public"."douyin_direct_channel_merchant"."last_modifier" IS '最后修改人ID';
|
|
COMMENT ON COLUMN "public"."douyin_direct_channel_merchant"."last_modified_time" IS '最后修改时间(UTC)';
|
|
COMMENT ON COLUMN "public"."douyin_direct_channel_merchant"."version" IS '乐观锁版本号';
|
|
COMMENT ON COLUMN "public"."douyin_direct_channel_merchant"."deleted" IS '逻辑删除标志';
|
|
-- 同一商户下抖音商户号不重复
|
|
CREATE UNIQUE INDEX IF NOT EXISTS "uk_douyin_direct_mch_dyid"
|
|
ON "public"."douyin_direct_channel_merchant" ("mch_no", "dy_mch_id")
|
|
WHERE "deleted" = false;
|
|
|
|
-- 抖音直连商户应用(每个应用关联一个通道商户号, 拥有独立的抖音应用 AppId)
|
|
CREATE TABLE IF NOT EXISTS "public"."douyin_direct_app" (
|
|
"id" bigint NOT NULL PRIMARY KEY,
|
|
"mch_no" varchar(32) NOT NULL,
|
|
"channel_mch_no" varchar(64) NOT NULL,
|
|
"app_name" varchar(128) NOT NULL,
|
|
"douyin_app_id" varchar(64) NOT NULL,
|
|
"app_type" varchar(32) NOT NULL,
|
|
"creator" bigint,
|
|
"create_time" timestamptz(6),
|
|
"last_modifier" bigint,
|
|
"last_modified_time" timestamptz(6),
|
|
"version" integer NOT NULL DEFAULT 0,
|
|
"deleted" boolean NOT NULL DEFAULT false
|
|
);
|
|
COMMENT ON TABLE "public"."douyin_direct_app" IS '抖音直连商户应用';
|
|
COMMENT ON COLUMN "public"."douyin_direct_app"."mch_no" IS '商户号';
|
|
COMMENT ON COLUMN "public"."douyin_direct_app"."channel_mch_no" IS '通道商户号';
|
|
COMMENT ON COLUMN "public"."douyin_direct_app"."app_name" IS '应用名称';
|
|
COMMENT ON COLUMN "public"."douyin_direct_app"."douyin_app_id" IS '抖音应用AppId(APPID)';
|
|
COMMENT ON COLUMN "public"."douyin_direct_app"."app_type" IS '应用类型(mini_program小程序/mobile_app移动应用/web_app网站应用)';
|
|
COMMENT ON COLUMN "public"."douyin_direct_app"."creator" IS '创建人ID';
|
|
COMMENT ON COLUMN "public"."douyin_direct_app"."create_time" IS '创建时间(UTC)';
|
|
COMMENT ON COLUMN "public"."douyin_direct_app"."last_modifier" IS '最后修改人ID';
|
|
COMMENT ON COLUMN "public"."douyin_direct_app"."last_modified_time" IS '最后修改时间(UTC)';
|
|
COMMENT ON COLUMN "public"."douyin_direct_app"."version" IS '乐观锁版本号';
|
|
COMMENT ON COLUMN "public"."douyin_direct_app"."deleted" IS '逻辑删除标志';
|
|
-- 同一通道商户下抖音应用ID不重复
|
|
CREATE UNIQUE INDEX IF NOT EXISTS "uk_douyin_direct_app_appid"
|
|
ON "public"."douyin_direct_app" ("channel_mch_no", "douyin_app_id")
|
|
WHERE "deleted" = false;
|
|
|
|
-- 抖音直连密钥配置(直连商户维度, 一个抖音商户号共享一套密钥)
|
|
CREATE TABLE IF NOT EXISTS "public"."douyin_direct_key_config" (
|
|
"id" bigint NOT NULL PRIMARY KEY,
|
|
"mch_no" varchar(32) NOT NULL,
|
|
"channel_mch_no" varchar(64) NOT NULL,
|
|
"merchant_private_key" text,
|
|
"merchant_serial_number" varchar(128),
|
|
"encrypt_key" text,
|
|
"creator" bigint,
|
|
"create_time" timestamptz(6),
|
|
"last_modifier" bigint,
|
|
"last_modified_time" timestamptz(6),
|
|
"version" integer NOT NULL DEFAULT 0,
|
|
"deleted" boolean NOT NULL DEFAULT false
|
|
);
|
|
COMMENT ON TABLE "public"."douyin_direct_key_config" IS '抖音直连密钥配置';
|
|
COMMENT ON COLUMN "public"."douyin_direct_key_config"."mch_no" IS '商户号';
|
|
COMMENT ON COLUMN "public"."douyin_direct_key_config"."channel_mch_no" IS '通道商户号(唯一关联)';
|
|
COMMENT ON COLUMN "public"."douyin_direct_key_config"."merchant_private_key" IS '商户私钥(MERCHANT_PRIVATE_KEY, 加密存储)';
|
|
COMMENT ON COLUMN "public"."douyin_direct_key_config"."merchant_serial_number" IS '商家公钥证书序列号(MERCHANT_SERIAL_NO)';
|
|
COMMENT ON COLUMN "public"."douyin_direct_key_config"."encrypt_key" IS '接口加密密钥(ENCRYPT_KEY, 加密存储)';
|
|
COMMENT ON COLUMN "public"."douyin_direct_key_config"."creator" IS '创建人ID';
|
|
COMMENT ON COLUMN "public"."douyin_direct_key_config"."create_time" IS '创建时间(UTC)';
|
|
COMMENT ON COLUMN "public"."douyin_direct_key_config"."last_modifier" IS '最后修改人ID';
|
|
COMMENT ON COLUMN "public"."douyin_direct_key_config"."last_modified_time" IS '最后修改时间(UTC)';
|
|
COMMENT ON COLUMN "public"."douyin_direct_key_config"."version" IS '乐观锁版本号';
|
|
COMMENT ON COLUMN "public"."douyin_direct_key_config"."deleted" IS '逻辑删除标志';
|
|
-- 一个通道商户号唯一一份密钥配置
|
|
CREATE UNIQUE INDEX IF NOT EXISTS "uk_douyin_direct_key_cmchno"
|
|
ON "public"."douyin_direct_key_config" ("channel_mch_no")
|
|
WHERE "deleted" = false;
|
|
|
|
-- 抖音直连商户应用支付能力关联(建立通道商户维度下"支付能力→应用"的绑定关系)
|
|
CREATE TABLE IF NOT EXISTS "public"."douyin_direct_app_capability" (
|
|
"id" bigint NOT NULL PRIMARY KEY,
|
|
"mch_no" varchar(32) NOT NULL,
|
|
"channel_mch_no" varchar(64) NOT NULL,
|
|
"capability" varchar(64) NOT NULL,
|
|
"douyin_direct_app_id" bigint NOT NULL,
|
|
"creator" bigint,
|
|
"create_time" timestamptz(6),
|
|
"last_modifier" bigint,
|
|
"last_modified_time" timestamptz(6),
|
|
"version" integer NOT NULL DEFAULT 0,
|
|
"deleted" boolean NOT NULL DEFAULT false
|
|
);
|
|
COMMENT ON TABLE "public"."douyin_direct_app_capability" IS '抖音直连商户应用支付能力关联';
|
|
COMMENT ON COLUMN "public"."douyin_direct_app_capability"."mch_no" IS '商户号';
|
|
COMMENT ON COLUMN "public"."douyin_direct_app_capability"."channel_mch_no" IS '通道商户号';
|
|
COMMENT ON COLUMN "public"."douyin_direct_app_capability"."capability" IS '支付能力编码(如 DOUYIN_QR/DOUYIN_JSAPI 等)';
|
|
COMMENT ON COLUMN "public"."douyin_direct_app_capability"."douyin_direct_app_id" IS '关联抖音直连应用ID(指向 douyin_direct_app.id)';
|
|
COMMENT ON COLUMN "public"."douyin_direct_app_capability"."creator" IS '创建人ID';
|
|
COMMENT ON COLUMN "public"."douyin_direct_app_capability"."create_time" IS '创建时间(UTC)';
|
|
COMMENT ON COLUMN "public"."douyin_direct_app_capability"."last_modifier" IS '最后修改人ID';
|
|
COMMENT ON COLUMN "public"."douyin_direct_app_capability"."last_modified_time" IS '最后修改时间(UTC)';
|
|
COMMENT ON COLUMN "public"."douyin_direct_app_capability"."version" IS '乐观锁版本号';
|
|
COMMENT ON COLUMN "public"."douyin_direct_app_capability"."deleted" IS '逻辑删除标志';
|
|
-- 同一通道商户下, 一个支付能力只能绑定一个应用
|
|
CREATE UNIQUE INDEX IF NOT EXISTS "uk_douyin_direct_cap_cmchno_cap"
|
|
ON "public"."douyin_direct_app_capability" ("channel_mch_no", "capability")
|
|
WHERE "deleted" = false;
|
|
|
|
-- 抖音直连商户应用授权认证配置(应用密钥 / 授权回调地址)
|
|
CREATE TABLE IF NOT EXISTS "public"."douyin_direct_app_auth_config" (
|
|
"id" bigint NOT NULL PRIMARY KEY,
|
|
"mch_no" varchar(32) NOT NULL,
|
|
"channel_mch_no" varchar(64) NOT NULL,
|
|
"douyin_direct_app_id" bigint NOT NULL,
|
|
"app_secret" text,
|
|
"auth_callback_url" varchar(512),
|
|
"creator" bigint,
|
|
"create_time" timestamptz(6),
|
|
"last_modifier" bigint,
|
|
"last_modified_time" timestamptz(6),
|
|
"version" integer NOT NULL DEFAULT 0,
|
|
"deleted" boolean NOT NULL DEFAULT false
|
|
);
|
|
COMMENT ON TABLE "public"."douyin_direct_app_auth_config" IS '抖音直连商户应用授权认证配置';
|
|
COMMENT ON COLUMN "public"."douyin_direct_app_auth_config"."mch_no" IS '商户号';
|
|
COMMENT ON COLUMN "public"."douyin_direct_app_auth_config"."channel_mch_no" IS '通道商户号';
|
|
COMMENT ON COLUMN "public"."douyin_direct_app_auth_config"."douyin_direct_app_id" IS '关联抖音直连应用ID(指向 douyin_direct_app.id)';
|
|
COMMENT ON COLUMN "public"."douyin_direct_app_auth_config"."app_secret" IS '应用密钥(加密存储)';
|
|
COMMENT ON COLUMN "public"."douyin_direct_app_auth_config"."auth_callback_url" IS '授权回调地址';
|
|
COMMENT ON COLUMN "public"."douyin_direct_app_auth_config"."creator" IS '创建人ID';
|
|
COMMENT ON COLUMN "public"."douyin_direct_app_auth_config"."create_time" IS '创建时间(UTC)';
|
|
COMMENT ON COLUMN "public"."douyin_direct_app_auth_config"."last_modifier" IS '最后修改人ID';
|
|
COMMENT ON COLUMN "public"."douyin_direct_app_auth_config"."last_modified_time" IS '最后修改时间(UTC)';
|
|
COMMENT ON COLUMN "public"."douyin_direct_app_auth_config"."version" IS '乐观锁版本号';
|
|
COMMENT ON COLUMN "public"."douyin_direct_app_auth_config"."deleted" IS '逻辑删除标志';
|
|
|
|
-- ============================================================
|
|
-- 拉卡拉服务商配置(聚合通道: 微信/支付宝/银联)
|
|
-- ============================================================
|
|
|
|
-- 拉卡拉服务商密钥配置(全局唯一, 按 product 查询)
|
|
CREATE TABLE IF NOT EXISTS "public"."lakala_isv_key_config" (
|
|
"id" bigint NOT NULL PRIMARY KEY,
|
|
"product" varchar(32) NOT NULL,
|
|
"lkl_app_id" varchar(64) NOT NULL,
|
|
"mch_serial_no" varchar(128),
|
|
"private_key" text,
|
|
"public_key" text,
|
|
"sm4_key" varchar(128),
|
|
"sandbox" boolean NOT NULL DEFAULT false,
|
|
"creator" bigint,
|
|
"create_time" timestamptz(6),
|
|
"last_modifier" bigint,
|
|
"last_modified_time" timestamptz(6),
|
|
"version" integer NOT NULL DEFAULT 0,
|
|
"deleted" boolean NOT NULL DEFAULT false
|
|
);
|
|
COMMENT ON TABLE "public"."lakala_isv_key_config" IS '拉卡拉服务商密钥配置(全局唯一)';
|
|
COMMENT ON COLUMN "public"."lakala_isv_key_config"."product" IS '产品编码 @see ProductEnum';
|
|
COMMENT ON COLUMN "public"."lakala_isv_key_config"."lkl_app_id" IS '拉卡拉应用编号';
|
|
COMMENT ON COLUMN "public"."lakala_isv_key_config"."mch_serial_no" IS '商户证书序列号';
|
|
COMMENT ON COLUMN "public"."lakala_isv_key_config"."private_key" IS '商户RSA私钥PEM(加密存储)';
|
|
COMMENT ON COLUMN "public"."lakala_isv_key_config"."public_key" IS '拉卡拉RSA公钥PEM(加密存储)';
|
|
COMMENT ON COLUMN "public"."lakala_isv_key_config"."sm4_key" IS 'SM4对称密钥(加密存储, 进件敏感字段加密用)';
|
|
COMMENT ON COLUMN "public"."lakala_isv_key_config"."sandbox" IS '是否沙箱环境';
|
|
COMMENT ON COLUMN "public"."lakala_isv_key_config"."creator" IS '创建人ID';
|
|
COMMENT ON COLUMN "public"."lakala_isv_key_config"."create_time" IS '创建时间(UTC)';
|
|
COMMENT ON COLUMN "public"."lakala_isv_key_config"."last_modifier" IS '最后修改人ID';
|
|
COMMENT ON COLUMN "public"."lakala_isv_key_config"."last_modified_time" IS '最后修改时间(UTC)';
|
|
COMMENT ON COLUMN "public"."lakala_isv_key_config"."version" IS '乐观锁版本号';
|
|
COMMENT ON COLUMN "public"."lakala_isv_key_config"."deleted" IS '逻辑删除标志';
|
|
|
|
-- 产品编码唯一(逻辑删除时不重复)
|
|
CREATE UNIQUE INDEX IF NOT EXISTS "uk_lakala_isv_key_product"
|
|
ON "public"."lakala_isv_key_config" ("product")
|
|
WHERE "deleted" = false;
|
|
|
|
-- 拉卡拉通道商户绑定(每个子商户一条, 仅存商户号merchantNo + 终端号termNo)
|
|
CREATE TABLE IF NOT EXISTS "public"."lakala_isv_channel_merchant" (
|
|
"id" bigint NOT NULL PRIMARY KEY,
|
|
"mch_no" varchar(32) NOT NULL,
|
|
"channel_mch_no" varchar(64) NOT NULL,
|
|
"product" varchar(32) NOT NULL,
|
|
"lakala_mch_no" varchar(64) NOT NULL,
|
|
"term_no" varchar(64),
|
|
"creator" bigint,
|
|
"create_time" timestamptz(6),
|
|
"last_modifier" bigint,
|
|
"last_modified_time" timestamptz(6),
|
|
"version" integer NOT NULL DEFAULT 0,
|
|
"deleted" boolean NOT NULL DEFAULT false
|
|
);
|
|
COMMENT ON TABLE "public"."lakala_isv_channel_merchant" IS '拉卡拉通道商户绑定';
|
|
COMMENT ON COLUMN "public"."lakala_isv_channel_merchant"."mch_no" IS '平台商户号';
|
|
COMMENT ON COLUMN "public"."lakala_isv_channel_merchant"."channel_mch_no" IS '通道商户号(LAKALA+雪花)';
|
|
COMMENT ON COLUMN "public"."lakala_isv_channel_merchant"."product" IS '所属支付产品';
|
|
COMMENT ON COLUMN "public"."lakala_isv_channel_merchant"."lakala_mch_no" IS '拉卡拉商户编号(merchantNo)';
|
|
COMMENT ON COLUMN "public"."lakala_isv_channel_merchant"."term_no" IS '终端号';
|
|
COMMENT ON COLUMN "public"."lakala_isv_channel_merchant"."creator" IS '创建人ID';
|
|
COMMENT ON COLUMN "public"."lakala_isv_channel_merchant"."create_time" IS '创建时间(UTC)';
|
|
COMMENT ON COLUMN "public"."lakala_isv_channel_merchant"."last_modifier" IS '最后修改人ID';
|
|
COMMENT ON COLUMN "public"."lakala_isv_channel_merchant"."last_modified_time" IS '最后修改时间(UTC)';
|
|
COMMENT ON COLUMN "public"."lakala_isv_channel_merchant"."version" IS '乐观锁版本号';
|
|
COMMENT ON COLUMN "public"."lakala_isv_channel_merchant"."deleted" IS '逻辑删除标志';
|
|
|
|
-- 通道商户号全局唯一
|
|
CREATE UNIQUE INDEX IF NOT EXISTS "uk_lakala_isv_channel_mch_no"
|
|
ON "public"."lakala_isv_channel_merchant" ("channel_mch_no")
|
|
WHERE "deleted" = false;
|
|
|
|
-- 同一商户下拉卡拉商户号不重复
|
|
CREATE UNIQUE INDEX IF NOT EXISTS "uk_lakala_isv_mch_lakala_no"
|
|
ON "public"."lakala_isv_channel_merchant" ("mch_no", "lakala_mch_no")
|
|
WHERE "deleted" = false;
|
|
|
|
-- ===== 银联商务(UMS) =====
|
|
|
|
-- 银联商务直连通道商户绑定
|
|
CREATE TABLE IF NOT EXISTS "public"."ums_direct_channel_merchant" (
|
|
"id" bigint NOT NULL PRIMARY KEY,
|
|
"mch_no" varchar(32) NOT NULL,
|
|
"channel_mch_no" varchar(64) NOT NULL,
|
|
"product" varchar(32) NOT NULL,
|
|
"merchant_no" varchar(64) NOT NULL,
|
|
"terminal_no" varchar(64),
|
|
"order_prefix" varchar(16),
|
|
"sandbox" boolean NOT NULL DEFAULT false,
|
|
"creator" bigint,
|
|
"create_time" timestamptz(6),
|
|
"last_modifier" bigint,
|
|
"last_modified_time" timestamptz(6),
|
|
"version" integer NOT NULL DEFAULT 0,
|
|
"deleted" boolean NOT NULL DEFAULT false
|
|
);
|
|
COMMENT ON TABLE "public"."ums_direct_channel_merchant" IS '银联商务直连通道商户绑定';
|
|
COMMENT ON COLUMN "public"."ums_direct_channel_merchant"."mch_no" IS '商户号';
|
|
COMMENT ON COLUMN "public"."ums_direct_channel_merchant"."channel_mch_no" IS '通道商户号(系统生成雪花号)';
|
|
COMMENT ON COLUMN "public"."ums_direct_channel_merchant"."product" IS '所属支付产品(如 ums_qrcode)';
|
|
COMMENT ON COLUMN "public"."ums_direct_channel_merchant"."merchant_no" IS '银联商务商户号(mid)';
|
|
COMMENT ON COLUMN "public"."ums_direct_channel_merchant"."terminal_no" IS '终端号(tid)';
|
|
COMMENT ON COLUMN "public"."ums_direct_channel_merchant"."order_prefix" IS '订单号前缀(生成关联订单号)';
|
|
COMMENT ON COLUMN "public"."ums_direct_channel_merchant"."sandbox" IS '是否沙箱环境';
|
|
COMMENT ON COLUMN "public"."ums_direct_channel_merchant"."creator" IS '创建人ID';
|
|
COMMENT ON COLUMN "public"."ums_direct_channel_merchant"."create_time" IS '创建时间(UTC)';
|
|
COMMENT ON COLUMN "public"."ums_direct_channel_merchant"."last_modifier" IS '最后修改人ID';
|
|
COMMENT ON COLUMN "public"."ums_direct_channel_merchant"."last_modified_time" IS '最后修改时间(UTC)';
|
|
COMMENT ON COLUMN "public"."ums_direct_channel_merchant"."version" IS '乐观锁版本号';
|
|
COMMENT ON COLUMN "public"."ums_direct_channel_merchant"."deleted" IS '逻辑删除标志';
|
|
-- 同一商户下银联商务商户号不重复
|
|
CREATE UNIQUE INDEX IF NOT EXISTS "uk_ums_direct_mch_merchant_no"
|
|
ON "public"."ums_direct_channel_merchant" ("mch_no", "merchant_no")
|
|
WHERE "deleted" = false;
|
|
|
|
-- 银联商务直连密钥配置(商户维度, 敏感字段加密存储)
|
|
CREATE TABLE IF NOT EXISTS "public"."ums_direct_key_config" (
|
|
"id" bigint NOT NULL PRIMARY KEY,
|
|
"mch_no" varchar(32) NOT NULL,
|
|
"channel_mch_no" varchar(64) NOT NULL,
|
|
"ums_app_id" varchar(128),
|
|
"app_key" text,
|
|
"secret_key" text,
|
|
"creator" bigint,
|
|
"create_time" timestamptz(6),
|
|
"last_modifier" bigint,
|
|
"last_modified_time" timestamptz(6),
|
|
"version" integer NOT NULL DEFAULT 0,
|
|
"deleted" boolean NOT NULL DEFAULT false
|
|
);
|
|
COMMENT ON TABLE "public"."ums_direct_key_config" IS '银联商务直连密钥配置';
|
|
COMMENT ON COLUMN "public"."ums_direct_key_config"."mch_no" IS '商户号';
|
|
COMMENT ON COLUMN "public"."ums_direct_key_config"."channel_mch_no" IS '通道商户号(唯一关联)';
|
|
COMMENT ON COLUMN "public"."ums_direct_key_config"."ums_app_id" IS '银联商务应用 AppId';
|
|
COMMENT ON COLUMN "public"."ums_direct_key_config"."app_key" IS '应用密钥(HmacSHA256 签名密钥, 加密存储)';
|
|
COMMENT ON COLUMN "public"."ums_direct_key_config"."secret_key" IS '通讯密钥(回调验签 MD5/SHA256 拼接密钥, 加密存储)';
|
|
COMMENT ON COLUMN "public"."ums_direct_key_config"."creator" IS '创建人ID';
|
|
COMMENT ON COLUMN "public"."ums_direct_key_config"."create_time" IS '创建时间(UTC)';
|
|
COMMENT ON COLUMN "public"."ums_direct_key_config"."last_modifier" IS '最后修改人ID';
|
|
COMMENT ON COLUMN "public"."ums_direct_key_config"."last_modified_time" IS '最后修改时间(UTC)';
|
|
COMMENT ON COLUMN "public"."ums_direct_key_config"."version" IS '乐观锁版本号';
|
|
COMMENT ON COLUMN "public"."ums_direct_key_config"."deleted" IS '逻辑删除标志';
|
|
-- 一个通道商户号唯一一份密钥配置
|
|
CREATE UNIQUE INDEX IF NOT EXISTS "uk_ums_direct_key_cmchno"
|
|
ON "public"."ums_direct_key_config" ("channel_mch_no")
|
|
WHERE "deleted" = false;
|