如何在条带结帐网络表单(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_dataproduct_data 定义产品和价格。你能解释一下你需要什么,而这没有提供吗? 我从数据库中获取数据,当我在 LineItems = new List 之间使用 for 循环时,我想使用 for 循环在新的 SessionLineItemOptions 中存储数据,然后它给我一个语法错误。 好吧,只需将其分离到请求之前的一个步骤中即可。 List&lt;SessionLineItemOptions&gt; 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 网络表单中

是否可以在 Django 中重定向到没有 AJAX 的条带结帐页面?

Paypal Express 结帐和 ASP.NET

将总金额传递给 PayPal 快速结帐

如何在 asp.net 中集成 Paypal Api 以进行快速结帐?