package com.gxwebsoft.payment.constants; /** * 支付模块常量类 * 统一管理支付相关的常量配置 * * @author 科技小王子 * @since 2025-01-26 */ public class PaymentConstants { /** * 支付状态常量 */ public static class Status { /** 待支付 */ public static final String PENDING = "PENDING"; /** 支付成功 */ public static final String SUCCESS = "SUCCESS"; /** 支付失败 */ public static final String FAILED = "FAILED"; /** 支付取消 */ public static final String CANCELLED = "CANCELLED"; /** 支付超时 */ public static final String TIMEOUT = "TIMEOUT"; /** 退款成功 */ public static final String REFUNDED = "REFUNDED"; } /** * 微信支付相关常量 */ public static class Wechat { /** 货币类型 */ public static final String CURRENCY = "CNY"; /** 金额转换倍数(元转分) */ public static final int AMOUNT_MULTIPLIER = 100; /** 支付状态 */ public static final String PAY_SUCCESS = "SUCCESS"; public static final String PAY_REFUND = "REFUND"; public static final String PAY_NOTPAY = "NOTPAY"; public static final String PAY_CLOSED = "CLOSED"; public static final String PAY_REVOKED = "REVOKED"; public static final String PAY_USERPAYING = "USERPAYING"; public static final String PAY_PAYERROR = "PAYERROR"; /** 回调响应 */ public static final String NOTIFY_SUCCESS = "SUCCESS"; public static final String NOTIFY_FAIL = "FAIL"; /** 通知类型 */ public static final String EVENT_PAYMENT = "TRANSACTION.SUCCESS"; public static final String EVENT_REFUND = "REFUND.SUCCESS"; /** HTTP头部 */ public static final String HEADER_SIGNATURE = "Wechatpay-Signature"; public static final String HEADER_TIMESTAMP = "Wechatpay-Timestamp"; public static final String HEADER_NONCE = "Wechatpay-Nonce"; public static final String HEADER_SERIAL = "Wechatpay-Serial"; public static final String HEADER_REQUEST_ID = "Request-ID"; } /** * 支付宝相关常量 */ public static class Alipay { /** 货币类型 */ public static final String CURRENCY = "CNY"; /** 支付状态 */ public static final String PAY_SUCCESS = "TRADE_SUCCESS"; public static final String PAY_FINISHED = "TRADE_FINISHED"; public static final String PAY_CLOSED = "TRADE_CLOSED"; /** 回调响应 */ public static final String NOTIFY_SUCCESS = "success"; public static final String NOTIFY_FAIL = "failure"; /** 产品码 */ public static final String PRODUCT_CODE_WEB = "FAST_INSTANT_TRADE_PAY"; public static final String PRODUCT_CODE_WAP = "QUICK_WAP_WAY"; public static final String PRODUCT_CODE_APP = "QUICK_MSECURITY_PAY"; } /** * 银联支付相关常量 */ public static class UnionPay { /** 货币类型 */ public static final String CURRENCY = "156"; // 人民币代码 /** 支付状态 */ public static final String PAY_SUCCESS = "00"; public static final String PAY_FAILED = "01"; /** 交易类型 */ public static final String TXN_TYPE_CONSUME = "01"; // 消费 public static final String TXN_TYPE_REFUND = "04"; // 退货 } /** * 缓存键常量 */ public static class CacheKey { /** 支付配置缓存前缀 */ public static final String PAYMENT_CONFIG = "payment:config:"; /** 支付订单缓存前缀 */ public static final String PAYMENT_ORDER = "payment:order:"; /** 支付锁前缀 */ public static final String PAYMENT_LOCK = "payment:lock:"; /** 回调处理锁前缀 */ public static final String NOTIFY_LOCK = "payment:notify:lock:"; } /** * 配置相关常量 */ public static class Config { /** 订单超时时间(分钟) */ public static final int ORDER_TIMEOUT_MINUTES = 30; /** 订单描述最大长度 */ public static final int DESCRIPTION_MAX_LENGTH = 127; /** 最大重试次数 */ public static final int MAX_RETRY_COUNT = 3; /** 重试间隔(毫秒) */ public static final long RETRY_INTERVAL_MS = 1000; /** 签名有效期(秒) */ public static final long SIGNATURE_VALID_SECONDS = 300; } /** * 错误信息常量 */ public static class ErrorMessage { /** 参数错误 */ public static final String PARAM_ERROR = "参数错误"; /** 配置未找到 */ public static final String CONFIG_NOT_FOUND = "支付配置未找到"; /** 支付方式不支持 */ public static final String PAYMENT_TYPE_NOT_SUPPORTED = "支付方式不支持"; /** 金额错误 */ public static final String AMOUNT_ERROR = "金额错误"; /** 订单不存在 */ public static final String ORDER_NOT_FOUND = "订单不存在"; /** 订单状态错误 */ public static final String ORDER_STATUS_ERROR = "订单状态错误"; /** 签名验证失败 */ public static final String SIGNATURE_ERROR = "签名验证失败"; /** 网络请求失败 */ public static final String NETWORK_ERROR = "网络请求失败"; /** 系统内部错误 */ public static final String SYSTEM_ERROR = "系统内部错误"; /** 余额不足 */ public static final String INSUFFICIENT_BALANCE = "余额不足"; /** 支付超时 */ public static final String PAYMENT_TIMEOUT = "支付超时"; /** 重复支付 */ public static final String DUPLICATE_PAYMENT = "重复支付"; } /** * 日志消息常量 */ public static class LogMessage { /** 支付请求开始 */ public static final String PAYMENT_START = "开始处理支付请求"; /** 支付请求成功 */ public static final String PAYMENT_SUCCESS = "支付请求处理成功"; /** 支付请求失败 */ public static final String PAYMENT_FAILED = "支付请求处理失败"; /** 回调处理开始 */ public static final String NOTIFY_START = "开始处理支付回调"; /** 回调处理成功 */ public static final String NOTIFY_SUCCESS = "支付回调处理成功"; /** 回调处理失败 */ public static final String NOTIFY_FAILED = "支付回调处理失败"; /** 退款请求开始 */ public static final String REFUND_START = "开始处理退款请求"; /** 退款请求成功 */ public static final String REFUND_SUCCESS = "退款请求处理成功"; /** 退款请求失败 */ public static final String REFUND_FAILED = "退款请求处理失败"; } /** * 正则表达式常量 */ public static class Regex { /** 订单号格式 */ public static final String ORDER_NO = "^[a-zA-Z0-9_-]{1,32}$"; /** 金额格式(分) */ public static final String AMOUNT = "^[1-9]\\d*$"; /** 手机号格式 */ public static final String MOBILE = "^1[3-9]\\d{9}$"; /** 邮箱格式 */ public static final String EMAIL = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$"; } /** * 时间相关常量 */ public static class Time { /** 配置缓存有效期(秒) */ public static final long CONFIG_CACHE_SECONDS = 3600; /** 订单缓存有效期(秒) */ public static final long ORDER_CACHE_SECONDS = 1800; /** 支付锁有效期(秒) */ public static final long PAYMENT_LOCK_SECONDS = 60; /** 回调锁有效期(秒) */ public static final long NOTIFY_LOCK_SECONDS = 30; } /** * 文件相关常量 */ public static class File { /** 证书文件扩展名 */ public static final String CERT_EXTENSION = ".pem"; /** 私钥文件后缀 */ public static final String PRIVATE_KEY_SUFFIX = "_key.pem"; /** 公钥文件后缀 */ public static final String PUBLIC_KEY_SUFFIX = "_cert.pem"; } /** * 环境相关常量 */ public static class Environment { /** 开发环境 */ public static final String DEV = "dev"; /** 测试环境 */ public static final String TEST = "test"; /** 生产环境 */ public static final String PROD = "prod"; } // 私有构造函数,防止实例化 private PaymentConstants() { throw new UnsupportedOperationException("This is a utility class and cannot be instantiated"); } }