【发布时间】:2017-11-23 19:19:27
【问题描述】:
我有以下付款代码。
var service = new StripeChargeService(newgenSecretKey);
try
{
var result = service.Create(newCharge);
if (result.Paid)
{
lab.Text = "It worked";
CartOrders.UpdateTransactionID(result.Id, OrderID, "Express Checkout");
Response.Redirect("PgeCustSuccess.aspx?OrderID=" + OrderID);
}
}
catch (StripeException stripeException)
{
Debug.WriteLine(stripeException.Message);
stripe.Text = stripeException.Message;
//CartOrders.UpdateTransactionID(result.FailureMessage, OrderID, "Express Checkout");
}
我想在 catch 块中记录注释掉的值(result.FailureMessage)。我试图捕捉抛出的条纹错误并将其记录到我的数据库中。我面临的问题是我无法让 result.FailureMessage 在 catch 块中工作。我知道不能声明全局变量,只能在本地使用。
这是我尝试过的一些事情。
在 try 块之外声明了结果,但没有成功,因为 var 应该用一个类型初始化并且它是 stripe 类型
var service = new StripeChargeService(newgenSecretKey);
var result = new { };
try
{
//did not work
result = service.Create(newCharge);
if (result.Paid)
{
有什么想法吗?
【问题讨论】:
-
如果变量需要在
try块之外使用,那么它需要在try块之外声明,但是与任何变量一样,您需要将其声明为它的类型原意是要。您必须在try块内对其进行初始化这一事实与您声明它的位置无关。他们是两个不同的东西。如果service.Create的返回类型是Stripe,那么这就是您声明result variable as:Stripe 结果的类型;. You would need to test whetherresult` 是null,然后在catch块中使用它。您可能还需要将其初始化为null。 -
'StripeChargeService' 是一种类型,但它调用创建新费用。所以我无法声明它
-
它返回一个收费对象。但是我如何将其指定为类型?
-
@jmcilhinney。弄清楚了 。你的评论真的很有帮助。您能否写一个答案,以便我将其标记为正确。我将结果变量声明为 var result = (Stripe.StripeCharge)null;它按预期工作
标签: c# asp.net stripe-payments