feat: 公众号服务新增 GetJSSDKConfig 方法及 JSSDK 配置 DTO
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
@@ -8,6 +8,37 @@ import (
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
// GetJSSDKConfig 获取 JSSDK 签名配置
|
||||
// url 为当前页面完整 URL(含协议和路径,不含 # 及其后内容)
|
||||
func (s *OfficialAccountService) GetJSSDKConfig(ctx context.Context, url string) (*JSSDKConfig, error) {
|
||||
if url == "" {
|
||||
return nil, errors.New(errors.CodeInvalidParam, "页面 URL 不能为空")
|
||||
}
|
||||
|
||||
signMap, err := s.app.JSSDK.ConfigSignature(ctx, url, "", 0)
|
||||
if err != nil {
|
||||
s.logger.Error("获取 JSSDK 签名失败", zap.String("url", url), zap.Error(err))
|
||||
return nil, errors.Wrap(errors.CodeInternalError, err, "获取 JSSDK 签名失败")
|
||||
}
|
||||
|
||||
appID, _ := (*signMap)["appId"].(string)
|
||||
nonceStr, _ := (*signMap)["nonceStr"].(string)
|
||||
timestamp, _ := (*signMap)["timestamp"].(int64)
|
||||
signature, _ := (*signMap)["signature"].(string)
|
||||
|
||||
s.logger.Debug("获取 JSSDK 签名配置成功",
|
||||
zap.String("app_id", appID),
|
||||
zap.String("url", url),
|
||||
)
|
||||
|
||||
return &JSSDKConfig{
|
||||
AppID: appID,
|
||||
Timestamp: timestamp,
|
||||
NonceStr: nonceStr,
|
||||
Signature: signature,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// OfficialAccountService 微信公众号服务实现
|
||||
type OfficialAccountService struct {
|
||||
app *officialAccount.OfficialAccount
|
||||
|
||||
Reference in New Issue
Block a user