我尝试捕获已使用PayPal按钮授权的PayPal交易。我尝试使用CyberSource Simple Order API来执行此操作。我只有3条信息似乎从PayPal按钮返回:payerID
,paymentID
和paymentToken
。我已经尝试了几种方法将其交给Simple Order API,但总是在响应中获得带有DECLINE
消息的102代码。 Cybersource的日志记录系统表明这是因为The following request field(s) is either invalid or missing: request_token
。
我是否需要通过网络资源进行整个交易 - 授权和捕获?或者我可以采用paypal生成的按钮并授权交易,然后通过CyberSource捕获它的方式是什么?
这是我的CyberSource 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);
}
答案 0 :(得分:1)
您是否尝试过设置这样的请求?不要理会我使用的值,但我正在查看文档中的示例(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"
}
}
答案 1 :(得分:1)
我最终解决了这个问题。我的问题涉及是否需要从端到端采用CyberSource是正确的道路。最后我发现 - 在与CyberSource支持谈了几天之后 - 我需要在WebApi方法中使用他们的“Set Service”来生成PayPal“令牌”并通过生成按钮的javascript中的ajax将其提供给PayPal按钮。我还必须深入研究他们和PayPal的文档,并弄清楚如何使这项工作,因为它最初并不是非常清楚。无论如何,一旦我完成了Set服务,我就会收集来自CyberSource的回复中的信息以及PayPal令牌,并将其发送到Get Details服务电话(也称为CyberSource)。最后,该信息被提供给Do Sale和Do Capture服务电话,并且资金被捕获。该按钮仅允许用户登录其PayPal帐户并验证他们是否希望继续进行交易。
CyberSource的文档在这方面有点缺乏清晰度,它们链接到一组已弃用的PayPal文档,这使得任何操作都不容易。
答案 2 :(得分:-1)
由于错误显示您有git无效数据,请检查回复字段 invalidField_0到invalidField_N 无效的字段。
我希望这些Requesting the Authorization Service样本能够提供帮助