【问题标题】:CyberSource Simple Order API Capture PayPal transactionCyber​​Source 简单订单 API 捕获 PayPal 交易
【发布时间】:2018-01-26 04:20:17
【问题描述】:

我正在尝试捕获已使用 PayPal 按钮授权的 PayPal 交易。我正在尝试使用 Cyber​​Source 简单订单 API 来执行此操作。我只有 3 条似乎从 PayPal 按钮返回的信息是:payerIDpaymentIDpaymentToken。我尝试了几种将其交给 Simple Order API 的方法,但总是在响应中得到带有 DECLINE 消息的 102 代码。 Cyber​​source 的日志系统表明这是因为The following request field(s) is either invalid or missing: request_token

我是否需要通过网络资源进行整个交易 - 授权和捕获?或者我可以通过什么方式获取 paypal 生成的按钮并授权交易,然后通过 Cyber​​Source 捕获?

这是 Cyber​​Source SOAPI 请求的代码 sn-p:

RequestMessage request = new RequestMessage
{
    merchantID = WebConfigurationManager.AppSettings["cybs.merchantID"]
    , payPalDoCaptureService = new PayPalDoCaptureService {
            run = "true"
            , invoiceNumber = orders
            , paypalAuthorizationId = authId
            , paypalAuthorizationRequestToken = requestToken
            , completeType = "Complete" }
    , clientApplication = "MyClient Application"
    , clientApplicationVersion = "2.0"
    , clientApplicationUser = userName
    , clientEnvironment = WebConfigurationManager.AppSettings["Tier"]
    , merchantReferenceCode = orders
    , customerID = OrderConstants.CustomerNumber
    , merchantDefinedData = new MerchantDefinedData { field1 = "Customer #: " + OrderConstants.CustomerNumber, field2 = orders }
    , purchaseTotals = new PurchaseTotals { currency = "usd", grandTotalAmount = total, taxAmount = taxtotal }
    , item = items.ToArray()
};

ReplyMessage reply = new ReplyMessage();
try
{
    reply = SoapClient.RunTransaction(request);
}
catch (Exception ex)
{
    reply.decision = "SYSTEM ERROR";
    reply.additionalData = string.Format("Error processing request. Exception message: {0}", ex.Message);
}

【问题讨论】:

    标签: c# asp.net paypal


    【解决方案1】:

    我确实最终解决了这个问题。我是否需要端到端使用 Cyber​​Source 的问题是正确的路径。最终我发现 - 在与 Cyber​​Source 支持交谈了几天之后 - 我需要在 WebApi 方法中使用他们的“设置服务”来生成 PayPal“令牌”并通过生成按钮的 javascript 中的 ajax 将其提供给 PayPal 按钮.我还不得不深入研究他们和 PayPal 的文档,并弄清楚如何使这项工作发挥作用,因为最初并不是很清楚。无论如何,一旦我执行了 Set 服务,我就会在 Cyber​​Source 的响应中收集信息以及 PayPal 令牌,并将其发送到 Get Details 服务调用(也是 Cyber​​Source)。最后,将该信息提供给组合的 Do Sale 和 Do Capture 服务调用,并捕获资金。该按钮仅允许用户登录其 PayPal 帐户并验证他们是否希望继续进行交易。

    Cyber​​Source 的文档在这方面有点不够清晰,它们链接到一组已弃用的 PayPal 文档,这并没有让任何事情变得更容易。

    【讨论】:

      【解决方案2】:

      您是否尝试过这样设置您的请求?不要注意我使用的值,但我正在查看文档(Example 21 Request for payPalDoCaptureService). 中的示例,您需要按 ctrl+f 才能找到它。

      RequestMessage request = new RequestMessage
      {
          payPalDoCaptureService_run=true
          , merchantID = WebConfigurationManager.AppSettings["cybs.merchantID"]
          , merchantReferenceCode = HTNsubscription9647
          , purchaseTotals = new PurchaseTotals { currency = "usd", grandTotalAmount = total, taxAmount = taxtotal }
          , payPalDoCaptureService = new PayPalDoCaptureService 
            {
               run = "true"
              , invoiceNumber = orders
              , paypalAuthorizationId = authId
              , paypalAuthorizationRequestID = authReqId
              , paypalAuthorizationRequestToken = requestToken
              , completeType = "Complete" 
            }
      }
      

      【讨论】:

      • 是的,我做到了,当时的问题是,我通过简单地使用 PayPal 按钮获得的信息并没有为我提供足够的信息来为该对象提供所有 payPalDoCaptureService 属性的有效值。
      【解决方案3】:

      由于错误表明您有 git 无效数据,请检查回复字段 invalidField_0 到 invalidField_N 无效字段。

      我希望这些Requesting the Authorization Service 示例会有所帮助

      【讨论】:

      • 我确实这样做了。正如我在原帖中提到的,Cyber​​Source 说 request_tokeninvalid or missing field
      猜你喜欢
      • 2020-12-15
      • 2020-03-06
      • 2021-01-14
      • 2018-11-04
      • 1970-01-01
      • 2012-03-08
      • 2016-03-20
      • 1970-01-01
      • 2014-11-21
      相关资源
      最近更新 更多