fix(nezha): return_url 为空时兜底为 notify_url 的 origin(哪吒必填)

哪吒 pay/create 要求 return_url 必填;业务方未显式传时下单被拒(缺少参数 return_url)。
兜底用 notify_url 的 origin(pay 对外基址)保证合法非空。
This commit is contained in:
wangjia
2026-07-11 16:00:05 +08:00
parent a6530a74e0
commit e1060f1f6e
+10 -1
View File
@@ -108,12 +108,21 @@ func (p *Provider) Create(ctx context.Context, req provider.CreateRequest) (*pro
payType = "alipay" // 未指定聚合渠道类型时的默认值(alipay 是最常见通道)
}
// 哪吒协议要求 return_url 必填(支付后浏览器跳回地址);业务方(pangolin)未显式传时,
// 兜底用 notify_url 的 origin(即 pay 对外基址,如 https://pay.yanmeiai.com),保证合法非空。
returnURL := req.ReturnURL
if returnURL == "" {
if u, e := url.Parse(p.notifyURL); e == nil && u.Host != "" {
returnURL = u.Scheme + "://" + u.Host
}
}
params := map[string]string{
"pid": p.pid,
"type": payType,
"out_trade_no": req.OutTradeNo,
"notify_url": p.notifyURL,
"return_url": req.ReturnURL,
"return_url": returnURL,
"name": req.Subject,
"money": amount,
"timestamp": strconv.FormatInt(time.Now().Unix(), 10),