Вызов захвата CC из заказа на продажу с помощью API Acumatica Contract Base - PullRequest
0 голосов
/ 19 октября 2018

Мне нужно настроить интеграционный тест для вызова функции CC Capture непосредственно из заказа на продажу Acumatica, как показано на этом изображении.

CCCapture

Я хотел бы смоделировать это после примера из курса I210, использующего Capture относительно записи об оплате и заявке.Я надеюсь, что это можно сделать с помощью Contract API.

это то, что используется из курса I210.он только слегка изменен и работает

 //Capturing a payment
    public static Payment CapturePayment(DefaultSoapClient soapClient, string paymentNbr)
    {
        Console.WriteLine("Capturing a credit card payment...");
        string paymentType = "Payment";
        Payment soPaymentToBeCaptured = new Payment
        {
            Type = new StringSearch { Value = paymentType },
            ReferenceNbr = new StringSearch { Value = paymentNbr },
            Hold = new BooleanValue { Value = false }
        };
        Payment payment = (Payment)soapClient.Put(soPaymentToBeCaptured);
        InvokeResult invokeResult = soapClient.Invoke(payment, new CaptureCreditCardPayment());
        ProcessResult processResult = LongRunProcessor.GetProcessResult(soapClient, invokeResult);
        payment = (Payment)soapClient.Get(new Payment { ID = processResult.EntityId });

        Console.WriteLine("Payment type: {0}",payment?.Type?.Value);
        Console.WriteLine("Payment number: {0}", payment?.ReferenceNbr?.Value);
        Console.WriteLine("Payment status: {0}", payment?.Status?.Value);
        Console.WriteLine();           
        return payment;
    }

// это то, что я пытался безуспешно.

 internal static Payment CapturePaymentFromSO(DefaultSoapClient soapClient, SalesOrder salesOrder)
    {
        //salesOrder is fully instantiated from a previous integration call
        InvokeResult invokeResult = soapClient.Invoke(salesOrder, new CaptureCreditCardPayment());
        //InvokeResult invokeResult = soapClient.Invoke(salesOrder, new CaptureCreditCardPayment());
        ProcessResult processResult = LongRunProcessor.GetProcessResult(soapClient, invokeResult);
        Payment payment = (Payment)soapClient.Get(new Payment { ID = processResult.EntityId });            
        Console.WriteLine("Payment type: {0}", payment?.Type?.Value);
        Console.WriteLine("Payment number: {0}", payment?.ReferenceNbr?.Value);
        Console.WriteLine("Payment status: {0}", payment?.Status?.Value);           
        Console.WriteLine();
        return payment;
    }

Заранее спасибо за помощь, Роберт

...