fix: 修复 V2 微信支付参数全为空字符串的问题
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m17s

extractPaymentResult 只处理 map[string]any,而 V2 自建实现返回
map[string]string,类型断言静默失败导致所有字段为空字符串。
增加对 map[string]string 的处理分支,兼容 V1 和 V2 两种支付渠道。
This commit is contained in:
2026-03-31 14:59:43 +08:00
parent dc4f3cb7ba
commit bc2dbcb416

View File

@@ -139,20 +139,32 @@ func buildClientPayConfigFromResult(result *PaymentResult) *dto.ClientPayConfig
}
// extractPaymentResult 从微信 SDK 的 map 配置中提取统一支付参数。
// 支持两种类型:
// - map[string]anyV1 标准微信 SDKPowerWeChat返回
// - map[string]stringV2 自建实现返回
func extractPaymentResult(payConfig any) *PaymentResult {
configMap, _ := payConfig.(map[string]any)
if configMap == nil {
configMap = map[string]any{}
if configMap, ok := payConfig.(map[string]any); ok {
return &PaymentResult{
AppID: payFirstNonEmpty(payStringFromAny(configMap["appId"])),
TimeStamp: payFirstNonEmpty(payStringFromAny(configMap["timeStamp"]), payStringFromAny(configMap["timestamp"])),
NonceStr: payStringFromAny(configMap["nonceStr"]),
Package: payStringFromAny(configMap["package"]),
SignType: payStringFromAny(configMap["signType"]),
PaySign: payStringFromAny(configMap["paySign"]),
}
}
return &PaymentResult{
AppID: payFirstNonEmpty(payStringFromAny(configMap["appId"])),
TimeStamp: payFirstNonEmpty(payStringFromAny(configMap["timeStamp"]), payStringFromAny(configMap["timestamp"])),
NonceStr: payStringFromAny(configMap["nonceStr"]),
Package: payStringFromAny(configMap["package"]),
SignType: payStringFromAny(configMap["signType"]),
PaySign: payStringFromAny(configMap["paySign"]),
// V2 自建实现返回 map[string]string原 map[string]any 断言会失败导致字段全空
if configMap, ok := payConfig.(map[string]string); ok {
return &PaymentResult{
AppID: configMap["appId"],
TimeStamp: payFirstNonEmpty(configMap["timeStamp"], configMap["timestamp"]),
NonceStr: configMap["nonceStr"],
Package: configMap["package"],
SignType: configMap["signType"],
PaySign: configMap["paySign"],
}
}
return &PaymentResult{}
}
func payStringFromAny(value any) string {