feat(dev): fake 渠道按 metadata.render 出 redirect/qr/crypto_address 三态
联调 pangolin /buy 页付款类型选择器:Create 读 req.Metadata["render"] 分支返回三种渲染形态的 payload,method 仍是 fake,不新增渠道名, provider_ref 生成/VerifyCallback/结算逻辑不变。
This commit is contained in:
@@ -67,16 +67,42 @@ func (p *Provider) Create(_ context.Context, req provider.CreateRequest) (*provi
|
||||
p.mu.Unlock()
|
||||
exp := time.Now().Add(15 * time.Minute)
|
||||
ref := "FAKE-" + req.OutTradeNo + "-" + strconv.FormatInt(time.Now().UnixNano(), 36)
|
||||
return &provider.Session{
|
||||
ProviderRef: ref,
|
||||
RenderType: provider.RenderCryptoAddress,
|
||||
Payload: map[string]any{
|
||||
"address": "TFake" + req.Account.AccountID + req.OutTradeNo,
|
||||
"amount_minor": req.AmountMinor,
|
||||
"currency": req.Currency,
|
||||
},
|
||||
ExpiresAt: &exp,
|
||||
}, nil
|
||||
|
||||
// render 由 metadata["render"] 驱动(pangolin /buy 联调门控,见 CLAUDE.md 交代);
|
||||
// 只影响这里的展示形态,不影响 provider_ref 生成/VerifyCallback/结算。
|
||||
switch req.Metadata["render"] {
|
||||
case string(provider.RenderRedirect):
|
||||
return &provider.Session{
|
||||
ProviderRef: ref,
|
||||
RenderType: provider.RenderRedirect,
|
||||
Payload: map[string]any{
|
||||
"url": "http://localhost:8090/result?out_trade_no=" + req.OutTradeNo,
|
||||
},
|
||||
ExpiresAt: &exp,
|
||||
}, nil
|
||||
case string(provider.RenderQR):
|
||||
return &provider.Session{
|
||||
ProviderRef: ref,
|
||||
RenderType: provider.RenderQR,
|
||||
Payload: map[string]any{
|
||||
"qr_content": "weixin://wxpay/mock/" + req.OutTradeNo,
|
||||
"display_amount": strconv.FormatInt(req.AmountMinor, 10),
|
||||
"currency": req.Currency,
|
||||
},
|
||||
ExpiresAt: &exp,
|
||||
}, nil
|
||||
default:
|
||||
return &provider.Session{
|
||||
ProviderRef: ref,
|
||||
RenderType: provider.RenderCryptoAddress,
|
||||
Payload: map[string]any{
|
||||
"address": "TFake" + req.Account.AccountID + req.OutTradeNo,
|
||||
"amount_minor": req.AmountMinor,
|
||||
"currency": req.Currency,
|
||||
},
|
||||
ExpiresAt: &exp,
|
||||
}, nil
|
||||
}
|
||||
}
|
||||
|
||||
// VerifyCallback 解析测试注入的 JSON 回调体成归一化 PaidEvent。
|
||||
|
||||
Reference in New Issue
Block a user