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()
|
p.mu.Unlock()
|
||||||
exp := time.Now().Add(15 * time.Minute)
|
exp := time.Now().Add(15 * time.Minute)
|
||||||
ref := "FAKE-" + req.OutTradeNo + "-" + strconv.FormatInt(time.Now().UnixNano(), 36)
|
ref := "FAKE-" + req.OutTradeNo + "-" + strconv.FormatInt(time.Now().UnixNano(), 36)
|
||||||
return &provider.Session{
|
|
||||||
ProviderRef: ref,
|
// render 由 metadata["render"] 驱动(pangolin /buy 联调门控,见 CLAUDE.md 交代);
|
||||||
RenderType: provider.RenderCryptoAddress,
|
// 只影响这里的展示形态,不影响 provider_ref 生成/VerifyCallback/结算。
|
||||||
Payload: map[string]any{
|
switch req.Metadata["render"] {
|
||||||
"address": "TFake" + req.Account.AccountID + req.OutTradeNo,
|
case string(provider.RenderRedirect):
|
||||||
"amount_minor": req.AmountMinor,
|
return &provider.Session{
|
||||||
"currency": req.Currency,
|
ProviderRef: ref,
|
||||||
},
|
RenderType: provider.RenderRedirect,
|
||||||
ExpiresAt: &exp,
|
Payload: map[string]any{
|
||||||
}, nil
|
"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。
|
// VerifyCallback 解析测试注入的 JSON 回调体成归一化 PaidEvent。
|
||||||
|
|||||||
Reference in New Issue
Block a user