如何在条带结帐网络表单(ASP.NET C#)中存储多个动态产品我尝试了很多但静态它有效但动态不是?
Posted
技术标签:
【中文标题】如何在条带结帐网络表单(ASP.NET C#)中存储多个动态产品我尝试了很多但静态它有效但动态不是?【英文标题】:How can I store multiple dynamic products in stripe checkout webforms (ASP.NET C#) I tried a lot but static it's worked but dynamic not? 【发布时间】:2021-08-01 20:30:21 【问题描述】:这里是代码:- 静态我用它工作得很好..我如何使用asp.net c#动态存储产品
LineItems = new List<SessionLineItemOptions>
for (int i = 0; i < dtOrder.Rows.Count; i++)
new SessionLineItemOptions
Name=dtOrder.Rows[i]["ProductName"].toString(),
Currency="cad",
Amount =Convert.toInt64(dtOrder>Rows[i]["Price"])*100,
Quantity = 1,
,
,
【问题讨论】:
向我们展示无效的动态代码。 请检查这个.. 我不明白您所说的“静态”和“动态”是什么意思。你能准确解释一下你的意思吗?也许通过向我们展示您在问题中的静态尝试和动态尝试,我们会更好地理解您的意思。 【参考方案1】:扩展 API 参考 here 中显示的 sn-p,我们可以将 Price = 'price_123'
替换为 PriceData
(API ref),如下所示:
var options = new SessionCreateOptions
SuccessUrl = "https://example.com/success",
CancelUrl = "https://example.com/cancel",
PaymentMethodTypes = new List<string>
"card",
,
LineItems = new List<SessionLineItemOptions>
new SessionLineItemOptions
PriceData = new SessionLineItemPriceDataOptions
Currency = "usd",
UnitAmount = 50000,
ProductData = new SessionLineItemPriceDataProductDataOptions
Name = "some product name",
,
Quantity = 2,
,
,
Mode = "payment",
;
var service = new SessionService();
service.Create(options);
您可以在the source code 中找到所有类型定义。
【讨论】:
感谢您的建议,但我的问题是如何动态存储产品。静态的我明白。 那么动态是什么意思?这里的答案是在会话创建请求期间使用price_data
和product_data
定义产品和价格。你能解释一下你需要什么,而这没有提供吗?
我从数据库中获取数据,当我在 LineItems = new ListList<SessionLineItemOptions> sessionItems = ... ; SessionCreateOptions LineItems = sessionItems, ...
【参考方案2】:
我集成了条纹的多账户支付并解决了这样的问题 它现在对我有用,您还可以使用简单的结帐方法,例如从 db 动态获取产品
列表 lineItemsOptions = new List(); string cmdText = "select * from tableorder where sessionid='"+ sessionid + "'"; 数据集 ds = dbm.getDs(cmdText);
foreach (DataRow row in ds.Tables[0].Rows)
var currentLineItem = new SessionLineItemOptions
Name = row["ProductName"].ToString(),
Amount = 100,//Convert.ToInt32( row["variationPrice"].ToString()),
Currency = "usd",
Quantity = Convert.ToInt32(row["Quantity"].ToString()),
;
lineItemsOptions.Add(currentLineItem);
StripeConfiguration.ApiKey = "......................."; var options = new SessionCreateOptions();
options = new SessionCreateOptions
PaymentMethodTypes = new List<string>
"card",
,
LineItems = lineItemsOptions,
PaymentIntentData = new SessionPaymentIntentDataOptions
ApplicationFeeAmount = 1,
,
Mode = "payment",
SuccessUrl = "https://www.......com/success.aspx",
CancelUrl = "https://example.com/cancel",
;
var requestOptions = new RequestOptions
StripeAccount = ".............",
;
var service = new SessionService();
Session session = service.Create(options, requestOptions);
【讨论】:
以上是关于如何在条带结帐网络表单(ASP.NET C#)中存储多个动态产品我尝试了很多但静态它有效但动态不是?的主要内容,如果未能解决你的问题,请参考以下文章
将 Stripe 支付网关集成到 asp.net 网络表单中