This commit is contained in:
2026-01-16 16:02:18 +08:00
parent 71af961cfb
commit 33dd85fd2f
5 changed files with 45 additions and 26 deletions

View File

@@ -2,7 +2,7 @@ Name: main
Host: 0.0.0.0 Host: 0.0.0.0
Port: 8888 Port: 8888
Timeout: 0 Timeout: 0
DataSource: "qnc:5vg67b3UNHu8@tcp(127.0.0.1:21201)/qnc?charset=utf8mb4&parseTime=True&loc=Local" DataSource: "zac:5vg67b3UNHu8@tcp(127.0.0.1:21201)/zac?charset=utf8mb4&parseTime=True&loc=Local"
CacheRedis: CacheRedis:
- Host: "127.0.0.1:21202" - Host: "127.0.0.1:21202"
Pass: "3m3WsgyCKWqz" # Redis 密码,如果未设置则留空 Pass: "3m3WsgyCKWqz" # Redis 密码,如果未设置则留空
@@ -42,15 +42,15 @@ Alipay:
Wxpay: Wxpay:
AppID: "wx442ee1ac1ee75917" AppID: "wx442ee1ac1ee75917"
MchID: "1682635136" MchID: "1738205312"
MchCertificateSerialNumber: "5369B8AEEBDCF7AF274510252E6A8C0659C30F61" MchCertificateSerialNumber: "6BD3F3D86A470C1ED31476EC5EF68DC16E023F43"
MchApiv3Key: "e3ea4cf0765f1e71b01bb387dfcdbc9f" MchApiv3Key: "ZtYxWvUsRqPoNmLkJiHgFeDcBap6gQ3K5"
MchPrivateKeyPath: "etc/merchant/apiclient_key.pem" MchPrivateKeyPath: "etc/merchant/wxpay/apiclient_key.pem"
MchPublicKeyID: "PUB_KEY_ID_0116826351362025060900382267001601" MchPublicKeyID: "PUB_KEY_ID_0117382053122026011600191612000202"
MchPublicKeyPath: "etc/merchant/pub_key.pem" MchPublicKeyPath: "etc/merchant/wxpay/pub_key.pem"
MchPlatformRAS: "1FFEC3F62E31885FAB4C91ADCB8D7557E9488781" MchPlatformRAS: ""
NotifyUrl: "https://6m4685017o.goho.co/api/v1/pay/wechat/callback" NotifyUrl: "https://www.zhenaicha.com/api/v1/pay/wechat/callback"
RefundNotifyUrl: "https://6m4685017o.goho.co/api/v1/paywechat/refund_callback" RefundNotifyUrl: "https://www.zhenaicha.com/api/v1/pay/wechat/refund_callback"
Applepay: Applepay:
ProductionVerifyURL: "https://api.storekit.itunes.apple.com/inApps/v1/transactions/receipt" ProductionVerifyURL: "https://api.storekit.itunes.apple.com/inApps/v1/transactions/receipt"
SandboxVerifyURL: "https://api.storekit-sandbox.itunes.apple.com/inApps/v1/transactions/receipt" SandboxVerifyURL: "https://api.storekit-sandbox.itunes.apple.com/inApps/v1/transactions/receipt"

View File

@@ -0,0 +1,9 @@
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwamIS5KioHheN2FuePF0
WQyoCKbixwybUZCJCb2rgEgp0slmCnpneLhVwejXYTJT6t2W6683Dj70gfs+g5+P
AjxA7UrBIN/IJalNz1m95NSNzg3VnK56p7x+PJpQrfwAOmEdqdxj9IS3wVYMFQnu
oCA2K2hnhKdEbaWI6iZM2wweGLeqhVQlhIJXLQJ4/OWVCyZ/fR+g6atuX0Uz6JGX
yY+0Is0sj56Lw8gtGNjKoFkEFy/p/eB+C0Rg7WCsZICuB1UZuAZEpS0L55qi9f33
s3vdWJHnWj5FKKBLTW1qtUA7uU24uk9aJaKGlWKBUC26QQpTbh2pVEEQa6ZxghDO
1QIDAQAB
-----END PUBLIC KEY-----

View File

@@ -138,10 +138,20 @@ func newWechatPayServiceWithWxPayPubKey(c config.Config, userAuthModel model.Use
// 注册证书下载器,用于下载平台证书(回调验签需要) // 注册证书下载器,用于下载平台证书(回调验签需要)
// 注意:使用公钥方式时,需要手动注册证书下载器才能下载平台证书 // 注意:使用公钥方式时,需要手动注册证书下载器才能下载平台证书
// 由于已配置公钥文件,证书下载改为可选,不阻塞初始化
err = downloader.MgrInstance().RegisterDownloaderWithClient(context.Background(), client, mchID, mchAPIv3Key) err = downloader.MgrInstance().RegisterDownloaderWithClient(context.Background(), client, mchID, mchAPIv3Key)
if err != nil { if err != nil {
logx.Errorf("注册证书下载器失败: %v", err) // 检查是否是404错误可能是配置问题
panic(fmt.Sprintf("初始化失败,服务停止: %v", err)) if apiErr, ok := err.(*core.APIError); ok && apiErr.StatusCode == 404 {
logx.Infof("[警告] 注册证书下载器失败(404): 可能是商户号(%s)、证书序列号或API密钥配置错误或网络问题。错误详情: %v", mchID, err)
logx.Infof("[提示] 如果已正确配置公钥文件(%s),可以继续使用,证书下载失败不影响支付功能", mchPublicKeyPath)
} else {
logx.Infof("[警告] 注册证书下载器失败(非致命错误,将使用配置的公钥进行验签): %v", err)
}
// 不阻塞初始化,因为已经配置了公钥文件,可以直接用于验签
// 如果后续需要下载平台证书,可以在回调处理时重试
} else {
logx.Infof("证书下载器注册成功")
} }
// 初始化 notify.Handler // 初始化 notify.Handler

View File

@@ -1,14 +1,14 @@
services: services:
mysql: mysql:
image: mysql:8.0.34 image: mysql:8.0.34
container_name: qnc_mysql container_name: zac_mysql
environment: environment:
# 时区上海 - Time zone Shanghai (Change if needed) # 时区上海 - Time zone Shanghai (Change if needed)
TZ: Asia/Shanghai TZ: Asia/Shanghai
# root 密码 - root password # root 密码 - root password
MYSQL_ROOT_PASSWORD: yfg87gyuYiy1 MYSQL_ROOT_PASSWORD: yfg87gyuYiy1
MYSQL_DATABASE: qnc MYSQL_DATABASE: zac
MYSQL_USER: qnc MYSQL_USER: zac
MYSQL_PASSWORD: 5vg67b3UNHu8 MYSQL_PASSWORD: 5vg67b3UNHu8
ports: ports:
- "21201:3306" - "21201:3306"
@@ -26,11 +26,11 @@ services:
--lower_case_table_names=1 --lower_case_table_names=1
restart: always restart: always
networks: networks:
- qnc_net - zac_net
redis: redis:
image: redis:7.4.0 image: redis:7.4.0
container_name: qnc_redis container_name: zac_redis
ports: ports:
- "21202:6379" - "21202:6379"
environment: environment:
@@ -43,39 +43,39 @@ services:
privileged: true privileged: true
restart: always restart: always
networks: networks:
- qnc_net - zac_net
asynqmon: asynqmon:
image: hibiken/asynqmon:latest image: hibiken/asynqmon:latest
container_name: qnc_asynqmon container_name: zac_asynqmon
ports: ports:
- "21203:8080" - "21203:8080"
environment: environment:
- TZ=Asia/Shanghai - TZ=Asia/Shanghai
command: command:
- "--redis-addr=qnc_redis:6379" - "--redis-addr=zac_redis:6379"
- "--redis-password=3m3WsgyCKWqz" - "--redis-password=3m3WsgyCKWqz"
restart: always restart: always
networks: networks:
- qnc_net - zac_net
depends_on: depends_on:
- redis - redis
phpmyadmin: phpmyadmin:
image: phpmyadmin/phpmyadmin image: phpmyadmin/phpmyadmin
container_name: qnc_phpmyadmin container_name: zac_phpmyadmin
restart: unless-stopped restart: unless-stopped
environment: environment:
PMA_HOST: qnc_mysql PMA_HOST: zac_mysql
PMA_PORT: 3306 PMA_PORT: 3306
PMA_USER: qnc PMA_USER: zac
PMA_PASSWORD: 5vg67b3UNHu8 PMA_PASSWORD: 5vg67b3UNHu8
ports: ports:
- "21204:80" - "21204:80"
depends_on: depends_on:
- mysql - mysql
networks: networks:
- qnc_net - zac_net
networks: networks:
qnc_net: zac_net:
driver: bridge driver: bridge