CyberSource Simple Order API Захват транзакции PayPal
Я пытаюсь захватить транзакцию 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);
}
Ответы
Ответ 1
Я решил решить эту проблему. Мой вопрос, связанный с необходимостью использования CyberSource от конца до конца, был правильным путем. В конце концов, я понял, что после нескольких дней работы с поддержкой CyberSource мне нужно было использовать их "Set Service" в методе WebApi для создания "токена" PayPal и передать это кнопке PayPal через ajax в javascript, который генерирует кнопку, Мне также пришлось углубиться в их документацию и документацию PayPal, а также выяснить, как сделать эту работу, потому что она не была очень ясна изначально. Во всяком случае, как только я сделал услугу "Набор", я собрал информацию в ответ от CyberSource вместе с токеном PayPal и отправил ее вместе с вызовом службы "Получить данные" (также CyberSource). Наконец, эта информация предоставляется объединенному призыву Do Sale and Do Capture и средствам. Кнопка разрешила пользователю только войти в свою учетную запись PayPal и убедиться, что она хочет продолжить транзакцию.
Документация CyberSource немного неясна в отношении этого, и они ссылаются на устаревший набор документации PayPal, который не делает ничего проще.
Ответ 2
Вы пытались настроить свой запрос следующим образом? Не обращайте внимания на значения, которые я использовал, но я смотрю на пример в документах (Пример 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"
}
}
Ответ 3
Как говорится в ошибке, у вас есть git недопустимые данные, проверьте поля ответа invalidField_0 через invalidField_N для
недопустимые поля.
Я надеюсь, что эти Запрос службы авторизации помогут