当前位置: 首页 > 知识库问答 >
问题:

使用行为异步的亚马逊支付

秦昊穹
2023-03-14

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

...
//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";
}
...

因此,如果在捕获行的//捕获下有一个断点,则函数返回success。如果没有断点,我会得到一个运行时异常系统。NullReferenceException:对象引用未设置为对象的实例

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

另请注意,捕获(…) 方法,就像C#示例一样。

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

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


共有3个答案

郭皓
2023-03-14

免责声明:

我不实施定期付款,只有一个简单的付款-虽然只是阅读留档它似乎相似或至少有一个同步选项。

因为它符合我的要求,所以我选择了同步过程。本质上,将其视为“支付网关”-“现在”给我结果,我将处理任何结果。

此外,AUTHCAPTURE一步完成-同样,这是基于一个人的操作需求/s。

这两个相关项目是:

>

  • CaptureNow=真
  • 事务超时=0

    值为零总是返回同步打开或拒绝

    您将(同步)获得:

    • <代码>授权结果。授权详细信息
      • 亚马逊授权ID、授权金额等
      • null失败
      • 否则它将包含捕获ID(如果捕获成功)
        AuthorizeResult. Authorization细节。IdList.member-我只看到它包含1个项目(Capture Id

      然后,您可以使用CaptureId调用GetCaptureDetails,并在解析GetCaptureDetailsResponse后执行所需操作

      同样,上面是基于支付API流(不是重复支付/计费协议),所以我希望它至少可以帮助/为您提供测试同步选项的途径/想法。

  • 麻昌翰
    2023-03-14

    使用异步模式时,您通常会依赖几种方法来处理它。AuthorizeOnBillingProtocol的结果将返回一个Amazon授权ID(例如P01-1234567-1234567-A000001)。获得授权ID后,您可以:

    >

  • Poll GetAuthorizationInformation-这将返回包含授权“状态”的授权详细信息。当状态为“打开”时,您可以让Capture API调用传入授权ID。

    等待即时付款通知(IPN)。如果您有一个IPN处理程序,您可以监视它并按照步骤1中所述进行捕获API调用。IPN通常在60秒内发送,并具有最终处理状态(打开或拒绝)。

    您不应该添加任意暂停。在进行捕获之前,您应该始终检查授权的状态。即使付款状态已完成,您仍需要检查状态。

  • 嵇出野
    2023-03-14
    匿名用户

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

    因此,固定代码只需在调用方法之前添加CheckAuthorizationStatus()CheckAuthorizationStatus()显然会循环,直到授权状态发生更改。这对我来说似乎有点含糊其辞,但我能说的是,这似乎就是亚马逊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";
     }
    

     类似资料:
    • 我正在为web集成amazon pay SDK python。 我已经阅读了亚马逊支付的所有留档,但是我不知道如何在前端/后端代码中给出或创建按钮签名。这是我的前端代码,用于创建亚马逊支付一次性结账按钮。 如果有人实现了这一点,请给出您有价值的答案...

    • 下面是我的php实现代码: 这是用于生成Amazon Pay按钮的JS实现代码。

    • 希望在应用程序中集成amazon pay(基于美国)。已经有了贝宝和刷卡选项。当提到亚马逊支付沙箱时,它说要先在亚马逊支付注册。注册过程将通过其他步骤进入亚马逊卖家中心帐户,在这些步骤中会询问与业务相关的问题。 从开发的角度来看,我们如何将amazon pay集成到我们的应用程序中?是否有可用的示例api/代码及其程序?欢迎任何指导。

    • 亚马逊云 图 1.20.2.1 - AWS AWS,即 Amazon Web Services,是亚马逊(Amazon)公司的 IaaS 和 PaaS 平台服务。AWS 提供了一整套基础设施和应用程序服务,使用户几乎能够在云中运行一切应用程序:从企业应用程序和大数据项目,到社交游戏和移动应用程序。AWS 面向用户提供包括弹性计算、存储、数据库、应用程序在内的一整套云计算服务,能够帮助企业降低 IT

    • 实施亚马逊支付小部件没有地址引用文档https://developer.amazon.com/docs/eu/amazon-pay-onetime/no-address-widget.html 用seller central的注册应用程序值替换了clientid和sellerid,但得到的错误是“您无法使用与您的卖家帐户关联的用户名和密码。请使用其他买家帐户。” 这是使用的代码

    • 对不起.我又加了一些内容。我在Spring中测试了两个消息队列(rabbitmq、amazon sqs),如下所示。 我的目的是逻辑处理用户电子邮件到队列发送注册完成电子邮件时,用户完成注册无一例外。 但是,上面的逻辑发生RuntimeException。 有人知道这是为什么吗?