Мне нужно настроить интеграционный тест для вызова функции 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;
}
Заранее спасибо за помощь, Роберт