我的目的是创建一种支付处理服务,我可以将其固定在任何网站的一侧。我的问题是注入设置,例如 Stripe 公钥、Paypal 商家 ID 以及服务器上的特定 url 以发送令牌并收取条带费用。
对于这个问题,这是简化的(Payments
项目最终将成为 dll),但项目结构如下所示:
WebApp 是 ASP.NET Core 托管的 Blazor WASM 项目模板。WebApp.Client
依赖于Payments.Shared
,Payments.Ui
而同时WebApp.Server
也依赖于Payments.Backend
(对于条纹电荷响应等模型)。
由于我想在任何站点上使用此付款服务,并且每个站点的这些服务都不同,因此我需要PaymentSettings.cs
在启动时设置道具。
有没有办法做到这一点?如果这很重要,我只打算与 Blazor WASM 网站一起使用。
我觉得我可以将这些设置传递给WebApp.Client
through string[] args
inProgram.cs
的Main
方法:
public static async Task Main(string[] args)
{
//omitted for brevity
//relevant line here
builder.Services
.AddSingleton(sp => new Payments.Shared.Infrastructure.PaymentSettings(args));
await builder.Build().RunAsync();
}
然后从那里进入构造函数PaymentSettings.cs
:
public class PaymentSettings
{
public PaymentSettings(string[] args)
{
//set props from args
}
public string PaypalMerchantId { get; set; }
public string StripeKey { get; set; }
public string ChargeStripeUrl { get; set; }
}
但我看不出有任何方法可以从WebApp.Server
项目中做到这一点。
也许我想太多了,我的意思是,如果我至少可以将基本 urlWebApp.Server
注入到Payments.Shared
项目中,然后我可以运行其余部分的 get 请求。
非常感谢任何帮助。