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