refactor(adapay): 删除服务商密钥配置(isv), 开源版无进件不适用

This commit is contained in:
daxpay
2026-08-04 19:08:52 +08:00
parent e35bc726a0
commit 2e465315b4
19 changed files with 623 additions and 367 deletions

View File

@@ -27,17 +27,6 @@ MAXVALUE 9223372036854775807
START 1
CACHE 1;
-- ----------------------------
-- Sequence structure for adapay_isv_key_config_id_seq
-- ----------------------------
DROP SEQUENCE IF EXISTS "public"."adapay_isv_key_config_id_seq";
CREATE SEQUENCE "public"."adapay_isv_key_config_id_seq"
INCREMENT 1
MINVALUE 1
MAXVALUE 9223372036854775807
START 1
CACHE 1;
-- ----------------------------
-- Sequence structure for alipay_direct_app_capability_id_seq
-- ----------------------------
@@ -123,7 +112,6 @@ CREATE TABLE "public"."adapay_direct_key_config" (
"id" int8 NOT NULL DEFAULT nextval('adapay_direct_key_config_id_seq'::regclass),
"mch_no" varchar(32) COLLATE "pg_catalog"."default",
"channel_mch_no" varchar(64) COLLATE "pg_catalog"."default",
"merchant_no" varchar(64) COLLATE "pg_catalog"."default",
"adapay_app_id" varchar(64) COLLATE "pg_catalog"."default",
"api_key" text COLLATE "pg_catalog"."default",
"private_key" text COLLATE "pg_catalog"."default",
@@ -152,39 +140,6 @@ COMMENT ON COLUMN "public"."adapay_direct_key_config"."deleted" IS '删除标志
COMMENT ON COLUMN "public"."adapay_direct_key_config"."sandbox" IS '是否沙箱环境';
COMMENT ON TABLE "public"."adapay_direct_key_config" IS 'Adapay 直连密钥配置';
-- ----------------------------
-- Table structure for adapay_isv_key_config
-- ----------------------------
DROP TABLE IF EXISTS "public"."adapay_isv_key_config";
CREATE TABLE "public"."adapay_isv_key_config" (
"id" int8 NOT NULL DEFAULT nextval('adapay_isv_key_config_id_seq'::regclass),
"isv_no" varchar(64) COLLATE "pg_catalog"."default",
"api_key" text COLLATE "pg_catalog"."default",
"private_key" text COLLATE "pg_catalog"."default",
"public_key" text COLLATE "pg_catalog"."default",
"creator" int8,
"create_time" timestamptz(6),
"last_modifier" int8,
"last_modified_time" timestamptz(6),
"version" int4 DEFAULT 0,
"deleted" bool DEFAULT false,
"sandbox" bool DEFAULT false
)
;
COMMENT ON COLUMN "public"."adapay_isv_key_config"."id" IS '主键';
COMMENT ON COLUMN "public"."adapay_isv_key_config"."isv_no" IS '服务商号(平台在汇付的服务商/主体编号)';
COMMENT ON COLUMN "public"."adapay_isv_key_config"."api_key" IS 'Adapay 交易密钥(请求头Authorization, 加密存储)';
COMMENT ON COLUMN "public"."adapay_isv_key_config"."private_key" IS '商户RSA私钥(PKCS#8 Base64, 请求签名, 加密存储)';
COMMENT ON COLUMN "public"."adapay_isv_key_config"."public_key" IS 'Adapay 平台公钥(X509 Base64, 响应验签, 加密存储; 为空使用全局默认)';
COMMENT ON COLUMN "public"."adapay_isv_key_config"."creator" IS '创建者ID';
COMMENT ON COLUMN "public"."adapay_isv_key_config"."create_time" IS '创建时间';
COMMENT ON COLUMN "public"."adapay_isv_key_config"."last_modifier" IS '最后修改者ID';
COMMENT ON COLUMN "public"."adapay_isv_key_config"."last_modified_time" IS '最后修改时间';
COMMENT ON COLUMN "public"."adapay_isv_key_config"."version" IS '版本号(乐观锁)';
COMMENT ON COLUMN "public"."adapay_isv_key_config"."deleted" IS '删除标志';
COMMENT ON COLUMN "public"."adapay_isv_key_config"."sandbox" IS '是否沙箱环境';
COMMENT ON TABLE "public"."adapay_isv_key_config" IS 'Adapay 服务商密钥配置';
-- ----------------------------
-- Table structure for alipay_direct_app
-- ----------------------------
@@ -675,6 +630,7 @@ CREATE TABLE "public"."douyin_direct_channel_merchant" (
"channel_mch_no" varchar(64) COLLATE "pg_catalog"."default" NOT NULL,
"product" varchar(32) COLLATE "pg_catalog"."default" NOT NULL,
"dy_mch_id" varchar(64) COLLATE "pg_catalog"."default",
"transfer_scene" varchar(50) COLLATE "pg_catalog"."default",
"creator" int8,
"create_time" timestamptz(6),
"last_modifier" int8,
@@ -688,6 +644,7 @@ 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"."transfer_scene" IS '转账场景ID(商家转账, 未配置时发起转账报错)';
COMMENT ON COLUMN "public"."douyin_direct_channel_merchant"."creator" IS '创建人ID';
COMMENT ON COLUMN "public"."douyin_direct_channel_merchant"."create_time" IS '创建时间';
COMMENT ON COLUMN "public"."douyin_direct_channel_merchant"."last_modifier" IS '最后修改人ID';
@@ -3340,6 +3297,241 @@ COMMENT ON COLUMN "public"."pay_trade"."provider" IS '支付渠道(冗余自容
COMMENT ON COLUMN "public"."pay_trade"."title" IS '订单标题';
COMMENT ON TABLE "public"."pay_trade" IS '资金交易凭证';
-- ----------------------------
-- Table structure for pay_transfer_order_wechat
-- ----------------------------
DROP TABLE IF EXISTS "public"."pay_transfer_order_wechat";
CREATE TABLE "public"."pay_transfer_order_wechat" (
"id" int8 NOT NULL,
"transfer_no" varchar(32) COLLATE "pg_catalog"."default" NOT NULL,
"biz_transfer_no" varchar(100) COLLATE "pg_catalog"."default" NOT NULL,
"out_transfer_no" varchar(150) COLLATE "pg_catalog"."default",
"mch_no" varchar(32) COLLATE "pg_catalog"."default" NOT NULL,
"app_id" varchar(32) COLLATE "pg_catalog"."default" NOT NULL,
"amount" int8 NOT NULL,
"currency" varchar(8) COLLATE "pg_catalog"."default" NOT NULL DEFAULT 'CNY'::character varying,
"title" varchar(100) COLLATE "pg_catalog"."default",
"reason" varchar(200) COLLATE "pg_catalog"."default",
"status" varchar(32) COLLATE "pg_catalog"."default" NOT NULL,
"finish_time" timestamptz(6),
"notify_url" varchar(200) COLLATE "pg_catalog"."default",
"attach" varchar(500) COLLATE "pg_catalog"."default",
"req_time" timestamptz(6),
"error_msg" varchar(2048) COLLATE "pg_catalog"."default",
"payee_openid" varchar(100) COLLATE "pg_catalog"."default" NOT NULL,
"transfer_scene" varchar(50) COLLATE "pg_catalog"."default",
"transfer_body" varchar(2000) COLLATE "pg_catalog"."default",
"user_name" varchar(100) COLLATE "pg_catalog"."default",
"creator" int8,
"create_time" timestamptz(6),
"last_modifier" int8,
"last_modified_time" timestamptz(6),
"version" int4 NOT NULL DEFAULT 0,
"deleted" bool NOT NULL DEFAULT false
)
;
COMMENT ON COLUMN "public"."pay_transfer_order_wechat"."id" IS '主键';
COMMENT ON COLUMN "public"."pay_transfer_order_wechat"."transfer_no" IS '平台转账单号';
COMMENT ON COLUMN "public"."pay_transfer_order_wechat"."biz_transfer_no" IS '商户转账号(幂等键, 同一商户下唯一)';
COMMENT ON COLUMN "public"."pay_transfer_order_wechat"."channel_mch_no" IS '通道商户号(路由确定后写入, 凭证组装用)';
COMMENT ON COLUMN "public"."pay_transfer_order_wechat"."out_transfer_no" IS '通道转账单号(微信 paymentNo)';
COMMENT ON COLUMN "public"."pay_transfer_order_wechat"."mch_no" IS '商户号';
COMMENT ON COLUMN "public"."pay_transfer_order_wechat"."app_id" IS '应用号';
COMMENT ON COLUMN "public"."pay_transfer_order_wechat"."amount" IS '转账金额(最小货币单位/分)';
COMMENT ON COLUMN "public"."pay_transfer_order_wechat"."currency" IS '币种';
COMMENT ON COLUMN "public"."pay_transfer_order_wechat"."title" IS '转账标题';
COMMENT ON COLUMN "public"."pay_transfer_order_wechat"."reason" IS '转账原因/备注';
COMMENT ON COLUMN "public"."pay_transfer_order_wechat"."status" IS '转账状态(processing/success/fail/close)';
COMMENT ON COLUMN "public"."pay_transfer_order_wechat"."finish_time" IS '转账完成时间';
COMMENT ON COLUMN "public"."pay_transfer_order_wechat"."notify_url" IS '商户异步通知地址';
COMMENT ON COLUMN "public"."pay_transfer_order_wechat"."attach" IS '商户扩展参数(回调原样返回)';
COMMENT ON COLUMN "public"."pay_transfer_order_wechat"."req_time" IS '请求时间';
COMMENT ON COLUMN "public"."pay_transfer_order_wechat"."error_msg" IS '错误信息';
COMMENT ON COLUMN "public"."pay_transfer_order_wechat"."payee_openid" IS '收款人微信 openid';
COMMENT ON COLUMN "public"."pay_transfer_order_wechat"."transfer_scene" IS '转账场景(冗余自通道商户配置)';
COMMENT ON COLUMN "public"."pay_transfer_order_wechat"."transfer_body" IS '拉起转账确认参数(微信二次确认)';
COMMENT ON COLUMN "public"."pay_transfer_order_wechat"."user_name" IS '收款人姓名(金额档位校验用)';
COMMENT ON COLUMN "public"."pay_transfer_order_wechat"."creator" IS '创建人';
COMMENT ON COLUMN "public"."pay_transfer_order_wechat"."create_time" IS '创建时间';
COMMENT ON COLUMN "public"."pay_transfer_order_wechat"."last_modifier" IS '最后修改人';
COMMENT ON COLUMN "public"."pay_transfer_order_wechat"."last_modified_time" IS '最后修改时间';
COMMENT ON COLUMN "public"."pay_transfer_order_wechat"."version" IS '乐观锁版本';
COMMENT ON COLUMN "public"."pay_transfer_order_wechat"."deleted" IS '逻辑删除';
COMMENT ON TABLE "public"."pay_transfer_order_wechat" IS '微信转账单';
-- ----------------------------
-- Table structure for pay_transfer_order_alipay
-- ----------------------------
DROP TABLE IF EXISTS "public"."pay_transfer_order_alipay";
CREATE TABLE "public"."pay_transfer_order_alipay" (
"id" int8 NOT NULL,
"transfer_no" varchar(32) COLLATE "pg_catalog"."default" NOT NULL,
"biz_transfer_no" varchar(100) COLLATE "pg_catalog"."default" NOT NULL,
"out_transfer_no" varchar(150) COLLATE "pg_catalog"."default",
"mch_no" varchar(32) COLLATE "pg_catalog"."default" NOT NULL,
"app_id" varchar(32) COLLATE "pg_catalog"."default" NOT NULL,
"amount" int8 NOT NULL,
"currency" varchar(8) COLLATE "pg_catalog"."default" NOT NULL DEFAULT 'CNY'::character varying,
"title" varchar(100) COLLATE "pg_catalog"."default",
"reason" varchar(200) COLLATE "pg_catalog"."default",
"status" varchar(32) COLLATE "pg_catalog"."default" NOT NULL,
"finish_time" timestamptz(6),
"notify_url" varchar(200) COLLATE "pg_catalog"."default",
"attach" varchar(500) COLLATE "pg_catalog"."default",
"req_time" timestamptz(6),
"error_msg" varchar(2048) COLLATE "pg_catalog"."default",
"payee_type" varchar(32) COLLATE "pg_catalog"."default" NOT NULL,
"payee_account" varchar(100) COLLATE "pg_catalog"."default" NOT NULL,
"payee_name" varchar(100) COLLATE "pg_catalog"."default",
"creator" int8,
"create_time" timestamptz(6),
"last_modifier" int8,
"last_modified_time" timestamptz(6),
"version" int4 NOT NULL DEFAULT 0,
"deleted" bool NOT NULL DEFAULT false
)
;
COMMENT ON COLUMN "public"."pay_transfer_order_alipay"."id" IS '主键';
COMMENT ON COLUMN "public"."pay_transfer_order_alipay"."transfer_no" IS '平台转账单号';
COMMENT ON COLUMN "public"."pay_transfer_order_alipay"."biz_transfer_no" IS '商户转账号(幂等键, 同一商户下唯一)';
COMMENT ON COLUMN "public"."pay_transfer_order_alipay"."channel_mch_no" IS '通道商户号(路由确定后写入, 凭证组装用)';
COMMENT ON COLUMN "public"."pay_transfer_order_alipay"."out_transfer_no" IS '通道转账单号(支付宝 order_id)';
COMMENT ON COLUMN "public"."pay_transfer_order_alipay"."mch_no" IS '商户号';
COMMENT ON COLUMN "public"."pay_transfer_order_alipay"."app_id" IS '应用号';
COMMENT ON COLUMN "public"."pay_transfer_order_alipay"."amount" IS '转账金额(最小货币单位/分)';
COMMENT ON COLUMN "public"."pay_transfer_order_alipay"."currency" IS '币种';
COMMENT ON COLUMN "public"."pay_transfer_order_alipay"."title" IS '转账标题';
COMMENT ON COLUMN "public"."pay_transfer_order_alipay"."reason" IS '转账原因/备注';
COMMENT ON COLUMN "public"."pay_transfer_order_alipay"."status" IS '转账状态(processing/success/fail/close)';
COMMENT ON COLUMN "public"."pay_transfer_order_alipay"."finish_time" IS '转账完成时间';
COMMENT ON COLUMN "public"."pay_transfer_order_alipay"."notify_url" IS '商户异步通知地址';
COMMENT ON COLUMN "public"."pay_transfer_order_alipay"."attach" IS '商户扩展参数(回调原样返回)';
COMMENT ON COLUMN "public"."pay_transfer_order_alipay"."req_time" IS '请求时间';
COMMENT ON COLUMN "public"."pay_transfer_order_alipay"."error_msg" IS '错误信息';
COMMENT ON COLUMN "public"."pay_transfer_order_alipay"."payee_type" IS '收款人账号类型(user_id/open_id/login_name)';
COMMENT ON COLUMN "public"."pay_transfer_order_alipay"."payee_account" IS '收款人账号';
COMMENT ON COLUMN "public"."pay_transfer_order_alipay"."payee_name" IS '收款人姓名';
COMMENT ON COLUMN "public"."pay_transfer_order_alipay"."creator" IS '创建人';
COMMENT ON COLUMN "public"."pay_transfer_order_alipay"."create_time" IS '创建时间';
COMMENT ON COLUMN "public"."pay_transfer_order_alipay"."last_modifier" IS '最后修改人';
COMMENT ON COLUMN "public"."pay_transfer_order_alipay"."last_modified_time" IS '最后修改时间';
COMMENT ON COLUMN "public"."pay_transfer_order_alipay"."version" IS '乐观锁版本';
COMMENT ON COLUMN "public"."pay_transfer_order_alipay"."deleted" IS '逻辑删除';
COMMENT ON TABLE "public"."pay_transfer_order_alipay" IS '支付宝转账单';
-- ----------------------------
-- Table structure for pay_transfer_order_douyin
-- ----------------------------
DROP TABLE IF EXISTS "public"."pay_transfer_order_douyin";
CREATE TABLE "public"."pay_transfer_order_douyin" (
"id" int8 NOT NULL,
"transfer_no" varchar(32) COLLATE "pg_catalog"."default" NOT NULL,
"biz_transfer_no" varchar(100) COLLATE "pg_catalog"."default" NOT NULL,
"out_transfer_no" varchar(150) COLLATE "pg_catalog"."default",
"mch_no" varchar(32) COLLATE "pg_catalog"."default" NOT NULL,
"app_id" varchar(32) COLLATE "pg_catalog"."default" NOT NULL,
"amount" int8 NOT NULL,
"currency" varchar(8) COLLATE "pg_catalog"."default" NOT NULL DEFAULT 'CNY'::character varying,
"title" varchar(100) COLLATE "pg_catalog"."default",
"reason" varchar(200) COLLATE "pg_catalog"."default",
"status" varchar(32) COLLATE "pg_catalog"."default" NOT NULL,
"finish_time" timestamptz(6),
"notify_url" varchar(200) COLLATE "pg_catalog"."default",
"attach" varchar(500) COLLATE "pg_catalog"."default",
"req_time" timestamptz(6),
"error_msg" varchar(2048) COLLATE "pg_catalog"."default",
"payee_type" varchar(32) COLLATE "pg_catalog"."default" NOT NULL,
"payee_account" varchar(100) COLLATE "pg_catalog"."default" NOT NULL,
"payee_name" varchar(100) COLLATE "pg_catalog"."default",
"transfer_scene" varchar(50) COLLATE "pg_catalog"."default",
"creator" int8,
"create_time" timestamptz(6),
"last_modifier" int8,
"last_modified_time" timestamptz(6),
"version" int4 NOT NULL DEFAULT 0,
"deleted" bool NOT NULL DEFAULT false
)
;
COMMENT ON COLUMN "public"."pay_transfer_order_douyin"."id" IS '主键';
COMMENT ON COLUMN "public"."pay_transfer_order_douyin"."transfer_no" IS '平台转账单号';
COMMENT ON COLUMN "public"."pay_transfer_order_douyin"."biz_transfer_no" IS '商户转账号(幂等键, 同一商户下唯一)';
COMMENT ON COLUMN "public"."pay_transfer_order_douyin"."channel_mch_no" IS '通道商户号(路由确定后写入, 凭证组装用)';
COMMENT ON COLUMN "public"."pay_transfer_order_douyin"."out_transfer_no" IS '通道转账单号(抖音 orderId)';
COMMENT ON COLUMN "public"."pay_transfer_order_douyin"."mch_no" IS '商户号';
COMMENT ON COLUMN "public"."pay_transfer_order_douyin"."app_id" IS '应用号';
COMMENT ON COLUMN "public"."pay_transfer_order_douyin"."amount" IS '转账金额(最小货币单位/分)';
COMMENT ON COLUMN "public"."pay_transfer_order_douyin"."currency" IS '币种';
COMMENT ON COLUMN "public"."pay_transfer_order_douyin"."title" IS '转账标题';
COMMENT ON COLUMN "public"."pay_transfer_order_douyin"."reason" IS '转账原因/备注';
COMMENT ON COLUMN "public"."pay_transfer_order_douyin"."status" IS '转账状态(processing/success/fail/close)';
COMMENT ON COLUMN "public"."pay_transfer_order_douyin"."finish_time" IS '转账完成时间';
COMMENT ON COLUMN "public"."pay_transfer_order_douyin"."notify_url" IS '商户异步通知地址';
COMMENT ON COLUMN "public"."pay_transfer_order_douyin"."attach" IS '商户扩展参数(回调原样返回)';
COMMENT ON COLUMN "public"."pay_transfer_order_douyin"."req_time" IS '请求时间';
COMMENT ON COLUMN "public"."pay_transfer_order_douyin"."error_msg" IS '错误信息';
COMMENT ON COLUMN "public"."pay_transfer_order_douyin"."payee_type" IS '收款人账号类型';
COMMENT ON COLUMN "public"."pay_transfer_order_douyin"."payee_account" IS '收款人账号';
COMMENT ON COLUMN "public"."pay_transfer_order_douyin"."payee_name" IS '收款人姓名';
COMMENT ON COLUMN "public"."pay_transfer_order_douyin"."transfer_scene" IS '转账场景ID(冗余自通道商户配置)';
COMMENT ON COLUMN "public"."pay_transfer_order_douyin"."creator" IS '创建人';
COMMENT ON COLUMN "public"."pay_transfer_order_douyin"."create_time" IS '创建时间';
COMMENT ON COLUMN "public"."pay_transfer_order_douyin"."last_modifier" IS '最后修改人';
COMMENT ON COLUMN "public"."pay_transfer_order_douyin"."last_modified_time" IS '最后修改时间';
COMMENT ON COLUMN "public"."pay_transfer_order_douyin"."version" IS '乐观锁版本';
COMMENT ON COLUMN "public"."pay_transfer_order_douyin"."deleted" IS '逻辑删除';
COMMENT ON TABLE "public"."pay_transfer_order_douyin" IS '抖音转账单';
-- ----------------------------
-- Table structure for pay_transfer_trade
-- ----------------------------
DROP TABLE IF EXISTS "public"."pay_transfer_trade";
CREATE TABLE "public"."pay_transfer_trade" (
"id" int8 NOT NULL,
"trade_no" varchar(32) COLLATE "pg_catalog"."default" NOT NULL,
"container_id" int8 NOT NULL,
"container_channel" varchar(32) COLLATE "pg_catalog"."default" NOT NULL,
"channel" varchar(32) COLLATE "pg_catalog"."default",
"provider" varchar(32) COLLATE "pg_catalog"."default",
"amount" int8 NOT NULL,
"currency" varchar(8) COLLATE "pg_catalog"."default" NOT NULL DEFAULT 'CNY'::character varying,
"status" varchar(32) COLLATE "pg_catalog"."default" NOT NULL,
"out_transfer_no" varchar(150) COLLATE "pg_catalog"."default",
"relation_no" varchar(150) COLLATE "pg_catalog"."default",
"finish_time" timestamptz(6),
"title" varchar(100) COLLATE "pg_catalog"."default",
"app_id" varchar(32) COLLATE "pg_catalog"."default" NOT NULL,
"mch_no" varchar(32) COLLATE "pg_catalog"."default" NOT NULL,
"creator" int8,
"create_time" timestamptz(6),
"last_modifier" int8,
"last_modified_time" timestamptz(6),
"version" int4 NOT NULL DEFAULT 0,
"deleted" bool NOT NULL DEFAULT false
)
;
COMMENT ON COLUMN "public"."pay_transfer_trade"."id" IS '主键';
COMMENT ON COLUMN "public"."pay_transfer_trade"."trade_no" IS '平台转账交易号';
COMMENT ON COLUMN "public"."pay_transfer_trade"."container_id" IS '关联通道转账单ID';
COMMENT ON COLUMN "public"."pay_transfer_trade"."container_channel" IS '所属通道(wechat/alipay/douyin)';
COMMENT ON COLUMN "public"."pay_transfer_trade"."channel" IS '通道编码(冗余, 跨通道统计)';
COMMENT ON COLUMN "public"."pay_transfer_trade"."provider" IS '钱包渠道(wechat/alipay/douyin)';
COMMENT ON COLUMN "public"."pay_transfer_trade"."amount" IS '转账金额(最小货币单位/分)';
COMMENT ON COLUMN "public"."pay_transfer_trade"."currency" IS '币种';
COMMENT ON COLUMN "public"."pay_transfer_trade"."status" IS '转账状态(processing/success/fail/close)';
COMMENT ON COLUMN "public"."pay_transfer_trade"."out_transfer_no" IS '通道转账单号';
COMMENT ON COLUMN "public"."pay_transfer_trade"."relation_no" IS '实际上送通道的商户转账号(反查权威)';
COMMENT ON COLUMN "public"."pay_transfer_trade"."finish_time" IS '转账完成时间';
COMMENT ON COLUMN "public"."pay_transfer_trade"."title" IS '转账标题';
COMMENT ON COLUMN "public"."pay_transfer_trade"."app_id" IS '应用号';
COMMENT ON COLUMN "public"."pay_transfer_trade"."mch_no" IS '商户号';
COMMENT ON COLUMN "public"."pay_transfer_trade"."creator" IS '创建人';
COMMENT ON COLUMN "public"."pay_transfer_trade"."create_time" IS '创建时间';
COMMENT ON COLUMN "public"."pay_transfer_trade"."last_modifier" IS '最后修改人';
COMMENT ON COLUMN "public"."pay_transfer_trade"."last_modified_time" IS '最后修改时间';
COMMENT ON COLUMN "public"."pay_transfer_trade"."version" IS '乐观锁版本';
COMMENT ON COLUMN "public"."pay_transfer_trade"."deleted" IS '逻辑删除';
COMMENT ON TABLE "public"."pay_transfer_trade" IS '转账资金凭证';
-- ----------------------------
-- Table structure for starter_audit_login_log
-- ----------------------------
@@ -3901,6 +4093,7 @@ CREATE TABLE "public"."wechat_direct_channel_merchant" (
"channel_mch_no" varchar(64) COLLATE "pg_catalog"."default" NOT NULL,
"product" varchar(32) COLLATE "pg_catalog"."default" NOT NULL,
"wx_mch_id" varchar(32) COLLATE "pg_catalog"."default",
"transfer_scene" varchar(50) COLLATE "pg_catalog"."default",
"creator" int8,
"create_time" timestamptz(6),
"last_modifier" int8,
@@ -3914,6 +4107,7 @@ COMMENT ON COLUMN "public"."wechat_direct_channel_merchant"."mch_no" IS '商户
COMMENT ON COLUMN "public"."wechat_direct_channel_merchant"."channel_mch_no" IS '通道商户号(系统生成雪花号)';
COMMENT ON COLUMN "public"."wechat_direct_channel_merchant"."product" IS '所属支付产品';
COMMENT ON COLUMN "public"."wechat_direct_channel_merchant"."wx_mch_id" IS '微信直连商户号';
COMMENT ON COLUMN "public"."wechat_direct_channel_merchant"."transfer_scene" IS '转账场景ID(商家转账到零钱, 未配置时发起转账报错)';
COMMENT ON COLUMN "public"."wechat_direct_channel_merchant"."creator" IS '创建人';
COMMENT ON COLUMN "public"."wechat_direct_channel_merchant"."create_time" IS '创建时间';
COMMENT ON COLUMN "public"."wechat_direct_channel_merchant"."last_modifier" IS '最后修改人';
@@ -4156,6 +4350,189 @@ COMMENT ON COLUMN "public"."wx_platform_app_capability"."capability" IS '支付
COMMENT ON COLUMN "public"."wx_platform_app_capability"."wx_platform_app_id" IS '平台微信应用ID';
COMMENT ON TABLE "public"."wx_platform_app_capability" IS '平台微信应用默认能力绑定(全局一能力一应用)';
-- ----------------------------
-- Table structure for fuyou_isv_channel_merchant
-- ----------------------------
DROP TABLE IF EXISTS "public"."fuyou_isv_channel_merchant";
CREATE TABLE "public"."fuyou_isv_channel_merchant" (
"id" int8 NOT NULL,
"mch_no" varchar(32) COLLATE "pg_catalog"."default",
"channel_mch_no" varchar(64) COLLATE "pg_catalog"."default",
"product" varchar(32) COLLATE "pg_catalog"."default",
"sandbox" bool DEFAULT false,
"fuyou_mch_no" varchar(64) COLLATE "pg_catalog"."default",
"term_no" varchar(64) COLLATE "pg_catalog"."default",
"creator" int8,
"create_time" timestamptz(6),
"last_modifier" int8,
"last_modified_time" timestamptz(6),
"version" int4 NOT NULL DEFAULT 0,
"deleted" bool NOT NULL DEFAULT false
)
;
COMMENT ON COLUMN "public"."fuyou_isv_channel_merchant"."id" IS '主键';
COMMENT ON COLUMN "public"."fuyou_isv_channel_merchant"."mch_no" IS '商户号';
COMMENT ON COLUMN "public"."fuyou_isv_channel_merchant"."channel_mch_no" IS '通道商户号(FUYOU+雪花)';
COMMENT ON COLUMN "public"."fuyou_isv_channel_merchant"."product" IS '所属支付产品(对应 ProductEnum.code)';
COMMENT ON COLUMN "public"."fuyou_isv_channel_merchant"."sandbox" IS '是否沙箱环境商户';
COMMENT ON COLUMN "public"."fuyou_isv_channel_merchant"."fuyou_mch_no" IS '富友商户号(mchnt_cd)';
COMMENT ON COLUMN "public"."fuyou_isv_channel_merchant"."term_no" IS '终端号(term_id)';
COMMENT ON COLUMN "public"."fuyou_isv_channel_merchant"."creator" IS '创建者ID';
COMMENT ON COLUMN "public"."fuyou_isv_channel_merchant"."create_time" IS '创建时间';
COMMENT ON COLUMN "public"."fuyou_isv_channel_merchant"."last_modifier" IS '最后修改者ID';
COMMENT ON COLUMN "public"."fuyou_isv_channel_merchant"."last_modified_time" IS '最后修改时间';
COMMENT ON COLUMN "public"."fuyou_isv_channel_merchant"."version" IS '版本号(乐观锁)';
COMMENT ON COLUMN "public"."fuyou_isv_channel_merchant"."deleted" IS '删除标志';
COMMENT ON TABLE "public"."fuyou_isv_channel_merchant" IS '富友通道商户绑定';
-- ----------------------------
-- Table structure for fuyou_isv_key_config
-- ----------------------------
DROP TABLE IF EXISTS "public"."fuyou_isv_key_config";
CREATE TABLE "public"."fuyou_isv_key_config" (
"id" int8 NOT NULL,
"product" varchar(32) COLLATE "pg_catalog"."default" NOT NULL,
"fy_app_id" varchar(64) COLLATE "pg_catalog"."default",
"order_prefix" varchar(64) COLLATE "pg_catalog"."default",
"private_key" text COLLATE "pg_catalog"."default",
"public_key" text COLLATE "pg_catalog"."default",
"sandbox" bool DEFAULT false,
"creator" int8,
"create_time" timestamptz(6),
"last_modifier" int8,
"last_modified_time" timestamptz(6),
"version" int4 NOT NULL DEFAULT 0,
"deleted" bool NOT NULL DEFAULT false
)
;
COMMENT ON COLUMN "public"."fuyou_isv_key_config"."id" IS '主键';
COMMENT ON COLUMN "public"."fuyou_isv_key_config"."product" IS '产品编码(对应 ProductEnum.code, 如 fuyou_pay)';
COMMENT ON COLUMN "public"."fuyou_isv_key_config"."fy_app_id" IS '富友应用编号(机构号 ins_cd)';
COMMENT ON COLUMN "public"."fuyou_isv_key_config"."order_prefix" IS '富友订单前缀(关联订单号前缀, 富友回调凭 mchnt_order_no 反查平台订单)';
COMMENT ON COLUMN "public"."fuyou_isv_key_config"."private_key" IS '商户RSA私钥(PKCS8 Base64, MD5withRSA 签名, 加密存储)';
COMMENT ON COLUMN "public"."fuyou_isv_key_config"."public_key" IS '富友RSA公钥(X509 Base64, 响应/回调验签, 加密存储)';
COMMENT ON COLUMN "public"."fuyou_isv_key_config"."sandbox" IS '是否沙箱环境';
COMMENT ON COLUMN "public"."fuyou_isv_key_config"."creator" IS '创建者ID';
COMMENT ON COLUMN "public"."fuyou_isv_key_config"."create_time" IS '创建时间';
COMMENT ON COLUMN "public"."fuyou_isv_key_config"."last_modifier" IS '最后修改者ID';
COMMENT ON COLUMN "public"."fuyou_isv_key_config"."last_modified_time" IS '最后修改时间';
COMMENT ON COLUMN "public"."fuyou_isv_key_config"."version" IS '版本号(乐观锁)';
COMMENT ON COLUMN "public"."fuyou_isv_key_config"."deleted" IS '删除标志';
COMMENT ON TABLE "public"."fuyou_isv_key_config" IS '富友服务商密钥配置';
-- ----------------------------
-- Table structure for leshua_isv_channel_merchant
-- ----------------------------
DROP TABLE IF EXISTS "public"."leshua_isv_channel_merchant";
CREATE TABLE "public"."leshua_isv_channel_merchant" (
"id" int8 NOT NULL,
"mch_no" varchar(32) COLLATE "pg_catalog"."default",
"channel_mch_no" varchar(64) COLLATE "pg_catalog"."default",
"product" varchar(32) COLLATE "pg_catalog"."default",
"sandbox" bool DEFAULT false,
"ls_mch_no" varchar(64) COLLATE "pg_catalog"."default",
"creator" int8,
"create_time" timestamptz(6),
"last_modifier" int8,
"last_modified_time" timestamptz(6),
"version" int4 NOT NULL DEFAULT 0,
"deleted" bool NOT NULL DEFAULT false
)
;
COMMENT ON COLUMN "public"."leshua_isv_channel_merchant"."id" IS '主键';
COMMENT ON COLUMN "public"."leshua_isv_channel_merchant"."mch_no" IS '商户号';
COMMENT ON COLUMN "public"."leshua_isv_channel_merchant"."channel_mch_no" IS '通道商户号(LESHUA+雪花)';
COMMENT ON COLUMN "public"."leshua_isv_channel_merchant"."product" IS '所属支付产品(对应 ProductEnum.code)';
COMMENT ON COLUMN "public"."leshua_isv_channel_merchant"."sandbox" IS '是否沙箱环境商户';
COMMENT ON COLUMN "public"."leshua_isv_channel_merchant"."ls_mch_no" IS '乐刷商户编号(merchant_id)';
COMMENT ON COLUMN "public"."leshua_isv_channel_merchant"."creator" IS '创建者ID';
COMMENT ON COLUMN "public"."leshua_isv_channel_merchant"."create_time" IS '创建时间';
COMMENT ON COLUMN "public"."leshua_isv_channel_merchant"."last_modifier" IS '最后修改者ID';
COMMENT ON COLUMN "public"."leshua_isv_channel_merchant"."last_modified_time" IS '最后修改时间';
COMMENT ON COLUMN "public"."leshua_isv_channel_merchant"."version" IS '版本号(乐观锁)';
COMMENT ON COLUMN "public"."leshua_isv_channel_merchant"."deleted" IS '删除标志';
COMMENT ON TABLE "public"."leshua_isv_channel_merchant" IS '乐刷通道商户绑定';
-- ----------------------------
-- Table structure for leshua_isv_key_config
-- ----------------------------
DROP TABLE IF EXISTS "public"."leshua_isv_key_config";
CREATE TABLE "public"."leshua_isv_key_config" (
"id" int8 NOT NULL,
"product" varchar(32) COLLATE "pg_catalog"."default" NOT NULL,
"ls_mch_no" varchar(64) COLLATE "pg_catalog"."default",
"trade_key" text COLLATE "pg_catalog"."default",
"notify_key" text COLLATE "pg_catalog"."default",
"sign_type" varchar(16) COLLATE "pg_catalog"."default",
"ls_isv_no" varchar(64) COLLATE "pg_catalog"."default",
"sandbox" bool DEFAULT false,
"creator" int8,
"create_time" timestamptz(6),
"last_modifier" int8,
"last_modified_time" timestamptz(6),
"version" int4 NOT NULL DEFAULT 0,
"deleted" bool NOT NULL DEFAULT false
)
;
COMMENT ON COLUMN "public"."leshua_isv_key_config"."id" IS '主键';
COMMENT ON COLUMN "public"."leshua_isv_key_config"."product" IS '产品编码(对应 ProductEnum.code, 如 leshua_pay)';
COMMENT ON COLUMN "public"."leshua_isv_key_config"."ls_mch_no" IS '乐刷商户号(merchant_id, 服务商级或商户级, 全局唯一)';
COMMENT ON COLUMN "public"."leshua_isv_key_config"."trade_key" IS '交易密钥(tradeKey, 请求签名与响应/回调验签, 加密存储)';
COMMENT ON COLUMN "public"."leshua_isv_key_config"."notify_key" IS '异步通知密钥(notifyKey, 部分场景回调验签, 加密存储)';
COMMENT ON COLUMN "public"."leshua_isv_key_config"."sign_type" IS '签名类型(MD5 / SM3)';
COMMENT ON COLUMN "public"."leshua_isv_key_config"."ls_isv_no" IS '乐刷服务商号(lsIsvNo, 进件场景使用, 可选)';
COMMENT ON COLUMN "public"."leshua_isv_key_config"."sandbox" IS '是否沙箱环境';
COMMENT ON COLUMN "public"."leshua_isv_key_config"."creator" IS '创建者ID';
COMMENT ON COLUMN "public"."leshua_isv_key_config"."create_time" IS '创建时间';
COMMENT ON COLUMN "public"."leshua_isv_key_config"."last_modifier" IS '最后修改者ID';
COMMENT ON COLUMN "public"."leshua_isv_key_config"."last_modified_time" IS '最后修改时间';
COMMENT ON COLUMN "public"."leshua_isv_key_config"."version" IS '版本号(乐观锁)';
COMMENT ON COLUMN "public"."leshua_isv_key_config"."deleted" IS '删除标志';
COMMENT ON TABLE "public"."leshua_isv_key_config" IS '乐刷服务商密钥配置';
-- ----------------------------
-- Table structure for yeepay_direct_key_config
-- ----------------------------
DROP TABLE IF EXISTS "public"."yeepay_direct_key_config";
CREATE TABLE "public"."yeepay_direct_key_config" (
"id" int8 NOT NULL,
"mch_no" varchar(32) COLLATE "pg_catalog"."default",
"channel_mch_no" varchar(64) COLLATE "pg_catalog"."default",
"merchant_no" varchar(64) COLLATE "pg_catalog"."default",
"yop_isv_no" varchar(64) COLLATE "pg_catalog"."default",
"app_key" text COLLATE "pg_catalog"."default",
"private_key" text COLLATE "pg_catalog"."default",
"yop_public_key" text COLLATE "pg_catalog"."default",
"wx_app_id" varchar(64) COLLATE "pg_catalog"."default",
"wx_app_secret" text COLLATE "pg_catalog"."default",
"sandbox" bool DEFAULT false,
"creator" int8,
"create_time" timestamptz(6),
"last_modifier" int8,
"last_modified_time" timestamptz(6),
"version" int4 NOT NULL DEFAULT 0,
"deleted" bool NOT NULL DEFAULT false
)
;
COMMENT ON COLUMN "public"."yeepay_direct_key_config"."id" IS '主键';
COMMENT ON COLUMN "public"."yeepay_direct_key_config"."mch_no" IS '商户号';
COMMENT ON COLUMN "public"."yeepay_direct_key_config"."channel_mch_no" IS '通道商户号(创建时录入不可修改)';
COMMENT ON COLUMN "public"."yeepay_direct_key_config"."merchant_no" IS '易宝商户号(merchantNo, 创建时录入不可修改)';
COMMENT ON COLUMN "public"."yeepay_direct_key_config"."yop_isv_no" IS '易宝服务商商编(parentMerchantNo / yopIsvNo, 创建时录入不可修改)';
COMMENT ON COLUMN "public"."yeepay_direct_key_config"."app_key" IS '通道应用 AppKey(YOP 应用标识, 加密存储)';
COMMENT ON COLUMN "public"."yeepay_direct_key_config"."private_key" IS '商户 RSA 私钥(PEM PKCS#8, SDK 签名用, 加密存储)';
COMMENT ON COLUMN "public"."yeepay_direct_key_config"."yop_public_key" IS '易宝平台 RSA 公钥(PEM, SDK 验签用, 加密存储)';
COMMENT ON COLUMN "public"."yeepay_direct_key_config"."wx_app_id" IS '微信 AppId(微信 H5/JSAPI 场景用, 可空)';
COMMENT ON COLUMN "public"."yeepay_direct_key_config"."wx_app_secret" IS '微信 AppSecret(微信场景用, 可空, 加密存储)';
COMMENT ON COLUMN "public"."yeepay_direct_key_config"."sandbox" IS '是否沙箱环境';
COMMENT ON COLUMN "public"."yeepay_direct_key_config"."creator" IS '创建者ID';
COMMENT ON COLUMN "public"."yeepay_direct_key_config"."create_time" IS '创建时间';
COMMENT ON COLUMN "public"."yeepay_direct_key_config"."last_modifier" IS '最后修改者ID';
COMMENT ON COLUMN "public"."yeepay_direct_key_config"."last_modified_time" IS '最后修改时间';
COMMENT ON COLUMN "public"."yeepay_direct_key_config"."version" IS '版本号(乐观锁)';
COMMENT ON COLUMN "public"."yeepay_direct_key_config"."deleted" IS '删除标志';
COMMENT ON TABLE "public"."yeepay_direct_key_config" IS '易宝直连配置';
-- ----------------------------
-- Alter sequences owned by
-- ----------------------------
@@ -4163,13 +4540,6 @@ ALTER SEQUENCE "public"."adapay_direct_key_config_id_seq"
OWNED BY "public"."adapay_direct_key_config"."id";
SELECT setval('"public"."adapay_direct_key_config_id_seq"', 1, false);
-- ----------------------------
-- Alter sequences owned by
-- ----------------------------
ALTER SEQUENCE "public"."adapay_isv_key_config_id_seq"
OWNED BY "public"."adapay_isv_key_config"."id";
SELECT setval('"public"."adapay_isv_key_config_id_seq"', 1, false);
-- ----------------------------
-- Alter sequences owned by
-- ----------------------------
@@ -4228,24 +4598,11 @@ CREATE UNIQUE INDEX "uk_adapay_direct_key_config_sandbox" ON "public"."adapay_di
) WHERE deleted = false;
COMMENT ON INDEX "public"."uk_adapay_direct_key_config_sandbox" IS '同一通道商户同一环境密钥唯一';
-- ----------------------------
-- Indexes structure for table adapay_isv_key_config
-- ----------------------------
CREATE UNIQUE INDEX "uk_adapay_isv_key_config_sandbox" ON "public"."adapay_isv_key_config" USING btree (
"sandbox" "pg_catalog"."bool_ops" ASC NULLS LAST
) WHERE deleted = false;
COMMENT ON INDEX "public"."uk_adapay_isv_key_config_sandbox" IS '同一环境服务商配置唯一(平台为唯一服务商)';
-- ----------------------------
-- Primary Key structure for table adapay_direct_key_config
-- ----------------------------
ALTER TABLE "public"."adapay_direct_key_config" ADD CONSTRAINT "adapay_direct_key_config_pkey" PRIMARY KEY ("id");
-- ----------------------------
-- Primary Key structure for table adapay_isv_key_config
-- ----------------------------
ALTER TABLE "public"."adapay_isv_key_config" ADD CONSTRAINT "adapay_isv_key_config_pkey" PRIMARY KEY ("id");
-- ----------------------------
-- Primary Key structure for table alipay_direct_app
-- ----------------------------
@@ -4510,6 +4867,15 @@ ALTER TABLE "public"."hmpay_isv_channel_merchant" ADD CONSTRAINT "hmpay_isv_chan
-- ----------------------------
ALTER TABLE "public"."hmpay_isv_key_config" ADD CONSTRAINT "hmpay_isv_key_config_pkey" PRIMARY KEY ("id");
-- ----------------------------
-- Indexes structure for table hmpay_isv_key_config
-- ----------------------------
CREATE UNIQUE INDEX "uk_hmpay_isv_key_prod_sandbox" ON "public"."hmpay_isv_key_config" USING btree (
"product" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST,
"sandbox" "pg_catalog"."bool_ops" ASC NULLS LAST
) WHERE deleted = false;
COMMENT ON INDEX "public"."uk_hmpay_isv_key_prod_sandbox" IS '同一产品同一环境密钥唯一';
-- ----------------------------
-- Indexes structure for table iam_perm_code
-- ----------------------------
@@ -5494,6 +5860,118 @@ COMMENT ON INDEX "public"."uk_pay_trade_trade_no" IS '平台交易号唯一';
-- ----------------------------
ALTER TABLE "public"."pay_trade" ADD CONSTRAINT "pk_pay_trade" PRIMARY KEY ("id");
-- ----------------------------
-- Indexes structure for table pay_transfer_order_wechat
-- ----------------------------
CREATE UNIQUE INDEX "uk_pay_transfer_order_wechat_no" ON "public"."pay_transfer_order_wechat" USING btree (
"transfer_no" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
) WHERE deleted = false;
COMMENT ON INDEX "public"."uk_pay_transfer_order_wechat_no" IS '平台转账单号唯一';
CREATE UNIQUE INDEX "uk_pay_transfer_order_wechat_biz" ON "public"."pay_transfer_order_wechat" USING btree (
"biz_transfer_no" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST,
"app_id" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
) WHERE deleted = false;
COMMENT ON INDEX "public"."uk_pay_transfer_order_wechat_biz" IS '同一应用同一商户转账号唯一(幂等约束)';
CREATE INDEX "idx_pay_transfer_order_wechat_mch" ON "public"."pay_transfer_order_wechat" USING btree (
"mch_no" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST,
"create_time" "pg_catalog"."timestamptz_ops" ASC NULLS LAST
) WHERE deleted = false;
COMMENT ON INDEX "public"."idx_pay_transfer_order_wechat_mch" IS '按商户号+创建时间查询';
CREATE INDEX "idx_pay_transfer_order_wechat_status_time" ON "public"."pay_transfer_order_wechat" USING btree (
"status" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST,
"create_time" "pg_catalog"."timestamptz_ops" ASC NULLS LAST
) WHERE deleted = false;
COMMENT ON INDEX "public"."idx_pay_transfer_order_wechat_status_time" IS '按状态+创建时间窗口扫描(定时同步)';
-- ----------------------------
-- Primary Key structure for table pay_transfer_order_wechat
-- ----------------------------
ALTER TABLE "public"."pay_transfer_order_wechat" ADD CONSTRAINT "pk_pay_transfer_order_wechat" PRIMARY KEY ("id");
-- ----------------------------
-- Indexes structure for table pay_transfer_order_alipay
-- ----------------------------
CREATE UNIQUE INDEX "uk_pay_transfer_order_alipay_no" ON "public"."pay_transfer_order_alipay" USING btree (
"transfer_no" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
) WHERE deleted = false;
COMMENT ON INDEX "public"."uk_pay_transfer_order_alipay_no" IS '平台转账单号唯一';
CREATE UNIQUE INDEX "uk_pay_transfer_order_alipay_biz" ON "public"."pay_transfer_order_alipay" USING btree (
"biz_transfer_no" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST,
"app_id" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
) WHERE deleted = false;
COMMENT ON INDEX "public"."uk_pay_transfer_order_alipay_biz" IS '同一应用同一商户转账号唯一(幂等约束)';
CREATE INDEX "idx_pay_transfer_order_alipay_mch" ON "public"."pay_transfer_order_alipay" USING btree (
"mch_no" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST,
"create_time" "pg_catalog"."timestamptz_ops" ASC NULLS LAST
) WHERE deleted = false;
COMMENT ON INDEX "public"."idx_pay_transfer_order_alipay_mch" IS '按商户号+创建时间查询';
CREATE INDEX "idx_pay_transfer_order_alipay_status_time" ON "public"."pay_transfer_order_alipay" USING btree (
"status" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST,
"create_time" "pg_catalog"."timestamptz_ops" ASC NULLS LAST
) WHERE deleted = false;
COMMENT ON INDEX "public"."idx_pay_transfer_order_alipay_status_time" IS '按状态+创建时间窗口扫描(定时同步)';
-- ----------------------------
-- Primary Key structure for table pay_transfer_order_alipay
-- ----------------------------
ALTER TABLE "public"."pay_transfer_order_alipay" ADD CONSTRAINT "pk_pay_transfer_order_alipay" PRIMARY KEY ("id");
-- ----------------------------
-- Indexes structure for table pay_transfer_order_douyin
-- ----------------------------
CREATE UNIQUE INDEX "uk_pay_transfer_order_douyin_no" ON "public"."pay_transfer_order_douyin" USING btree (
"transfer_no" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
) WHERE deleted = false;
COMMENT ON INDEX "public"."uk_pay_transfer_order_douyin_no" IS '平台转账单号唯一';
CREATE UNIQUE INDEX "uk_pay_transfer_order_douyin_biz" ON "public"."pay_transfer_order_douyin" USING btree (
"biz_transfer_no" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST,
"app_id" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
) WHERE deleted = false;
COMMENT ON INDEX "public"."uk_pay_transfer_order_douyin_biz" IS '同一应用同一商户转账号唯一(幂等约束)';
CREATE INDEX "idx_pay_transfer_order_douyin_mch" ON "public"."pay_transfer_order_douyin" USING btree (
"mch_no" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST,
"create_time" "pg_catalog"."timestamptz_ops" ASC NULLS LAST
) WHERE deleted = false;
COMMENT ON INDEX "public"."idx_pay_transfer_order_douyin_mch" IS '按商户号+创建时间查询';
CREATE INDEX "idx_pay_transfer_order_douyin_status_time" ON "public"."pay_transfer_order_douyin" USING btree (
"status" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST,
"create_time" "pg_catalog"."timestamptz_ops" ASC NULLS LAST
) WHERE deleted = false;
COMMENT ON INDEX "public"."idx_pay_transfer_order_douyin_status_time" IS '按状态+创建时间窗口扫描(定时同步)';
-- ----------------------------
-- Primary Key structure for table pay_transfer_order_douyin
-- ----------------------------
ALTER TABLE "public"."pay_transfer_order_douyin" ADD CONSTRAINT "pk_pay_transfer_order_douyin" PRIMARY KEY ("id");
-- ----------------------------
-- Indexes structure for table pay_transfer_trade
-- ----------------------------
CREATE UNIQUE INDEX "uk_pay_transfer_trade_no" ON "public"."pay_transfer_trade" USING btree (
"trade_no" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
) WHERE deleted = false;
COMMENT ON INDEX "public"."uk_pay_transfer_trade_no" IS '平台转账交易号唯一';
CREATE INDEX "idx_pay_transfer_trade_container" ON "public"."pay_transfer_trade" USING btree (
"container_id" "pg_catalog"."int8_ops" ASC NULLS LAST,
"container_channel" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
);
COMMENT ON INDEX "public"."idx_pay_transfer_trade_container" IS '按所属转账单+通道查询';
CREATE INDEX "idx_pay_transfer_trade_mch" ON "public"."pay_transfer_trade" USING btree (
"mch_no" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST,
"create_time" "pg_catalog"."timestamptz_ops" ASC NULLS LAST
) WHERE deleted = false;
COMMENT ON INDEX "public"."idx_pay_transfer_trade_mch" IS '按商户号+创建时间查询';
CREATE INDEX "idx_pay_transfer_trade_status_time" ON "public"."pay_transfer_trade" USING btree (
"status" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST,
"create_time" "pg_catalog"."timestamptz_ops" ASC NULLS LAST
) WHERE deleted = false;
COMMENT ON INDEX "public"."idx_pay_transfer_trade_status_time" IS '按状态+创建时间窗口扫描(定时同步)';
-- ----------------------------
-- Primary Key structure for table pay_transfer_trade
-- ----------------------------
ALTER TABLE "public"."pay_transfer_trade" ADD CONSTRAINT "pk_pay_transfer_trade" PRIMARY KEY ("id");
-- ----------------------------
-- Indexes structure for table starter_audit_unipay_log
-- ----------------------------
@@ -5717,3 +6195,83 @@ COMMENT ON INDEX "public"."uk_wx_platform_app_cap_product" IS '产品+能力唯
-- Primary Key structure for table wx_platform_app_capability
-- ----------------------------
ALTER TABLE "public"."wx_platform_app_capability" ADD CONSTRAINT "wx_platform_app_capability_pkey" PRIMARY KEY ("id");
-- ----------------------------
-- Indexes structure for table fuyou_isv_channel_merchant
-- ----------------------------
CREATE UNIQUE INDEX "uk_fuyou_isv_channel_mch_no" ON "public"."fuyou_isv_channel_merchant" USING btree (
"channel_mch_no" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
) WHERE deleted = false;
COMMENT ON INDEX "public"."uk_fuyou_isv_channel_mch_no" IS '通道商户号唯一';
CREATE UNIQUE INDEX "uk_fuyou_isv_mch_fuyou_no" ON "public"."fuyou_isv_channel_merchant" USING btree (
"mch_no" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST,
"fuyou_mch_no" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
) WHERE deleted = false;
COMMENT ON INDEX "public"."uk_fuyou_isv_mch_fuyou_no" IS '同一商户下富友商户号唯一';
-- ----------------------------
-- Primary Key structure for table fuyou_isv_channel_merchant
-- ----------------------------
ALTER TABLE "public"."fuyou_isv_channel_merchant" ADD CONSTRAINT "pk_fuyou_isv_channel_merchant" PRIMARY KEY ("id");
-- ----------------------------
-- Indexes structure for table fuyou_isv_key_config
-- ----------------------------
CREATE UNIQUE INDEX "uk_fuyou_isv_key_prod_sandbox" ON "public"."fuyou_isv_key_config" USING btree (
"product" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST,
"sandbox" "pg_catalog"."bool_ops" ASC NULLS LAST
) WHERE deleted = false;
COMMENT ON INDEX "public"."uk_fuyou_isv_key_prod_sandbox" IS '同一产品同一环境密钥唯一';
-- ----------------------------
-- Primary Key structure for table fuyou_isv_key_config
-- ----------------------------
ALTER TABLE "public"."fuyou_isv_key_config" ADD CONSTRAINT "pk_fuyou_isv_key_config" PRIMARY KEY ("id");
-- ----------------------------
-- Indexes structure for table leshua_isv_channel_merchant
-- ----------------------------
CREATE UNIQUE INDEX "uk_leshua_isv_channel_mch_no" ON "public"."leshua_isv_channel_merchant" USING btree (
"channel_mch_no" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
) WHERE deleted = false;
COMMENT ON INDEX "public"."uk_leshua_isv_channel_mch_no" IS '通道商户号唯一';
CREATE UNIQUE INDEX "uk_leshua_isv_mch_ls_no" ON "public"."leshua_isv_channel_merchant" USING btree (
"mch_no" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST,
"ls_mch_no" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
) WHERE deleted = false;
COMMENT ON INDEX "public"."uk_leshua_isv_mch_ls_no" IS '同一商户下乐刷商户号唯一';
-- ----------------------------
-- Primary Key structure for table leshua_isv_channel_merchant
-- ----------------------------
ALTER TABLE "public"."leshua_isv_channel_merchant" ADD CONSTRAINT "pk_leshua_isv_channel_merchant" PRIMARY KEY ("id");
-- ----------------------------
-- Indexes structure for table leshua_isv_key_config
-- ----------------------------
CREATE UNIQUE INDEX "uk_leshua_isv_key_prod_sandbox" ON "public"."leshua_isv_key_config" USING btree (
"product" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST,
"sandbox" "pg_catalog"."bool_ops" ASC NULLS LAST
) WHERE deleted = false;
COMMENT ON INDEX "public"."uk_leshua_isv_key_prod_sandbox" IS '同一产品同一环境密钥唯一';
-- ----------------------------
-- Primary Key structure for table leshua_isv_key_config
-- ----------------------------
ALTER TABLE "public"."leshua_isv_key_config" ADD CONSTRAINT "pk_leshua_isv_key_config" PRIMARY KEY ("id");
-- ----------------------------
-- Indexes structure for table yeepay_direct_key_config
-- ----------------------------
CREATE UNIQUE INDEX "uk_yeepay_direct_key_cmchno_sandbox" ON "public"."yeepay_direct_key_config" USING btree (
"channel_mch_no" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST,
"sandbox" "pg_catalog"."bool_ops" ASC NULLS LAST
) WHERE deleted = false;
COMMENT ON INDEX "public"."uk_yeepay_direct_key_cmchno_sandbox" IS '同一通道商户同一环境密钥唯一';
-- ----------------------------
-- Primary Key structure for table yeepay_direct_key_config
-- ----------------------------
ALTER TABLE "public"."yeepay_direct_key_config" ADD CONSTRAINT "pk_yeepay_direct_key_config" PRIMARY KEY ("id");

View File

@@ -1,50 +0,0 @@
package cn.daxpay.open.channel.adapay.controller.isv;
import cn.daxpay.open.channel.adapay.convert.isv.AdapayIsvKeyConfigConvert;
import cn.daxpay.open.channel.adapay.param.isv.AdapayIsvKeyConfigParam;
import cn.daxpay.open.channel.adapay.result.isv.AdapayIsvKeyConfigResult;
import cn.daxpay.open.channel.adapay.service.isv.AdapayIsvKeyConfigService;
import cn.daxpay.open.platform.core.annotation.PermCode;
import cn.daxpay.open.platform.core.code.PermCodes;
import cn.daxpay.open.platform.core.rest.Res;
import cn.daxpay.open.platform.core.rest.result.Result;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/// # Adapay 服务商密钥配置
///
/// 平台为唯一服务商, 同一环境(生产/沙箱)仅一条配置, 与通道商户直连密钥配置并存。
@PermCode(menuCode = PermCodes.Payment.Isv.MENU)
@Validated
@Tag(name = "Adapay 服务商密钥配置")
@RestController
@RequestMapping("/admin/adapay/isv-key-config")
@RequiredArgsConstructor
public class AdapayIsvKeyConfigController {
private final AdapayIsvKeyConfigService adapayIsvKeyConfigService;
@PermCode(code = PermCodes.Action.VIEW)
@Operation(summary = "查询Adapay 服务商密钥配置")
@GetMapping("/find-config")
public Result<AdapayIsvKeyConfigResult> findConfig(
@NotNull(message = "{validation.field.sandbox.notNull}") Boolean sandbox) {
return Res.ok(AdapayIsvKeyConfigConvert.CONVERT.toResult(adapayIsvKeyConfigService.findBySandbox(sandbox)));
}
@PermCode(code = PermCodes.Action.MANAGE)
@Operation(summary = "保存Adapay 服务商密钥配置")
@PostMapping("/save-config")
public Result<Void> saveConfig(@RequestBody @Validated AdapayIsvKeyConfigParam param) {
adapayIsvKeyConfigService.saveConfig(param);
return Res.ok();
}
}

View File

@@ -1,27 +0,0 @@
package cn.daxpay.open.channel.adapay.convert.isv;
import cn.daxpay.open.channel.adapay.entity.isv.AdapayIsvKeyConfig;
import cn.daxpay.open.channel.adapay.param.isv.AdapayIsvKeyConfigParam;
import cn.daxpay.open.channel.adapay.result.isv.AdapayIsvKeyConfigResult;
import org.mapstruct.BeanMapping;
import org.mapstruct.Mapper;
import org.mapstruct.MappingTarget;
import org.mapstruct.NullValuePropertyMappingStrategy;
import org.mapstruct.factory.Mappers;
/// # Adapay 服务商密钥配置转换
@Mapper
public interface AdapayIsvKeyConfigConvert {
AdapayIsvKeyConfigConvert CONVERT = Mappers.getMapper(AdapayIsvKeyConfigConvert.class);
/// 转换为返回对象
AdapayIsvKeyConfigResult toResult(AdapayIsvKeyConfig entity);
/// 转换为实体
AdapayIsvKeyConfig toEntity(AdapayIsvKeyConfigParam param);
/// 更新源数据到实体(空值不覆盖, 密钥为空时保留原值)
@BeanMapping(nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE)
void copy(AdapayIsvKeyConfigParam param, @MappingTarget AdapayIsvKeyConfig entity);
}

View File

@@ -1,21 +0,0 @@
package cn.daxpay.open.channel.adapay.dao.isv;
import cn.daxpay.open.channel.adapay.entity.isv.AdapayIsvKeyConfig;
import cn.daxpay.open.platform.common.mybatisplus.impl.BaseManager;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.Optional;
/// # Adapay 服务商密钥配置 Manager
@Slf4j
@Service
public class AdapayIsvKeyConfigManager extends BaseManager<AdapayIsvKeyConfigMapper, AdapayIsvKeyConfig> {
/// 根据沙箱环境查询(平台为唯一服务商, 同一环境仅一条配置)
public Optional<AdapayIsvKeyConfig> findBySandbox(boolean sandbox) {
return lambdaQuery()
.eq(AdapayIsvKeyConfig::getSandbox, sandbox)
.oneOpt();
}
}

View File

@@ -1,10 +0,0 @@
package cn.daxpay.open.channel.adapay.dao.isv;
import cn.daxpay.open.channel.adapay.entity.isv.AdapayIsvKeyConfig;
import com.github.yulichang.base.MPJBaseMapper;
import org.apache.ibatis.annotations.Mapper;
/// # Adapay 服务商密钥配置 Mapper
@Mapper
public interface AdapayIsvKeyConfigMapper extends MPJBaseMapper<AdapayIsvKeyConfig> {
}

View File

@@ -1,52 +0,0 @@
package cn.daxpay.open.channel.adapay.entity.isv;
import cn.daxpay.open.channel.adapay.convert.isv.AdapayIsvKeyConfigConvert;
import cn.daxpay.open.channel.adapay.result.isv.AdapayIsvKeyConfigResult;
import cn.daxpay.open.platform.common.mybatisplus.base.MpBaseEntity;
import cn.daxpay.open.platform.common.mybatisplus.function.ToResult;
import cn.daxpay.open.platform.common.mybatisplus.handler.encrypt.DataEncryptTypeHandler;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/// # Adapay 服务商密钥配置
///
/// Adapay(汇付天下)为服务商性质通道: 平台作为唯一服务商, 按环境(生产/沙箱)各保存一份服务商密钥。
/// 与通道商户直连配置([cn.daxpay.open.channel.adapay.entity.direct.AdapayDirectKeyConfig])并存:
/// 直连配置承载每个通道商户独立的支付应用 ID 与签名密钥, 服务商配置承载平台服务商主体身份,
/// 供服务商台账 / 进件等场景使用。
///
/// 签名算法: SHA1withRSA, 私钥签名 / 平台公钥验签, 无需证书。
/// 敏感字段(apiKey/privateKey/publicKey)通过 [DataEncryptTypeHandler] 加密入库。
@EqualsAndHashCode(callSuper = true)
@Data
@Accessors(chain = true)
@TableName(value = "adapay_isv_key_config", autoResultMap = true)
public class AdapayIsvKeyConfig extends MpBaseEntity implements ToResult<AdapayIsvKeyConfigResult> {
/// 服务商号(平台在汇付的服务商/主体编号)
private String isvNo;
/// Adapay 交易密钥(请求头 Authorization, 加密存储)
@TableField(typeHandler = DataEncryptTypeHandler.class)
private String apiKey;
/// 商户 RSA 私钥(PKCS#8 Base64, 请求签名, 加密存储)
@TableField(typeHandler = DataEncryptTypeHandler.class)
private String privateKey;
/// Adapay 平台公钥(X509 Base64, 响应验签, 加密存储; 为空时使用全局默认公钥)
@TableField(typeHandler = DataEncryptTypeHandler.class)
private String publicKey;
/// 是否沙箱环境
private Boolean sandbox;
/// 转换
@Override
public AdapayIsvKeyConfigResult toResult() {
return AdapayIsvKeyConfigConvert.CONVERT.toResult(this);
}
}

View File

@@ -1,31 +0,0 @@
package cn.daxpay.open.channel.adapay.param.isv;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.experimental.Accessors;
/// # Adapay 服务商密钥配置保存参数
@Data
@Accessors(chain = true)
@Schema(title = "Adapay 服务商密钥配置保存参数")
public class AdapayIsvKeyConfigParam {
@NotBlank(message = "{validation.field.isvNo.notBlank}")
@Schema(description = "服务商号(平台在汇付的服务商/主体编号)")
private String isvNo;
@Schema(description = "Adapay 交易密钥(加密存储)")
private String apiKey;
@Schema(description = "商户RSA私钥(PKCS#8 Base64, 加密存储)")
private String privateKey;
@Schema(description = "Adapay 平台公钥(X509 Base64, 加密存储; 为空使用全局默认)")
private String publicKey;
@NotNull(message = "{validation.field.sandbox.notNull}")
@Schema(description = "是否沙箱环境")
private Boolean sandbox;
}

View File

@@ -1,39 +0,0 @@
package cn.daxpay.open.channel.adapay.result.isv;
import cn.daxpay.open.platform.common.json.sensitive.SensitiveInfo;
import cn.daxpay.open.platform.core.result.BaseResult;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/// # Adapay 服务商密钥配置结果
@EqualsAndHashCode(callSuper = true)
@Data
@Accessors(chain = true)
@Schema(title = "Adapay 服务商密钥配置")
public class AdapayIsvKeyConfigResult extends BaseResult {
/// 服务商号(平台在汇付的服务商/主体编号)
@Schema(description = "服务商号")
private String isvNo;
/// Adapay 交易密钥(脱敏返回)
@SensitiveInfo(front = 6, end = 6)
@Schema(description = "Adapay 交易密钥(脱敏返回)")
private String apiKey;
/// 商户 RSA 私钥(脱敏返回)
@SensitiveInfo(front = 24, end = 24)
@Schema(description = "商户RSA私钥(脱敏返回)")
private String privateKey;
/// Adapay 平台公钥(脱敏返回)
@SensitiveInfo(front = 24, end = 24)
@Schema(description = "Adapay 平台公钥(脱敏返回)")
private String publicKey;
/// 是否沙箱环境
@Schema(description = "是否沙箱环境")
private Boolean sandbox;
}

View File

@@ -1,62 +0,0 @@
package cn.daxpay.open.channel.adapay.service.isv;
import cn.daxpay.open.channel.adapay.convert.isv.AdapayIsvKeyConfigConvert;
import cn.daxpay.open.channel.adapay.dao.isv.AdapayIsvKeyConfigManager;
import cn.daxpay.open.channel.adapay.entity.isv.AdapayIsvKeyConfig;
import cn.daxpay.open.channel.adapay.param.isv.AdapayIsvKeyConfigParam;
import cn.daxpay.open.platform.core.exception.BizInfoException;
import cn.hutool.core.util.StrUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/// # Adapay 服务商密钥配置
///
/// 管理服务商密钥配置, 查询时不存在则创建默认记录(平台为唯一服务商, 同一环境仅一条)。
/// 服务商配置与通道商户直连密钥配置([cn.daxpay.open.channel.adapay.entity.direct.AdapayDirectKeyConfig])并存,
/// 本配置承载平台服务商主体身份(服务商号/交易密钥/签名密钥), 供服务商台账与进件等场景使用。
@Slf4j
@Service
@RequiredArgsConstructor
public class AdapayIsvKeyConfigService {
private final AdapayIsvKeyConfigManager adapayIsvKeyConfigManager;
/// 根据沙箱环境查询密钥配置, 不存在则创建默认记录
///
/// @param sandbox 沙箱标志(生产/沙箱双环境并存, 按环境分别存一份服务商配置)
@Transactional(rollbackFor = Exception.class)
public AdapayIsvKeyConfig findBySandbox(boolean sandbox) {
var existing = adapayIsvKeyConfigManager.findBySandbox(sandbox);
if (existing.isPresent()) {
return existing.get();
}
var config = new AdapayIsvKeyConfig().setSandbox(sandbox);
adapayIsvKeyConfigManager.save(config);
return config;
}
/// 保存服务商密钥配置(更新, 空值不覆盖)
@Transactional(rollbackFor = Exception.class)
public void saveConfig(AdapayIsvKeyConfigParam param) {
boolean sandbox = Boolean.TRUE.equals(param.getSandbox());
var config = this.findBySandbox(sandbox);
AdapayIsvKeyConfigConvert.CONVERT.copy(param, config);
adapayIsvKeyConfigManager.updateById(config);
}
/// 台账/进件场景查询服务商密钥(必填校验, 不创建记录)
///
/// 记录不存在或关键字段(isvNo/apiKey/privateKey)任一为空时 fail-fast,
/// 避免空凭证下发到子应用后子应用才发现问题。
public AdapayIsvKeyConfig getForPay(boolean sandbox) {
AdapayIsvKeyConfig config = adapayIsvKeyConfigManager.findBySandbox(sandbox)
// Adapay: 服务商密钥未配置
.orElseThrow(() -> new BizInfoException("error.channel.adapay.isvKeyNotConfigured"));
if (StrUtil.hasBlank(config.getIsvNo(), config.getApiKey(), config.getPrivateKey())) {
throw new BizInfoException("error.channel.adapay.isvKeyNotConfigured");
}
return config;
}
}

View File

@@ -1,6 +1,5 @@
{
"payFailed": "Adapay payment error: {0}",
"closeFailed": "Adapay close order error: {0}",
"isvKeyNotConfigured": "Adapay ISV key not configured",
"unsupportedPayMethod": "Unsupported payment method for Adapay: {0}"
}

View File

@@ -1,6 +1,5 @@
{
"payFailed": "Kesalahan pembayaran Adapay: {0}",
"closeFailed": "Kesalahan menutup pesanan Adapay: {0}",
"isvKeyNotConfigured": "Kunci ISV Adapay belum dikonfigurasi",
"unsupportedPayMethod": "Metode pembayaran tidak didukung untuk Adapay: {0}"
}

View File

@@ -1,6 +1,5 @@
{
"payFailed": "Adapay支払エラー: {0}",
"closeFailed": "Adapay注文クローズエラー: {0}",
"isvKeyNotConfigured": "Adapay サービス事業者キーが設定されていません",
"unsupportedPayMethod": "Adapayでサポートされていない支払方法: {0}"
}

View File

@@ -1,6 +1,5 @@
{
"payFailed": "Adapay 결제 오류: {0}",
"closeFailed": "Adapay 주문 종료 오류: {0}",
"isvKeyNotConfigured": "Adapay ISV 키가 설정되지 않았습니다",
"unsupportedPayMethod": "Adapay에서 지원하지 않는 결제 방식: {0}"
}

View File

@@ -1,6 +1,5 @@
{
"payFailed": "Ralat pembayaran Adapay: {0}",
"closeFailed": "Ralat tutup pesanan Adapay: {0}",
"isvKeyNotConfigured": "Kunci ISV Adapay belum dikonfigurasi",
"unsupportedPayMethod": "Kaedah pembayaran tidak disokong untuk Adapay: {0}"
}

View File

@@ -1,6 +1,5 @@
{
"payFailed": "ข้อผิดพลาดการชำระเงิน Adapay: {0}",
"closeFailed": "ข้อผิดพลาดการปิดคำสั่ง Adapay: {0}",
"isvKeyNotConfigured": "ยังไม่ได้กำหนดค่าคีย์ ISV ของ Adapay",
"unsupportedPayMethod": "วิธีการชำระเงินไม่ได้รับการสนับสนุนสำหรับ Adapay: {0}"
}

View File

@@ -1,6 +1,5 @@
{
"payFailed": "Lỗi thanh toán Adapay: {0}",
"closeFailed": "Lỗi đóng đơn hàng Adapay: {0}",
"isvKeyNotConfigured": "Chưa cấu hình khóa ISV Adapay",
"unsupportedPayMethod": "Phương thức thanh toán không được hỗ trợ cho Adapay: {0}"
}

View File

@@ -1,6 +1,5 @@
{
"payFailed": "汇付支付异常: {0}",
"closeFailed": "汇付关闭订单异常: {0}",
"isvKeyNotConfigured": "汇付服务商密钥未配置",
"unsupportedPayMethod": "汇付不支持的支付方式: {0}"
}

View File

@@ -1,6 +1,5 @@
{
"payFailed": "匯付支付異常: {0}",
"closeFailed": "匯付關閉訂單異常: {0}",
"isvKeyNotConfigured": "匯付服務商密鑰未設定",
"unsupportedPayMethod": "匯付不支援的支付方式: {0}"
}

View File

@@ -1,6 +1,5 @@
{
"payFailed": "匯付支付異常: {0}",
"closeFailed": "匯付關閉訂單異常: {0}",
"isvKeyNotConfigured": "匯付服務商密鑰未設定",
"unsupportedPayMethod": "匯付不支援的支付方式: {0}"
}