package alipay import ( "context" "fmt" "net/url" "github.com/smartwalle/alipay/v3" "github.com/break/junhong_cmp_fiber/internal/model" ) // DecodeNotification 对支付宝异步回调进行验签并解析通知内容。 // values 为原始 form body 构建的 url.Values,调用方负责解析请求体。 // 验签使用创建支付单时的 WechatConfig 中的 ali_public_key。 // 验签失败时返回 error,不推进业务。 func DecodeNotification(ctx context.Context, cfg *model.WechatConfig, values url.Values) (*alipay.Notification, error) { client, err := NewClientFromConfig(cfg) if err != nil { return nil, fmt.Errorf("构建支付宝客户端失败: %w", err) } notification, err := client.DecodeNotification(ctx, values) if err != nil { return nil, fmt.Errorf("支付宝回调验签失败: %w", err) } return notification, nil } // TradeStatusSuccess 判断交易状态是否为支付成功(TRADE_SUCCESS 或 TRADE_FINISHED) func TradeStatusSuccess(status alipay.TradeStatus) bool { return status == alipay.TradeStatusSuccess || status == alipay.TradeStatusFinished }