Отмена / возврат транзакции с использованием CyberSource API в .NET - PullRequest
2 голосов
/ 26 мая 2011

Я использую API CyberSource для платежного шлюза.Я просмотрел все доступные документы и нашел следующий код:

  1. Сначала я добавил сервисную ссылку на CyberSource, используя url https://ics2wstest.ic3.com/commerce/1.x/transactionProcessor/CyberSourceTransaction_1.60.wsdl

  2. Затем я добавил следующий код для совершения транзакции и ее отмены.Но так или иначе, отмена, кажется, не работает.Я не уверен, что я делаю неправильно, потому что в сети очень мало документации= 102, что означает ошибку.В идеале это должно быть 100. 102 означает «Одно или несколько полей в запросе содержат недопустимые данные».

    Помощь очень важна ...

Ответы [ 4 ]

3 голосов
/ 12 декабря 2012

Попробуй это. У меня это работает.

            RequestMessage request = new RequestMessage();
            request.ccAuthReversalService = new CCAuthReversalService();
            request.ccAuthReversalService.run = "true";
            request.ccAuthReversalService.authRequestID = order.Transactionno;
            request.ccAuthReversalService.authRequestToken = order.RequestToken;
            request.purchaseTotals = new PurchaseTotals();
            request.purchaseTotals.currency = "USD";
            request.purchaseTotals.grandTotalAmount = (order.Total).ToString("0.00");
            request.merchantID = MerchantId;
            request.merchantReferenceCode = order.OrderNumber;
            TransactionProcessorClient proc = new TransactionProcessorClient();
            proc.ChannelFactory.Credentials.UserName.UserName = request.merchantID;
            proc.ChannelFactory.Credentials.UserName.Password = Key;
            ReplyMessage reply = proc.runTransaction(request);
1 голос
/ 03 июня 2013

Маркер запроса не требуется, если вы уже используете requestId, исходящий из начальной авторизации. Таким образом, вы можете безопасно удалить строку:

request.ccAuthReversalService.authRequestToken = order.RequestToken;

Кроме того, buyTotals.currency не требуется, по вашему запросу CyberSource получит эту информацию для вас. Сохранена еще одна строка:

request.purchaseTotals.currency = "USD";
0 голосов
/ 06 ноября 2015
request.ecDebitService = new ECDebitService();
request.ecDebitService.run = "true";

request.ecCreditService = new ECCreditService();
equest.ecCreditService.run = "true";

Вы можете использовать эту услугу «Кредит и дебет», если конечный пользователь хочет дебетовать некоторую сумму, например: 100,00 долларов, которые он может ввести - 100,00 долларов, а затем, если общая сумма меньше нуля, вы можете установить услугу «Кредит» как истинную и тисковую.versa.

Попробуйте, и если вам нужна дополнительная помощь, не стесняйтесь связаться со мной по электронной почте.

0 голосов
/ 28 февраля 2012

Как только вы разместили автора Вы можете отправить сумму кредита на счет пользователя, который будет отправлять ему эти деньги. Для этого вам нужно указать request.ccCreditService и установить для его поля выполнения значение true. То же самое можно сделать в их интерфейсе Business Center.

Однако это не имеет ничего общего с отменой фактической транзакции авторизации / расчета.

...