繁体   English   中英

Cyber​​Source简单订单API捕获PayPal交易

[英]CyberSource Simple Order API Capture PayPal transaction

我正在尝试捕获已使用PayPal按钮授权的PayPal交易。 我正在尝试使用Cyber​​Source Simple Order 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请求的代码片段:

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);
}

您是否尝试过像这样设置您的请求? 不要理会我使用的值,但我正在查看文档中的示例(例21请求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" 
      }
}

我最终解决了这个问题。 我的问题涉及是否需要从端到端采用Cyber​​Source是正确的道路。 最后我发现 - 在与Cyber​​Source支持谈了几天之后 - 我需要在WebApi方法中使用他们的“Set Service”来生成PayPal“令牌”并通过生成按钮的javascript中的ajax将其提供给PayPal按钮。 我还必须深入研究他们和PayPal的文档,并弄清楚如何使这项工作,因为它最初并不是非常清楚。 无论如何,一旦我完成了Set服务,我就会收集来自Cyber​​Source的回复中的信息以及PayPal令牌,并将其发送到Get Details服务电话(也称为Cyber​​Source)。 最后,该信息被提供给Do Sale和Do Capture服务电话,并且资金被捕获。 该按钮仅允许用户登录其PayPal帐户并验证他们是否希望继续该交易。

关于这一点,Cyber​​Source的文档有点缺乏清晰度,它们链接到一组已弃用的PayPal文档,这并没有使任何事情变得更容易。

由于错误显示您有git无效数据,请检查无效字段的回复字段invalidField_0到invalidField_N

我希望这些申请授权服务的样本会有所帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM