gpt4 book ai didi

c# - 亚马逊支付行为异步

转载 作者:行者123 更新时间:2023-11-30 20:40:05 24 4
gpt4 key购买 nike

我已将 Pay with Amazon 与我的网络应用程序集成,但我确定只有在我逐步调试代码时才能获取资金,如果我没有断点则不会发生。对我来说,这表明暂停是必要的。我正在使用定期付款。相关代码部分如下:

...
//make checkout object
AmazonAutomaticSimpleCheckout asc = new AmazonAutomaticSimpleCheckout(billingAgreeementId);

//capture
CaptureResponse cr = asc.Capture(authId, amount, 1);

//check if capture was successful
if (cr.CaptureResult.CaptureDetails.CaptureStatus.State == PaymentStatus.COMPLETED)
{
...
//give the user the things they paid for in the database
...

return "success";
}
...

因此,如果我在 //capture 下的捕获行处有一个断点,那么该函数将返回成功。如果我没有断点,我会得到运行时异常 System.NullReferenceException: Object reference not set to an instance of an object. 关于以下 if 语句。

对我来说,这意味着我应该能够等待捕获方法。

另请注意,capture(...) 方法正在调用 CaptureAction(...) 方法,就像 C# 示例所做的那样。

//Invoke the Capture method
public CaptureResponse Capture(string authId, string captureAmount, int indicator)
{
return CaptureAction(propertiesCollection, service, authId, captureAmount, billingAgreementId, indicator, null, null);
}

如何等待 capture 调用?我是否忘记传递一个参数来指示它应该立即执行操作?

最佳答案

似乎经过一些实验后,函数 CheckAuthorizationStatus() 基本上实现了我使用断点手动执行的等待,它也在随附的 C# 示例中文档。

因此固定代码只是在调用capture() 方法之前添加了CheckAuthorizationStatus()CheckAuthorizationStatus() 显然会循环,直到授权状态​​发生变化。这对我来说似乎有些笨拙,但据我所知,这似乎是 Pay with Amazon API 的用途。更正以下代码:

//make checkout object
AmazonAutomaticSimpleCheckout asc = new AmazonAutomaticSimpleCheckout(billingAgreeementId);

//capture
CaptureResponse cr;

GetAuthorizationDetailsResponse gadr = asc.CheckAuthorizationStatus(authId);

cr = asc.Capture(authId, amount, 1);

//gadr = asc.CheckAuthorizationStatus(authId);

//check if capture was succeddful
if (cr.CaptureResult.CaptureDetails.CaptureStatus.State == PaymentStatus.COMPLETED)
{
...

return "success";
}

关于c# - 亚马逊支付行为异步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33743490/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com