【发布时间】:2021-10-01 20:54:21
【问题描述】:
我的目的是创建一种支付处理服务,我可以将其固定在任何网站上。我的问题是注入设置,例如 Stripe Public Key、Paypal Merchant Id 和服务器上的特定 url 以发送令牌并收取 stripe。
这个问题被简化了(Payments 项目最终将成为 dll 的),但项目结构如下所示:
WebApp 是 ASP.NET Core 托管的 Blazor WASM 项目模板。 WebApp.Client 依赖于 Payments.Shared 和 Payments.Ui 而WebApp.Server 也依赖于 Payments.Backend(对于 Stripe 充电响应等模型)。
由于我想在任何站点上使用此付款服务,并且每个站点的这些服务都不同,我需要在启动时在PaymentSettings.cs 中设置道具。
有没有办法做到这一点?如果这很重要,我只打算与 Blazor WASM 网站一起使用。
我觉得我可以在Program.cs 的Main 方法中通过string[] args 将这些设置传递给WebApp.Client:
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 项目中看不到任何方法。
也许我想多了,我的意思是,如果我至少可以将 WebApp.Server 的基本 url 注入到 Payments.Shared 项目中,然后我可以运行其余部分的 get 请求。
非常感谢任何帮助。
【问题讨论】:
标签: c# blazor-webassembly payment-processing razor-class-library