微信支付密钥使用 base64 字符串替换文件配置
This commit is contained in:
11
Dockerfile
11
Dockerfile
@@ -28,15 +28,8 @@ COPY --from=builder /build/bin/platform_linux_amd64 /app/platform
|
||||
# 设置可执行权限
|
||||
RUN chmod +x /app/platform
|
||||
|
||||
# 创建存放密钥文件的目录
|
||||
RUN mkdir -p /app/certs
|
||||
|
||||
# 声明暴露端口(实际端口通过环境变量传入)
|
||||
ENV APP_PORT=8080
|
||||
EXPOSE ${APP_PORT}
|
||||
|
||||
# 声明卷,用于在运行时挂载私密的证书文件
|
||||
VOLUME ["/app/certs"]
|
||||
# 声明暴露端口
|
||||
EXPOSE 8080
|
||||
|
||||
# 启动平台服务
|
||||
CMD ["/app/platform"]
|
||||
@@ -1,5 +1,6 @@
|
||||
## todo
|
||||
|
||||
- 支付宝使用实际 appid
|
||||
- 长效业务接入
|
||||
- 页面 账户总览
|
||||
- 页面 提取记录
|
||||
@@ -9,21 +10,20 @@
|
||||
- globals 合并到 services 或者反之
|
||||
- 自定义的服务错误没有必要,可以统一在 handler 层使用包装的 fiber.Error
|
||||
- 公众号的到期提示
|
||||
- 支付回调处理
|
||||
- 保存 session 到数据库
|
||||
|
||||
### 下阶段
|
||||
|
||||
- 支付回调处理
|
||||
- 保存 session 到数据库
|
||||
- 增加 domain 层,缓解同包字段过长的问题
|
||||
- 扩展 device 权限验证方式,提供一种方法区分内部和外部服务
|
||||
- 废弃 password 授权模式,迁移到 authorization code 授权模式
|
||||
- oauth token 验证授权范围
|
||||
- 实现白银节点的 warp 服务,用来去重与端口分配,保证测试与生产环境不会产生端口竞争
|
||||
- 增加 domain 层,缓解同包字段过长的问题
|
||||
- callback 结果直接由 api 端提供,不通过前端转发
|
||||
- debug:白银节点提供一些工具接口,方便快速操作
|
||||
- 批量下线端口
|
||||
- 统一使用 validator 进行参数验证
|
||||
- 格式化控制台输出
|
||||
|
||||
### 长期
|
||||
|
||||
|
||||
16
pkg/env/env.go
vendored
16
pkg/env/env.go
vendored
@@ -263,9 +263,9 @@ var (
|
||||
WechatPayAppId string
|
||||
WechatPayMchId string
|
||||
WechatPayMchPrivateKeySerial string
|
||||
WechatPayMchPrivateKeyPath string
|
||||
WechatPayMchPrivateKey string
|
||||
WechatPayPublicKeyId string
|
||||
WechatPayPublicKeyPath string
|
||||
WechatPayPublicKey string
|
||||
WechatPayApiCert string
|
||||
WechatPayCallbackUrl string
|
||||
WechatPayProduction = false
|
||||
@@ -288,9 +288,9 @@ func loadWechatPay() {
|
||||
panic("环境变量 WECHATPAY_MCH_PRIVATE_KEY_SERIAL 的值不能为空")
|
||||
}
|
||||
|
||||
WechatPayMchPrivateKeyPath = os.Getenv("WECHATPAY_MCH_PRIVATE_KEY_PATH")
|
||||
if WechatPayMchPrivateKeyPath == "" {
|
||||
panic("环境变量 WECHATPAY_MCH_PRIVATE_KEY_PATH 的值不能为空")
|
||||
WechatPayMchPrivateKey = os.Getenv("WECHATPAY_MCH_PRIVATE_KEY")
|
||||
if WechatPayMchPrivateKey == "" {
|
||||
panic("环境变量 WECHATPAY_MCH_PRIVATE_KEY 的值不能为空")
|
||||
}
|
||||
|
||||
WechatPayPublicKeyId = os.Getenv("WECHATPAY_PUBLIC_KEY_ID")
|
||||
@@ -298,9 +298,9 @@ func loadWechatPay() {
|
||||
panic("环境变量 WECHATPAY_PUBLIC_KEY_ID 的值不能为空")
|
||||
}
|
||||
|
||||
WechatPayPublicKeyPath = os.Getenv("WECHATPAY_PUBLIC_KEY_PATH")
|
||||
if WechatPayPublicKeyPath == "" {
|
||||
panic("环境变量 WECHATPAY_PUBLIC_KEY_PATH 的值不能为空")
|
||||
WechatPayPublicKey = os.Getenv("WECHATPAY_PUBLIC_KEY")
|
||||
if WechatPayPublicKey == "" {
|
||||
panic("环境变量 WECHATPAY_PUBLIC_KEY 的值不能为空")
|
||||
}
|
||||
|
||||
WechatPayApiCert = os.Getenv("WECHATPAY_API_CERT")
|
||||
|
||||
@@ -2,6 +2,7 @@ package globals
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/base64"
|
||||
"platform/pkg/env"
|
||||
|
||||
"github.com/wechatpay-apiv3/wechatpay-go/core"
|
||||
@@ -21,13 +22,24 @@ type WechatPayClient struct {
|
||||
|
||||
func InitWechatPay() {
|
||||
|
||||
// 加载 rsa 密钥文件
|
||||
appPrivateKey, err := utils.LoadPrivateKeyWithPath(env.WechatPayMchPrivateKeyPath)
|
||||
// 加载商户私钥
|
||||
private, err := base64.StdEncoding.DecodeString(env.WechatPayMchPrivateKey)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
wechatPublicKey, err := utils.LoadPublicKeyWithPath(env.WechatPayPublicKeyPath)
|
||||
appPrivateKey, err := utils.LoadPrivateKey(string(private))
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
// 加载微信支付公钥
|
||||
public, err := base64.StdEncoding.DecodeString(env.WechatPayPublicKey)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
wechatPublicKey, err := utils.LoadPublicKey(string(public))
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
Reference in New Issue
Block a user