我试图捕获一个使用PayPal按钮授权的PayPal事务。我正在尝试使用CyberSource简单的Order来完成这个任务。我只有3条似乎从PayPal按钮返回的信息:payerID、paymentID和paymentToken。我尝试过几种将其传递给简单Order的方法,但总是在响应中得到带有DECLINE消息的102个代码。赛博源的日志系统表明这是因为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);
}发布于 2017-08-29 20:31:09
我最终还是解决了这个问题。我关于是否需要从端到端使用CyberSource的问题是正确的.经过几天的CyberSource支持,我终于明白了,我需要在WebApi方法中使用他们的"Set服务“来生成PayPal”令牌“,并在生成按钮的javascript中通过ajax将其交给PayPal按钮。我还必须深入挖掘他们和PayPal的文档,并找出如何使其工作,因为它最初并不是非常清晰。无论如何,一旦我完成了Set服务,我就从CyberSource以及PayPal令牌收集响应中的信息,并将其发送到Get服务调用(也是CyberSource)。最后,将该信息提供给一个联合的Do Sale和Do Capture服务调用,并捕获资金。该按钮只允许用户登录他们的PayPal帐户并验证他们想要继续进行事务处理。
赛博源的文档在这方面有点不清晰,它们链接到一组不受欢迎的PayPal文档,这不会使任何事情变得更容易。
发布于 2017-08-29 16:40:32
你试过这样设置你的请求吗?不要注意我使用的值,但是我正在查看docs (示例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"
}
}发布于 2017-08-29 15:53:46
由于错误显示git无效数据,请通过通过invalidField_N检查回复字段中的无效字段。
我希望这些请求授权服务样本能有所帮助。
https://stackoverflow.com/questions/45740394
复制相似问题