fix(nezha): return_url 为空时兜底为 notify_url 的 origin(哪吒必填)
哪吒 pay/create 要求 return_url 必填;业务方未显式传时下单被拒(缺少参数 return_url)。 兜底用 notify_url 的 origin(pay 对外基址)保证合法非空。
This commit is contained in:
@@ -108,12 +108,21 @@ func (p *Provider) Create(ctx context.Context, req provider.CreateRequest) (*pro
|
|||||||
payType = "alipay" // 未指定聚合渠道类型时的默认值(alipay 是最常见通道)
|
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{
|
params := map[string]string{
|
||||||
"pid": p.pid,
|
"pid": p.pid,
|
||||||
"type": payType,
|
"type": payType,
|
||||||
"out_trade_no": req.OutTradeNo,
|
"out_trade_no": req.OutTradeNo,
|
||||||
"notify_url": p.notifyURL,
|
"notify_url": p.notifyURL,
|
||||||
"return_url": req.ReturnURL,
|
"return_url": returnURL,
|
||||||
"name": req.Subject,
|
"name": req.Subject,
|
||||||
"money": amount,
|
"money": amount,
|
||||||
"timestamp": strconv.FormatInt(time.Now().Unix(), 10),
|
"timestamp": strconv.FormatInt(time.Now().Unix(), 10),
|
||||||
|
|||||||
Reference in New Issue
Block a user