Я пытаюсь захватить транзакцию PayPal, которая была авторизована с помощью кнопки PayPal. Я пытаюсь использовать CyberSource Simple Order API для этого. У меня есть только 3 части информации, которые, кажется, возвращаются с кнопки PayPal: payerID
, paymentID
и paymentToken
. Я пробовал несколько способов передать это API Simple Order, но всегда получаю код 102 с сообщением DECLINE
в ответе. Система журналирования Cybersource указывает, что это связано с тем, что The following request field(s) is either invalid or missing: request_token
.
Нужно ли мне проводить всю транзакцию - разрешать и захватывать - через киберсервер? Или каким образом я могу взять кнопку сгенерированной paypal и разрешить транзакцию, а затем захватить ее через CyberSource?
Вот мой фрагмент кода для запроса SOAPI CyberSource:
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);
}